What each error means
Your Metis calls our RPC address and reads our gRPC stream. When we can't give it exact data we answer with an error that says why, instead of data we are not sure of. Metis tries again by itself, so mostly there is nothing for you to do.
-32099 account not served
“account … is not served here (not one of the accounts this endpoint's Metis uses)”
Your Metis asked for an account our own Metis does not use, so we don't carry it. The whole call is refused, not only that account. Mostly it means your Metis runs another version than ours (v7.1.4) or other market settings. Run the same version with the same markets. If it keeps coming, send us the address from the message.
-32005 not ready, or busy
- “not ready, try again shortly”, “behind, try again shortly”: the feed has just started, or lost touch with the node for a moment, and serves nothing until its data is exact again. After a deploy that takes a few minutes. If it lasts longer, look at the status page.
- “too many requests in flight”, “too much on its way, try again shortly”: your key asks for more at once than one Metis needs. One key runs one Metis; a second Metis on the same key causes this.
- “Node is unhealthy”: our node is behind the network. We are paged when that happens.
- “busy, try again shortly”, “no answer in time, try again shortly”: what a Metis asks for a swap (the caller's token accounts, the fee estimate, the simulation) goes to our node, a few calls at a time. Too many were waiting, or the node took too long. Send the swap call again.
“too slow”: the stream was ended
gRPC status RESOURCE_EXHAUSTED, “too slow for the feed, reconnect”
Your Metis did not take the stream as fast as it came, and we ended the stream rather than let it fall behind. Metis reconnects by itself. If it happens often, the machine or its connection can't keep up: one Metis takes about 11 MB/s from us, so it needs a steady 100 Mbit/s or more, and a processor that is not busy with something else.
“the upstream changed”, “shutting down”: the stream was ended
gRPC status UNAVAILABLE, “the upstream changed, reconnect” or “shutting down”
The feed lost touch with the node for a moment, or it restarts. It ends every stream rather than send one with a hole in it. Your Metis reconnects by itself and gets “not ready” until the feed's data is exact again: a few minutes after a deploy.
“too many account lists wait to be read”
gRPC status RESOURCE_EXHAUSTED, “too many account lists wait to be read, try again shortly” or “no room for one more stream, try again later”
A Metis sends its account lists again every few hours, and we read them a few at a time. More lists were waiting than we hold at once: yours (256 MB, more than one Metis sends), or everyone's together. Your Metis reconnects by itself and sends them again. “no room for one more stream” means the feed has as many streams open as it can hold; if it keeps coming, tell us.
Something a Metis does not ask for
RPC: -32601 “Method not found”, -32602 “only processed or confirmed commitment with base64+zstd encoding and no dataSlice is served”. gRPC: INVALID_ARGUMENT, “… not served here: account lists, slots and blocks_meta at processed only”.
We serve what a Metis of our version (v7.1.4) asks for, and nothing else: this is not a general Solana RPC. If your Metis gets one of these, it runs another version or other settings than ours. Another program that uses the key needs an RPC of its own.
The key is refused
RPC: HTTP 401, -32001 “invalid api key”. gRPC: UNAUTHENTICATED, “invalid x-token” or “key revoked”.
Your time has run out, you made a new key (the old one stops within seconds), or the key was copied wrong. Your account page shows the key and until when it works. “too many streams for this key” means more than one Metis uses it.