plan-limit
HTTP 422 Unprocessable Entity
Your current plan does not allow this action. The request itself is valid, but carrying it out would exceed a limit of your plan. The API checks before it writes anything, so nothing has been created. Upgrade your plan or free up capacity, for example by deleting DPPs or dynamic codes you no longer need.
Typical triggers
- DPP quota:
POST /v1/dpp,POST /v1/dpp/batchorPOST /v1/dpp/importwould create more DPPs than your plan includes. An import counts only its valid rows. Large imports run in the background and check the quota again when they start; if it has filled up in the meantime, the job ends with statusfailed. - Dynamic codes:
POST /v1/codesorPOST /v1/codes/batchwould exceed your organization’s quota of dynamic QR codes. - Batch size:
POST /v1/codes/batchcontains more items than your plan allows per request. - Import rows: the file for
POST /v1/dpp/importhas more data rows than your plan allows per request.POST /v1/codes/importaccepts at most 1,000 rows on every plan. - Workspaces and team members:
POST /v1/workspacesorPOST /v1/memberswould exceed the number of workspaces or team members your plan includes. - DPP documents: Free includes no document storage for DPPs, so
POST /v1/dpp/:id/documentsandPOST /v1/dpp/:id/imagesare refused there. On the other plans, the limit is the maximum number of documents per DPP. - Files:
POST /v1/files/uploadwould exceed the maximum number of files per QR code. - EU registry:
POST /v1/dpp/:id/registerrequires a Business, Agency or Enterprise plan.
Response
Where it applies, the response carries the extension members resource and limit: resource names the limit (dynamic_codes, batch_size, workspaces or team_members), limit is its value on your plan. For dynamic codes, used also shows how many codes already count against the quota.
{ "type": "https://docs.qr3.app/errors/plan-limit", "title": "Plan Limit Reached", "status": 422, "detail": "Your plan allows a maximum of 25 dynamic QR code(s). Upgrade to create more.", "resource": "dynamic_codes", "limit": 25, "used": 25}Not a rate limit
Retrying later does not help with this error: the limit stays until you upgrade or free up capacity. Temporary limits answer with HTTP 429 instead: rate-limited for the 60 requests per minute per API key, rate-limit for resource-level limits such as daily code creation.