Saltar al contenido principal

Documentation Index

Fetch the complete documentation index at: https://docs.ryzeapi.cloud/llms.txt

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

Cada respuesta de RyzeAPI tiene un formato predecible. Comprender este formato es el primer paso para manejar errores de manera robusta en tu código.

Formato general de respuesta

Todas las respuestas comienzan con el campo success, que indica si la operación fue exitosa.
{
  "success": true,
  "message": "Message sent successfully",
  "status": "sent",
  "data": { "...": "..." }
}
Campos comunes en respuestas exitosas:
CampoSignificado
successSiempre true en éxito
messageDescripción legible de lo que ocurrió (úsalo solo para log/UI)
statusCódigo de negocio cuando aplica (por ejemplo, sent, connected)
dataPayload útil del endpoint (varía según el caso)
El envoltorio de error tiene solo success + error.message. No hay un campo numérico code ni errorType. La diferenciación programática debe hacerse mediante el status HTTP combinado con el contenido de error.message.

Códigos HTTP

HTTPSignificadoCuándo aparece
200OKOperación exitosa de lectura/síncrona
201CreatedCreación
202AcceptedTrabajo asíncrono creado
400Bad RequestFalla de validación de body/query; instancia desconectada; identificador inválido
401UnauthorizedToken ausente o inválido
403ForbiddenToken válido pero sin permiso (ownership)
404Not FoundInstancia/grupo/recurso no existe
409ConflictNombre de instancia duplicado; webhook duplicado
429Too Many RequestsLímite de velocidad; throttling de WhatsApp
500Internal Server ErrorError interno (DB, cifrado, whatsmeow)
501Not ImplementedOperación no soportada por el whatsmeow embebido
503Service UnavailableBridge (RyzeIntegrations) no configurado; instancia no conectada

Mensajes literales por categoría

La diferenciación granular entre errores se hace a través del texto de error.message. A continuación, los mensajes que puedes encontrar.
Mensaje
Missing token in header
Missing token in header, Authorization header, or query parameter
Missing token
Invalid token
Invalid instance token
Invalid account token
Unauthenticated
Mensaje
Instance token does not match requested instance
Instance does not belong to this account
Not authorized to view group requests (must be admin)
Not authorized to perform this action (must be admin)
Not authorized to update this group (must be admin)
Not authorized to reset group invite link (must be admin)
Not allowed to join this group
Not allowed to leave this group
Mensaje
Instance name is required
Invalid request body
The 'name' field is required
The 'identifier' query parameter is required (...)
At least one participant is required
At least one field must be provided ...
At least one privacy setting must be provided
group name must be 25 characters or less
Community name must be 25 characters or less
invalid participant <number>: <reason>
invalid group JID <jid>: <reason>
invalid community JID <jid>: <reason>
Invalid action. Must be one of: add, remove, promote, demote, approve, reject
Invalid <field> value: <value>. Valid values: ...
Invalid duration format
Invalid invite link or code
Invite link has been revoked or expired
Number not found or not registered on WhatsApp
invalid LID format
HTTPMensaje
400Instance is not connected to WhatsApp
503Instance not connected (cuando es crítico para la operación)
Mensaje
Rate limit exceeded
rate limit exceeded (429): wait before creating again (throttling de WhatsApp)
Mensaje
Instance with this name already exists
webhook limit reached (max 3 enabled per instance)
HTTPMensajeCausa
401Chatwoot rejected the API token — verify chatwootApiToken. Detail: ...Token de Chatwoot inválido
403Chatwoot denied the request — verify the API token has admin scope on account <id>. Detail: ...El token carece de permiso de admin
400Chatwoot account or endpoint not found — verify chatwootBaseUrl (...) and chatwootAccountId (...). Detail: ...account_id o URL incorrectos
400Chatwoot rejected the request as invalid ... Detail: ...Error 422 de Chatwoot
502Chatwoot is unreachable at <url> — verify chatwootBaseUrl and that the host is reachable from the server. Detail: ...DNS, conexión rechazada, timeout o 5xx
503integration gateway not configured (set BRIDGE_URL and BRIDGE_TOKEN)Bridge deshabilitado en el servidor
La causa raíz proveniente de Chatwoot/bridge siempre se incluye después de Detail: para diagnóstico.
Mensaje
WhatsApp client does not support newsletter creation (CreateNewsletter not available)
WhatsApp client does not support listing newsletters (GetSubscribedNewsletters not available)
WhatsApp client does not support GetNewsletterInfo
WhatsApp client does not support GetNewsletterInfoWithInvite
WhatsApp client does not support FollowNewsletter
WhatsApp client does not support UnfollowNewsletter

Webhooks: errores de entrega

Los webhooks fallidos no devuelven un error síncrono, se persisten en una cola con:
  • status: pending / delivered / failed
  • attempts, max_attempts (predeterminado 5)
  • last_error: mensaje completo
  • next_retry_at: timestamp del próximo reintento
Backoff exponencial:
IntentoPróximo reintento
1 (falla)+1s
2 (falla)+5s
3 (falla)+30s
4 (falla)+5min
5 (falla)+30min
6++1h (cap)
Después de max_attempts, el estado pasa a failed y la fila permanece como Dead Letter Queue (auditoría/replay manual). Detalles en Eventos.

Buenas prácticas

Siempre verifica success antes de asumir que el contenido es válido.
El status HTTP es la fuente de verdad, payloads diferentes pueden tener el mismo error.message.
Reintenta 429 con backoff exponencial; respeta el límite global de 100/min.
No reintentes 4xx en general (excepto 408, 429).
Para 503 en Chatwoot, reconoce que el bridge no está activo y deja de reintentar, regístralo para el operador.

Errores de validación de schema

Cuando envías un body con formato incorrecto (campo requerido faltante, tipo incompatible, etc.), la API devuelve 400 con un texto descriptivo:
{
  "success": false,
  "error": {
    "message": "Invalid request body"
  }
}
No analices el texto de forma fina, valida tu body antes de enviarlo usando los schemas documentados en cada endpoint.

Siguiente

Autenticación

Detalles sobre tokens y ownership.

Límite de velocidad

Límites por minuto y cómo reaccionar a 429.