Skip to content

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/batch or POST /v1/dpp/import would 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 status failed.
  • Dynamic codes: POST /v1/codes or POST /v1/codes/batch would exceed your organization’s quota of dynamic QR codes.
  • Batch size: POST /v1/codes/batch contains more items than your plan allows per request.
  • Import rows: the file for POST /v1/dpp/import has more data rows than your plan allows per request. POST /v1/codes/import accepts at most 1,000 rows on every plan.
  • Workspaces and team members: POST /v1/workspaces or POST /v1/members would 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/documents and POST /v1/dpp/:id/images are refused there. On the other plans, the limit is the maximum number of documents per DPP.
  • Files: POST /v1/files/upload would exceed the maximum number of files per QR code.
  • EU registry: POST /v1/dpp/:id/register requires 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.

← Error Reference