Limits
The numbers on this page are generated from the service’s source and its default configuration, so they cannot drift from what the service enforces. An application or a tenant can lower some of them in its settings; the settings reference says which.
| What | Limit | Note |
|---|---|---|
| File size (application default) | 2 GiB | The application's max_file_size_bytes. A larger ticket is refused with 413 file_too_large. |
| File size (platform maximum) | 5 GiB | No application or tenant setting goes above it. |
| Single PUT | up to 64 MiB | A larger file gets a multipart ticket (method: multipart). |
| Multipart part | at least 8 MiB | The service picks part_size so that a file needs at most 10,000 parts. |
| JSON request body | 256 KB | A larger body is refused with 413 payload_too_large. File bytes never go through the API. |
| Custom metadata value | 1 KiB | Per key of custom. Larger is refused with 400 invalid_request. |
| Inline text preview | 1 MiB | A longer text file is previewed truncated (text.truncated: true). |
| Renditions and media metadata | files up to 2 GiB | A larger file gets no renditions; the step reports skipped. |
| Malware scan | files up to 1 GiB | A larger file is not scanned (processing.scan: skipped); the application's scan_oversize_policy decides whether it is served. |
| Extracted text for content search | the first 2 MiB | Of text per version; the rest of a longer document is not searchable. |
| Tenant quota (default) | 50 GiB | Set per tenant by a platform administrator. A ticket over it is refused with 413 quota_exceeded. |
Counts
Section titled “Counts”| What | Limit | Note |
|---|---|---|
| Parts per multipart upload | 10,000 | The service grows part_size to stay within it. |
| Part URLs per request | 100 | The ticket carries the first 100; POST P/uploads/:upload_id/parts gives the rest. |
| Parts completed in the request | 1,000 | A completion with more parts answers 202 with a job_id and finishes asynchronously. |
Ids per batch (POST P/files/urls, effective permissions) | 200 | More is refused with 422 too_many_file_ids. |
Listing page (limit) | default 100, maximum 500 | A larger limit is capped; a limit that is not a positive integer is refused with 400 invalid_limit. |
Search page (limit) | default 50, maximum 200 | A larger limit is capped. total is exact up to 10,000, then null. |
| Folder scopes a search may span | 5,000 | For a user without files.view. Beyond it, 422 too_many_scopes: add a folder filter. |
| Name | 255 characters | No /, no control characters, not . or .. (400 invalid_name). Unique among siblings, ignoring case (409 name_conflict). |
| Folder depth | 32 | Deeper is refused with 400 depth_exceeded. |
| Access entries per item | 200 | More is refused with 422 too_many_entries. |
| Descendants of a folder moved in the request | 1,000 | A larger move answers 202 with a job_id. |
blocked ids in partial_permission | 100 | The first ones only. |
title | 500 characters | Longer is refused with 400 invalid_request. |
description | 5,000 characters | The same. |
tags | 50 tags of 64 characters | Tags are lower-cased and de-duplicated. |
custom | 50 keys | Values up to 1 KiB each. |
category, department | 100 characters | With an enforced taxonomy, a listed value only (422 taxonomy_value_invalid). |
external_ref | 200 characters | Your own id; not unique. |
notify_user_ids | 50 | Who gets file.ready besides the owner. |
| Named upload policies per application | 20 | Names are lower case, digits, _ and -; default is reserved. |
Types in allowed_types | 100 | MIME types or patterns such as image/* or *. |
| Applications in one tenant-wide permissions change | 50 | More is refused with 422 too_many_applications. |
| Rows per audit export | 100,000 | Narrow the filters for more. |
| Search highlight | 200 characters | Around the first matching word, … where it was cut. |
| Content matches ranked by relevance | 1,000 | Sorted by relevance, a content search pages through the best ones; other sorts page through every match. |
| Names matched by prefix in a content search | 1,000 | With in=content, the first names that start with the query join the text matches. |
| Legal hold reason | 500 characters | Placing a hold needs one (1 or more characters); a release reason is optional. Longer is refused with 400 invalid_request. |
| Reason for releasing a managed folder | 500 characters | Required (1 or more characters) when the tenant owner releases an application-managed folder. Longer or missing is refused with 400 invalid_request. |
| Rows per tenant audit export (platform) | 100,000 | X-Export-Truncated: true when the filters match more. |
| Webhook URL | 2,048 characters | An absolute https URL on a public address (400 webhook_url_not_allowed). |
| Webhook secret | 16 characters to 256 characters | Required the first time; never returned. |
| Webhook attempts per event | 5 | For network errors, timeouts, 5xx and 429; any other answer is final. |
| Failed webhook events in a row | 20 | Then the service switches the webhook off (disabled_at). |
Lifetimes and retention
Section titled “Lifetimes and retention”| What | Limit | Note |
|---|---|---|
| Single PUT ticket | 1 hour | After it the ticket answers 409 upload_expired; the reserved quota is released. |
| Multipart ticket | 24 hours | Part URLs live 1 hour each and can be requested again. |
| Download and preview URL | default 15 minutes, at most 24 hours | A machine client may ask for longer with ttl_seconds; the application sets the default. |
| Share link download URL | 5 minutes | Minted per download. |
| Share link expiry (default) | 7 days | At most the application's share_link_max_days. |
Idempotency-Key replay window | 24 hours | The same key and body within it answers the first response again. |
| Trash retention (default) | 30 days | Per application, 0 to 365 days; then the item is purged. |
| Versions kept (default) | 10 | Per application, 1 to 100; pinned and current versions are never pruned. |
| Audit log retention | 365 days | Older rows are deleted. |
| Daily usage snapshots | kept 400 days | One per application and per tenant and UTC day. A tenant's usage trend and usage export reach back as far. |
| Usage trends across tenants (platform) | up to 90 days | days of the cross-tenant ranking; default 30. |
Video length for mp4_720p and mp4_1080p | up to 10 minutes | A longer video plays from its original (error: duration_exceeds_limit). |
| Webhook answer | 5 seconds | For the ping and every delivery; a slower answer counts as a timeout. |
| Webhook retry delays | 10 seconds, 1 minute, 5 minutes and 15 minutes | Between the attempts of one event. |
| Webhook delivery log | 7 days | One row per attempt. |
Rate limits
Section titled “Rate limits”Counted per minute. Over the limit, the answer is 429 rate_limited with a Retry-After header; wait that many seconds.
| Applies to | Counted per | Limit |
|---|---|---|
| Every request of a machine client | client | 600 per minute |
| Upload and version tickets | user | 60 per minute |
| Download, preview and batch URL minting | caller | 600 per minute |
| Search | caller | 120 per minute |
| The public share link routes | IP address | 60 per minute |
| Access entry and role matrix changes | user | 30 per minute |
| Settings, taxonomy and platform administration changes | caller | 10 per minute |
| Share link password attempts | link and IP address | 3 per minute |