Reference
Limits
Every cap the platform enforces, read from its source at build time.
Each value below is read from the code that enforces it when these docs are built, so the table matches what the platform does.
Maps
| Limit | Value | Notes |
|---|---|---|
| Flight watches per organization | 100 | |
| Notification groups per organization | 50 | |
| Alert locations per organization | 50 | |
| Watch zones per organization | 200 | Default; the platform can change it. |
| Watch zones per person in an organization | 20 | Default; the platform can change it. |
| Areas per watch zone | 10 | |
| Near me alerts per person | 10 | Across all their organizations. |
| Background location reports per phone per hour | 360 | Past it, 429 until the hour ends. One report per 20 seconds is stored. |
| Unknown location keys per address per hour | 30 | Past it, unknown keys from that address get 429 until the hour ends; phones there with a real key keep reporting. |
Serverless App Services and deployments
| Limit | Value | Notes |
|---|---|---|
| Serverless App Service name | 64 characters | |
| Serverless App Service slug | 40 characters | |
| Root directory | 256 characters | Also the output directory. |
| Build and install commands | 1,024 characters | |
| Deployments per page | 100 | |
| Recent deployments on a Serverless App Service | 20 | |
| Build log events returned | 2,000 | |
| Build compute memory | 4 GB | |
| Server function memory | 1,024 MB | Default; set per Serverless App Service in Settings → Functions. |
| Server function memory, maximum | 10,240 MB | |
| Server function timeout | 30 seconds | Default; set per Serverless App Service in Settings → Functions. |
| Server function timeout, maximum | 1 minute | How long the edge waits for an origin. |
| si.json watch patterns | 50 | |
| si.json watch pattern length | 200 characters | |
| Build cache archive | 1,024 MB | Larger archives aren't saved. |
| Build cache kept | 14 days | After the last write. |
| Uploaded working tree (si deploy) | 250 MB | Compressed. |
| Uploaded working trees kept | 30 days | Redeploys of an upload work until then. |
| CLI git keys valid | 90 days | The CLI replaces a key a week before it expires. |
| Git keys valid, by default | 90 days | Keys with any git scope made on ID's Keys page. |
| Git keys valid, at most | 365 days | |
| Second factor counts for creating keys | 10 minutes | A passkey, authenticator code, text code or phone approval confirmed this recently. |
| Clone alerts per organization | 20 | Per UTC day; at most one per key per hour. |
| Variables per .env import | 200 | |
| Deployment hostname label | 63 characters | Longer labels are cut. |
| Preview server functions kept | 14 days | Then the preview expires. |
| Production deployments kept serving | 3 | The current one and the most recent earlier ones; older ones expire. |
| Preview build artifacts kept | 30 days | |
| Runtime log range | 7 days | The longest range searched; older events page in on request. |
| Runtime log lines returned | 500 | |
| Runtime log message length | 4,000 characters | Longer messages are cut and marked truncated. |
| Runtime log search time | 10 seconds | |
| Runtime log filter | 200 characters |
Crons
| Limit | Value | Notes |
|---|---|---|
| Crons per Serverless App Service | 20 | Entries after these are ignored. |
| Scheduling window | 5 minutes | A run starts up to this long after its scheduled time. |
| Retries after a failed run | 2 | |
| Request timeout | 2 minutes |
Environment variables
| Limit | Value | Notes |
|---|---|---|
| Name | 256 characters | |
| Value | 65,536 characters |
Storage and repositories
| Limit | Value | Notes |
|---|---|---|
| Resource name | 40 characters | |
| Description | 256 characters |
Domains
| Limit | Value | Notes |
|---|---|---|
| Hostname | 253 characters |
Git
| Limit | Value | Notes |
|---|---|---|
| File shown as text | 1 MB | Larger files and binary files aren't shown. |
| Branch list pages read | 5 | |
| Commits per page | 50 | |
| Commits analyzed for insights | 200 | |
| Insights history time per request | 8 seconds | A walk that runs out of time continues on the next request. |
| Folders scanned for languages | 80 | |
| Weeks of commit activity | 12 | |
| Contributors listed | 25 | |
| Files listed in a diff | 300 | |
| Files with line diffs | 60 | Later files are listed collapsed. |
| File size for line diffs | 512 KB | |
| Diff lines per view | 10,000 | |
| Issues and pull requests per page | 25 | |
| Comments shown per thread | 500 | |
| Issue title | 256 characters | |
| Issue body and comments | 65,536 characters | |
| Labels per issue or pull request | 10 | Each up to 50 characters. |
| Assignees per issue or pull request | 10 | |
| Files per web commit | 1,000 | |
| Content per web commit | 50 MB | Push larger changes with git. |
| Files sent in one request | 100 | Larger web commits upload their files first. |
| Content sent in one request | 4 MB | Larger web commits upload their files first. |
| File path length | 4,096 characters | |
| Folder depth | 20 | |
| Branch name length | 256 characters | |
| Review comment | 10,240 characters | |
| Raw file download | 4 MB | |
| Files listed at a ref | 10,000 | |
| Required approvals | 10 | |
| ZIP built while you wait: files | 1,000 | Larger archives are built in the background. |
| ZIP built while you wait: size | 25 MB | Uncompressed, no single file over 3.5 MB; larger archives are built in the background. |
| Repository size for background ZIPs | 512 MB | Compressed snapshot of one commit; clone larger repositories. |
| Background ZIPs kept | 7 days | |
| Rename checks per diff | 10 | Deleted and added files compared for similar content. |
| Open pull requests listed | 100 | |
| Pull request commits shown | 50 | |
| Pull request title | 150 characters | |
| Pull request description | 10,240 characters | |
| Merge commit message | 4,096 characters | |
| Git request timeout | 5 minutes |
Identity
| Limit | Value | Notes |
|---|---|---|
| Password length | 12 characters | Minimum; at most 256. |
| Sign-in session | 7 days | |
| App access token | 15 minutes | Renewed with the refresh token. |
| App refresh token | 30 days | Single use; each refresh issues a new one. |
| Authorization code | 1 minute | |
| Passkey prompt | 5 minutes | |
| Invite link | 7 days | Tenant can choose a longer one. |
| Invite link, maximum | 30 days | |
| Invites per CSV import | 200 | |
| Restoring a removed member | 30 days | Afterwards the record is gone; invite them again. |
| Custom roles per organization | 50 | |
| Sign-in policy grace period, maximum | 90 days | |
| Blocks and ended sessions reach open apps | 30 seconds | The API and MCP check a member's standing at most this long after a change; new tokens are refused at once. |
| Key expiry | 365 days | 0 or empty means no expiry. |
| Sign-in and token requests per IP address | 300 | Per 5 minutes, across every POST to ID: sign-in, invite, setup and approval pages, the token, device code and client registration endpoints. Past it, 429 with Retry-After. |
| Display name | 100 characters | |
| About Me | 190 characters | Markdown, as in Mirage's messages. |
| Avatar upload | 2 MB | PNG, JPEG, WebP or GIF. ID crops images square and resizes them before uploading. |
| Sign-in clients per Serverless App Service | 10 | |
| Authenticator backup | 262,144 characters | The encrypted accounts, in base64: about 1,000 accounts. |
| Redirect URIs per sign-in client | 10 | |
| Access token lifetime (apps and MCP clients) | 1 hour |
Passwords
| Limit | Value | Notes |
|---|---|---|
| Items per person | 5,000 | Default; set on the default plan (vaultMaxItems). |
| An item's overview (sealed, base64) | 8,192 characters | Title, username, websites; padded to 128 bytes before sealing. |
| An item's details (sealed, base64) | 65,536 characters | Password, notes, card and passkey details; padded to 256 bytes before sealing. |
| Changes per sync request | 50 | |
| Items per fetch | 100 | |
| Devices per vault | 20 | |
| Signed request clock difference | 5 minutes | Further off, the server answers with its time and the device signs again. |
| Wait before an unsigned reset | 7 days | 7 days; any device that can open the vault can cancel it. |
Self-hosted agents
| Limit | Value | Notes |
|---|---|---|
| Login code | 15 minutes | |
| Login polling interval | 5 seconds | |
| Poll interval while idle | 15 seconds | |
| Poll interval while idle with push | 1 minute | Agents with an open push socket; new jobs wake them at once. |
| Poll interval after a job | 1 second | |
| Heartbeat while a job runs | 20 seconds | Keeps the device online and delivers cancels. |
| Running job counted as abandoned | 2 minutes | Without a heartbeat for this long, a cancel ends the job at once. |
| Auto-update check | 6 hours | Between jobs; signed releases only. |
| Shown online after the last poll | 90 seconds | Or heartbeat while a job runs. |
| Hosts on a device allowlist | 200 | |
| Hosts per job | 50 | |
| Job input | 300,000 characters | Serialized JSON. |
| Queued job lifetime (default and longest) | 7 days | Set per job with ttlSeconds; unclaimed jobs expire after it. |
| Shortest queued job lifetime | 1 minute | |
| Job kept after it's claimed | 7 days | |
| Queued jobs a poll looks at | 25 | The oldest ones. |
| Results upload URL | 1 hour | |
| Results download URL | 1 hour | |
| Results kept | 7 days | |
| Callback attempts | 5 | Then the callback is dead-lettered. |
| Callback request timeout | 1 minute | |
| Job label | 120 characters | |
| Fresh upload URL requested after | 45 minutes | |
| Retry delay after a failed poll | 1 minute | Maximum; starts at 1 s and doubles. |
Job type: http.batch
| Limit | Value | Notes |
|---|---|---|
| Requests per job | 2,000 | |
| Default delay between requests | 1 second | |
| Shortest delay | 250 ms | |
| Longest delay | 30 seconds | |
| Request timeout | 30 seconds | |
| Response body kept | 5 MB | Characters of text; longer bodies are cut. |
Job type: exec
| Limit | Value | Notes |
|---|---|---|
| Default timeout | 5 minutes | |
| Longest timeout | 30 minutes | |
| Output kept per stream | 1 MB | Characters of stdout and of stderr. |
Job type: browser.batch
| Limit | Value | Notes |
|---|---|---|
| Pages per job | 100 | |
| Time per page | 45 seconds | Including extraction. |
| Extraction time reserved per page | 5 seconds | |
| Wait for the load event | 15 seconds | |
| Longest waitMs | 20 seconds | |
| Scrolling time | 10 seconds | |
| robots.txt fetch timeout | 20 seconds | |
| robots.txt size read | 500 KB | |
| Default delay between pages | 8 seconds | |
| Shortest delay | 5 seconds | Also between jobs for the same origin. |
| Longest delay or crawl-delay | 1 minute | Sites asking for a longer crawl-delay are skipped. |
| Default captures per page | 10 | |
| Most captures per page | 50 | |
| Captured response body | 5 MB | Characters; longer bodies are cut. |
| HTML kept | 2 MB | Characters. |
| Results per job | 50 MB | Pages after this get output_limit. |
| Page id | 200 characters | |
| Page URL | 4,000 characters |
MCP
| Limit | Value | Notes |
|---|---|---|
| Request timeout | 1 minute | |
| Context value | 100,000 characters | |
| Context entries per list page | 50 | |
| Connector tools on the MCP server | 200 | Across all connectors. The default; an organization's plan can set another. |
Connectors
| Limit | Value | Notes |
|---|---|---|
| Connectors per organization | 50 | The default; an organization's plan can set another. |
| Slug | 24 characters | |
| Credential | 4,096 characters | |
| Tool discovery timeout | 15 seconds | |
| Tool call timeout | 30 seconds | |
| Tool list pages read | 10 | |
| Tools cached per connector | 100 | |
| Tool description kept | 2,000 characters | |
| Size of one cached tool | 32,000 bytes | Larger tools are skipped. |
| Size of all cached tools | 300,000 bytes | |
| Exposed tool name | 64 characters | |
| Response size | 4 MB | |
| Connection timeout | 10 seconds |
Database explorer
| Limit | Value | Notes |
|---|---|---|
| Items per page | 100 | |
| Filters per scan or query | 10 | |
| Attributes in a projection | 50 | |
| Item size | 400 KB | DynamoDB's own limit. |
| Attributes included in an index | 20 | |
| Tags per change | 40 | |
| Items per import or batch delete request | 100 | Cloud splits larger imports and deletes into several requests. |
Storage browser
| Limit | Value | Notes |
|---|---|---|
| Files per list page | 1,000 | |
| Upload size | 5,242,880 MB | Per file; files over the multipart threshold upload in parts. |
| Single-request upload | 5,120 MB | |
| Multipart threshold | 100 MB | |
| Files per move request | 1,000 | |
| Files per upload request | 100 | |
| Upload link lifetime | 15 minutes | |
| Download link lifetime | 5 minutes | |
| Files per delete request | 1,000 | |
| CORS rules | 20 | |
| Lifecycle rules | 50 | |
| Lifecycle expiry | 3,650 days |
| Limit | Value | Notes |
|---|---|---|
| Messages sent per day | 2,000 | Per organization on Complete, the default plan; Essentials 500, Team 1,000, Enterprise 5,000. |
| Recipients per message | 500 | Complete, the default plan; Essentials 50, Team 100, Enterprise 1,000. |
| Message size | 25 MB | Every plan. |
| Message size on any plan | 40 MB | The Amazon SES maximum. |
| Attachments per message | 50 | |
| Addresses per To, Cc or Bcc | 500 | |
| Subject | 998 characters | |
| Signature | 20,000 characters | |
| Labels per mailbox | 200 | |
| Conversations per action | 100 | |
| Members per mailbox | 100 | |
| Search words used | 5 | Words of 2 or more characters. |
| Text searched per message | 8,000 characters | After the subject and people. |
| App passwords per person | 50 | For Apple devices. |
| Signed-in Apple devices per person | 50 | Devices set up with a sign-in profile. |
| Apple device sign-in kept unused | 90 days | Each refresh extends it. |
| Approval code from another device | 5 minutes | Works once. |
| App password expiry | 3,650 days | 0 or empty means no expiry. |
| Wrong app passwords per address and network | 10 | Per 15 minutes; then sign-ins pause until the window ends. |
| Wrong app passwords per address | 50 | Per 15 minutes, from anywhere. |
| Device requests per IP address | 10,000 | Per 5 minutes across Autodiscover, EWS and ActiveSync, shared with the address's Platform API requests. Past it, 429 with Retry-After. |
| Changes per device sync | 512 | iPhone and iPad; the device asks for more until it has everything. |
| Messages per folder on a device | 5,000 | The newest within the device's Mail Days to Sync. |
| Search results per device request | 100 | iPhone and iPad Mail search and directory lookups. |
| Unsent upload kept | 1 day | Attachments uploaded but never sent. |
Notes
| Limit | Value | Notes |
|---|---|---|
| Page content | 1,000,000 bytes | Stored JSON of blocks and Markdown. |
| Text indexed for search | 4,000 characters | From the start of each page. |
| Pages in the tree | 2,000 | |
| Rows returned with a database | 1,000 | |
| Search results | 20 | |
| Favorites per person | 200 | |
| Search terms used | 8 | |
| Nesting depth | 64 | |
| Properties per database | 50 | |
| Options per select property | 100 | |
| Text property value | 2,000 characters | |
| Page title | 200 characters | |
| Earlier versions kept | 30 days |
Caity
| Limit | Value | Notes |
|---|---|---|
| Message length | 200,000 characters | |
| Tool steps per answer | 25 | |
| Response time | 14 minutes |
Drive
| Limit | Value | Notes |
|---|---|---|
| Largest file | 5,242,880 MB | S3's largest object; uploaded in parts. |
| Files uploaded in one part | 16 MB | Larger files use parts of 16 MiB or more, at most 10,000. |
| Part links per request | 100 | |
| Unfinished uploads kept | 7 days | Then they and their parts are deleted. |
| Items in one folder | 10,000 | |
| Folder depth | 64 | |
| Name length | 255 characters | No / or control characters; unique per folder, ignoring case. |
| People and teams per item | 100 | Share a folder or a team for more. |
| Shared drives per organization | 1,000 | |
| Members per shared drive | 600 | |
| Versions kept per file | 100 | The oldest goes when a new one passes this. |
| Trash kept | 30 days | Then items are deleted forever (hourly). |
| Files per ZIP download | 10,000 | ZIPs are made in the background (15 minutes at most) and kept a day. |
| ZIP download size | 10,240 MB | |
| Copy or version restore size | 20,480 MB | Larger files: download and upload again. |
| Items moved between drives at once | 2,000 | Everything in a folder moves with it. |
| Items searched per request | 50,000 | Names only; file contents aren't searched yet. |
| Text read and written by MCP tools | 1 MB | |
| Comment length | 4,000 characters | |
| Images given thumbnails | 50 MB | Also the largest photo cleaned of location details for sharing. |
| Storage per organization | 100 GB | Default; set per plan (driveStorageGb). Every version and the trash count. |
| Storage per personal space | 15 GB | Default; set on the default plan (drivePersonalStorageGb). |
Keys
| Limit | Value | Notes |
|---|---|---|
| Keys per organization | 100 | Default; set per plan (keysMax). The organization's own keys; keys that protect the platform's data for you don't count. |
| Key operations a month | 100,000 | Default; set per plan (keyOpsPerMonth). Encrypt, decrypt, rewrap, sign and verify; past it, 429 until the next month. |
| Secrets per organization | 1,000 | Default; set per plan (secretsMax). Sensitive variables, shared ones included. |
| Versions kept per secret | 20 | Older ones are deleted as new values are set. |
| Shortest rotation schedule | 1 day | |
| Longest rotation schedule | 3,650 days | |
| Data per encrypt or sign | 64 KB | Encrypt bigger data with a data key of your own and encrypt that key. |
Photos
| Limit | Value | Notes |
|---|---|---|
| Photos changed at once | 500 | Favourite, archive, trash, restore, add to an album. |
| Photos in one album | 20,000 | |
| Albums per library | 10,000 | |
| Photos in a selection's link | 500 | An album's link shows the whole album. |
| Links per library | 1,000 | |
| Photo tokens per person | 50 | |
| Photos read whole for details and previews | 200 MB | Larger files are hashed as they stream; RAW previews up to the same size. |
| Videos shared without their location | 100 MB | Larger videos go through a link only when it keeps locations. |
| Preview size | 2,048 | Pixels on the long edge (WebP, no metadata). |
| Archives in one Takeout import | 100 | |
| One Takeout archive | 102,400 MB | |
| Takeout archives kept | 14 days | Deleted when their import finishes; unstarted uploads after this. |
| Files per export ZIP | 10,000 | Larger libraries export as several ZIPs. |
| Export ZIP size | 10,240 MB | |
| Trash kept | 30 days | Then photos are deleted for good (hourly). |
Health
| Limit | Value | Notes |
|---|---|---|
| Samples per request | 500 | HealthKit sync sends batches of up to this many; Admin → Health can set it lower. |
| Characters in a sample's note | 1,000 | |
| Data sources per person | 200 | |
| Devices holding the key for partner names | 20 | |
| Pinned metrics on Summary | 12 | |
| Samples per page | 200 | |
| People shown on a leaderboard | 100 |
Customers
| Limit | Value | Notes |
|---|---|---|
| Fields per object | 300 | Standard and custom fields together. |
| Custom objects per organization | 50 | |
| List view indexes per object | 25 | Built-in and custom ones. |
| Personal list views per person and object | 50 | |
| Values per picklist | 500 | |
| Validation rules per object | 100 | |
| Pipelines per organization | 50 | |
| Records per bulk action | 200 | |
| Rows per import | 1,000,000 | |
| Rows per export | 1,000,000 | |
| API and MCP calls per organization per minute | 1,200 | Keys, MCP and Caity. Past it, 429. |
| Largest import file | 512 MB | |
| Records per organization | 1,000,000 | Default; set per plan (crmMaxRecords). |
| Records per page | 200 | |
| Records sorted without an index | 2,000 | Larger lists sort by an index; saving the view adds one. |
| Values in one In filter | 10 | |
| CSV export straight from a list | 10,000 | Larger exports run in the background. |
| Import sent with the request | 5 MB | Larger files upload straight to storage. |
Marketing
| Limit | Value | Notes |
|---|---|---|
| Emails per second, every organization together | 10 | Marketing's share of the SES sending rate. |
| Emails on an organization's first day of sending | 500 | Warm-up: the allowance grows each day. |
| Warm-up growth a day | 50 | Percent. |
| Warm-up length | 30 days | Then an organization's daily volume is uncapped. |
| Reputation guard window | 24 | Hours of sending it looks back over. |
| Emails before the reputation guard judges | 500 | |
| Hard-bounce rate that pauses an organization | 300 | Hundredths of a percent (300 is 3%). |
| Complaint rate that pauses an organization | 10 | Hundredths of a percent (10 is 0.1%). |
| Test emails per organization per hour | 30 | |
| Double opt-in emails to one address per day | 3 | |
| Groups per segment | 10 | |
| Segments per organization | 500 | |
| Lists per organization | 500 | |
| Templates and saved blocks per organization | 1,000 | |
| Rows per list import | 1,000,000 | |
| Largest list import file | 256 MB | |
| Largest image | 5 MB | |
| Opens and clicks kept | 400 days | Per address. |
| Journeys per organization | 200 | |
| Steps per journey | 60 | |
| Journey texts per organization per day | 200 | |
| Attribution window | 30 days | A won opportunity counts for the last email its buyer opened or clicked in this time. |
| Forms per organization | 200 | |
| Landing pages per organization | 200 | |
| Shortest time to fill in a form | 3 seconds | Faster submissions are treated as spam. |
| Form submissions from one IP address per hour | 10 | Per organization. Past it, 429. |
| Submissions to one form per hour | 1,000 | Past it, 429. |
| Form submissions kept | 365 days | |
| API and MCP calls per organization per minute | 600 | Keys, MCP and Caity. Past it, 429. |
| People one send may reach | 10,000 | Per organization on Complete, the default plan; Enterprise 50,000; not in Essentials or Team. |
| Messages a month | 50,000 | Per organization on Complete, the default plan; Enterprise 250,000; not in Essentials or Team. |
Phone widgets
| Limit | Value | Notes |
|---|---|---|
| Widgets per person | 32 | Some kinds have their own limit, such as 10 countdowns. |
| Saved widgets | 16 KB | As JSON. Past it, 413. |
| Tiles in the Lock Screen view | 4 | |
| Custom endpoint answer | 64 KB | JSON or text, read within the timeout below. |
| Custom endpoint timeout | 4 seconds | |
| Custom endpoint value | 64 characters | |
| Stock symbols per request | 10 | |
| Speed test download | 1,000,000 bytes | |
| Up next items per list | 10 | |
| Up next look-ahead | 14 days | |
| Custom endpoint reads per person per hour | 240 | A widget's value is kept for a minute. Past it, 429. |
| Stock price requests per person per hour | 240 | A symbol is fetched at most once a minute for everyone. |
| Speed tests per person per hour | 20 | |
| Up next reads per person per hour | 240 |
Weather
| Limit | Value | Notes |
|---|---|---|
| Saved places per person | 20 | |
| Forecasts and place searches per person per minute | 120 | Keys count per key. Past it, 429 with Retry-After. |
| Provider lookups per person per hour | 300 | Forecasts not already cached, and place searches. Past it, 429 with Retry-After. |
| Forecast cached per 1 km cell | 10 minutes | |
| Cached forecast served when the provider fails | 1 hour | Up to this old; then 503. |
| Days per forecast | 16 | |
| Hours per forecast | 48 |
Food
| Limit | Value | Notes |
|---|---|---|
| Recipes per person | 5,000 | |
| Collections per person | 200 | |
| Shopping lists per household | 20 | |
| Web page and file imports per person per day | 200 | A file of many recipes counts once. Past it, 429. |
| Photo and page readings per person per day | 25 | Recipes read from photos and pages without recipe data, by the platform's model. Past it, 429. |
| Largest import file (MB) | 200 | |
| Pictures per recipe | 10 | Pictures count against the person's storage (Drive's personal quota). |
| Ingredients per recipe | 150 | |
| Steps per recipe | 100 | |
| Items per shopping list | 500 | |
| People per household | 12 |
Feedback
| Limit | Value | Notes |
|---|---|---|
| Reports a person can send per hour | 10 | Past it, 429. |
| Reports a person can send per day | 30 | Past it, 429. |
| Reports from everyone per hour | 500 | Past it, 429 until the hour moves on. |
| Images per report | 5 | |
| Links in a report before it's marked as spam | 5 | |
| Largest image | 8 MB | PNG, JPEG or WebP; the apps re-encode what's attached. |
| Title | 150 characters | |
| Description | 5,000 characters |
Platform API
| Limit | Value | Notes |
|---|---|---|
| Request timeout | 30 seconds | |
| Requests per IP address | 10,000 | Per 5 minutes, shared with the address's Mail device requests. Past it, 429 with Retry-After. |