Idempotencia, límites y errores de MiSender API
Evita duplicados, interpreta códigos HTTP y aplica reintentos seguros frente a límites o fallos.
Idempotency-Key
Es obligatoria en cada POST /messages, admite hasta 190 caracteres y debe identificar una operación de negocio, no un intento HTTP.
Idempotency-Key: pedido-84721-confirmacion- Misma clave y mismo cuerpo: devuelve el mensaje original con HTTP
200eidempotent_replay: true. - Misma clave y cuerpo diferente: HTTP
409 idempotency_conflict. - La unicidad es por cuenta, incluso si rotas la API key.
Límites iniciales
- 120 solicitudes HTTP por minuto por llave.
- 30 mensajes por minuto por cuenta.
- Ráfaga de 10 mensajes cada 10 segundos.
- 20 templates por minuto.
- 1,000 mensajes aceptados al día.
- Máximo 200 mensajes pendientes.
- Cuerpo HTTP máximo de 256 KB.
Encabezados de control
X-RateLimit-Limit: 120
X-RateLimit-Remaining: 87
X-RateLimit-Reset: 1790964060
Retry-After: 12Formato de error
{
"error": {
"code": "outside_customer_window",
"message": "Fuera de una ventana válida sólo se puede iniciar con una template aprobada.",
"request_id": "req_..."
}
}Códigos HTTP
400: JSON o Idempotency-Key ausente.401: API key ausente, inválida o revocada.403: scope insuficiente, cuenta o API no disponible.404: recurso inexistente para la cuenta.409: conflicto de idempotencia.413: payload mayor a 256 KB.422: datos válidos como JSON, pero incompatibles con las reglas.429: rate limit, cuota o cola alcanzada.500: error interno inesperado.
Estrategia de reintento
Reintenta 429 respetando Retry-After y usa backoff exponencial con jitter. Para 500, conserva la misma Idempotency-Key: nunca fabriques una nueva para la misma operación. No reintentes automáticamente errores 4xx salvo 429.
Diagnóstico
Conserva siempre X-Request-Id o error.request_id, el código HTTP, fecha UTC y data.id. Nunca envíes la API key al soporte.
¿Este artículo te resultó útil?
Tu respuesta nos ayuda a mejorar el centro de ayuda.
