Every error response identifies its cause with a stable code. This page is the full inventory: 682 codes, of which 631 are emitted by the API and the rest are registered for translation.

The shape of the error document, and why branching happens on code rather than detail, are covered in the error contract.

Documented codes

Admin (internal operation)

Async terminal codes for validations

codeStatusWhen it firesWhat the client should do
bank_code_unresolvable_for_phone422No.
banxico_error502 / 503No.
intra_bank_no_cep422No.
ocr_error502No.

Authentication and session

codeStatusWhen it firesWhat the client should do
account_deleted401The account was soft-deleted.Contact support.
account_suspended401 / 403The caller's account is suspended.Contact support.
api_key_decryption_failed401Cryptographic failure decrypting the API key.Regenerate the key.
auth_header_empty401The Authorization header is empty.Attach Authorization: Bearer ....
auth_method_denied403The endpoint does not accept the authentication method you arrived with.Use the correct auth method — see Authentication.
forbidden403Permission denied by RBAC.Request the permission from your account admin.
invalid_api_key401The API key prefix or format is invalid.Regenerate the key from /usage or POST /v1/users/me/api-key/regenerate.
invalid_credentials401Wrong email or password.Show a generic message to the user — don't reveal which one failed.
invalid_encrypted_api_key401The API key doesn't decrypt against the server-side secret (key rotation or a forged key).Regenerate the key.
registration_disabled403The global flag registration.enabled is OFF.Wait until it's re-enabled.
unauthorized401Missing, invalid, or expired credentials.Authenticate again, or renew the API key.
unrecognized_auth_format401The Authorization header doesn't parse as Bearer <token>.Use Bearer veriko_..., with the API key.

Beneficiaries

codeStatusWhen it firesWhat the client should do
account_not_in_catalog404The account doesn't appear in the cross-tenant directory.Behave as "no info".
account_number_required422Missing account_number in the body.Add the field.
beneficiary_already_registered422The account is already in your beneficiaries.Reuse the existing one.
beneficiary_not_found_for_account404There's no beneficiary linked to that account.Create it.
invalid_last_digits_length400last_digits doesn't have 4 digits.Pass 4 digits.
query_param_account_required400Missing ?account= in the query.Add the parameter.
query_param_last_digits_required400Missing ?last_digits= in the query.Add the parameter.

Bulk imports (validations + beneficiaries)

codeStatusWhen it firesWhat the client should do
file_required422The upload doesn't include a file.Attach the file.
job_not_editable422You're trying to edit a job in a terminal state.The job was already committed.
multi_upload_not_allowed_for_text422Multi-select but the files are plain text.Upload one by one or use images/ZIP.
no_valid_fields422The edit payload has no valid fields.Include at least one field.
no_valid_test_files422No file in the upload is processable.Check the set.
zip_pack_failed422The repacking of an image ZIP failed.Retry with a standard ZIP.

Finance

codeStatusWhen it firesWhat the client should do
csv_stream_failed500The CSV stream failed.Retry.
invalid_export_format400Requested format outside json/csv/xlsx/pdf.Pick a supported one.
invalid_month400month param missing or not YYYY-MM.Pass YYYY-MM.
invalid_period400period param doesn't match the convention.Fix it.
invalid_range400from/to range incoherent.Fix it.
no_ceps404No CEPs available in the range.Adjust the range.
pdf_render_failed500dompdf failed to render.Retry; report if it persists.
range_required400Missing range or from/to.Pass one.
xlsx_render_failed500PhpSpreadsheet failed.Retry.

Generic field validation

