---
title: "simple_send"
method: POST
path: "/streams/simple_send"
tags: ["Streams Service"]
---

# simple_send

`POST /streams/simple_send`

Send one or more SMS messages in a single request. Each message is queued and delivered independently, so a batch can partially succeed — always inspect every item in the response.

**Sender modes** — pick one:
- **Batch:** set one top-level `sender` for the whole request and omit `sender` on each message.
- **Mixed:** omit the top-level `sender` and set a `sender` on **every** message.

- **Batch size:** up to 250 messages per request.
- **Correlation:** set a unique `internal_id` per message; it is echoed back in the response and in delivery webhooks, and it keys any per-message error.
- **Response:** a batch `task_id` plus, per message, a `message_uuid` and `conversation_uuid`. Final delivery status is sent asynchronously to your configured webhook.
- **Partial failures** are reported inline on the offending message (`error` code + `details`).

**Authentication:** stream token in the `Authorization` header (see **Authentication** in the API Overview).

## Request body

- object
  - `sender` string — Top-level sender applied to every message (**batch mode**). An alphanumeric sender ID or a phone number. Omit when each message carries its own `sender`.
  - `messages` object[], required — The messages to send. Up to 250 objects per request.
    - `internal_id` string — Your identifier for the message, unique within the request. Echoed back in responses, delivery webhooks, and per-message errors.
    - `sender` string — Per-message sender (**mixed mode**). Required on every message when no top-level `sender` is set; omit it in batch mode.
    - `recipient_phone` string — Recipient phone number in international format, digits only.
    - `message_content` string, required — The text body of the SMS message.

## Response `200`

The batch was accepted for delivery.

- object
  - `status` boolean — `true` when the batch was accepted. Individual messages may still carry an `error`.
  - `task_id` string — Identifier for the accepted batch (processed asynchronously).
  - `messages` object[] — One entry per submitted message, in request order.
    - `internal_id` string — The `internal_id` you supplied, echoed back.
    - `message_uuid` string — Platform-assigned unique identifier for the message.
    - `conversation_uuid` string — The conversation this message belongs to.
    - `error` string — Present only when this message failed: the hex error code (e.g. `0x31`). See Error handling in the Overview.
    - `details` string — Human-readable detail for a failed message.

---

[API](https://skmtc.net/commpeak/apis/dialer-api-v2-0-1.md) · [All operations](https://skmtc.net/commpeak/apis/dialer-api-v2-0-1/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/commpeak/dialer-api-v2-0-1/versions/eacecf960bb6/schema)
