Skip to main content

Documentation Index

Fetch the complete documentation index at: https://ryvo-3dab4d1a.mintlify.app/llms.txt

Use this file to discover all available pages before exploring further.

Todas las respuestas de error tienen este shape:
{
  "error": "code_estable",
  "message": "Descripción humana corta.",
  "request_id": "f0c0a9d2-8b1e-4d8a-9c2f-6e5b7a1d2c3b"
}
  • error — código estable. Programa contra este campo, no contra message ni el HTTP status (a veces compartimos status entre causas distintas).
  • message — texto corto para mostrar a un humano o loggear.
  • request_id — UUID de la petición. Si reportas un problema, mándanos este valor — con eso ubicamos qué pasó en segundos.
Algunas respuestas (gate fallido) incluyen campos extras:
{
  "error": "payment_required",
  "message": "Account is not in good standing.",
  "primary_reason": "wallet",
  "reasons": ["wallet"],
  "request_id": "..."
}
HTTPerrorCausa típicaQué hacer
400invalid_jsonEl body no es JSON válido.Revisa el Content-Type y el body.
400invalid_bodyCampos faltantes o con tipo equivocado.El message te dice qué campo. Corrige y reenvía.
400invalid_idempotency_keyIdempotency-Key con caracteres prohibidos o más de 255 chars.Usa solo ASCII imprimible. UUID v4 es la opción más segura.
401unauthorizedAPI key faltante, mal formada, inválida o revocada.Revisa el header Authorization. Si la key fue revocada, crea una nueva.
402payment_requiredWallet sin saldo o suscripción no activa.Recargar wallet o regularizar suscripción. Verifica el campo primary_reason.
403agent_not_foundEl agent_id no existe O existe pero no pertenece a tu cuenta.Verifica que el ID es correcto y que la key pertenece al mismo cliente que el agente.
409idempotency_conflictIdempotency-Key reusado con un body distinto.Genera una nueva key o reusa exactamente el mismo body de la primera petición.
422agent_disabledEl agente está pausado (manualmente o por sistema).Reactiva el agente desde el portal.
429rate_limit_exceededDemasiadas peticiones por segundo.Implementa exponential backoff. Lee Rate Limits.
500internal_errorError inesperado de nuestro lado.Reintenta después de unos segundos. Si persiste, contáctanos con el request_id.
502upstream_unreachableNo pudimos contactar al proveedor de telefonía.Reintenta con backoff. Si persiste, escríbenos.
502upstream_errorEl proveedor rechazó la llamada (ej. número inválido para esa cuenta).Revisa el número y permisos del agente. El message puede dar más contexto.
503service_unavailableConfiguración faltante o degradación temporal.Reintenta. Si persiste, contáctanos.

Razones de denegación (primary_reason)

Cuando el HTTP status es 402 o 422, el campo primary_reason te dice por qué:
ValorSignifica
walletSaldo insuficiente. Recarga desde el portal.
sub:canceledSuscripción cancelada.
sub:past_duePago atrasado.
sub:unpaidPago no procesado.
agent:pausadoAgente pausado manualmente.
agent:sin_configurarAgente aún no terminó setup.
deniedOtro motivo (revisa reasons).

Buenas prácticas para manejar errores

El campo message puede mejorar de redacción. El error es el contrato — no cambia.
Es lo que te pedimos cuando reportas un bug. Sin ese ID nos cuesta minutos a horas encontrar la petición.
Los errores 4xx (excepto 429) son responsabilidad del cliente — reintentar no los va a arreglar.
Para 429 y 5xx, espera 1s, 2s, 4s, 8s con un poco de aleatoriedad para no sincronizar reintentos.