Errors
One shape, every time. Real HTTP status codes, and never a 200 containing an error.
{
"error": {
"type": "invalid_request",
"code": "media_too_large",
"message": "Document is 118.4 MB. The limit is 100 MB.",
"param": "document",
"docs": "https://docs.njiwa.upeo.ai/errors/media_too_large"
}
}
type is one of invalid_request,
authentication_error, permission_error, not_found,
rate_limit, instance_error, api_error.
Branch on code, not on the message. Messages are written for humans and
we improve them; codes are the contract.
Every response carries an
X-Request-Id. Quote it when you
contact us and we can find the exact request.All 288 codes
a_read_is_already_running
account_locked_previously
account_not_confirmed
account_suspended
already_a_member
already_retried
already_sent
amount_below_provider_minimum
amount_too_large
amount_too_small
api_key_in_query_string
api_key_not_found
backwards_period
bad_broadcast
bad_date
bad_link
bad_offer
ban_risk
before_not_a_timestamp
calendar_disconnected
calendar_not_chosen
calendar_not_configured
campaign_already_completed
campaign_not_running
cannot_delete_theirs
cannot_hide_own
cannot_invite_an_owner
cannot_refund_no_longer_available
channels_not_available
cloud_credentials_refused
cloud_error
cloud_not_configured
cloud_number_unreadable
cloud_rate_limited
cloud_token_invalid
cloud_unreachable
comment_deleted
confirm_link_invalid
content_not_stored
cross_origin_session_write
delivery_rejected
description_too_long
discovery_expired
disposable_email
email_already_registered
email_domain_unreachable
email_too_long
empty_edit
empty_file
empty_message
empty_number_access
envelope_lost
example_phone_number
group_is_announce_only
http_error
idempotency_key_in_progress
idempotency_key_reused
instance_gone
instance_not_attached
instance_not_connected
instance_not_found
instance_required
internal_error
invalid_amount
invalid_api_key
invalid_attendee
invalid_attendee_list
invalid_base64
invalid_before
invalid_contact
invalid_contact_ids
invalid_credentials
invalid_data_uri
invalid_duration
invalid_email
invalid_extension
invalid_json
invalid_key_prefix
invalid_location
invalid_match_type
invalid_media_id
invalid_media_path
invalid_media_signature
invalid_numbers
invalid_phone_number
invalid_reaction
invalid_regex
invalid_request_body
invalid_retention
invalid_scope
invalid_scopes
invalid_sender_email
invalid_setting
invalid_shortcut
invalid_signature
invalid_start
invalid_status
invalid_term
invalid_until
invalid_webhook_url
invalid_whatsapp_number
invitation_invalid
key_locked_to_instance
key_not_revealable
label_too_long
last_owner
likes_not_supported
list_name_taken
list_too_large
malformed_api_key
media_fetch_failed
media_gone
media_not_found
media_quota_exceeded
media_too_large
media_url_required
meeting_in_the_past
member_not_active
member_removed
membership_not_active
mention_all_needs_a_group
message_allowance_exhausted
message_deleted
message_not_found
meta_error
meta_not_connected
meta_permission_missing
meta_rate_limited
meta_recipient_unavailable
meta_token_invalid
meta_token_missing
meta_unreachable
meta_verification_required
method_not_allowed
missing_amount
missing_api_key
missing_assertion
missing_cloud_credentials
missing_contacts
missing_content
missing_file
missing_label
missing_msisdn
missing_name
missing_pattern
missing_reference
missing_reply
missing_scope
missing_shortcut
missing_summary
missing_text
missing_to
missing_until
msisdn_required_for_pairing_code
multiple_content_keys
name_too_long
never_linked
never_reached_whatsapp
no_calendar_connected
no_conversation
no_files_named
no_number_to_send_from
no_numbers
no_offer
no_recipient
no_recipients
no_settings
no_such_calendar
no_such_chat
no_worker_available
nobody_to_send_to
not_a_cloud_number
not_a_group
not_a_number
not_a_plan_payment
not_an_operator
not_banned
not_failed
not_found
not_in_that_group
not_invited
not_linking
not_ours_to_edit
not_ours_to_send
not_ours_to_withdraw
not_signed_in
not_this_key
not_to_yourself
not_while_viewing
not_your_account
not_your_note
nothing_chosen
nothing_to_cancel
numbers_required
only_text_can_be_edited
outside_service_window
owner_not_yours_to_change
password_already_set
password_incorrect
password_required
password_too_short
payment_not_found
payment_provider_error
payment_provider_unreachable
payments_not_configured
plan_excludes_campaigns
plan_is_quoted
plan_number_limit
rail_not_available
rate_limited
recipient_not_on_whatsapp
reference_required
reply_target_not_found
reset_link_invalid
revoked_api_key
role_not_permitted
scopes_required
seat_limit
send_failed
sender_ambiguous
sender_name_required
sender_name_too_long
sender_not_found
session_expired
session_invalid
session_required
shortcut_taken
signals_balance_too_low
signals_credit_not_returned
signals_needs_a_person
signals_needs_message_storage
signals_not_configured
signals_not_enabled
signals_read_in_progress
signals_read_too_soon
signals_refused
signals_unreachable
signature_greets_the_sender
signature_name_too_long
signature_needs_name
signature_too_long
storage_still_on
summary_too_long
template_param_mismatch
text_too_long
token_required
too_many_attendees
too_many_contacts
too_many_exclusions
too_many_files
too_many_link_previews
too_many_messages
too_many_numbers
too_many_recipients
too_many_saved_replies
too_old_to_edit
too_old_to_withdraw
topup_not_recorded
trial_expired
unknown_channel
unknown_currency
unknown_endpoint
unknown_kind
unknown_letter
unknown_link_strategy
unknown_number
unknown_period
unknown_plan
unknown_role
unknown_scope
unknown_setting
unknown_time_zone
unrecognised_media_reference
unsafe_webhook_url
unsupported_content_type
unsupported_on_this_channel
until_in_the_past
use_transfer_ownership
webhook_url_empty
webhook_url_required
whatsapp_already_confirmed
whatsapp_required
worker_error
worker_unauthorised
worker_unavailable
worker_unreachable
wrong_channel
wrong_password