DoneTalk Desarrolladores Entrar

Errores, límites y buenas prácticas

Formato de los errores

Todo error vuelve así:

{
  "error": "validation_failed",
  "message": "Algún campo es incorrecto. `details` dice cuál y por qué.",
  "details": { "name": ["Required"] },
  "request_id": "01a3c0de-7a11-7b22-8c33-9d44e55f6677"
}
  • error es el código estable: su sistema decide qué hacer a partir de él.
  • message explica, en el idioma del encabezado Accept-Language (portugués, inglés o español; inglés por omisión).
  • request_id identifica la llamada: cítelo al hablar con soporte. Puede enviar el suyo en X-Request-Id.
HTTPCódigoQué hacer
401unauthorizedFalta la clave. Envíe Authorization: Bearer <clave>.
401api_key_invalidClave inválida o revocada. Revísela o cree otra en Configuración › API.
401api_key_expiredLa clave venció. Cree otra en Configuración › API.
403api_key_address_not_allowedEsta clave no acepta llamadas desde esta dirección IP. Agregue la dirección a la clave.
403insufficient_scopeLa clave no tiene el alcance de esta llamada. details.required indica cuáles sirven.
403not_available_to_api_keysEsta llamada no forma parte de la API pública.
403not_available_to_test_keysEsta llamada no tiene modo de prueba: use una clave de producción.
403permission_deniedLa clave no puede hacer esto.
403integration_template_onlyTexto y archivos piden el alcance messages:send_text; sin él, solo plantillas aprobadas.
404not_foundNo encontrado.
404campaign_not_foundCampaña no encontrada en esta empresa.
404contact_not_foundContacto no encontrado en esta empresa.
422validation_failedAlgún campo es incorrecto. details dice cuál y por qué.
409campaign_not_editableLa campaña ya no es borrador; solo un borrador se puede editar o enviar.
409template_not_approvedMeta aún no aprobó la plantilla. Espere la aprobación o elija otra.
409campaign_audience_emptyNadie del público puede recibir la campaña. Vea los motivos en la vista previa.
409contact_existsYa existe un contacto con este teléfono. details.contactId dice cuál.
409window_closedLa ventana de 24 horas está cerrada: solo una plantilla aprobada puede iniciar la conversación.
409idempotency_key_reusedEsta Idempotency-Key ya se usó con otra solicitud. Use una clave nueva por solicitud.
409idempotency_in_progressLa primera solicitud con esta Idempotency-Key aún está en curso. Reintente en un momento.
429rate_limitedLímite de 600 llamadas por minuto. Espere los segundos de Retry-After.
500internal_errorError de nuestro lado. Ya fuimos avisados; reintente y cite el request_id si persiste.

Límite de llamadas

Cada clave puede hacer 600 llamadas por minuto. Toda respuesta dice dónde está:

RateLimit-Limit: 600
RateLimit-Remaining: 587
RateLimit-Reset: 41

Pasado el límite, la respuesta es 429 rate_limited con Retry-After (segundos). Espere ese tiempo y reintente. El envío de una campaña no cuenta: quien envía es DoneTalk, al ritmo que Meta permite para el número.

Reintentar sin duplicar

Envíe Idempotency-Key (hasta 200 letras, números, _ . : -) en creaciones y envíos. Si la red falla y envía la misma llamada otra vez con la misma clave dentro de 24 horas, recibe la primera respuesta, con Idempotent-Replayed: true, y nada se hace dos veces. La misma clave con otra solicitud devuelve 409 idempotency_key_reused.

Idempotency-Key: pedido-88213-campana

Paginación

  • Campañas: limit y cursor; la respuesta trae nextCursor (null en la última página).
  • Contactos: limit y before (el lastActivityAt del último de la página).
  • Destinatarios de una campaña: limit y offset, o format=csv para todo.

Versiones

La v1 solo gana cosas nuevas: más campos y llamadas, nunca un cambio en lo que existe. Ignore los campos que no conoce. Si algún día algo debe cambiar, nace la v2 y la v1 sigue funcionando por 12 meses, con aviso.

Esta página en Markdown