Failed requests are free. No API credits are deducted for any response outside the
2xx range, whatever the cause. A 429, a 501, a 556 and a 500 all cost you nothing, so a retry is never a billing risk.Retries do still count against your rate limit, which is why the guidance below is about backing off correctly rather than about cost.Standard and GoldRush-specific codes
Not every code this API returns is a registered HTTP status code. It is worth knowing which is which, because off-the-shelf HTTP clients, proxies and monitoring tools only understand the registered ones and will usually flatten the rest into a generic “5xx”.Standard HTTP codes
400 401 402 403 404 406 410 416 429 500 501 503 504 507Registered status codes. Several carry a GoldRush-specific meaning, noted in the table below.GoldRush-specific codes
452 551 552 554 556 557 558 561 562 563 565 567 570Not registered HTTP status codes. Specific to the GoldRush API. Match on the exact number, not on the 5xx class.The error response body
Every error the API itself generates uses the same envelope as a successful response, withdata set to null:
error_codeis a JSON number, not a string. Compare it with501, not"501".error_codealways equals the HTTP status code, so you can branch on either one.error_messagecarries the specific reason. Two requests can share a status code and mean entirely different things, so log the message as well as the code.
500, which is returned with an empty body. Treat a response that has a 5xx status and no parseable JSON as a 500.
Standard HTTP status codes
These are all registered HTTP status codes. Where our meaning is narrower or more specific than the generic one, it is spelled out here.501 is a capability answer, not an outage
A501 means your request was well-formed and your key was fine, but the chain or endpoint cannot serve that particular thing. It is a stable answer rather than a transient one, so retrying it unchanged will not succeed until that support actually ships. It is returned in three situations:
-
An unsupported chain. Note that an unrecognized chain name returns
501, not404: -
A feature flag the chain does not support. Flags such as
with-stateandwith-input-dataare only available on chains with the underlying data. The flag is valid, the chain just cannot serve it:Rather than discovering this by trial, read the capability flags on/v1/chains/, such asis_internal_tx_supportedandis_input_data_supported, and skip the call when the flag is false. - An endpoint restricted to certain chains, for example an EVM-only endpoint called on a non-EVM chain.
The gate runs before the identifier is looked up, so a transaction hash that does not exist returns
404 on a chain that supports the flag and 501 on a chain that does not. That makes a throwaway hash a cheap way to test chain support.GoldRush-specific status codes
All of these carry the normal JSON error body described above.565 is short-lived by design. The response is cached for only 10 seconds, because the usual cause is that indexing is a few seconds behind the chain tip. Waiting 10 to 15 seconds and retrying once resolves most occurrences. If a 565 for the same record persists for minutes, raise it on the support page.What to do with every code
Sorted by what the right response actually is, rather than by number.Retry with exponential backoff
429, 500, 503, 504, 551, 552, 554, 556, 557, 558, 561, 562, 563, 565, 567
These are transient. The same request may well succeed later. Use the loop in Retry Strategies below, with these adjustments:
557: retry once immediately before backing off. It usually clears on the next attempt.565: wait at least 10 seconds before the first retry.562and563: recovery depends on a third party, so allow a ceiling of 30 to 60 seconds rather than a few seconds.429: back off until your request rate is under the limit for your plan. More attempts will not help.
Change the request, then retry
406, 507
The request as sent will keep failing, but a narrower one will succeed. Reduce page-size, shorten the date range, or split the query, then send it again.
Fix something, then retry once
400 fix the parameters. 401 fix the API key. 402 check error_message to see which of the three causes applies, then raise your spending limit, upgrade your plan, or resume your subscription. 452 send an honest User-Agent.
Do not retry
403, 410, 416, 501, 570
These are stable answers, not failures in progress. Retrying returns exactly the same thing. 410 means the endpoint or chain is gone for good, so remove the call and any scheduled job that makes it. 501 means the capability does not exist on that chain, so check /v1/chains/ and skip it. 570 means the contract reverted, which is a real answer about the contract.
None of this costs credits. Error responses are not billed, so the cost of a retry is only the rate limit slot it consumes and the latency it adds. Optimize your retry policy for recovery time and for not amplifying an incident, not for spend.
Rate Limits
The Foundational API enforces rate limits based on your plan tier:
Rate limits are enforced per API key and IP address. When you exceed your limit, you’ll receive a
429 Too Many Requests response. Back off and retry using the strategies below.
Retry Strategies
Exponential Backoff with Jitter
Retry on the transient set only, and use exponential backoff with random jitter so that many clients recovering from the same incident do not retry in lockstep. A retry loop written against429, 500 and 503 alone will miss most of what the API actually returns under load, because the specific codes above are used in preference to a generic 500. Include them explicitly.
SDK Built-in Retries
The GoldRush TypeScript Client SDK handles retries and rate limiting automatically - no manual retry logic needed when using the SDK.Debugging Tips
Verify your API key format
Verify your API key format
GoldRush API keys follow the pattern
cqt_wF... or cqt_rQ... (26 base58 characters after the prefix). Double-check for trailing whitespace or truncation.Check supported chains
Check supported chains
An unsupported or misspelled chain returns
501, not 404, with "Chain <name> not supported." in error_message. A 404 on a chain-scoped path usually means the record was not found, not that the chain is wrong. See Supported Chains for the full list.Inspect the full error body
Inspect the full error body
Don’t rely on the HTTP status code alone. The JSON response body contains an
error_message field with specific details about what went wrong. This matters most for 402 and 501, where one status code covers several unrelated causes that only the message distinguishes.Test with curl
Test with curl
Isolate issues from your application code by testing directly:
Monitor credit usage
Monitor credit usage
Track your API credit consumption on the GoldRush Platform dashboard to avoid unexpected
402 errors.Contact support for persistent server-side errors
Contact support for persistent server-side errors
If you’re consistently hitting
500, 503, or any of the GoldRush-specific 5xx codes after backing off, open a ticket on the GoldRush support page with your API key prefix, the endpoint, the exact error_code and error_message, and timestamps of the failures.The support form asks for the endpoint and chain directly, so filing there routes the issue faster than describing it in free text.Include the exact code. 556 and 565 in particular point at very different causes from a generic 500, and quoting the number shortens the diagnosis considerably.Quick Reference
Foundational API Auth
API key setup, authentication methods, and SDK usage.
FAQ
Common questions about plans, rate limits, and features.
Supported Chains
Full list of supported blockchains and endpoints.