Skip to main content
Version: Next (unreleased)

Errors

Every error follows the same envelope. When a field mapping is active, field names inside the error refer to your schema.

Envelope

{
"success": false,
"error": {
"code": "ERROR_CODE",
"message": "Human-readable summary",
"details": [
{"field": "field_name", "message": "Why this field failed"}
]
}
}
PropertyTypeNotes
successbooleanAlways false
error.codestringMachine-readable, always UPPER_SNAKE_CASE
error.messagestringHuman summary
error.details[]arrayPresent for VALIDATION_ERROR
note

Auth/permission errors use Django REST Framework's native envelope — a flat {"detail": "..."} — not the format above.

Error codes

CodeHTTPMeaning
VALIDATION_ERROR400One or more fields failed validation (see details[])
SERVICE_ERROR400Business rule violation (e.g. SKU not found, order shipped)
MAPPING_ERROR422Mapping engine couldn't process the payload
NOT_FOUND404No record matches the identifier
DUPLICATE409Unique constraint conflict

HTTP status summary

StatusWhen
200GET / PUT / DELETE succeeded
201POST created a record
400Validation or business-rule error (see code)
401Invalid or expired API key
403No key, no partner linked, partner deactivated, or missing scope
404Record not found
409Duplicate unique field
422Field mapping engine failed

Examples

VALIDATION_ERROR — 400

{
"success": false,
"error": {
"code": "VALIDATION_ERROR",
"message": "One or more fields failed validation.",
"details": [
{"field": "order_number", "message": "This field is required."},
{"field": "items", "message": "At least one item is required."}
]
}
}

SERVICE_ERROR — 400

{
"success": false,
"error": {
"code": "SERVICE_ERROR",
"message": "SKU not found: NONEXISTENT-SKU"
}
}

MAPPING_ERROR — 422

{
"success": false,
"error": {
"code": "MAPPING_ERROR",
"message": "Failed to map inbound payload: <reason>"
}
}

Review the mapping in the dashboard — the source path probably doesn't exist in the payload you're sending.

NOT_FOUND — 404

{
"success": false,
"error": {
"code": "NOT_FOUND",
"message": "Order not found: ERP-5001"
}
}

Verify (1) the identifier value is correct, (2) the partner's identifier field matches, and (3) the record hasn't been soft-deleted.

DUPLICATE — 409

{
"success": false,
"error": {
"code": "DUPLICATE",
"message": "A location with code \"A-101\" already exists."
}
}

What you can check before contacting support

  1. The key scope covers the action you're attempting — Scopes.
  2. The identifier field matches what you put in the URL.
  3. All sku_codes referenced by an order exist as products.
  4. Dates are ISO 8601 — see Dates & timezones.
  5. The mapped payload (visible in the Integration Logs view of the dashboard) contains what you expect after transformation.

If a request still looks wrong, open a support ticket with the request's timestamp and your partner slug.