Performance Insights
API task

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.

Published 2026-11-11 by PerformanceInsights.ai

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

TierMonthly dumpsLargest dumpMonthly upload volume
solo12 GiB2 GiB
isv108 GiB40 GiB
enterprise2516 GiB100 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

StatusMeaningWhat to do
400Malformed upload.Send multipart with the dump in the field named file.
401Missing or invalid API key.Check the Authorization: Bearer header.
403Terms 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.
413Larger 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.
417Expect: 100-continue is not supported.Turn that header off in your client.
422Validation error or an unrecognized dump format.The dump type is detected from the file itself.
429Quota 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.
503The 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

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