---
title: phone.sendText | Doing Work API
description: Text a customer from the shop number, about their job. Give conversation_id to answer a thread, or to (a phone number) to start one. Doing Work adds the sh
url: https://doingwork.work/docs/reference/phone-sendtext/
---

# phone.sendText

Text a customer from the shop number, about their job. Give conversation_id to answer a thread, or to (a phone number) to start one. Doing Work adds the shop name, the opt-out line on the first text, and a "Sent by the shop's assistant" line when an agent sends it. It checks the stop list, consent (or a text from the customer in the last 24 hours), paused threads and quiet hours (8 AM to 9 PM where the customer is). A reply within 30 minutes of the customer's last text sends right away, even outside those hours. Until the shop's texting registration is approved the message goes to the customer's email instead and the result says fallback: email. Set expires_in_minutes for time-sensitive texts so they are dropped rather than sent the next morning. Transactional only, never sales.

|  |  |
|---|---|
| Who | Agents can call this |
| REST | `POST /v1/phone/send-text` |
| MCP tool | `phone_sendText` |
| Writes | yes, send an Idempotency-Key |
| Area | [Shop](https://doingwork.work/docs/reference/#shop) |

## When to use it

Text a customer from the shop number, about their job. Give conversation_id to answer a thread, or to (a phone number) to start one.

## What to tell the owner

Say what you did in plain words and what happens next.

## Input

| Field | Type | Required |
|---|---|---|
| `shop_id` | string (uuid) | yes |
| `conversation_id` | string (uuid) | no |
| `to` | string | no |
| `body` | string | yes |
| `expires_in_minutes` | integer | no |

## Example

```http
POST https://doingwork.work/v1/phone/send-text
content-type: application/json
Idempotency-Key: 3f1c...

{
  "shop_id": "00000000-0000-4000-8000-000000000000",
  "body": "..."
}
```

## Output

JSON. The response shape isn't published yet; read the fields you need and ignore the rest. Errors are `{code, message, status}`.

## Errors

| Code | Status | What to do |
|---|---|---|
| `invalid_input`, `invalid_token`, `rate_limited` |  | Can happen on any call. See [errors](https://doingwork.work/docs/errors/). |
