ADDRESSES_REQUIRED
A batch route was called without any address. Send at least one address.
- Status:
- 400
- Retry unchanged:
- no
- From:
- REST API
Loading
Every error is an RFC 9457 problem document with a stable code. Branch on the code, not on the text. This page lists each code, what it means and what to do.
From the API's published specification, version 1.161.0.
A batch route was called without any address. Send at least one address.
The hotkeys batch needs exactly one anchor: the hotkey list or owner. Give the hotkeys or owner, not both.
at resolves to a block outside the heights the surface answers exactly (meta.coverage). Ask for an at inside the route's coverage, or omit at for the head.
A 400 raised without a code of its own (a plain framework error). Read detail; fix the request.
The signature does not verify for the message's coldkey (or is not 0x + 128 hex). Sign the exact message with the owner coldkey (sr25519 or ed25519) and send that signature.
The batch is within its size cap but its cost is not (live stake positions, hotkey-days, address-days); detail gives the count. Split the batch, or narrow the window.
More items than the batch route accepts. Split the batch.
call was given for an extrinsic in a block whose trace format has no per-call write attribution. Ask without call.
The fiat currency is no longer published (HRK, RUB, the pre-euro codes). Use another currency.
The message is not current: with a signature, now is before issued_at (less 60 seconds) or after expires_at; with a remark, issued_at is in the future. Sign a new message with a fresh issued_at and expires_at.
A typed filter (netuid, hotkey) was given with an event kind that does not carry that field. Drop the typed filter or pick event kinds that carry it.
A list filter names more values than the route accepts. Send fewer values.
The message's hotkey line is not the hotkey in the path. Sign a message naming the hotkey you write to.
An include section that is current state only (identity, owned, proxies...) was asked with a past at. Drop the section or at.
An account is not a valid SS58 address or 0x public key. Fix the request; errors[] names the parameter. Do not retry unchanged.
An address is not a valid SS58 address or 0x public key (H160 on the EVM routes). Fix the request; errors[] names the parameter. Do not retry unchanged.
The address list is empty or too long (the function's own check). Fix the request; errors[] names the parameter. Do not retry unchanged.
An amount is not a base-unit integer string in range. Fix the request; errors[] names the parameter. Do not retry unchanged.
The args_filter JSON is malformed or exceeds its limits. Fix the request; errors[] names the parameter. Do not retry unchanged.
asset is not one of the route's values. Fix the request; errors[] names the parameter. Do not retry unchanged.
at is not a height, a 0x block hash or an RFC 3339 time. Fix the request; errors[] names the parameter. Do not retry unchanged.
The block reference is not a height or a 0x block hash. Fix the request; errors[] names the parameter. Do not retry unchanged.
A boolean parameter is not true / false. Fix the request; errors[] names the parameter. Do not retry unchanged.
A call kind is not Pallet.call_name, or more kinds than the filter accepts. Fix the request; errors[] names the parameter. Do not retry unchanged.
A multisig call hash is not 0x + 64 hex. Fix the request; errors[] names the parameter. Do not retry unchanged.
child_limit is outside 1..1000. Fix the request; errors[] names the parameter. Do not retry unchanged.
A class value is not a snake_case word, or too many values. Fix the request; errors[] names the parameter. Do not retry unchanged.
commit_sha is not a full commit hash (40 hex characters). Fix the request; errors[] names the parameter. Do not retry unchanged.
currency is not an ISO 4217 code the route serves. Fix the request; errors[] names the parameter. Do not retry unchanged.
The cursor is malformed, altered, or was minted with different parameters. Restart from the first page, or send the cursor back unchanged with the same other parameters.
A day is not a UTC date YYYY-MM-DD. Fix the request; errors[] names the parameter. Do not retry unchanged.
days is outside the route's window (e.g. 1..365). Fix the request; errors[] names the parameter. Do not retry unchanged.
dir is not asc / desc (or was given without order). Fix the request; errors[] names the parameter. Do not retry unchanged.
direction is not desc / asc. Fix the request; errors[] names the parameter. Do not retry unchanged.
domain is not a public host name (letters, digits and hyphens in two or more labels; an internationalised name is accepted and converted; never an IP address). Fix the request; errors[] names the parameter. Do not retry unchanged.
An event kind is not Pallet.EventName, or more kinds than the filter accepts. Fix the request; errors[] names the parameter. Do not retry unchanged.
family is not 1..8 comma-separated lower-case names (a weights call family such as set or timelocked_commit). Fix the request; errors[] names the parameter. Do not retry unchanged.
fee_treatment is not dispose / reduce. Fix the request; errors[] names the parameter. Do not retry unchanged.
fields / view is not one of the route's row shapes. Fix the request; errors[] names the parameter. Do not retry unchanged.
Filters that cannot be combined (e.g. origin and signer naming different accounts, netuid with a TAO-only asset, hash with netuid on /extrinsics). Fix the request; errors[] names the parameter. Do not retry unchanged.
format is not one of the route's formats. Fix the request; errors[] names the parameter. Do not retry unchanged.
from is no runtime, the same runtime, or there is nothing before the first one. Fix the request; errors[] names the parameter. Do not retry unchanged.
generation is not a positive integer, or (the trades function's own) was given without exactly one netuid. Fix the request; errors[] names the parameter. Do not retry unchanged.
A group value is not a snake_case word, or too many values. Fix the request; errors[] names the parameter. Do not retry unchanged.
group_by is not one of the route's groupings (e.g. netuid, asset). Fix the request; errors[] names the parameter. Do not retry unchanged.
group_limit is outside the route's range, or above 0 without group_by. Fix the request; errors[] names the parameter. Do not retry unchanged.
A transaction or extrinsic hash is not 0x + 64 hex. Fix the request; errors[] names the parameter. Do not retry unchanged.
A height is not an integer in 0..2^32-1. Fix the request; errors[] names the parameter. Do not retry unchanged.
horizon_blocks is not an integer in the route's range (1..2,628,000 blocks). Fix the request; errors[] names the parameter. Do not retry unchanged.
A hotkey is not a valid SS58 address or 0x public key. Fix the request; errors[] names the parameter. Do not retry unchanged.
An id is not in its route's form ({height}-{index}, or a hash where accepted). Fix the request; errors[] names the parameter. Do not retry unchanged.
image is not <registry host>/<repository> without a tag or digest (at most 255 characters). Fix the request; errors[] names the parameter. Do not retry unchanged.
An include value is not one of the route's sections, or cannot be combined. Fix the request; errors[] names the parameter. Do not retry unchanged.
An index is not a non-negative integer. Fix the request; errors[] names the parameter. Do not retry unchanged.
interval is not one of the route's intervals. Fix the request; errors[] names the parameter. Do not retry unchanged.
A kind is not one of the route's kinds. Fix the request; errors[] names the parameter. Do not retry unchanged.
limit is outside the route's range (the cap is in the document). Fix the request; errors[] names the parameter. Do not retry unchanged.
A lot key is not 32 lower-case hex (an md5), there are more than the route takes, or lot_keys was sent without method=specific. Fix the request; errors[] names the parameter. Do not retry unchanged.
lp_treatment is not realize / carryover. Fix the request; errors[] names the parameter. Do not retry unchanged.
measure is not one of the route's balances (total, free, staked). Fix the request; errors[] names the parameter. Do not retry unchanged.
mechid is not a subnet mechanism id, an integer 0..15. Fix the request; errors[] names the parameter. Do not retry unchanged.
method is not a lot-matching method the route takes (fifo / hifo; specific only where lot keys are taken), or specific without lot_keys. Fix the request; errors[] names the parameter. Do not retry unchanged.
method_id is not a function selector (0x + 8 hex). Fix the request; errors[] names the parameter. Do not retry unchanged.
The target mix breaks a rule: 1 to 128 entries, each netuid 0..65535 at most once, each bps an integer of at least 10, summing to exactly 10000. Fix the mix; errors[] names the entry.
mode is not one of the route's modes. Fix the request; errors[] names the parameter. Do not retry unchanged.
module_accounts is not exclude / include / only. Fix the request; errors[] names the parameter. Do not retry unchanged.
A netuid is not an integer 0..65535 (or not a subnet the route can answer). Fix the request; errors[] names the parameter. Do not retry unchanged.
The netuid list is malformed or too long. Fix the request; errors[] names the parameter. Do not retry unchanged.
neurons is not one of the route's values. Fix the request; errors[] names the parameter. Do not retry unchanged.
offset is negative or past the route's cap. Fix the request; errors[] names the parameter. Do not retry unchanged.
order is not one of the route's orders. Fix the request; errors[] names the parameter. Do not retry unchanged.
A pallet name is malformed, or more pallets than the filter accepts. Fix the request; errors[] names the parameter. Do not retry unchanged.
A parameter without a code of its own failed validation (also a malformed JSON body). Fix the request; errors[] names the parameter. Do not retry unchanged.
phase is not one of the route's phases. Fix the request; errors[] names the parameter. Do not retry unchanged.
A basket target write needs exactly one proof: signature or remark_extrinsic. Send one of them.
publisher is not one of the reviewed publishers. Fix the request; errors[] names the parameter. Do not retry unchanged.
q is longer than the route accepts. Fix the request; errors[] names the parameter. Do not retry unchanged.
A window is inverted or empty (from after to), or lies wholly outside the computed days. Fix the request; errors[] names the parameter. Do not retry unchanged.
A ratio is not a decimal 0..1 (at most 12 decimals). Fix the request; errors[] names the parameter. Do not retry unchanged.
A replay's block range is reversed, ends past the newest finalized block, or lies wholly before the plan's replay window (a range that only starts before it is clamped, not refused). Send an ordered range of finalized blocks inside your plan's replay window.
scope is not one of the route's scopes. Fix the request; errors[] names the parameter. Do not retry unchanged.
severity is not one of the route's severities. Fix the request; errors[] names the parameter. Do not retry unchanged.
side is not one of the route's sides. Fix the request; errors[] names the parameter. Do not retry unchanged.
sort is not one of the route's sorts. Fix the request; errors[] names the parameter. Do not retry unchanged.
A source value is not one of the route's sources. Fix the request; errors[] names the parameter. Do not retry unchanged.
spec_version is not a non-negative integer. Fix the request; errors[] names the parameter. Do not retry unchanged.
status is not one of the route's statuses. Fix the request; errors[] names the parameter. Do not retry unchanged.
A storage item name is malformed, or the item is a plain value where the route needs a map (/keys). Fix the request; errors[] names the parameter. Do not retry unchanged.
key is not a JSON array of the item's key arguments: the wrong number of arguments, or a value the argument's type cannot hold (an account that is neither SS58 nor 0x + 64 hex, an integer out of range). Fix the request; errors[] names the parameter. Do not retry unchanged.
swap_treatment is not disposal / carryover. Fix the request; errors[] names the parameter. Do not retry unchanged.
The basket target message is malformed: not the eight documented lines in order, a bad address, nonce or time, or an expires_at not after issued_at or more than 15 minutes after it. Build the message exactly as documented on the operation's message field.
tax_lens is not fund / staking_income. Fix the request; errors[] names the parameter. Do not retry unchanged.
tax_year is not a year the lots cover (2023 to the current UTC year), or it was sent with from_day / to_day. Fix the request; errors[] names the parameter. Do not retry unchanged.
A time is not RFC 3339 with an offset. Fix the request; errors[] names the parameter. Do not retry unchanged.
A multisig timepoint is not {height}-{index}. Fix the request; errors[] names the parameter. Do not retry unchanged.
topic0 is not 0x + 64 hex. Fix the request; errors[] names the parameter. Do not retry unchanged.
A types value is malformed, or too many values. Fix the request; errors[] names the parameter. Do not retry unchanged.
A types value is outside the search's closed set. Fix the request; errors[] names the parameter. Do not retry unchanged.
A uids value is not an integer 0..65535. Fix the request; errors[] names the parameter. Do not retry unchanged.
A URL in urls is empty or longer than 2048 characters; errors[] names each by its index (urls[i]). Fix the request; errors[] names the parameter. Do not retry unchanged.
The metadata version is not an integer the route accepts. Fix the request; errors[] names the parameter. Do not retry unchanged.
X-Forwarded-User-IP is not an IPv4 or IPv6 address. Fix the request; errors[] names the parameter. Do not retry unchanged.
window is not one of the route's windows; on the candle routes, from_time / to_time not on a bucket boundary. Fix the request; errors[] names the parameter. Do not retry unchanged.
window_end is not one of the route's window ends (close, head). Fix the request; errors[] names the parameter. Do not retry unchanged.
windows is not a comma list of distinct day counts in range. Fix the request; errors[] names the parameter. Do not retry unchanged.
The message's mix line is not exactly the body's mix (ascending netuid, <netuid>=<bps> joined by commas), or not none on a clear. Sign a message whose mix line is made from the mix you send.
include=weight_pairs needs a narrow neuron filter (1..16 uids / hotkeys). Add a uids or hotkeys filter of at most 16.
A netuid in the target mix is not a live subnet now (netuid 0, the TAO slot, is always allowed). Remove the netuid or pick a live subnet (GET /subnets).
The section asked needs netuid. Add netuid.
The signed-in user has no verified wallet to export. Verify a wallet first.
The hotkey already used this message's nonce: a message is accepted once. Sign a new message with a new random nonce.
The window starts before the first day every input of the route covers whole. Ask for a later to_day or a shorter window.
The account is a protocol account (the fund escrow modl...beta/esc): fund custody, never a claimant. Ask for a holder's account: the escrow has no claim to quote.
q is missing or shorter than the route's minimum. Send a longer query.
The window is longer than the route's maximum, or the answer would hold more rows (accounts x periods) than it serves. Narrow the window.
The extrinsic's System.Remarked event commits to another message, or was sent by another account than the message's coldkey. Dispatch the remark for this exact message from the owner coldkey, and send that extrinsic.
No finalized extrinsic is served at remark_extrinsic yet, or it emitted no System.Remarked event. Use System.remark_with_event (not System.remark); if it was just included, retry once its block is final.
The remark's block is more than 24 hours old. Dispatch a new remark for a new message.
A query parameter that takes one value was given more than once. Give it once.
args_filter needs an indexed filter beside it (e.g. call, pallet, signer, netuid). Add a scoping filter.
The message's issued_at is not later than the hotkey's newest accepted target write. Sign a new message with a later issued_at.
The extrinsic changed more storage entries than an item filter reads in one request. Page the unfiltered changes with cursor instead.
The position series would cover too many position-days. Narrow by netuid or days.
A well-formed call kind (or pallet) the chain never had. Check the kind's spelling against /runtimes/{spec_version}/pallets.
A well-formed event kind (or pallet) the chain never had. Check the kind's spelling against /runtimes/{spec_version}/pallets.
A query parameter (or a POST body member) the operation does not define. Remove it; detail lists the allowed parameters.
The signature signs the bare message; these writes accept only the <Bytes>-wrapped form a wallet extension's signRaw produces. Sign with signRaw (type bytes), which wraps the message in <Bytes> and </Bytes>.
The link verdicts were asked without any URL. Send at least one URL.
Several parameters failed validation at once (each in errors[]), or the URL holds a NUL byte. Fix the request; errors[] names the parameter. Do not retry unchanged.
The runtime does not offer this metadata version; the problem carries offered. Ask for one of offered.
A key that mints stream tickets for browser visitors sent no X-Forwarded-User-IP header. Send the visitor's IP address in X-Forwarded-User-IP.
The message's chain line is not the Bittensor mainnet genesis hash. Use 0x2f0555cc76fc2840a25a6ea3b9637146806f1f44b090c175ffde2a7e5ab36c03.
Two different API keys were sent: one in X-API-Key and another as Authorization: Bearer btai_…. Send one API key, in one header (Authorization: Bearer recommended).
The action reveals or changes a secret and needs a recent sign-in. Sign in again on bittensor.ai, then retry.
No credential, or one that is not valid. detail says which: an invalid API key (unknown, revoked or expired, however it was sent), an invalid or expired OAuth access token, or none sent. Send an API key (Authorization: Bearer btai_… or X-API-Key) or an OAuth access token (Authorization: Bearer) carrying data:read.
The acting organization's spending budget for request charges is used up. Raise the budget, or wait for the next period.
The caller's plan does not include data exports. Do not retry unchanged; contact support if the account needs exports.
The acting organization's quota is used up and the request cannot be charged; the problem keeps payment_required. Add funds; do not retry unchanged.
A counted limit of the account's plan is reached, for example its wallet slots, its API keys or its heavy jobs for the day. The problem carries plan_limit: limit names the limit, value is the plan's number, requested is what the request would have brought the count to, and resets_at says when a limit that resets does so.
resets_at is set, wait until then.required_plan. Retrying unchanged does not help.To change what your account includes, email [email protected].
The plan's export allowance for the rolling 30 days is used up. Wait for the window to roll.
The account's plan reads only the account's own verified wallets, and this request names another address. A batch that names any other address is refused whole. The problem carries plan_limit: required_plan names the first plan that reads any address.
required_plan.To change what your account includes, email [email protected].
The operation is open to API keys only; an OAuth access token cannot use it. Send an API key (Authorization: Bearer btai_… or X-API-Key).
A request authenticated by the website session cookie lacks a valid CSRF token pair. Send the csrftoken cookie and a matching X-CSRFToken header.
A 403 raised without a code of its own. Read detail.
The credential lacks the data:read scope (or may not use this route); the live stream refuses such a key with an error frame and close code 4403. Use a key or token carrying data:read.
The message's coldkey does not own the hotkey now (or, for a remark, did not own it at the remark's block). Have the hotkey's current owner coldkey sign the message (GET /hotkeys/{hotkey} names it).
The account's plan does not include this. The problem carries plan_limit: required_plan names the first plan that includes it.
required_plan, then retry. Retrying unchanged does not help: the account's plan decides.To change what your account includes, email [email protected].
The key's plan does not include realtime access, so no stream ticket is issued; the live stream refuses the same key with an error frame and close code 4403. Realtime access is not included for this key; retrying with the same key does not help.
An address of an export is not one of the signed-in user's verified wallets. Verify the wallet, or leave it out.
No fund (basket) is known for this hotkey. Check the hotkey.
No block at this height, hash or time. Check the block reference.
The block is not indexed yet: it is above the indexed head. The problem carries head_height (the indexed head). Poll until head_height reaches the item (seconds to minutes); do not treat it as absent.
The block is older than the oldest block served so far: it exists, and older history is still being added. Retry later.
No such call. Check the id.
The call is not indexed yet: it is above the indexed head. The problem carries head_height (the indexed head). Poll until head_height reaches the item (seconds to minutes); do not treat it as absent.
The call is older than the oldest block served so far: it exists, and older history is still being added. Retry later.
The storage writes of this extrinsic's block are not indexed. Ask without the changes.
No such event. Check the id.
The event is not indexed yet: it is above the indexed head. The problem carries head_height (the indexed head). Poll until head_height reaches the item (seconds to minutes); do not treat it as absent.
The event is older than the oldest block served so far: it exists, and older history is still being added. Retry later.
No contract verification with this id was submitted by this account (whoever else made it: an id reveals nothing to another account). Poll only the ids your own submissions answered.
No such extrinsic. Asked by hash, it may not be seen yet: the problem then carries indexed_through_height (the newest finalized block the index has processed) and details, an ExtrinsicStatus with status not_seen; a later retry may find it. Check the id or hash; for a hash just submitted, retry after a few blocks.
The extrinsic is not indexed yet: it is above the indexed head. The problem carries head_height (the indexed head). It may also carry indexed_through_height. Poll until head_height reaches the item (seconds to minutes); do not treat it as absent.
The extrinsic is older than the oldest block served so far: it exists, and older history is still being added. Retry later.
The subnet slot never had the life generation names. Take a generation from GET /subnets/generations, or omit it for the current life.
The chain never stored a key for this hotkey. Check the hotkey.
No Multisig call has acted for this account (it may still be a multisig nobody has used). Treat as unknown, not as not-a-multisig.
The owner has no hotkeys. Check the owner.
No such resource: an unknown path, or an item the route does not know (an entity, an EVM transaction, block, log, contract, precompile or address, a fund's series). Check the path and the identifier.
No verified source / ABI for this contract address. Treat as unverified.
No multisig operation with this timepoint and call hash for the account. Check the timepoint and call hash.
The runtime has no such pallet. Check the name.
The account never held shares of this hotkey on this subnet. Check the position.
No tracked repository has this repo_id. Take a repo_id from a subnet's repository rollup or change feed.
No such runtime, or its code is not published yet (published within about an hour of its first final block). Retry later for a new runtime; otherwise check the spec version.
No runtime with this spec_version. Check the spec version.
The pallet has no storage item of this name in the runtime in force at the block asked for. Check the name, or ask for a block where a runtime declaring the item was in force.
No subnet (no pool) in this netuid slot. Check the netuid.
The hotkey has no basket target (none was set, or it was cleared). Treat it as no published target.
The path exists but not with this method; Allow lists the methods. Use a method in Allow.
An extrinsic hash names more than one extrinsic (an inherent with identical arguments shares one hash across blocks). Ask again by id ({height}-{index}), picking one of candidates, or list every copy with GET /extrinsics?hash= (newest first, paged).
A 409 raised without a code of its own. Read detail.
The resource is gone (a 410 without a code of its own). Move to the replacement the deprecation named.
The request body is larger than the route accepts. Send a smaller body (split the batch).
Too many requests in flight for this key at once (not a quota: a slot frees when one finishes). Retry after Retry-After; lower the client's parallelism.
The account's contract-verification allowance (20 submissions per rolling 24 h, shared with every verification route and /etherscan/api) is used up. Retry after Retry-After (with backoff when there is none).
A rate-limit window (per minute, hour or day, or per IP) is used up. Retry after Retry-After (with backoff when there is none).
An unexpected server error. Report it with request_id; a retry may succeed but is not expected to.
The data source answered something this API cannot serve: its answer broke the v2 contract (a missing member, a wrong type, an invalid error status). Never a partial answer. Report it with request_id. Retrying returns the same until the source is fixed.
The source returned a continuation that does not advance: the page's next_cursor is not strictly past the cursor it was asked with, so following it would loop forever. Never a partial answer; it should never happen. Report it with request_id and the cursor. Retrying the same cursor will not help.
The source found a chain of coldkey swaps longer than it can follow for these lots, and refused rather than serve a cut chain (a lot's cost basis carried from an earlier key would be wrong). It should never happen. Report it with request_id. Retrying will not help.
The request could not be charged because billing is unavailable; no charge was recorded. Retry after Retry-After (with backoff when there is none).
The solc release list could not be fetched from the Solidity binaries server and no recent copy is held. Retry after Retry-After (with backoff when there is none).
Too many contract verifications are in flight on this server (a cap shared with /etherscan/api). Retry after Retry-After (seconds).
Contract verification is switched off on this deployment (no verification service configured). Use a deployment that offers contract verification; retrying here does not help.
The verification service (Sourcify) failed, timed out or answered something unexpected. A submission it never accepted is not charged to the account's quota. Retry after Retry-After (with backoff when there is none).
The moment or day asked is not final yet: at is a time after the indexed head (in the future, or not indexed yet), or an explicit day is closed but its figures may still change. Never answered with an earlier block or day. Retry after Retry-After, or ask for an earlier time or day (or omit at / use the head window); do not cache an earlier answer under this request.
The data asked (or a section of it) is not available yet. reason says why (an open vocabulary; new values may be added, show an unknown one with detail): day_not_closed, the day asked has not closed yet or its figures are still being prepared (they are once the day's data is complete); data_pending, the data is still being prepared; list_refreshing, the list asked is being refreshed (about a minute, with retry_after_s); not_enabled, the option asked is not served yet; lots_budget, a lot read over its time budget, with retry_after_s; history_backfill, the data (lots, or storage writes) for an earlier part of the chain is still being prepared (detail names the first block not yet covered; covered_from_height, needed_from_height). An extrinsic's changes may carry phases_through_height. Retry after Retry-After (with backoff when there is none); on day_not_closed, or ask for an earlier day.
These figures are being recalculated under a corrected method, and the answer asked would combine parts already recalculated with parts not yet recalculated, so no consistent answer exists yet. An answer never mixes the two. Retry after Retry-After; a recalculation finishes within hours, at most about a day.
A datastore or a dependency is temporarily unavailable, or the server is restarting. Retry after Retry-After (with backoff when there is none).
The data source is busy: every connection to it is in use. Retry after Retry-After, with backoff; lower the client's parallelism.
This deployment has no /api/v2 data source configured, or the data is not deployed on it yet: it is not served here. Use a deployment that serves this data; retrying here does not help, unless Retry-After is sent: then retry after it.
The data source did not answer within the statement timeout, or the request used up its time budget (25 s). Retry after Retry-After; the detail names what makes this route's request cheaper (a smaller limit, a narrower window, fewer values), when it has such a parameter.
Stream tickets cannot be issued right now; no ticket was issued. Retry after Retry-After (seconds).
The lot and tax routes are switched off on this deployment: the lot engine is being re-measured against the chain before any figure is served. Nothing was read and nothing was charged beyond the request. Do not retry; the routes return when the deployment enables them.
An upstream timed out (a 504 from a shared layer). Retry after Retry-After (with backoff when there is none).
An error status without a code of its own (outside STATUS_CODES). Read status and detail.
No auth frame arrived within 5 seconds of opening the live stream; the connection is closed with code 4401. Send the auth frame first, right after connecting: mint a new ticket, then reconnect.
The key has no billing identity for metered streams; the connection is closed with code 4403. Use a key that belongs to an organisation with billing set up.
The organisation's or plan's limit on open live stream connections is reached; the problem carries limit and limit_name (max_ws_connections), and the connection is closed with code 4429. Not the REST API's CONCURRENCY_LIMIT. Close an open connection first.
The organisation's metered balance is exhausted, so the stream's lease is refused; the connection is closed with code 4402. Top up the organisation's balance, then reconnect.
The key is unknown, revoked or expired; on the live stream the connection is closed with code 4401. A plan without realtime access is REALTIME_NOT_INCLUDED, and a key without data:read is INSUFFICIENT_PERMISSIONS. Use a valid key; retrying with the same key does not help.
blocks must be at least 1. Send blocks >= 1.
A message the client sent on the live stream is not valid JSON or not a message the stream accepts (an unknown type, or a missing or malformed member). The error frame answers that message only: the connection stays open, and its subscriptions continue. Fix the message and send it again; do not resend it unchanged.
The stream ticket is unknown, expired or already used; the connection is closed with code 4401. Mint a new ticket (POST /api/v2/stream/tickets) for every connection, then reconnect.
The /ws/public token is invalid or expired. Mint a new short-lived token and reconnect.
No API key was sent. Send Authorization: Bearer <key>.
/ws/public was opened without its short-lived token. Mint a token and pass it when connecting.
No live candle history yet: the service has just started. Retry after a few ticks, or read history from /api/v2 candles.
The chain node call failed. Retry shortly.
The chain node call timed out. Retry shortly.
The endpoint isn't configured on this deployment. Report it with the request time; nothing to change in the request.
The height is outside the live window. Pass the block hash, or read the block from /api/v2.
The block hash given to resume from is not the chain's block at that height: the chain moved on without it. Subscribe again without a resume point and read anything missed from the REST API.
The height to resume from is older than the stream keeps; the problem carries oldest_height, the oldest height it can resume from. Read the blocks before oldest_height from the REST API, then resume from oldest_height or later.
The response could not be serialised. Report it with the request time.
This server task is draining for a restart. Retry or reconnect shortly.
The connection already holds as many subscriptions as its plan allows; the problem carries limit and limit_name. Unsubscribe from a channel first.
Too many concurrent WebSocket connections from this IP (limit_name max_ws_connections_per_ip). Close a connection from this IP, then retry.
The subscription names a channel the live stream does not have. Check the channel name against the stream's channel list.
No subnet with that netuid is in the live pool set. Check the netuid against /api/v2 subnets.
The WebSocket upgrade handshake could not be completed. Check the client's WebSocket handshake headers.
The browser visitor already has as many live stream connections open as allowed; the problem carries limit, and the connection is closed with code 4429. Close one of the visitor's connections, or wait, then reconnect with a new ticket.
The same list is in the specification, at x-error-catalogue, and each operation names the codes it can return in x-error-codes.