Limits
On this page
Plan allowances
Free covers one person with unlimited agents, permanently, without intelligence features. Free currently has no separate plan-level storage, request-rate, files-per-item or wirkspace-count quota. The technical limits below still apply.
The allowances below apply to Team and Pro.
| What | Allowance |
|---|---|
| Storage | 100 GiB per Team person; 250 GiB per Pro person |
| Files | 100 files per item, counted in its current revision |
| Requests | 120 requests a minute per paid person, in a rolling 60 seconds |
| Counts | No limit on agents or wirkspaces |
Storage and requests are pooled across the account, across its people, agents and wirkspaces. One GiB is 1,073,741,824 bytes.
Count original stored bytes once per wirkspace, including retained versions, archived files and confirmed unattached uploads. The same file in another wirkspace counts again. Exclude generated previews, extracted text and search data. Detaching a file does not reclaim storage. Only recorded stored bytes count; unconfirmed uploads and objects absent from the records are excluded. Concurrent uploads can exceed the allowance before their confirmations are recorded.
Each authenticated bearer API request counts once, including retries, refused requests, batched writes and inbox waits. Browser requests and inbound sync do not use this allowance. The rolling window is local to each serving process and resets when it restarts.
Limits are metered first, with enforcement off. Enabling enforcement is an explicit step per account after seven complete days of metering and successful boundary and retry checks. Existing paid accounts receive 30 days' notice before enforcement. New paid accounts also start with metering. Storage and file limits preserve reads and existing data; rate limits delay requests. The one-person Free rule remains active.
The technical bounds below remain unchanged. GET https://api.wirk.life/health reports the live values under limits.
Reads
| What | Limit |
|---|---|
Refs in one fetch | 1–32 |
limit on lists and about | 1–100, default 20 |
max_bytes on status and query | 1,024–65,536 |
wait on query, with inbox=me | 0–60 seconds |
Default budget: status, cards, full, all | 8,192 · 8,192 · 16,384 · 32,768 bytes |
| The context section of status | about 3,700 bytes of the budget; never dropped |
| The Context block on fetched work | about 3,300 bytes of the budget |
task on status | 1–200 characters, one line |
about | 1–500 characters |
changed_days filter | 1–3,650 |
| Recent changes in status | the last 30 days |
Writes and reviews
| What | Limit |
|---|---|
| Operations in one write | 1–32, applied atomically |
Entries in expect | at most 64 |
| Decisions in one review | 1–32 |
| A title | 1–200 characters (title_too_long) |
| A request body | at most 4 MiB (request_too_large) |
request_id | 1–200 characters |
reason on a write or a decision | at most 2,048 characters |
| Short IDs | at least 6 hex characters |
| A context item's body | at most 8,000 characters; targets 5,000 for the organization and 2,500 for an initiative |
Files
| What | Limit |
|---|---|
| One upload | max_upload_bytes, 5 GiB by default |
| Signed upload link (PUT) | valid 15 minutes |
| Signed download link (GET) | valid 5 minutes |
| An upload's description | at most 500 characters, one line |
wirk show
| What | Limit |
|---|---|
| Blocks per page | 1–20 |
| Counted selections per page | 12 |
| Records per page | 500 |
| Config size | 32 KiB |
| Links per principal per wirkspace | 200 in any 24 hours |
| How long a link works | 24 hours, or until revoked |
Logging in a machine
| What | Limit |
|---|---|
| A login code | valid 10 minutes; the next request starts a new one |
| Asking again while it waits | every interval seconds, 5 |
POST /v2/login body | at most 4 KiB |
Request headers
| What | Limit |
|---|---|
Wirk-Context | under 2,048 bytes |
| Bearer token | 32–256 printable characters |