Troubleshooting
Audience: Anyone debugging a 4xx or 5xx from the Gateway. Reading time: ~7 minutes, but treat it as a lookup reference, not a linear read. Prerequisites: None. You'll learn: The two response envelopes (StandardError + ProblemDetails), the URN-typed error catalogue for
/flow/*routes, the common pitfalls, and where to get help.
Errors from the Overledger Gateway use one of two envelopes depending on the route.
11.1 Error envelopes
StandardError, non-Flow routes
StandardError, non-Flow routesReturned with Content-Type: application/json from every route outside /flow/* (users, contracts, networks, nodes, providers, stakes, deposits, RPC).
{
"timestamp": 1709737845000,
"status": 400,
"error": "Bad request",
"message": "Validation failed",
"path": "/users/me/deposits"
}| Field | Meaning |
|---|---|
timestamp | Milliseconds since epoch. |
status | HTTP status. |
error | Short label (e.g. Bad request, Unauthorized, Not found). |
message | Human-readable reason. |
path | The request path. |
ProblemDetails (RFC 7807), /flow/* routes
ProblemDetails (RFC 7807), /flow/* routesReturned with Content-Type: application/problem+json from every Flow App route (sessions, registry, queries, subscriptions, events).
{
"type": "urn:fusion:error:bad-request",
"title": "Bad Request",
"status": 400,
"detail": "appId is required",
"retryable": false,
"instance": "/flow/sessions/abc123"
}| Field | Meaning |
|---|---|
type | A URN identifying the error class. See 11.2 for the catalogue. |
title | Short human-readable summary. |
status | HTTP status. |
detail | Per-request explanation. |
retryable | Whether the client should retry this request. |
instance | Request correlation identifier, quote in any support ticket. |
11.2 Flow-route error types
These are the URN values you'll see in the type field on /flow/* responses:
type | Typical HTTP | When |
|---|---|---|
urn:fusion:error:bad-request | 400 | Schema or business validation failed. |
urn:fusion:error:unauthorized | 401 / 403 | Missing, invalid, or unprivileged API key. |
urn:fusion:error:not-found | 404 | Session, app, version, or step doesn't exist or isn't visible to your key. |
urn:fusion:error:conflict | 409 | Conflicting state (e.g. duplicate registration, version already exists). |
urn:fusion:error:gone | 410 | App version has been retired. |
urn:fusion:error:too-many-requests | 429 | Rate limit exceeded. Honour Retry-After. |
urn:fusion:error:bad-gateway | 502 | Downstream Flow App or settler failed. Includes content-filter denials and x402 settlement failures. |
retryable: true is a hint, not a guarantee, back off before retrying and limit retry depth.
11.3 Common non-Flow status codes
The error and message fields on StandardError are intended to be self-describing. The most common combinations:
status | Typical error | When |
|---|---|---|
400 | Bad request | Schema validation failed on the request body or query parameters. |
401 | Unauthorized | Missing or malformed Authorization header / API key in URL path. |
403 | Forbidden | API key not permitted to call this resource (firewall denial). |
404 | Not found | Resource doesn't exist or your key cannot see it. |
409 | Conflict | E.g. attempting to register the same node twice. |
429 | Too many requests | Rate limited. Honour Retry-After. |
502 | Bad gateway | Downstream Connector or node returned an error. |
503 | Service unavailable | Gateway briefly refusing traffic (maintenance / regional issue). |
11.4 Common pitfalls
"Every request returns 401."
The most common cause: the Authorization header is malformed. It must be exactly Authorization: Bearer <api-key> (one space, no quotes, no leading/trailing whitespace). For RPC endpoints, you can also pass the API key in the URL path as /rpc/<api-key> instead.
"Submit returns Idempotency-Key required."
Idempotency-Key required."POST /flow/sessions/{sessionId}/steps/{stepId} requires an Idempotency-Key header (any string, 1–256 chars). It is cached per session, reuse the same key when retrying a failed submission; use a fresh key for each genuine submission.
"Submit returns the wrong response with Idempotency-Key."
Idempotency-Key."You reused a key that already produced a response on this session. The cached response is returned without re-executing. Use a fresh key for the new attempt.
"Adding a node fails with a domain validation error."
POST /nodes accepts URLs for public nodes only from the approved provider domains (alchemy.com, infura.io, quiknode.pro, chainstack.com, getblock.io, blockdaemon.com, ankr.com, drpc.live) with the API key embedded in the URL path. See chapter 5.2.
"My token never landed on the Fusion Rollup after a deposit."
- Check
GET /users/me/deposits, what does the deposit's status say? - If the status hasn't progressed for >30 min, look up the underlying L1 transaction on a block explorer. Did it succeed?
- If the L1 tx succeeded but the Fusion Rollup hasn't picked it up, contact
[email protected]with the L1 tx hash and your deposit record's identifier. Most likely you called an incorrect function on the deposit. We recommend using Quant's token interchange or Quant's flow applications in order to make a valid deposit.
"Flow App render returns 502 with bad-gateway."
bad-gateway."If the response's detail mentions a content-filter rule, the offending string came from the Flow App's StepSpec (not from your request). The fix is in the Flow App. If the detail doesn't mention content filtering, the downstream Flow App's /renderStep returned an error, check the app's /health and its own logs.
"RPC method works locally but returns 403 through the Gateway."
You're calling a blocked admin method (personal_*, admin_*, txpool_*, …). The Gateway never forwards these. Use public alternatives, or run your own node and route around the Gateway for admin-only flows.
"Withdrawal finalize keeps failing."
Optimistic-rollup withdrawals have a dispute window, see chapter 8.7. Confirm:
- The Fusion Rollup state root containing your withdrawal has been posted to the destination DLT network.
- The dispute window has elapsed.
- No challenge has been opened against that state root.
11.5 Where to get help
- General Support,
[email protected]. Include theinstance(for/flow/*errors) or thepathand rough timestamp (forStandardError). - Flow Application Support, utilise the Flow Feedback application in Quant Connect.
Updated about 8 hours ago
