Limits and quotas
This page centralizes known Zenifra operational limits. Some limits depend on the plan, organization, project type, or current commercial conditions in the console.
Zenifra API
| Resource | Current limit |
|---|---|
| Rate limit | Defined per route and counted per source IP address; reads allow more calls per minute than write operations |
| Error when exceeded | 429 Too Many Requests |
| Authentication | Organization API key in x-api-key or Authorization: Bearer; see Zenifra API |
For higher-volume automations, contact support before increasing call frequency.
Environment variables
| Resource | Current limit |
|---|---|
| Variables per project through API | 50 |
| Maximum name length | 120 characters |
| Maximum value length | 32760 characters |
Use variables only for configuration and secrets. Large files, long certificates, or large lists should be handled through another application configuration mechanism.
HTTP projects
| Resource | Limit or rule |
|---|---|
| HTTP instances | no fixed number per project; each increase depends on the plan's available capacity. On the Free plan, an organization can run at most 2 instances in total |
| HTTP autoscaling | available for HTTP projects on plans with the feature enabled |
| Port | manually configured in the project |
| Default URL | *.clients.zenifra.com |
| Capabilities | metrics, health checks, autoscaling, custom subdomains, and network access depend on the returned plan |
| Logs | on every plan; read live from the instances, up to about 50 KB per query, with no stored history |
| HTTP metrics | CPU, RAM, storage, and HTTP requests from the Premium plan |
| Persistent storage | from 1 GB to 250 GB, billed separately; can increase, but not decrease |
| Custom domains | up to 20 per project, only on public HTTP projects |
| IP access | whitelist of 1 to 10 and blacklist of up to 10 IPv4 addresses or CIDR ranges, from the Premium Plus plan |
| Preview environments | up to 10 active per organization and 2 per project; TTL from 1 to 168 hours (default 24 hours); always 1 instance, without autoscaling |
For planned traffic peaks or specific capacity needs, contact support before sizing the application.
Before creation, run zenifra plans --type http. Human-readable output describes the available capabilities; zenifra plans --type http --json exposes the boolean capabilities object for scripts. The returned plan, rather than a documentation example, defines effective availability.
Deployment and image
| Resource | Rule |
|---|---|
| Git source (GitHub or Forgejo) | repository, branch, runtime, version, commands, and deployment mode can be changed after creation (GitHub: through the API or CLI) |
| Build logs | 200 lines per query by default, up to 500 |
| Build history | up to 30 builds per project, for up to 30 days |
| OCI source | project remains OCI after creation |
| Public image | does not require authentication |
| Private image | can use AWS ECR or registry user and token/password |
| OCI authentication type | not available for editing after creation |
Use image tags that identify version, commit, or release. Avoid relying on latest in production.
Databases
| Resource | Limit or rule |
|---|---|
| PostgreSQL | 1 to 3 total instances |
| MariaDB | 3 instances |
| Version downgrade | not supported |
| Storage | can increase, but not decrease |
DATABASE_URL | not injected automatically into HTTP projects |
| Free plans | up to 2 db-free projects per organization, counting PostgreSQL and Key-Value together; free Cache and Queues limited to 1 per profile |
| Backup and restore | no automatic backup with restore from the console; keep your own dumps |
| Database metrics | CPU, RAM, and storage on the db-premium and db-enterprise plans |
Version upgrades and storage increases can cause temporary unavailability. Run these changes during low-usage windows.
When you create a project beyond the free limits, the console shows the Free plan limit reached notice. See what to do in each case.
Observability
| Resource | Current behavior |
|---|---|
| HTTP logs | update in up to 60 seconds |
| Resource metrics | update in up to 5 minutes |
| View | by instance when applicable |
| HTTP request metrics | volume, network traffic, status distribution, routes, user agents, and P95 latency when available according to plan |
| HTTP request events | retained for up to 7 days |
| Health check failures | 30-day history |
| Autoscaling events | history of about 13 months |
| Per-application uptime | not currently available as a documented capability |
See Observability for details by project type.
Scheduled jobs
| Resource | Rule |
|---|---|
| Schedule | five-field cron expression, always in UTC |
| Maximum duration | 60 minutes per run |
| Concurrent runs | the same Job does not run in parallel |
| Retry | no automatic retry |
| Billing | per minute of execution, rounded up |
| Run history | 90 days |
See Scheduled jobs.
AI
| Resource | Rule |
|---|---|
| API | compatible with OpenAI-compatible clients |
| AI key | created in the console with budget and allowed models |
| Billing | prepaid per token, using the organization's shared credit |
| Available models | public catalog GET https://ai.zenifra.com/v1/models or the Available Models tab in the console |
| Request limit | default of 200 requests and 500,000 tokens per minute per organization |
| Cost limit | organization credit, with an optional additional per-key limit |
If the organization runs out of credit, the key reaches its additional limit, or it tries to use a model that is not allowed, the application should handle the API error and guide the user to add credit or review the key in the console.
What depends on plan or support
These limits can vary and should be confirmed in the console or with support:
- maximum OCI image size
- maximum build time
- HTTP request timeout
- maximum projects per organization
- maximum keys per resource
Next steps
FAQ
Can I request higher limits?
Yes. For operational limits such as instances, traffic, API, or business usage, contact support before depending on the increase in production.
Does this page replace the console?
No. The console remains the source for plans, available resources, and current commercial conditions.
What happens if I exceed the rate limit?
The API returns 429 Too Many Requests. The application should apply backoff, reduce frequency, or request a limit increase.
Last updated on
Checklist before production
Practical checklist to review deploy, configuration, security, database, observability, and billing before going live.
Migrate to Zenifra
Bring apps and databases from Heroku, Render, Railway, Vercel, or a VPS to Zenifra with a step-by-step plan, platform equivalents, and data migration.