codeStatusWhen it firesWhat the client should do
image_too_largeImage over the size cap.
invalid_account_format400The account number isn't CLABE 18 / card 16 / phone E.164.
invalid_account_length422Wrong length for the type (18 CLABE / 16 card / 10 phone).
invalid_amountAmount isn't valid as a positive decimal.
invalid_bank_code422The bank code doesn't exist in the catalog.
invalid_card_luhnThe card's Luhn check fails.
invalid_clabe_checksumThe CLABE check digit fails.
invalid_email422The email isn't valid.
invalid_format422The field doesn't match the expected format.
invalid_imageThe image isn't decodable.
invalid_image_formatFormat outside JPEG/PNG/WEBP.
invalid_request_body422The JSON isn't valid.
invalid_urlThe URL is malformed.
invalid_url_scheme422Only https accepted.
invalid_uuidNot a UUID v4.
invalid_value422The value is outside the allowed set.
max_length_exceededExceeds the field's max length.
message_build_failed422The server couldn't assemble the message to respond with.
missing_field422Variant of required for specific fields.
url_dns_failed400DNS didn't resolve the host.
url_ssrf_blocked400The URL points to a private IP / DNS rebind.
validation_error422Generic validation error.
validation_failed422Variant for combined failures.

Generic resources

codeStatusWhen it firesWhat the client should do
cep_not_available404 / 409The validation's CEP isn't available yet.
changelog_emptyNo changelog published.
changelog_not_foundThe requested version doesn't exist.
dispatch_failed500 / 503The job couldn't be dispatched to the worker.
image_not_available404The original image isn't accessible.
internal_error500Unexpected failure.
key_not_available404 / 409The user's API key isn't available to display.
method_not_allowed405HTTP method not supported for that path.
not_found404The requested resource doesn't exist or isn't visible.
user_not_found401 / 404The referenced user doesn't exist.

Idempotency

codeStatusWhen it firesWhat the client should do
idempotency_key_in_progress409There's another in-flight request with the same key.
idempotency_key_reused422The same key was used before with a different body.
invalid_idempotency_key400The Idempotency-Key header doesn't meet the format [A-Za-z0-9_-]{1,255}.

OTP, 2FA, and verification

codeStatusWhen it firesWhat the client should do
confirmation_token_already_used409The token was already consumed (single-use).Re-request a new one.
confirmation_token_invalid422Malformed confirmation token.Re-request the token.
confirmation_token_malformed400Variant: the token doesn't have the expected structure.Re-request.
confirmation_token_mismatch422The token corresponds to a different action.Re-request for the correct action.
confirmation_token_missing422The confirmation_token is missing in a step-up operation.Add confirmation_token.
confirmation_token_slug_mismatch422The token was issued for a different plan/slug.Re-issue it for the correct slug.
free_plan_already_claimed409The free plan has already been claimed by this account.Continue with the normal flow; there is nothing to claim.
invalid_otp_parameters422The OTP payload is incomplete.Check the required fields.
invalid_reset_context400The reset context (purpose, audience, expiry) doesn't match.Restart the flow.
invalid_verification_token400The token of a verification flow is invalid or malformed.Restart the verification flow.
missing_otp_id400The otp_id is missing from the body.Add otp_id.
otp_already_used400The OTP was already consumed.Request another one.
otp_expired400The OTP expired before being used.Re-request an OTP.
otp_invalid_code400The submitted OTP code is wrong.Re-enter it (maximum N attempts).
otp_max_attempts400Attempts for that OTP were exhausted.Request a brand-new OTP.
otp_not_found404There's no active OTP for that user+purpose combination.Re-request an OTP.
phone_already_verified422The phone is already verified — there's nothing to do.Continue with the normal flow.
phone_not_verifiedThe phone is not verified. No longer raised by login (v1.58.0): signing in does not require a verified phone.Verify with POST /v1/users/me/phone/request-verify.
phone_verification_required409 / 422The action requires a verified phone and the account has none. meta.masked_phone shows where the code will be sent (null when no phone is on file) and meta.needs_phone whether one must be collected first.Open the verification flow (POST /v1/users/me/phone/request-verify) and retry.
purpose_mismatch400The OTP was generated for a different purpose (e.g. login vs. password reset).Request an OTP with the correct purpose.
twofa_action_mismatch400The resolved challenge doesn't correspond to the requested action.Restart the step-up.
twofa_already_disabled422A 2FA disable was requested but it's already disabled.Ignore — state is correct.
twofa_already_enabled422A 2FA enable was requested but it's already enabled.Ignore — state is correct.
twofa_invalid_challenge400The 2FA challenge code is wrong.Re-enter it.
twofa_invalid_context400The 2FA context (purpose / audience) doesn't match.Restart the flow.
twofa_method_same422A change to a 2FA method equal to the current one was requested.Pick a different method.
twofa_method_unsupported422The requested 2FA method isn't supported.Use sms or email.
twofa_not_enabled422You tried to verify 2FA but the user doesn't have it on.Enable 2FA first.
twofa_required401The user has 2FA on — you need to solve the challenge.Trigger POST /v1/auth/2fa/verify-challenge.

