# Apps limits

> The limits on apps, their settings, variables, domains, builds, deployments and API requests, in one place.

Source: https://www.coritan.com/docs/apps/limits/

This page lists every fixed limit on Apps. The page that covers each feature explains how to work within it.

## Apps

| What | Limit |
| --- | --- |
| Apps per account or organization | Set by the platform. The **Apps** list shows it with how many you have, such as `3 of 20 apps`. Through the API, `limits.apps` in the answer to `GET /api/v1/client/apps/regions` gives it, where `0` means no limit, and `limits.apps_used` how many you have ([Regions, sizes and limits](/docs/apps/#regions-sizes-and-limits)). A deleted app does not count. |
| Source type | Chosen when you create the app. It cannot change. |
| Name on the platform | Chosen when you create the app. It cannot change. |

## Settings

| Setting | Limit |
| --- | --- |
| Name | 1–100 characters on one line. |
| Name on the platform | 3–63 lowercase letters, digits and hyphens, starting and ending with a letter or a digit, with no hyphens in both the third and fourth places. Unique on the platform, and not a reserved word ([Names on the platform](/docs/apps/create-an-app/#names-on-the-platform)). |
| Repository address | An `https://` address on a public host, up to 500 characters, with no user name, token, query or fragment. |
| Branch | A name git accepts, up to 200 characters. |
| Directory | A path inside the repository, up to 255 characters. |
| Access token | Up to 1000 characters. |
| Image reference | Up to 500 characters, on a public registry. It cannot be in the platform's own registry. |
| Install, build and start commands | Up to 500 characters each, on one line. |
| Dockerfile path | A path inside the repository, up to 255 characters. |
| Framework | Up to 32 lowercase letters, digits, dots, plus signs and hyphens, starting with a letter or a digit. |
| Port | 1–65535. |
| Health check path | Starts with `/`, up to 255 characters. |

## Size, regions and replicas

| What | Limit |
| --- | --- |
| Size | `small`, `medium` or `large` ([Replicas and regions](/docs/apps/how-apps-work/#replicas-and-regions)). |
| Regions | Every region that can run apps, or up to 20 named regions. |
| Replicas in each region (`min_replicas`) | 1–5. |
| `max_replicas` | Up to 10. The number of replicas does not grow above `min_replicas`. |

## Environment variables

| What | Limit |
| --- | --- |
| Variables per app | 200. |
| Name | Upper-case letters, digits and underscores, not starting with a digit, up to 128 characters. Some names are set by the platform ([Names and values](/docs/apps/environment-variables/#names-and-values)). |
| Value | 32 KiB. |
| All variables together | 256 KiB, counting each name and value. |

## Domains

| What | Limit |
| --- | --- |
| Custom domains per app | 20. The platform name does not count. |
| Hostname | Up to 253 characters. Wildcard names are not accepted. |
| Hold on a hostname another app is verifying | 72 hours from when that app added it ([A hostname in use elsewhere](/docs/apps/custom-domains/#a-hostname-in-use-elsewhere)). |

## Builds and deployments

| What | Limit |
| --- | --- |
| Wait for a build to start | 6 hours. After that, the build fails with `No builder took the build within 6 hours.` |
| Build time | 1 hour. |
| Tries for one build | 2. A build that stops reporting starts once more. |
| Build log | The last 64 KB is kept. After 32 MB of log, the rest of the build's log is not kept. |
| Time for a deployment to finish | 6 hours. After that, it fails. |
| Time for a replica's image to be in place | 20 minutes. |
| Time for a replica to become healthy | 10 minutes from when it starts. |
| Health check answer | 5 seconds. |
| Failed health checks before a replica stops taking requests | 3 in a row. |
| Time a region can have no room for a replica | 1 minute. After that, the region fails. |
| Stop after taking no more requests | About 1 minute. |
| Removal of a previous deployment's replicas | 30 minutes after they stop taking requests. |

[How Apps works](/docs/apps/how-apps-work/) explains each of these.

## Push webhook

| What | Limit |
| --- | --- |
| Delivery size | 10 MB. |
| How long a delivery's ID is remembered | 1 day ([What a push deploys](/docs/apps/push-webhook/#what-a-push-deploys)). |

## Requests

We count these requests over a rolling window. A request over a limit fails, and does not count towards it.

| Requests | Most per window | Window | Counted for |
| --- | --- | --- | --- |
| Creating apps | 20 | 1 hour | Your account, or the organization |
| Changes: every request that creates, changes, deploys or deletes | 120 | 1 hour | Each person |
| Deployments: deploy, redeploy and roll back | 30 | 10 minutes | Each app |
| Domain checks | 30 | 10 minutes | Each app |
| Pushes that deploy | 30 | 5 minutes | Each app |

A request over a limit answers `429`, with the length of the window in `retry_after_seconds` and in the `Retry-After` header:

```json
{
  "detail": {
    "error": "rate_limited",
    "message": "Too many deployments of this app. Wait a few minutes.",
    "retry_after_seconds": 600
  }
}
```

The push webhook answers `429` in its own shape ([The webhook's answers](/docs/apps/push-webhook/#the-webhook-s-answers)). Every API request also counts towards the limits for your account as a whole, which [Rate limits](/docs/api/rate-limits/) describes.

## Lists

| What | Limit |
| --- | --- |
| Apps per page | `limit` takes 1–100, and is 50 when left out. |
| Deployments per page | `limit` takes 1–100, and is 20 when left out. |
| Deployments that come with an app | The 5 newest. |

## Related

- [Apps](/docs/apps/)
- [App and deployment fields](/docs/apps/fields/)
- [Troubleshoot Apps](/docs/apps/troubleshooting/)
