---
title: "Send Sms Message"
method: POST
path: "/v1/teams/{team_id}/sms/messages"
tags: ["operator"]
---

# Send Sms Message

`POST /v1/teams/{team_id}/sms/messages`

## Request

- Base URL: `https://api.stormy.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.stormy.ai/v1/teams/{team_id}/sms/messages`
- Auth: none declared

Send one outbound SMS through the governed ``sms.message.send`` action.

This is the CLI / voice-delegate send path. It runs the SAME governance the
durable agent's action tool runs — the risk-tiered policy decision plus the
action + effect-receipt spine — never a carrier-direct bypass. A routine send
(``external_message``) is autonomous by default, so it materializes and
delivers inline and returns the canonical message id + delivery status. A
policy that HOLDS the send returns an approval receipt (never a silent
failure); a DENY returns the refusal.

## Path parameters

- `team_id` string, uuid, required

## Headers

- `authorization` string, nullable
- `x-darwin-token` string, nullable
- `x-darwin-run-id` string, nullable

## Request body

- SendSmsRequest
  - `line_id` string, uuid, required
  - `to` string, required
  - `purpose` string, nullable
  - `consent_evidence_id` string, uuid, nullable
  - `owner_access` object, nullable
  - `owner_link_page` string, nullable
  - `quick_open` QuickOpenTarget
    - `scope` 'owner'
    - `page` string, required
  - `body_text` string
  - `body` string, nullable
  - `media_urls` string[], nullable
  - `media_artifact_ids` string[], nullable
  - `idempotency_key` string, nullable
  - `decide_by` string, date-time, nullable

## Response `201`

Successful Response

- object

## Other responses

- `422`: Validation Error

## Changes

> 70 revisions in range; 1 not diffed.

- **2026-09-17** `1a4f0f5cb467`: 1 info
  - added the new optional request property `owner_link_page`
- **2026-09-13** `f23ce2a47515`: 1 info
  - added the new optional request property `owner_access`
- **2026-09-05** `362369ea5c03`: 2 info
  - added the new optional request property `consent_evidence_id`
  - added the new optional request property `purpose`

[Operation history](https://skmtc.dev/stormy/apis/stormy-control-plane/changes/v1/teams/:team_id/sms/messages/post.md)

---

[API](https://skmtc.dev/stormy/apis/stormy-control-plane.md) · [All operations](https://skmtc.dev/stormy/apis/stormy-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/stormy/apis/stormy-control-plane/revisions/4d811ab18158?raw)
