Drop · API de Integraciones

Errores

La forma del cuerpo de error, los códigos estables y cuáles reintentar.

{
  "error": {
    "code": "INVALID_SIGNATURE",
    "message": "La firma no coincide con el request",
    "requestId": "req_1f0c9a2e-…"
  }
}
CampoNotas
codeIdentificador estable del error. Es contra el que programás
messageDescripción en español, para logs y soporte. Puede cambiar de redacción
detailsSolo en errores de validación: la lista de campos que fallaron
requestIdEl mismo valor del header X-Request-Id. Mandanoslo cuando reportes un problema

Programá contra code, nunca contra message. El mensaje puede cambiar de redacción o traducirse sin aviso; el código no cambia sin una versión nueva del API. En errores de validación aparece además details con la lista de campos.

Códigos

codeHTTPCuándo
UNAUTHORIZED401Faltan headers, el nonce está mal formado, o la credencial no existe o está inactiva
INVALID_SIGNATURE401La firma no coincide
TIMESTAMP_OUT_OF_RANGE401Timestamp fuera de ±300 s, o no es un entero
REPLAYED_NONCE401Ese nonce ya se usó
FORBIDDEN_SCOPE403Tu credencial no tiene el permiso requerido
RATE_LIMITED429Excediste la cuota
VALIDATION_ERROR400Cuerpo o query inválidos, o un campo que el endpoint no acepta
VALIDATION_ERROR409Ya hay otra petición tuya creando esa misma orden. Reintentá en unos segundos
NOT_FOUND404El recurso o la ruta no existen
MIXED_SELLERS422La orden mezcla productos de dropshippers distintos
MIXED_PRODUCT_ORIGINS422La orden mezcla productos propios con productos de proveedor, o productos propios de dos dueños distintos
IDEMPOTENCY_KEY_REUSED422Repetiste un externalOrderId con un cuerpo distinto
ORDER_NOT_CANCELLABLE409La orden ya se despachó o dejó de estar en un estado cancelable
INTERNAL_ERROR5xxError de nuestro lado

Cuáles reintentar

  • 401 / 403 / 422: no reintentar. Son errores de tu petición; reintentar da el mismo resultado.
  • 429: reintentar respetando el header Retry-After.
  • 409: reintentar en unos segundos, es una condición transitoria. La excepción es ORDER_NOT_CANCELLABLE: la orden no vuelve atrás, así que reintentar da el mismo resultado.
  • 5xx: reintentar con espera creciente. Si era un POST /orders, repetí el mismo externalOrderId y el mismo cuerpo: la idempotencia se encarga de que no se dupliquen.

Un error nuestro nunca te reenvía detalles internos: se convierte en INTERNAL_ERROR con texto genérico, y el detalle queda de nuestro lado asociado al requestId.

En esta página