Quotas, limits and error codes (API)
What the DumpTriage API returns when you hit a quota or size limit: 429, 413, 403, 503 and 417, how to read your usage, and how to retry.
Short answer: When an upload is refused, the status says why: 429 for the monthly dump quota, the uploads-in-progress limit or the API request rate limit, 413 for a file larger than your tier's per-dump size or what is left of your monthly upload volume, 403 for terms not accepted, a closed account or human_review on a plan without engineer review, and 503 when the malware scanner is unavailable. Every error body is {"detail": "..."}. GET /api/v1/customers/me shows what you have used in the current period.
1. See your usage before you hit a limit
curl https://api.performanceinsights.ai/api/v1/customers/me \
-H "Authorization: Bearer dts_..."
The usage object in the response holds plan, dumps_used, dumps_allowed, bonus_dumps, traces_used, traces_allowed, verified and period_ends. An *_allowed of null means no cap. period_ends is null once the period has run out, until the next upload starts a new one. verified: false means the email link has not been clicked yet, which limits the account to one dump of up to 256 MiB.
2. The limits
| Tier | Monthly dumps | Largest dump | Monthly upload volume |
|---|---|---|---|
solo | 1 | 2 GiB | 2 GiB |
isv | 10 | 8 GiB | 40 GiB |
enterprise | 25 | 16 GiB | 100 GiB |
Quotas are per rolling 30-day period. Re-uploading a dump you have already uploaded (identical bytes) is deduplicated, returns the existing dump and does not count against the quota. There is no paid tier yet; for a higher limit, get in touch. The tiers are also in the API reference.
3. Errors on POST /api/v1/dumps
| Status | Meaning | What to do |
|---|---|---|
400 | Malformed upload. | Send multipart with the dump in the field named file. |
401 | Missing or invalid API key. | Check the Authorization: Bearer header. |
403 | Terms not accepted, the account has been closed, or human_review=true on a plan without engineer review (human_review_not_included). | Accept the terms, or drop human_review. human_review_included in GET /api/v1/customers/me says whether your plan has it. |
413 | Larger than the plan's per-dump limit, or than what is left of the monthly upload volume. | Compare size_bytes with the table above; see a dump that is too big. |
417 | Expect: 100-continue is not supported. | Turn that header off in your client. |
422 | Validation error or an unrecognized dump format. | The dump type is detected from the file itself. |
429 | Quota exceeded, the account's limit of uploads in progress at once reached, or its API request rate limit. | Wait for an upload to finish or for the period to roll over, then retry. Do not retry in a tight loop. |
503 | The malware scanner is unavailable and the upload was not accepted. | Retry later; the reference says to wait the seconds in the Retry-After header when it is present. |
The symbol upload, POST /api/v1/symbols, has the same set with 413 meaning the plan's per-object limit, and 409 for a conflict (see upload private symbols). Every error body is {"detail": "..."}, so one handler covers all of them.
4. Retrying safely
- Retry only
429and503.400,401,403,413and422will fail the same way again. - Back off between attempts and honour
Retry-Afterwhen the response carries it. - A retried upload of identical bytes returns the existing dump, so a timeout after the server accepted the file does not use up a second slot of your quota.
- Read
usagebefore a batch to know how many dumps are left.
Common questions
- What happens when I go over my monthly quota?
- The upload is refused with 429 until the rolling 30-day period rolls over. Uploading identical bytes again is deduplicated and does not count against the quota.
- Why did my upload return 413?
- The file is larger than your tier's per-dump size, or larger than what is left of your monthly upload volume. Oversized uploads are cut off at the limit rather than after the full transfer.
- How do I see how much quota I have used?
- Call GET /api/v1/customers/me and read the usage object: dumps_used, dumps_allowed, plan, verified and period_ends. A null allowance means no cap.
Ready to send a dump?
Upload a minidump to DumpTriage. It runs the debugger, reads the output and sends back the faulting module, the stack and a plain-language root cause (how the analysis works). Except on the Solo plan, cases the automated passes can't settle go to an engineer. Free during the pilot.
Create an account