---
title: "Send an SMS"
method: POST
path: "/messages"
tags: ["Messages"]
---

# Send an SMS

`POST /messages`

## Request

- Base URL: `https://api.commpeak.com/portal`
- URL: `https://api.commpeak.com/portal/messages`
- Auth: API key in header `Authorization`

send a single SMS to one recipient

## Request body

- MessageRequest: Single outbound SMS. The gateway rewrites this into the batch envelope the TextPeak Streams `simple_send` upstream expects — see `docs/sections/portal.md`.
  - `recipient_phone` string, required: Recipient number in E.164 (no leading "+").
  - `sender` string, required: Sender ID: an E.164 number (no leading "+") or an alphanumeric sender name.
  - `message_content` string, required: Message text.
  - `internal_id` string, nullable: Caller's own reference for this message; echoed back in the response so a delivery receipt can be correlated.

## Response `200`

Successful Response

- MessageResponse: Acceptance receipt for `POST /portal/messages`. `status: true` means the upstream queued the message — it does not mean it was delivered to the handset.
  - `status` boolean, required: Whether the upstream accepted the send request.
  - `task_id` string, nullable: Upstream batch/task identifier for the accepted send.
  - `messages` SentMessageItem[], nullable: Per-message results.
    - `internal_id` string, nullable: The `internal_id` sent in the request, echoed back.
    - `message_uuid` string, nullable: Upstream identifier for the accepted message.
    - `conversation_uuid` string, nullable: Conversation identifier, when the upstream groups the message into one.

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/commpeak/apis/commpeak-portal-api.md) - [All operations](https://skmtc.dev/commpeak/apis/commpeak-portal-api/llms.txt) - [OpenAPI document](https://skmtc.dev/commpeak/apis/commpeak-portal-api/revisions/df57b0c16367?raw)
