typestringAlways error.
Example: error
Every failure arrives as a JSON error frame with a stable code, so you know which to fix and which to retry.
Reports every failure as a JSON error frame with a stable code, followed by a WebSocket close, so you can branch on it. Use it to decide which failures to fix, such as an invalid key, and which to retry after a short backoff, such as a server restart or a busy replay.
These are the fields you can build against. Nested names use dot notation; optional sections are called out in their descriptions.
typestringAlways error.
Example: error
codestringA stable machine-readable code.
Example: cursor_expired
messagestringHuman-readable explanation. Do not parse it.
Example: the requested position is older than the replay window; resume with latest
unauthorized — The key is invalid, revoked or expired, or authorization ended. Do not retry.firehose_access_pending — The key is valid but not yet approved. Reconnect once access is approved.forbidden — This key cannot resume from a cursor or time, or its access changed. Use latest.bad_request — A frame, filter, fields entry or resume value was invalid. The message says which.too_many_connections — The key already has 4 active subscriptions.auth_unavailable — Authentication is busy or unreachable. Retry with backoff.cursor_expired — The cursor or time is older than the 24-hour replay window. Resume with latest.replay_busy — Replay capacity stayed full for 30 seconds. Retry with the same cursor.slow_consumer — Your client did not read frames within 30 seconds. Reconnect with your cursor.superseded — Another socket opened the same subscription name with the same key. Use a distinct name for each independent connection.timeout — You did not authenticate or subscribe in time.server_shutdown — The server is restarting. Reconnect with your cursor.internal — Unexpected server error. Reconnect with your cursor.