API

Documentación para desarrolladores

Manejo de errores

La API usa códigos de estado HTTP estándar. Un código 2xx indica éxito; 4xx, un problema con la petición; 5xx, un error del servidor.


Códigos de estado

Código HTTPCampo codeSignificado
200 OKSUCCESS / UPDATED / DELETEDPetición exitosa.
201 CreatedCREATEDRecurso creado correctamente.
400 Bad RequestBAD_REQUEST / VALIDATION_ERROR / BUSINESS_ERRORPetición mal formada (BAD_REQUEST) o datos que no pasan la validación (VALIDATION_ERROR).
401 UnauthorizedUNAUTHORIZEDFalta el token, o el token es inválido, fue revocado o expiró.
403 ForbiddenFORBIDDENEl plan no incluye acceso a la API, la suscripción venció, o al token le falta un scope requerido.
404 Not FoundNOT_FOUNDEl recurso solicitado no existe.
409 ConflictCONFLICTLa petición entra en conflicto con el estado actual del recurso, o repetiste un Idempotency-Key cuya primera petición sigue en curso.
422 Unprocessable EntityUNPROCESSABLE_ENTITYLa petición está bien formada pero no se puede procesar, o reutilizaste un Idempotency-Key con un body distinto.
429 Too Many RequestsRATE_LIMITEDSe superó el límite de frecuencia.
500 Internal Server ErrorINTERNAL_ERRORError interno del servidor.
503 Service UnavailableSERVICE_UNAVAILABLEEl servicio no está disponible temporalmente.

Formato de los errores

Las respuestas de error son un objeto JSON con success en false, un mensaje descriptivo en error y un identificador legible en code.

{
  "success": false,
  "error": "Token missing required scopes: products:write",
  "code": "FORBIDDEN"
}

Errores de validación

Cuando un POST o PUT falla por validación, la API responde 400 con code VALIDATION_ERROR e incluye además un array errors con el detalle por campo.

{
  "success": false,
  "error": "Validation failed",
  "code": "VALIDATION_ERROR",
  "errors": [
    {
      "field": "name",
      "message": "This field is required",
      "code": "required",
      "value": null
    }
  ]
}

Cómo manejarlos

  • 400: revisá el cuerpo de la petición y los mensajes de validación que devuelve la API.
  • 401: verificá que estás enviando el token y que sigue activo; si fue revocado o expiró, generá uno nuevo.
  • 403: confirmá que la cuenta tiene plan Premium y que el token incluye el scope necesario para ese endpoint.
  • 404: revisá la URL y el ID del recurso.
  • 429: esperá y reintentá con backoff exponencial (ver la sección Límites de uso).
  • 5xx: reintentá más tarde; si persiste, consultá el estado del servicio en status.yo-facturo.com.

Otros códigos de estado

Además de los de la tabla anterior, la API puede responder con los siguientes códigos. Los errores de reglas de negocio que tienen un identificador propio lo traen en el campo error_code (por ejemplo CURRENCY_REQUIRED), además del code general.

Las peticiones con Idempotency-Key también pueden devolver 409 (la primera petición con esa clave sigue en curso) o 422 (la clave se reutilizó con un body distinto). Un 429 trae los headers X-RateLimit-* y Retry-After.

Estado HTTPCampo codeSignificado
405 Method Not AllowedMETHOD_NOT_ALLOWEDEl método HTTP no está permitido para esa ruta.
408 Request TimeoutREQUEST_TIMEOUTLa petición tardó demasiado en completarse.
413 Payload Too LargePAYLOAD_TOO_LARGEEl cuerpo de la petición supera el tamaño permitido.
415 Unsupported Media TypeUNSUPPORTED_MEDIA_TYPEEl Content-Type no es compatible: usá application/json.
502 Bad GatewayBAD_GATEWAYUn servicio externo respondió con un error.
504 Gateway TimeoutGATEWAY_TIMEOUTUn servicio externo no respondió a tiempo.

Ver también: Límites de uso