Skip to main content

Troubleshooting

SymptomLikely causeFix
401 missing_api_key on every callKey not sent, or Bearer with two spaces, or the key truncatedSend Authorization: Bearer <key> with one space; check the secret store value has no newline
400 missing_content_sha256A write without the hashHash the exact body bytes you send
403 not in the error shapeThe hash does not match the bodyHash after serialising, and send those bytes unchanged; check no middleware re-encodes the body
403 test_key_demo_onlyA test key on your own seriesUse a live key
403 terms_not_acceptedA new accountAccept the terms through the order form or the first credit purchase
400 invalid_seriesA bar out of order, high below low, a value at or below zeroRead problems: each names a bar and why. For values at zero, add an offset
409 edge_mismatchThe edge sent belongs to another series or profile versionRead the edge for this series from your store; keep one writer per series
400 edge_invalidThe edge was changed, truncated or re-encoded on its way through your storeStore it as an opaque string, exactly as received
409 out_of_orderA late bar, or an edge older than the bars (a second writer moved on)Drop the bar, or read the latest edge; nothing was applied
A failed job with storage_unreachablePatternode could not read source_url or write result_url: the link expired, its signature does not cover a GET or PUT, or the bucket refused it. The job was not chargedSign the links for at least an hour, the GET for the file and the PUT for the result, and run the job again
429 rate_limited that does not clearSustained traffic over your planSmooth to the rate in ratelimit-policy, or ask for capacity
429 enforced_spend_limit_reachedThe plan's monthly capWaiting does not clear it: move up a plan
Webhooks rejected after a rotationThe receiver holds only the new secretKeep the previous one too, until the next rotation
Duplicate eventsNormal: delivery is at least onceDeduplicate by id
Segments differ between staging and productionDifferent profile versionsPin the version on both
p99 above the service level from your side, but server-timing is smallThe network between you and the edgeMove callers to the jurisdiction's region, or connect privately

Still stuck: open a case with the request-id, the time in UTC, the jurisdiction and the transport (Support).