Cambios de la API
Cada entrada lleva el día en que el cambio llegó a producción. Lo que no está desplegado no aparece aquí.
· Sincronización como ERP, pausa de la cobranza, cuotas que se generan y llaves de prueba
Makatea-API-Version: 2026-09-27
Tu sistema ya puede decir «así está el cliente hoy» sin preguntar si existe, cargar 500 registros en una llamada, pausar la cobranza de un cliente, generar el calendario de un crédito y probar todo sin que salga un solo mensaje.
Sincronizar como ERP
PUT /v1/members/by-ref/{external_ref},PUT /v1/billing-orders/by-ref/{external_ref}yPUT /v1/credits/by-ref/{external_ref}crean o actualizan por tu identificador:201si lo crea,200si lo actualiza o si ya estaba igual. El encabezadoMakatea-Upsert-Resultdice cuál.POST /v1/members/batch,/v1/billing-orders/batchy/v1/payments/batchreciben hasta 500 filas. Nunca fallan completos: cada fila trae su resultado con su índice y su código de error.- Mandar el mismo lote dos veces deja todo igual.
dry_run: truedice qué pasaría sin escribir nada. - Los lotes no disparan webhooks ni le mandan mensajes a tus clientes. En pagos,
notify_members: truemanda las confirmaciones.
Control de la cobranza
POST /v1/members/{id}/pauseconuntilyreasondetiene la cobranza automática hasta esa fecha.POST /v1/members/{id}/resumela reanuda antes.POST /v1/flows/{id}/membersyDELETE /v1/flows/{id}/members/{member_id}inscriben o sacan a un cliente de un flujo de lista.- Eventos nuevos:
member.paused,member.resumedymessage.classified(el cliente escribió con una intención reconocida, como pagar o reagendar).
Cuotas
POST /v1/creditsaceptascheduley genera las cuotas: semanales, quincenales o mensuales, con la suma exacta al centavo. La última cuota absorbe el redondeo.- Con capital y total, cada cuota trae su desglose de capital e interés.
POST /v1/billing-orders/{id}/splitdivide una cuota en partes que suman exactamente su saldo.
Liga de pago
POST /v1/billing-orders/{id}/payment-linkaceptasend_via(whatsapp,smsoemail) para mandarla al cliente, yexpires_atpara su vigencia.- El evento
payment_link.openedavisa cuando el cliente abre la liga. GETyPUT /v1/settings/brandingmuestran u ocultan «Cobrado con Makatea» en los correos de cobranza y en la página de pago.
Versiones, errores y cupo
- Cada respuesta dice qué versión aplicó en
Makatea-Version. Puedes pedir otra con ese mismo encabezado. Las llaves que ya tenías siguen en2026-09-23. - Desde
2026-09-27, un campo que la operación no conoce en el cuerpo contesta422 unknown_field. - Cada endpoint de webhook conserva la versión con que se creó.
- Cada operación de la referencia lista sus códigos de error.
- Encabezados
RateLimit-PolicyyRateLimit. Una petición rechazada con429ya no gasta cupo.
Llaves de prueba
- Las llaves
mk_test_trabajan sobre una copia de tu organización. Todo funciona igual, pero ningún mensaje sale y no se cobra dinero real. - Cada respuesta dice
Makatea-Livemode: falsecuando usas una llave de prueba.
Corrección
POST /v1/messagesya no le escribe a un cliente marcado como «no contactar»: contesta409 do_not_contact.
· Llaves de API, idempotencia, webhooks firmados y cartera de crédito
Makatea-API-Version: 2026-09-23
La API deja de depender de la sesión de un usuario y gana todo lo que necesita una integración de cobranza.
Autenticación
- Llaves
mk_live_que el dueño o un administrador crea en Configuración → Desarrolladores. - Cada llave tiene permisos
readowrite, puede expirar y se revoca al momento. - La llave viaja en
Authorization: Bearero enX-API-Key. Sin llave válida la respuesta es401. Sin el permiso es403 insufficient_scope.
Forma de las respuestas
- El éxito siempre viene en
{"data": …}y el error siempre en{"error": {"code", "message", "request_id"}}. - Cada respuesta trae
X-Request-IdyMakatea-API-Version: 2026-09-23. - Un parámetro que no existe contesta
400 unknown_parametercon la lista de los permitidos. - Límite de 600 llamadas por minuto por llave, con
X-RateLimit-Limit,X-RateLimit-Remaining,X-RateLimit-ResetyRetry-After.
Idempotencia
Idempotency-Keyen todoPOST,PUT,PATCHyDELETE. La misma llave con el mismo cuerpo devuelve la respuesta original durante 24 horas.- La misma llave con otro cuerpo es
422 idempotency_key_reused.
Paginación y sincronización
- Un solo cursor en todas las listas:
pagination.next_cursoryhas_more.offsetsigue funcionando. updated_sinceen clientes, cuotas y pagos ordena por fecha de cambio para sincronizar desde un punto.
Webhooks
- 13 eventos, de
member.createdamessage.received, entregados desde una cola. - Firma
Makatea-Signature: t=…,v1=…con HMAC-SHA256 sobre el cuerpo completo. - 8 intentos durante 3 días. Consulta de eventos y entregas, y reintento manual con
POST /v1/webhook-deliveries/{id}/retry.
Pagos y cartera
- Pagos parciales con fecha real (
paid_at) y regla para el excedente. - Libro de pagos con
GET /v1/payments. La anulación (POST /v1/payments/{id}/void) queda como renglón negativo. - Condonación, cargos moratorios y saldo a favor por cliente.
PATCH /v1/billing-orders/{id}mueve una cuota de fecha o de cliente y reprograma sus recordatorios.- Créditos con capital e interés por cuota (
/v1/credits) y regla de aplicación de pagos configurable. - Liga de pago con la cuenta de pagos de la organización:
POST /v1/billing-orders/{id}/payment-link.
Promesas, mensajes y documentos
- Promesas de pago por cliente. Pausan la cobranza hasta su fecha y emiten
promise.keptopromise.broken. POST /v1/messagesmanda un texto o una plantilla por la línea de la organización.- Conversación de cada cliente e importación del historial con
POST /v1/conversations/import. - Documentos adjuntos por cliente, de hasta 15 MB.
Operación
GET /v1/statuscontesta sin llave.- El spec OpenAPI se genera de la misma tabla de rutas que atiende las llamadas.