Send up to 500 independent messages in one call
Not a repeat of POST /messages. Each element carries its own channel, recipient and body, and each one is answered on its own row: index, the id that was created, and error when that element failed. One mistyped number does not throw away the 499 that were fine. The rows carry ids, not message objects. Read a message back with GET /messages/{id} if you need its full state. Status is 200, not 201, because a batch that failed entirely still answers row by row.
Try it — POST /messages/batch
Kept for this tab only — it disappears when you close it, and it is never sent anywhere except as the Authorization header on the call below.
Authorization
bearerAuth messages:writeAuthorization: Bearer sk_live_.... Keys in the query string or the
request body are refused — a URL is logged by every proxy it passes,
and that is how customer keys leak.
A key carries scopes. A call outside them answers 403 with
insufficient_scope and names the scope it wanted.
In: header
Scope: messages:write
Header Parameters
Any unique string, one per logical request. Retrying with the same key
returns the first answer instead of doing the work twice, and answers
with Idempotent-Replay: true.
length <= 255Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
Up to 500 independent messages in one call. Only the outer shape is validated up front; each element is checked as it runs, so one bad number does not throw away the 499 that were fine.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST https://app.sendkuy.com/api/v1/messages/batch \ -H "Authorization: Bearer sk_live_YOUR_API_KEY" \ -H "Content-Type: application/json" \ -d '{ "messages": [ { "channel": "whatsapp", "to": "+6281234567890", "body": "Your order is on its way." }, { "channel": "email", "to": "andi@example.com", "subject": "Your order", "body": "<p>Your order is on its way.</p>" } ]}'{ "data": [ { "index": 0, "id": "msg_9cBe3A1H-SLhW5fONWZ32wb-IIio5Ts3", "error": { "type": "authentication_error", "code": "missing_api_key", "message": "string", "param": "string" } } ]}Send one message to one or more recipients POST
One call, one body, one channel, many recipients — and one message object back per recipient. A message is one row of delivery: one person, one status. Sending to three numbers returns three objects. Recipients must be in E.164 form, with the +. A local number is refused rather than guessed: guessing the wrong country sends a stranger a message and bills you for it.
Read one message GET
Next Page