Refusals
Every refusal is one envelope with a closed code.
an SDK keeps a code it does not know and the raw body; this list is never the whole of what a client may meet.
Envelope
{
"type": "object",
"properties": {
"error": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"message": {
"type": "string"
},
"field": {
"type": "string",
"description": "the input a 400 invalid_input is about"
},
"deny": {
"type": "string",
"description": "on a 403 about authority, the closed deny code (authz.deny_reasons' public codes)"
}
},
"required": [
"code",
"message"
],
"additionalProperties": false
}
},
"required": [
"error"
],
"additionalProperties": false
} Platform
| code | status | retryable | meaning |
|---|---|---|---|
| malformed_version | 400 | false | Trade-HQ-Version must be a single date, YYYY-MM-DD, naming a version this API serves; the current version is 2026-10-01 |
| unknown_version | 400 | false | Trade-HQ-Version YYYY-MM-DD is not a version this API serves; it serves 2026-10-01 |
| unknown_pinned_version | 400 | false | this API key is pinned to YYYY-MM-DD, which this API no longer serves; send Trade-HQ-Version, or re-pin the key |
| malformed_pinned_version | 400 | false | this API key's pinned version is not a YYYY-MM-DD date; send Trade-HQ-Version, or re-pin the key to a supported version (the current version is 2026-10-01) |
| unauthenticated | 401 | false | authentication required |
| invalid_credential | 401 | false | invalid credential |
| expired_token | 401 | false | expired credential |
| no_session | 401 | false | no session |
| org_not_permitted | 403 | false | organisation not permitted |
| org_not_selected | 403 | false | no organisation selected |
| no_org_membership | 403 | false | no organisation membership |
| unavailable | 503 | true | dependency unavailable |
| org_frozen | 503 | true | organisation frozen for migration |
| guest_not_permitted | 403 | false | a guest of this organisation may read only their own documents |
| read_only_credential | 403 | false | this credential is read-only: it reaches /v1/graphql and /whoami and nothing else |
| org_locked | 403 | false | organisation suspended or scheduled for deletion |
| no_test_twin | 409 | false | organisation has no test twin |
| rate_limited | 429 | true | the API key's rate limit is reached |
| system_org | 403 | false | a system organisation is no person's organisation |
| service_account_expired | 401 | false | the API key's service account has expired |
| service_account_disabled | 401 | false | the API key's service account is disabled |
| service_account_suspended | 401 | false | the API key's service account is suspended |
| impersonation_not_permitted | 403 | false | this impersonated session is no longer permitted |
| security_policy_unenforced | 503 | false | the organisation's security policy cannot be applied |
| sso_required | 403 | false | this organisation requires single sign-on for your address |
| ip_not_allowed | 403 | false | your network is not allowed by your organization |
| mfa_required | 403 | false | this organisation requires a second factor: set one up, then sign in again |
| session_expired_policy | 401 | false | this session has ended under the organisation's session policy; sign in again |
| session_revoked | 401 | false | this session has been signed out; sign in again |
| key_not_granted | 403 | false | this API key is not granted what this route needs |
| membership_quarantined | 403 | false | this membership is quarantined until an administrator reviews it |
| capability_not_found | 404 | false | no capability is registered under that name |
| invalid_body | 400 | false | the body is not JSON |
| body_not_object | 400 | false | the body must be a JSON object of this capability's inputs (send {} for none); it was an array |
| invalid_input | 400 | false | an input is missing, undeclared or not of its declared type |
| capability_requires_user | 403 | false | the capability plane is called by a signed-in user |
| caller_deactivated | 403 | false | the calling user is deactivated |
| device_revoked | 403 | false | this device has been revoked |
| device_read_only | 403 | false | a managed (shared) device reads; it acts on nothing |
| capability_forbidden | 403 | false | the caller may not call this capability on this target |
| target_not_found | 404 | false | the target does not exist |
| org_frozen | 503 | true | the target org is frozen for its cutover |
| idempotency_key_required | 400 | false | this capability requires an Idempotency-Key header |
| idempotency_key_invalid | 400 | false | Idempotency-Key must be 1 to 255 characters of visible ASCII, space and tab, after surrounding whitespace is trimmed |
| idempotency_input_missing | 500 | false | the idempotency key's input <input> is absent after validation |
| unexpected_unique_violation | 500 | false | the write violated the unique constraint <constraint>, which is not the org id's |
| unexpected_check_violation | 500 | false | the write violated the check constraint <constraint> |
| unavailable | 503 | true | a dependency is unavailable |
| capability_not_released | 404 | false | this capability is not released to this org |
| capability_not_entitled | 403 | false | this org's plan does not include this capability |
| internal | 500 | false | an internal error |
| reauthentication_required | 403 | false | this act needs a second factor verified in the last 10 minutes: reverify, then send the same call again with the same Idempotency-Key |
| idempotency_key_reused | 409 | false | the Idempotency-Key was sent before with other inputs |
| version_conflict | 409 | false | If-Match named a version the target is no longer at; read it again |
By capability
acknowledge_push: push_not_foundadd_file: file_too_large_for_add_file, content_not_decodable, files_unavailable, org_is_a_test_twin, retry_key_mismatch, retry_key_in_flight, retry_key_lostannounce_deprecated_versions: release_not_currentapprove_grant: no_such_grant, grant_not_pending, granted_staff_cannot_decide, hours_only_on_approve, org_untypedbreak_glass_access: idempotency_key_reused, retry_key_mismatch, retry_key_in_flight, retry_key_lost, grant_not_a_customer_org, grantee_already_a_member, grant_already_pending, grant_already_activecheck_ip_allowlist: security_policy_unenforcedclose_access_review: access_review_not_found, items_undecidedcomplete_upload: upload_not_arrived, upload_size_mismatch, upload_type_mismatch, files_unavailable, org_is_a_test_twinconfirm_report: report_not_found, report_not_confirmable, confirmation_not_recorded, reports_unavailableconvert_sandbox: not_a_sandbox, sandbox_expired, sandbox_already_converted, account_choice, admin_email_invalid, idempotency_key_reused, admin_already_provisioned, retry_key_mismatch, retry_key_in_flight, retry_key_lostcreate_access_review: nothing_to_review, due_date_passed, idempotency_key_reused, retry_key_mismatch, retry_key_in_flight, retry_key_lostcreate_service_account: org_is_a_test_twin, owners_must_differ, owner_not_active_member, role_template_not_assignable, unknown_role_template, permission_not_held, idempotency_key_reused, retry_key_mismatch, retry_key_in_flight, retry_key_lostcreate_sso_connection: domain_not_verified, domain_has_connection, org_is_a_test_twin, retry_key_mismatch, retry_key_in_flight, retry_key_lostcreate_upload: file_too_large, files_unavailable, org_is_a_test_twin, retry_key_mismatch, retry_key_in_flight, retry_key_lostdecide_access_review_item: access_review_not_found, access_review_item_not_found, review_closed, own_review_item, decision_not_available, role_template_required, review_act_refused, review_act_unavailable, item_already_decideddecline_data_share: data_share_not_received, data_share_revokeddelete_file: files_unavailabledelete_sso_connection: connection_not_found, security_policy_unenforceddelete_view: unknown_view, view_read_onlydisable_service_account: service_account_not_foundexport_audit_events: audit_export_unavailable, audit_export_running, audit_export_busy, idempotency_key_reused, retry_key_mismatch, retry_key_in_flight, retry_key_lostfollow_report: report_not_foundget_data_policy: unknown_role_templateget_file: file_tenancy_mismatch, files_unavailableget_identity_sync:get_impersonation: impersonation_not_foundget_my_settings:get_notification_policy:get_purchase_order_suggestions:get_purge_readiness: capability_not_enabled, org_not_scheduled, org_has_no_lifecycle, org_has_no_type, org_is_twin, org_declared, org_purgedget_report: report_not_foundget_security_policy: security_policy_unenforcedget_supplier_purchase_order: several_seller_partiesget_view: unknown_view, view_call_refusedget_view_default: unknown_viewgrant_capability: capability_not_released, org_is_a_test_twin, capability_retired, not_an_add_on, expiry_not_in_the_future, capability_not_found, org_has_no_type, idempotency_key_reused, retry_key_mismatch, retry_key_in_flight, retry_key_lostgrant_staff_role: not_internal_member, user_anonymized, user_deactivatedgrant_unit_role: own_access, unit_outside_caller, not_a_member, unknown_role_template, counterparty_role, permission_not_unit_scoped, permission_above_caller, holder_above_caller, tree_too_largehide_catalog_photo: photo_not_foundimpersonate_user: idempotency_key_reused, retry_key_mismatch, retry_key_in_flight, retry_key_lost, impersonation_needs_an_act_grant, user_not_impersonablelist_access_reviews:list_account_members:list_agent_reads:list_audit_events:list_audit_exports:list_capability_events:list_catalog: walk_ceiling_reachedlist_data_fields:list_depot_references:list_domains:list_files:list_granted_capabilities: capability_not_releasedlist_identity_findings:list_inventory: walk_ceiling_reachedlist_my_notifications:list_org_grants:list_purchase_orders: walk_ceiling_reachedlist_received_data_shares: org_party_unclaimedlist_report_opens:list_reports: walk_ceiling_reachedlist_saved_views: too_many_viewslist_service_accounts:list_sessions: security_policy_unenforcedlist_shared_catalog: walk_ceiling_reached, field_not_grantedlist_sso_connections:list_supplier_posts:list_unit_access: unit_outside_caller, tree_too_largelist_units: tree_too_largelist_user_factors: security_policy_unenforcedmark_report_seen: report_not_foundpin_view: unknown_view, view_read_only, org_pin_admin_only, view_not_shared_with_orgpurge_org: countdown_running, org_not_scheduled, purge_dry_run_required, purge_dry_run_superseded, purge_counts_changed, org_has_no_lifecycle, org_has_no_type, org_is_twin, org_declared, org_purgedrecord_gate_event: capability_not_enabled, observed_before_occurred, observed_in_future, unknown_depot, retry_key_mismatch, retry_key_in_flight, retry_key_lostrecord_report_open: idempotency_key_reused, retry_key_mismatch, retry_key_in_flight, retry_key_lostregister_device: public_key_invalid, challenge_invalid, signature_invalid, installation_bound_elsewhere, managed_requires_org_admin, managed_differs, unit_not_in_org, push_token_invalid, org_requiredremove_account_member: last_account_ownerremove_depot_reference:remove_domain: unknown_domain, domain_in_usereopen_report: report_not_found, report_not_reopenable, reopen_not_filed, reports_unavailable, retry_key_mismatch, retry_key_in_flight, retry_key_lostreplay_event_delivery: event_not_foundreply_to_report: report_not_found, reply_not_delivered, reports_unavailable, retry_key_mismatch, retry_key_in_flight, retry_key_lostrequest_staff_grant: idempotency_key_reused, retry_key_mismatch, retry_key_in_flight, retry_key_lost, grant_not_a_customer_org, grantee_already_a_member, grant_already_pending, grant_already_active, org_untypedreset_user_mfa:resolve_identity_finding: finding_not_found, finding_resolved, decision_not_offered, role_template_required, owner_not_admittable, permission_not_held, unknown_role_template, directory_managed, no_trade_hq_user, staff_may_only_removerestore_security_policy: policy_version_not_found, policy_not_enforceable, security_policy_unenforcedresume_org: capability_not_enabled, org_deletion_scheduled, org_has_no_lifecycle, org_has_no_type, org_is_twin, org_declared, org_purgedrevoke_capability_grant: capability_not_released, grant_not_foundrevoke_device: binding_not_foundrevoke_grant: no_such_grant, org_untypedrevoke_guest: not_a_guestrevoke_sessions: session_not_foundrevoke_staff_role: last_staff_opsrevoke_unit_role: own_access, unit_outside_caller, holder_above_caller, tree_too_largeroute_held_file: held_object_missing, files_unavailable, org_is_a_test_twinrun_identity_reconcile: retry_key_mismatch, retry_key_in_flight, retry_key_lostrun_purge_dry_run: capability_not_enabled, org_not_scheduled, purge_dry_run_running, purge_dry_run_busy, idempotency_key_reused, retry_key_mismatch, retry_key_in_flight, retry_key_lost, org_has_no_lifecycle, org_has_no_type, org_is_twin, org_declared, org_purgedsave_view: unknown_view, view_read_only, idempotency_key_reused, retry_key_mismatch, retry_key_in_flight, retry_key_lostsearch_records:send_feedback: feedback_unavailable, bad_page, feedback_not_filed, retry_key_mismatch, retry_key_in_flight, retry_key_lostset_account_role: last_account_owner, account_person_not_in_entity, user_deactivatedset_api_key_version: api_key_not_found, api_key_is_legacy, api_key_not_active, unknown_api_versionset_catalog_price: unknown_catalog_line, empty_catalog_group, price_ceiling_reached, retry_key_mismatch, retry_key_in_flight, retry_key_lostset_customer_stage: org_not_customer, org_is_twin, org_has_no_typeset_data_policy: unknown_role_template, shipped_template_read_only, record_scope_not_built, record_scope_locked, party_seat_needs_a_counterparty_template, org_admin_requiredset_ip_allowlist: enforce_unavailable, caller_not_allowed, network_policy_invalid, security_policy_unenforcedset_mfa_policy: mfa_policy_invalid, role_template_unknown, security_policy_unenforcedset_my_notification: notice_required, notice_not_visible, cadence_is_digest_only, cadence_not_offeredset_my_settings: setting_lockedset_my_view_default: unknown_viewset_notification_policy: cadence_is_digest_only, invalid_email, invalid_slack_webhook, unknown_memberset_org_view_default: unknown_view, view_not_sharedset_session_policy: security_policy_unenforcedset_sso_policy: connection_not_found, connection_not_active, jit_needs_template, owner_not_assignable, unknown_role_template, permission_not_held, bypass_owner_only, sso_not_required, security_policy_unenforcedshare_view: unknown_view, view_not_yours, not_a_teammatesubscribe_audit: cadence_is_digest_only, invalid_slack_webhook, invalid_emailsummarize_catalog: group_ceiling_reachedsummarize_inventory:summarize_purchase_orders:summarize_reports:switch_org: org_not_switchable, session_required, session_not_callersunfollow_report: report_not_foundupdate_org_settings: twin_mirrors_live, setting_not_overridable, setting_locked, version_conflictupdate_service_account: service_account_not_found, service_account_disabled, two_owners_required, owners_must_differ, owner_not_active_member, role_template_not_assignable, unknown_role_template, permission_not_heldupdate_sso_connection: connection_not_found, metadata_required, connection_not_created, connection_required, invalid_metadata, security_policy_unenforced
Not yet declared
advance_flag_wave, anonymize_user, cancel_org_deletion, claim_depot, claim_party, clone_role_template, confirm_purchase_order, create_account, create_api_key, create_data_share, create_invite_link, create_org, create_portfolio, create_unit, deactivate_user, delete_role_template, get_acting_scope, get_api_usage, get_onboarding_status, get_tenant_health, get_test_twin, import_units, import_users, invite_guest, invite_user, list_accounts, list_announcements, list_api_keys, list_beta_lists, list_beta_members, list_data_shares, list_depot_registry, list_devices, list_document_parties, list_flag_actions, list_flag_staff, list_flags, list_fx_rates, list_guest_documents, list_guests, list_orgs, list_permissions, list_portfolios, list_role_templates, list_staff, list_staff_grants, list_switchable_orgs, list_users, move_unit, post_production_status, preview_data_share, provision_account, provision_sandbox, publish_announcement, reference_depot, reinstate_user, revoke_api_key, revoke_data_share, roll_back_flag, rotate_api_key, schedule_org_deletion, search_party_directory, set_acting_scope, set_api_key_limits, set_beta_list_member, set_document_parties, set_domain_join_policy, set_flag_lists, set_fx_rate_override, set_maintenance_banner, set_member_role, set_portfolio_members, set_session_mode, step_back_flag, submit_serial_batch, suspend_org, turn_off_flag, update_role_template, verify_domain