Plan and billing

codeStatusWhen it firesWhat the client should do
admin_grant_failed422The admin-side plan grant failed.Check the detail.
billing_disabled503The billing module is disabled in this deploy.Wait until it's enabled.
billing_invalid_interval422The interval isn't month or year.Use an allowed one.
billing_invalid_kind422The price kind isn't base or metered.Use an allowed one.
billing_plan_is_free422You're trying to subscribe to a free plan via Stripe checkout.The free plan is assigned without Stripe.
billing_plan_not_found404Variant: the slug doesn't resolve to an active plan.Check the slug.
billing_plan_not_self_service403Plan not assignable via self-service.Contact support.
billing_plan_slug_invalid422The slug doesn't meet ^[a-z0-9-]+$.Fix it.
billing_plan_slug_required422Missing plan_slug in the body.Add the field.
billing_plan_slug_too_long422The slug exceeds the max.Shorten it.
comp_amount_invalid422Invalid compensation amount.Fix it.
comp_user_missing422Target user missing in comp.Add it.
comp_user_not_found404The comp user doesn't exist.Verify.
no_active_subscription404The user has no active subscription.Start checkout.
overage_not_applicable422The current plan doesn't support overage.Upgrade the plan.
overage_update_failed422The overage toggle failed.Retry.
plan_not_found404The referenced plan doesn't exist.List plans with GET /v1/plans/public.
price_already_in_catalog409The stripe_price_id is already used by another price.Reuse the existing one.
price_combo_already_exists409 / 422Duplicate combination (plan, interval, currency, kind).Edit the existing one.
price_local_id_required422Missing price_local_id.Add it.
price_not_active422The price is archived.Activate it first.
price_not_found404The local price doesn't exist.Verify the ID.
price_plan_mismatch422The referenced price doesn't belong to that plan.Use the correct plan.
refund_amount_invalid422Invalid refund amount (negative or > invoice).Fix it.
refund_invoice_not_found404The referenced invoice doesn't exist in Stripe.Verify the invoice_id.
source_price_id_required422Missing source_price_id in migrate.Add it.
stripe_cancel_failed502Stripe rejected the cancel.Retry.
stripe_checkout_failed502Stripe rejected the session creation.Retry.
stripe_invoice_malformed500The Stripe invoice arrived incomplete in the webhook.(logged and resync).
stripe_meter_lookup_failed502Stripe meter lookup failed.Retry.
stripe_meter_missing422 / 500The expected meter doesn't exist in Stripe.Create the meter or disable metered.
stripe_price_archive_failed502Stripe rejected archiving the price.Retry.
stripe_price_id_format_invalid422The stripe_price_id doesn't match price_*.Fix it.
stripe_price_id_required422Missing stripe_price_id.Add it.
stripe_price_not_found404The stripe_price_id doesn't exist in Stripe.Verify the ID.
stripe_product_create_failed502Product creation in Stripe failed.Retry.
stripe_subscription_malformed500The Stripe subscription arrived incomplete.(logged and resync).
stripe_unreachable502Stripe API timeout/connection error.Retry.
subscription_not_found409The subscription doesn't exist.Verify the user_id.
subscription_race_retry409Race condition mutating the subscription — the client must retry.Retry after 1-2s.
unit_amount_required422Missing unit_amount.Add it.

