---
title: phone.setVoiceAi | Doing Work API
description: Set up the shop's own voice AI agent to answer calls: provider (elevenlabs or grok) and the agent's SIP address. Doing Work answers each call, says it is a
url: https://doingwork.work/docs/reference/phone-setvoiceai/
---

# phone.setVoiceAi

Set up the shop's own voice AI agent to answer calls: provider (elevenlabs or grok) and the agent's SIP address. Doing Work answers each call, says it is an AI assistant and that the call is transcribed, then connects the agent with a token for this call only (SIP header X-DW-Token). The agent's tools are at tools_base. For ElevenLabs, give the post-call webhook secret so call summaries and spoken stops come back. share_job_status false hides job status from callers. Then set the route to voice_ai with phone.setRoute. Owner only.

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

## When to use it

Set up the shop's own voice AI agent to answer calls: provider (elevenlabs or grok) and the agent's SIP address. Doing Work answers each call, says it is an AI assistant and that the call is transcribed, then connects the agent with a token for this call only (SIP header X-DW-Token).

## 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 |
| `provider` | string (one of elevenlabs, grok) | yes |
| `sip_uri` | string | yes |
| `webhook_secret` | string | no |
| `share_job_status` | boolean | no |

## Example

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

{
  "shop_id": "00000000-0000-4000-8000-000000000000",
  "provider": "elevenlabs",
  "sip_uri": "..."
}
```

## 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/). |
