API Limits
FoxNose subscriptions define how many resources you can create per organization. The limits below are enforced by the Management API when you create or update data. If you are unsure which values apply to your workspace, call GET /organizations/{org_key}/plan/ to view the current plan or GET /organizations/{org_key}/usage/ to inspect live counters.
Organization-Level Quotas
These limits are stored on your plan. Before a create request succeeds, the API checks the plan value for that entity and rejects the call once the quota is reached.
| Resource | Scope | How the limit works |
|---|---|---|
| Projects | Total projects owned by the organization | Each plan defines how many projects you can create. Once that number is reached, project creation requests return plan_limit_exceeded. |
| Environments | All environments across the organization | Each environment creation checks the plan-specified allowance. When the counter reaches the plan value, creation requests return plan_limit_exceeded. |
| Components | Reusable component schemas defined in any environment | Component creation stops when the plan’s component quota is reached. |
| Folders | Collection or component folders across every environment | Folder creation checks the plan limit before persisting the folder; attempts beyond the plan quota are rejected. |
| Resources | Content entries stored in any folder | Resource creation is blocked when the organization’s resource count reaches the plan limit. |
If you reach one of these limits, the API returns a 429 response with error_code: plan_limit_exceeded. The detail object specifies the entity, current count, and allowed maximum:
Plan limit exceeded
{
"message": "Plan limit exceeded",
"error_code": "plan_limit_exceeded",
"detail": {
"entity": "resources",
"current": 5000,
"limit": 5000
}
}
detail.entity can be one of: projects, environments, folders, resources, or components.
Environment-Level Limits
Some entities are scoped to a single environment. They use global technical caps unless your plan sets a different value.
| Resource | How the cap is enforced |
|---|---|
| Locales | Each environment has a limited number of locales defined by its plan. Adding another locale after hitting the quota returns too_many_locales (HTTP 422). |
| Manage API keys | Both secure and simple keys count toward the plan’s API-key quota for the environment. Creating more than the allowance raises too_many_manage_api_keys. |
| Flux API keys | Shares the same quota model as Manage API keys; additional keys raise too_many_flux_api_keys. |
| Manage API roles | Environments can only store a finite number of roles. Exceeding the plan allowance returns too_many_manage_roles. |
| Flux API roles | Flux roles follow the same quota logic; exceeding the plan allowance returns too_many_flux_roles. |
| Flux APIs | Each environment can expose a limited number of delivery APIs. Once the cap is reached, creation returns too_many_apis. |
| Environment toggling | Enabling or disabling an environment requires a five-minute (300 second) pause between changes. Toggling sooner results in environment_toggle_error. |
Object-Level Permissions
When you assign object-level permissions to a role (for example, restricting access to specific folders), each role can list at most 50 object IDs. This is a fixed technical limit that prevents slow permission lookups.
Schema Limits
| Limit | Value | Applies to |
|---|---|---|
| Schema versions | 10 versions per collection model or component schema | Copying or creating versions beyond this number returns too_many_versions. |
| Fields per version | 50 fields (including nested ones) | Creating a field beyond the cap returns too_many_fields. |
| Component inheritance depth | 2 levels by default | Plans can raise or lower this value. Publishing nested components beyond the permitted depth fails validation. |