Rate limit

codeStatusWhen it firesWhat the client should do
rate_limit_exceeded429Variant for internal buckets (e.g. login).

Registration and account

codeStatusWhen it firesWhat the client should do
current_password_incorrect422The current_password doesn't match.Re-enter it correctly.
current_password_required422The current_password is missing in a password change.Add the field.
email_already_registered422The email already has a verified account.Show a generic anti-enum message.
email_already_taken422Variant: the email isn't free.Ask for another email.
email_already_verified422The email is already verified.Continue with the normal flow.
email_delivery_failedThe email provider rejected the send.Retry; if it persists, support.
email_same_as_current422The new email matches the current one.Enter a different one.
invalid_email_change_context400The email-change context isn't valid (purpose mismatch).Restart the flow.
language_unsupported422Variant of unsupported_locale.Use es or en.
new_password_too_short422Variant: on a password change, the new one is too short.Use more characters.
password_mismatch422password and password_confirmation don't match.Re-enter matching values.
password_too_shortThe password doesn't meet the minimum length.Use a longer password.
password_too_weakThe password doesn't meet the complexity rules.Strengthen the password.
phone_required_for_email_change422You need a verified phone before changing email.Verify the phone first.
phone_takenThe phone is already on another verified account.Ask for another phone.
sms_delivery_failedThe SMS provider rejected the OTP send.Retry; if it persists, support.
unsupported_locale422The submitted locale isn't on the whitelist.Use es or en.

SPEI transfer validation

codeStatusWhen it firesWhat the client should do
bank_code_required_for_phone422For account_type=phone an explicit bank_code is required.
clabe_prefix_not_recognized422The first 3 digits of the CLABE don't match any SPEI participant bank.
clave_or_ref_required422Either clave_rastreo or referencia_numerica is required.
image_not_readable422For image validations (OCR): OCR couldn't read the image.
image_not_readable_receipt422For image validations (OCR): OCR read it but it doesn't look like an SPEI receipt.
image_not_spei_receipt422For image validations (OCR): the receipt isn't SPEI (another transfer type).
image_or_image_url_required422For image validations (OCR): neither image nor image_url was provided.

Webhooks and notifications

codeStatusWhen it firesWhat the client should do
invalid_notification_id422The id isn't a UUID.Fix it.
notification_not_found404Referenced notification doesn't exist.Verify the id.
notifications_preferences_empty422The body carries no preferences.Add at least one.
push_fcm_token_invalid422The FCM token isn't a valid format.Fetch the token again from the Firebase SDK.
push_fcm_token_required422Missing token (FCM) in the body.Add it.
push_not_configured503The server has neither VAPID nor FCM configured.Support.
push_subscription_endpoint_not_https422Endpoint isn't HTTPS.Verify the provider.
push_subscription_endpoint_required422Missing endpoint.Add it.
push_subscription_endpoint_too_long422Endpoint exceeds the max.(provider issue).
push_subscription_invalid_shape422The PushSubscription object is invalid.Re-subscribe from the SW.
push_subscription_none_active422You have no active push subscriptions.Subscribe first.
quiet_hours_invalid_timezone422The timezone doesn't exist.Use an IANA TZ.
quiet_hours_minutes_out_of_range422Minutes outside [0, 1440].Fix it.
telegram_bot_not_configured503The Telegram bot isn't configured server-side.Support.
webhook_event_invalid422Event outside the registry.See events in the docs.
webhook_events_required422Missing the events array.Add at least one.
webhook_events_too_many422More events than the max.Reduce them.
webhook_limit_reached422Plan webhook cap reached.Upgrade the plan or delete one.
webhook_status_invalid422status isn't active/disabled.Fix it.
webhook_url_empty422url sent but empty.Add a real URL.
webhook_url_invalid_format422url doesn't parse.Fix it.
webhook_url_not_https422The scheme isn't https.Use HTTPS.
webhook_url_required422Missing url.Add it.
webhook_url_too_long422url exceeds 2048 chars.Shorten it.

