# Gateway errors

Source: https://docs.graphops.xyz/platform/errors/gateway

Each error below is identified by the `code` in the [error response](/platform/errors#error-response). The response's `docsUrl` links to the matching entry on this page.

## `chain_id_invalid`

Invalid chain ID · HTTP 400 Bad Request

The chain in the request path is not a canonical chain identifier, for example because it has leading zeros or is not a decimal number.

**What to do:** Use the decimal chain ID without leading zeros, such as `/v1/evm/1` for Ethereum mainnet.

## `compressed_body_invalid`

Invalid compressed body · HTTP 400 Bad Request

The request body could not be decompressed with the encoding named in its `Content-Encoding` header.

**What to do:** Check that the body is compressed with the encoding the header names, or send it uncompressed.

## `content_encoding_unsupported`

Unsupported content encoding · HTTP 415 Unsupported Media Type

The request uses a `Content-Encoding` GraphOps does not accept. GraphOps accepts `gzip`, `deflate`, `br`, `zstd` and `identity`, with at most four layers.

**What to do:** Send the body uncompressed, or compress it with one of the supported encodings.

## `deployment_not_found`

Subgraph deployment not found · HTTP 404 Not Found

No Subgraph deployment matches the deployment ID, Subgraph ID or Endpoint Alias in the request path.

**What to do:** Check the identifier, and for an Endpoint Alias check that it belongs to the organization that owns your API key.

## `endpoint_not_found`

Endpoint not found · HTTP 404 Not Found

No GraphOps endpoint matches the request path on this host.

**What to do:** Check the request path against the API reference for the service you are calling.

## `gateway_context_missing`

Request context missing · HTTP 500 Internal Server Error

GraphOps accepted the request but could not attach the account details it needs to serve and bill it. This is a GraphOps fault, not a problem with your request.

**What to do:** Retry the request once. If the error continues, contact support with the time of the request.

## `gateway_misconfigured`

Gateway configuration error · HTTP 500 Internal Server Error

GraphOps could not route the request because of a configuration problem on our side. This is a GraphOps fault, not a problem with your request.

**What to do:** Retry the request once. If the error continues, contact support with the time of the request.

## `gateway_unavailable`

Gateway temporarily unavailable · HTTP 503 Service Unavailable

The GraphOps gateway is starting up and is not ready to serve requests yet.

**What to do:** Retry the request after a short wait.

## `graphql_request_invalid`

Invalid GraphQL request · HTTP 400 Bad Request

The request body is not a JSON object with a non-empty string `query` field.

**What to do:** Send a JSON object with a `query` string, and optional `variables` and `operationName` fields.

## `jsonrpc_parse_error`

Invalid JSON-RPC JSON · HTTP 400 Bad Request

The request body is not valid JSON, so GraphOps could not read it as a JSON-RPC request.

**What to do:** Send a JSON-RPC 2.0 request object or batch array encoded as valid JSON.

## `jsonrpc_request_id_duplicate`

Duplicate JSON-RPC request ID · HTTP 400 Bad Request

Two requests in the batch use the same `id`, or the `id` matches a request still pending on this WebSocket connection.

**What to do:** Give every request in a batch or open connection a unique `id`.

## `jsonrpc_request_invalid`

Invalid JSON-RPC request · HTTP 400 Bad Request

The body is valid JSON but is not a JSON-RPC request: it must be an object or an array of objects, and each object needs a string `method`.

**What to do:** Send a JSON-RPC 2.0 request object, or a batch array of request objects, each with a `method` string.

## `network_not_found`

Network not found · HTTP 404 Not Found

GraphOps does not serve the network named in the request path.

**What to do:** Check the network name against the list of supported networks.

## `request_body_unreadable`

Unreadable request body · HTTP 400 Bad Request

GraphOps could not read the request body, usually because the connection closed during the upload.

**What to do:** Retry the request. If it keeps failing, check that your client sends the complete body.

## `request_payload_too_large`

Request body too large · HTTP 413 Content Too Large

The request body, or the body after decompression, is larger than GraphOps accepts for this endpoint.

**What to do:** Send a smaller request, for example by splitting a large batch into several requests.

## `service_description_unavailable`

Service description temporarily unavailable · HTTP 503 Service Unavailable

GraphOps could not load the service description for this endpoint and has no recent copy to serve.

**What to do:** Retry the request after a short wait.

## `stream_access_blocked`

Streaming blocked for organization · HTTP 403 Forbidden

GraphOps blocked streaming for your organization, so new streams are refused and open streams are ended.

**What to do:** Contact GraphOps support to find out why and to restore access.

## `stream_limit_exceeded`

Stream limit exceeded · HTTP 429 Too Many Requests

Your organization has more streams open at once than its current limit allows, so GraphOps ended this stream.

**What to do:** Close streams you no longer need, then reconnect. If you need more concurrent streams, contact GraphOps support.

## `stream_session_key_mismatch`

API key does not match stream · HTTP 403 Forbidden

A request to continue a stream used a different API key from the one that started it.

**What to do:** Use the same API key for the whole stream. If you rotated the key, start a new stream with the new key.

## `stream_session_unavailable`

Stream temporarily unavailable · HTTP 503 Service Unavailable

GraphOps could not start or keep your stream running because a service it depends on was briefly unavailable.

**What to do:** Retry the stream with backoff. If the error continues, check GraphOps status or contact support.

## `subgraph_identifier_invalid`

Invalid Subgraph identifier · HTTP 400 Bad Request

The deployment ID, Subgraph ID or Endpoint Alias in the request path is not well formed.

**What to do:** Check the identifier. Deployment IDs are CIDs starting with `Qm` or `bafy`, and Endpoint Aliases use lowercase letters, digits and hyphens.

## `subgraph_resolution_failed`

Subgraph lookup failed · HTTP 502 Bad Gateway

GraphOps could not look up which deployment serves this request because the lookup service failed or sent an unusable response.

**What to do:** Retry the request with backoff. If the error continues, contact support with the time of the request.

## `subgraph_resolution_unavailable`

Subgraph lookup temporarily unavailable · HTTP 503 Service Unavailable

GraphOps could not look up which deployment serves this request because a service it depends on was briefly unavailable.

**What to do:** Retry the request with backoff. If the error continues, check GraphOps status or contact support.

## `upstream_request_failed`

Upstream request failed · HTTP 502 Bad Gateway

GraphOps could not reach the network or indexing service that serves this request, or the connection failed before a response arrived.

**What to do:** Retry the request with backoff. If the error continues, check GraphOps status or contact support.

## `upstream_response_malformed`

Malformed upstream response · HTTP 502 Bad Gateway

The network or indexing service that serves this request sent a response GraphOps cannot forward.

**What to do:** Retry the request. If the error continues, contact support with the time of the request.

## `upstream_response_too_large`

Upstream response too large · HTTP 502 Bad Gateway

The response to this request is larger than GraphOps forwards for this endpoint.

**What to do:** Request less data per call, for example by narrowing a block range or paginating a query.

## `upstream_timeout`

Upstream timed out · HTTP 504 Gateway Timeout

The network or indexing service that serves this request did not respond in time.

**What to do:** Retry the request with backoff. For large queries, narrow the range or reduce the work per request.

## `websocket_upgrade_invalid`

Invalid WebSocket handshake · HTTP 400 Bad Request

The request to open a WebSocket connection is missing or has invalid handshake headers, or the connection cannot be upgraded.

**What to do:** Connect with a WebSocket client, or send JSON-RPC over HTTP with `POST` instead.