Errors
Errors
Every code Tigby answers with, what it means, and what to do about it.
Every non-success answer from Tigby is an RFC 9457 application/problem+json body, and it carries three members of Tigby's own on top of the standard ones:
| Member | What it is |
|---|---|
code | The stable string to branch on. It is part of the contract; title and detail are not. |
agent_hint | What an autonomous caller should do next: fix the call, wait, or stop. |
doc_url | https://docs.tigby.eu/errors/{code} – the page below. |
The Tunnel answers the same shape on its own refusals, written by the tunnel server rather than by the API. A code is never reused for a second meaning, and a code that disappears from the list disappears from this page with it.
Every code
| Code | Status | What it is |
|---|---|---|
account_confirmation_mismatch | 400 | Confirmation does not match |
account_deleting | 403 | The account is being deleted |
admin_scope_required | 403 | Admin Key required |
ai_disclosure_warning_required | 409 | Warning not acknowledged |
allowed_recipient_not_found | 404 | No such entry |
allowed_recipient_quota_exceeded | 403 | Entry quota reached |
already_listed | 409 | Already on the list |
already_released | 409 | Already released |
api_key_not_found | 404 | No such API key |
authorization_pending | 400 | Waiting for confirmation |
bad_request | 400 | Bad request |
body_required | 400 | No body |
connector_account_invalid | 400 | Not an account of that platform |
connector_already_connected | 409 | Already connected |
connector_authorization_failed | 400 | The platform did not authorise |
connector_authorization_not_found | 404 | No such connect run |
connector_callback_invalid | 400 | Callback not usable |
connector_callback_required | 400 | No callback |
connector_capability_unsupported | 400 | Not on this platform |
connector_credential_rejected | 403 | The platform refused the credential |
connector_credential_required | 400 | No credential |
connector_disclosure_required | 409 | The account does not say it is automated |
connector_in_error | 409 | Connector in error |
connector_instance_invalid | 400 | No Mastodon instance named |
connector_limit_reached | 429 | Send limit reached |
connector_not_connected | 404 | No such Connector |
connector_oauth_unavailable | 503 | No OAuth client here |
connector_option_invalid | 400 | Option not usable here |
connector_option_unknown | 400 | Unknown option |
connector_paused | 403 | This Connector is stopped |
connector_platform_error | 502 | The platform failed |
connector_platform_refused | 400 | The instance refused it |
connector_platform_unavailable | 503 | Platform not carried here |
connector_platform_unknown | 404 | No such platform |
connector_quota_exceeded | 403 | Connector quota reached |
connector_rate_limited | 429 | The platform is limiting the account |
connector_recipient_not_addressed | 502 | Direct message addressed nobody |
connector_recipient_required | 400 | No recipient |
connector_text_required | 400 | No text |
connector_text_too_long | 400 | Too long for the platform |
connector_unavailable | 503 | Connectors are not available |
connector_uri_invalid | 400 | Not a post of that platform |
connector_uri_required | 400 | No post named |
contact_message_required | 400 | Message missing or too long |
contact_unavailable | 503 | The contact form is not configured |
cursor_invalid | 400 | Cursor not readable |
device_code_decided | 400 | Code already decided |
device_code_denied | 400 | Login refused |
device_code_expired | 400 | Code expired |
device_code_invalid | 400 | Unknown device code |
device_code_not_found | 404 | No such login code |
device_code_used | 400 | Key already collected |
enabled_required | 400 | No state |
event_not_found | 404 | No such Event |
event_type_not_subscribable | 400 | Event type is poll-only |
event_type_unknown | 400 | Unknown event type |
event_types_required | 400 | No event types |
export_identity_unknown | 404 | No such Identity |
export_limit_reached | 429 | Too many exports at once |
export_not_found | 404 | No such export |
export_not_ready | 409 | Nothing to download yet |
export_scope_unknown | 400 | Unknown export scope |
export_unavailable | 503 | Exports are not available |
forbidden | 403 | Forbidden |
handle_reserved | 409 | Reserved Handle |
handle_taken | 409 | Handle taken |
identity_not_found | 404 | No such Identity |
identity_provisioning | 409 | Identity still provisioning |
identity_quota_exceeded | 409 | Identity quota reached |
identity_scope_mismatch | 403 | Another Identity's key |
internal_error | 500 | Internal error |
invalid_beacon | 400 | Invalid beacon |
invalid_card | 400 | Invalid A2A Card |
invalid_email | 400 | Invalid email address |
invalid_group | 400 | Unknown group |
invalid_handle | 400 | Invalid Handle |
invalid_key_name | 400 | Invalid key name |
invalid_language | 400 | Unsupported language |
invalid_range | 400 | Invalid range |
magic_link_invalid | 400 | Link not valid |
mail_paused | 403 | Mail stopped for this Identity |
mailbox_not_ready | 404 | No Mailbox yet |
mailbox_unavailable | 503 | Mailbox temporarily unavailable |
mcp_method_not_allowed | 405 | The MCP endpoint takes POST |
mcp_origin_refused | 403 | Origin refused |
message_not_found | 404 | No such message |
method_not_allowed | 405 | Method not allowed |
not_acceptable | 406 | Not acceptable |
not_listed | 404 | No such entry |
not_reserved | 409 | Nothing to release |
note_required | 400 | A note is required |
org_not_found | 404 | No such Org |
paused_required | 400 | No state |
profile_not_found | 404 | No profile here |
range_too_long | 400 | Range too long |
rate_limited | 429 | Rate limited |
recipient_domain_refused | 400 | Domain too broad |
recipient_entry_invalid | 400 | Not an address or a domain |
recipient_entry_required | 400 | No entry |
recipient_invalid | 400 | Not an address |
recipient_not_allowed | 403 | Recipient not allowed |
recipients_required | 400 | No recipient |
request_rejected | 400 or the status the framework produced | Request rejected |
route_not_found | 404 | No such route |
saga_not_failed | 409 | Nothing to retry |
send_limit_reached | 429 | Send limit reached |
send_rejected | 502 | Message refused |
sender_mismatch | 403 | Sender is not the login |
sender_unknown | 403 | Unknown sender |
session_endpoint | 403 | Console session required |
signup_closed | 403 | Signup is by invitation |
slow_down | 400 | Polling too fast |
staff_console_not_configured | 503 | Staff Console not configured |
staff_link_invalid | 400 | Sign-in link not valid |
staff_not_a_member | 403 | Not a staff address |
staff_session_required | 401 | Staff sign-in required |
structural_reservation | 409 | Already reserved in code |
submission_unavailable | 503 | Mail submission unavailable |
too_many_recipients | 400 | Too many recipients |
tos_acceptance_required | 422 | Terms of Service not accepted |
tos_version_mismatch | 409 | That is not the version in force |
tunnel_offline | 503 | No agent connected |
tunnel_quota_exceeded | 503 | Transfer allowance spent |
tunnel_rate_limited | 503 | Streams opened too fast |
tunnel_stream_limit | 503 | Too many open streams |
tunnel_timeout | 504 | The agent did not answer |
unauthorized | 401 | Unauthorized |
unknown_host | 404 | Nothing served here |
unsupported_media_type | 415 | Unsupported media type |
vault_name_invalid | 400 | Name not usable |
vault_quota_exceeded | 403 | Vault quota reached |
vault_secret_not_found | 404 | No such secret |
vault_unavailable | 503 | The Vault is not available |
vault_value_required | 400 | No value |
vault_value_too_large | 400 | Value too large |
webhook_id_required | 400 | No Webhook |
webhook_identity_mismatch | 409 | Not this Webhook's Identity |
webhook_not_found | 404 | No such Webhook |
webhook_quota_exceeded | 403 | Webhook quota reached |
webhook_url_invalid | 400 | URL not deliverable |
webhook_url_required | 400 | No URL |