Codes without a description

The API can emit these 381 codes, and they have no description yet. They are listed with their HTTP status so an integration can at least classify them.

codeStatus
admin_self_delete_not_allowed403
admin_self_restore_not_allowed403
already_blocked409
already_canceling409
audience_required422
audience_too_many422
audience_value_too_long422
banxico_check_cooldown429
banxico_sync_failed502
beneficiary_already_exists409
billing_already_subscribed409
billing_interval_invalid422
billing_invalid_currency422
billing_no_customer422
billing_orphan_customer500
billing_plan_unresolvable500
billing_price_not_found422
bin_invalid422
bin_not_found404
body_empty400
body_too_large413
bot_custom_command_too_many422
bot_custom_command_trigger_reserved409
bot_custom_command_trigger_taken409
bot_system_command_trigger_reserved409
broadcast_already_active409
broadcast_audience_empty422
broadcast_audience_too_large422
broadcast_invalid_user_ids422
broadcast_message_empty422
broadcast_message_too_long422
broadcast_not_cancelable409
broadcast_not_dispatchable409
broadcast_rate_limited429
bulk_too_many400
cannot_cancel409
cannot_modify_role_permissions422
cannot_remove_critical_permission422
cannot_restore_self422
category_too_many422
category_value_too_long422
changelog_registry_error500
channels_required422
cloudflare_not_configured409
comp_cap_not_configured500
comp_currency_invalid422
comp_daily_cap_exceeded429
comp_lock_contention503
comp_reason_invalid422
comp_user_no_customer422
compare_runs_must_differ422
confirm_required422
control_unavailable409
create_rate_limited429
date_range_too_large422
device_credential_id_required422
device_credential_not_found404
device_credential_reauth_required422
docs_site_missing503
email_taken422
entry_ids_required422
event_not_broadcast_safe422
event_type_required422
event_type_too_long422
file_not_found404
filter_invalid422
health_check_not_found404
identity_not_found404
image_invalid422
import_failed500
invalid_account422
invalid_account_type422
invalid_audience400 / 422
invalid_audience_filter422
invalid_audience_kind422
invalid_audience_override422
invalid_audience_value422
invalid_block_reason422
invalid_bot_user_id422
invalid_broadcast_id422
invalid_broadcast_language422
invalid_broadcast_segment422
invalid_category400
invalid_category_value422
invalid_channel422
invalid_channel_value422
invalid_channels422
invalid_channels_override422
invalid_custom_command_id422
invalid_custom_command_response422
invalid_custom_command_trigger422
invalid_date_filter422
invalid_date_format422
invalid_date_range422
invalid_datetime422
invalid_device_credential401
invalid_enabled422
invalid_event_type422
invalid_except_value422
invalid_expected_banxico_status422
invalid_filter422
invalid_identity422
invalid_identity_value422
invalid_impact_level422
invalid_include400
invalid_json400
invalid_lang400
invalid_limit400
invalid_page_by400
invalid_path422
invalid_payload_value422
invalid_permission_action422
invalid_plan422
invalid_proxy_request422
invalid_remember422
invalid_reorder422
invalid_role422
invalid_session_id422
invalid_setting_value422
invalid_settings422
invalid_severity422
invalid_status400 / 422
invalid_system_command_description422
invalid_system_command_id422
invalid_system_command_trigger422
invalid_telegram_token422
invalid_timestamp400
invalid_user_id_filter422
invalid_webhook_url422
last_auth_method409
lockout_unavailable503
malformed_payload400
migration_bootstrap_missing500
migration_drift_conflict409
migration_file_missing404
migration_filename_format422
migration_filename_required422
migration_filenames_must_be_array422
migration_lock_held409
migration_mark_bulk_limit422
migration_not_found404
migration_target_invalid_type422
migration_target_version_format422
missing_jti401
missing_param400
missing_required_payload_var422
missing_required_var422
name_empty422
name_too_long422
no_active_grant409
no_api_key404
no_failed_files404
no_matching_entries422
not_blocked409
not_canceling409
not_linked409
not_stripe_subscription422
notifications_preferences_invalid422
oauth_missing_handoff400
oauth_no_pending_flow404
oauth_provider_unavailable404
ocr_not_configured502 / 503
only_owner_can_assign_owner422
only_owner_can_create_owner422
only_owner_can_delete_owner422
only_owner_can_modify_owner422
only_owner_can_restore_owner422
only_owner_can_suspend_admin422
openapi_spec_parse_failed500
owner_only_action403
password_already_set409
password_not_set422
path_not_allowed403
permission_actions_must_be_array422
phone_required422
phone_unavailable409
plan_beneficiaries_max_invalid422
plan_billing_model_change_blocked422
plan_billing_model_invalid422
plan_cap_exceeded422
plan_comparison_invalid_shape422
plan_create_post_commit_inconsistent500
plan_create_stripe_price_failed502
plan_create_stripe_product_failed502
plan_currency_invalid422
plan_delete_has_active_subs409
plan_duplicate_same_slug422
plan_feature_icon_invalid422
plan_feature_text_required422
plan_feature_text_too_long422
plan_features_invalid_shape422
plan_features_too_many422
plan_free_cannot_have_initial_prices422
plan_free_cannot_have_stripe_product422
plan_included_exceeds_limit422
plan_included_validations_negative422
plan_limit_negative422
plan_name_required422
plan_name_too_long422
plan_price_edit_noop422
plan_price_migrate_invalid_proration422
plan_price_migrate_source_format_invalid422
plan_price_migrate_source_not_archived422
plan_price_migrate_source_not_found404
plan_price_migrate_source_product_mismatch422
plan_price_migrate_source_retrieve_failed502
plan_price_migrate_source_same_as_target422
plan_price_not_active422
plan_price_not_found404
plan_price_out_of_range422
plan_price_slug_mismatch422
plan_retry_max_dispatched_out_of_range422
plan_retry_max_pending_out_of_range422
plan_retry_max_retries_out_of_range422
plan_slug_already_exists422
plan_slug_format_invalid422
plan_slug_invalid422
plan_slug_required422
plan_sort_order_negative422
plan_stale_prepare422
plan_stripe_product_missing422
plan_tax_behavior_invalid422
plan_trial_days_out_of_range422
plan_update_post_commit_inconsistent500
plan_update_stripe_price_failed502
plan_update_stripe_product_failed502
platform_disabled404
price_archive_has_active_subs409
price_create_race_unrecoverable500
processing_failed500
proxy_upstream_error502
push_subscription_endpoint_conflict409
queue_unavailable503
queues_batch_failed500
queues_batches_failed500
queues_cancel_failed500
queues_cancel_prepare_failed500
queues_config_failed500
queues_config_reset_failed500
queues_config_update_failed500
queues_discard_failed500
queues_discard_prepare_failed500
queues_dlq_entry_failed500
queues_dlq_failed500
queues_job_failed500
queues_jobs_failed500
queues_overview_failed500
queues_pause_failed500
queues_restart_failed500
queues_restart_prepare_failed500
queues_resume_failed500
queues_retry_failed500
queues_retry_prepare_failed500
queues_start_failed500
queues_states_failed500
queues_stats_failed500
queues_stop_failed500
queues_worker_failed500
queues_workers_failed500
rate_limited_billing_portal429
rate_limited_email_flow429
rate_limited_login429
rate_limited_oauth429
rate_limited_otp429
rate_limited_password_reset429
rate_limited_register429
rate_limited_twofa429
reactivation_cap_exceeded422
rebuild_request_failed503
refund_amount_exceeds_refundable422
refund_cap_not_configured500
refund_currency_mismatch422
refund_daily_cap_exceeded429
refund_invoice_not_paid422
refund_lock_contention503
refund_no_charge422
release_not_found404
restore_token_expired422
restore_token_invalid422
restore_token_required422
restore_token_used422
retry_age_exceeded422
retry_already_resolved422
retry_not_active422
retry_not_applicable422
retry_not_supported_for_bulk422
retry_pending_cap_exceeded422
role_has_no_permissions403
rollback_no_down400
rotate_rate_limited429
scheduled_for_required422
scheduled_task_create_failed500
scheduled_task_delete_failed500
scheduled_task_delete_prepare_failed500
scheduled_task_detail_failed500
scheduled_task_execution_detail_failed500
scheduled_task_executions_failed500
scheduled_task_run_now_failed500
scheduled_task_update_failed500
scheduled_too_far422
scheduled_too_soon422
search_too_long422
seeder_bulk_limit422
seeder_filename_format422
seeder_filename_required422
seeder_invalid500
seeder_not_found404
service_unavailable503
session_expired401
session_not_found_or_already_revoked404
session_revoked401
session_unknown401
simulation_failed500
stale_draft409
stripe_account_check_misconfigured500
stripe_comp_failed502
stripe_customer_create_failed502
stripe_customer_persist_failed500
stripe_customer_update_failed502
stripe_event_malformed400
stripe_foreign_account400
stripe_invalid_mode500
stripe_portal_failed502
stripe_price_archive_divergent502
stripe_price_create_failed502
stripe_price_orphaned_post_create500
stripe_price_orphaned_post_edit500
stripe_price_product_mismatch422
stripe_price_shape_incompatible422
stripe_refresh_failed502
stripe_refund_failed502
stripe_resume_failed502
stripe_secret_missing500
stripe_secret_placeholder500
stripe_secret_too_short500
stripe_signature_invalid401
stripe_signature_malformed401
stripe_signature_missing401
stripe_signature_no_secrets500
stripe_signature_timestamp_skew401
stripe_subs_list_failed502
stripe_subscription_fetch_failed502
stripe_unavailable503
stripe_upcoming_failed502
subject_override_invalid422
subject_override_too_long422
subscriber_limit_reached422
subscription_not_cancelable422
subscription_not_resumable422
subscription_sync_failed500
sync_too_many_prices422
telegram_bot_token_missing422
telegram_identity_update_failed502
telegram_not_linked409
telegram_test_send_failed502
telegram_token_persist_failed500
telegram_token_verification_failed422
telegram_user_not_linked422
telegram_webhook_secret_missing422
telegram_webhook_set_failed502
telegram_webhook_url_not_https422
telegram_webhook_url_unresolvable422
test_file_not_found404
test_filename_format422
test_files_limit422
test_files_must_be_array422
test_name_invalid422
test_suite_empty404
test_suite_invalid422
tests_lock_held409
timezone_unsupported422
twofa_method_not_verified422
twofa_setup_required401
unknown_event_type422
unknown_permission_resource422
unknown_platform404
unknown_setting_key422
user_not_restorable404
var_too_long422
vars_must_be_object422
version_not_found400

Without translation

These 292 codes are emitted with no entry in the translation catalogue, so their detail arrives in the language it was written in, untranslated.

Registered with no detected emission

These 33 codes are present in the translation catalogue, but source analysis finds no place where they are emitted. They may be retired codes, or codes assembled at run time. They are listed so the inventory is complete; an integration should not count on receiving them.