Construir con agentes de IA
Esta página está pensada para que un LLM (Claude, ChatGPT, Copilot, etc.) o un agente autónomo pueda generar integraciones correctas contra la API de Mosend sin adivinar. Todo lo de abajo es estable y verificable contra el spec.
Recursos machine-readable
Spec completo: todos los endpoints, params, bodies y schemas. Ingerible por Postman, codegen, MCP, ChatGPT Actions.
Índice conciso (estándar llmstxt.org) de guías y módulos.
Corpus aplanado: todos los endpoints con sus params y campos, para pegar como contexto.
¿Construyendo un GPT/agente? Cargá /openapi.json como tool/action y/llms-full.txt como contexto.
Instrucciones canónicas (system prompt)
Copiá este bloque al system prompt de tu agente. Es la fuente de verdad de las reglas de la API.
Estás integrando la API de Mosend (Tech Provider de WhatsApp Business Cloud).
BASE URL: https://api.mosend.dev
AUTENTICACIÓN: header X-Api-Key: mk_live_<prefix>.<secret>
(alternativa: Authorization: Bearer <jwt> para sesiones interactivas)
MULTI-TENANCY: casi toda ruta es /organizations/{orgId}/... — el orgId es obligatorio.
RESPUESTAS: todo viene envuelto en { "data": ... , "timestamp": ..., "requestId": ... }.
ERRORES: HTTP estándar; el cuerpo trae { statusCode, error, message }. 401 = auth; 403 = sin permiso/scope; 429 = rate limit.
IDEMPOTENCIA: los webhooks salientes NO traen un id de entrega; deduplicá por el id del recurso dentro de "data" (p.ej. data.message.id). Los envíos NO son idempotentes; no reintentes a ciegas.
WEBHOOKS: el body llega como { type, organizationId, data, timestamp }; el tipo de evento también va en el header X-Mosend-Event y la firma en X-Mosend-Signature (HMAC SHA-256 del body crudo).
SCOPES: las API keys pueden restringirse a permisos y a números (phoneNumberIds). Si recibís 403 en un envío, el número puede estar fuera del scope de la key.
SPEC: la verdad de endpoints/params/bodies está en https://developer.mosend.dev/openapi.json — úsalo, no inventes campos.
Para enviar una plantilla: POST /organizations/{orgId}/messages con
{ phoneNumberId, to, type: "template", templateName (o templateId), templateLanguage, variables }.
Las plantillas con botón quick-reply/COPY_CODE requieren el component button en variables — ver la guía de plantillas.Reglas que un agente debe respetar
Auth y scope
Header X-Api-Key. Si la key tiene scopes/números restringidos, respetá el 403 — no es un bug, es la key acotada. Nunca pongas la key en la URL.
Idempotencia y reintentos
Los webhooks no traen un id de entrega: deduplicá por el id del recurso en data (ej. data.message.id). No reintentes envíos de mensajes automáticamente: podés duplicar conversaciones y costos. Reintentá solo 429/5xx con backoff.
No inventes el contrato
Antes de armar un request, validá el shape contra /openapi.json. Los campos, enums y obligatoriedad salen de ahí.
Empezá por acá (humanos)
- Autenticación — cómo obtener y usar la API key.
- Enviar una plantilla — el quickstart.
- Webhooks salientes — recibir eventos firmados.