phone.saveVoiceJobType
Add or change a job type the voice agent may book: name (what callers ask for, like AC tune-up), minutes, buffer_minutes (default the shop buffer), max_per_day, person_ids (the workers who may take it; empty means any worker) and deposit_minor. fixed_fee_minor and fixed_fee_label (like 8900 and diagnostic fee) set the one price the agent may say for it when offering times; leave it null and the agent says no price. A job type with a deposit is never booked straight in: the agent takes the time and the office confirms. Owner or office.
| Who | Agents can call this |
| REST | POST /v1/phone/voice-job-types |
| MCP tool | phone_saveVoiceJobType |
| Writes | yes, send an Idempotency-Key |
| Area | Shop |
When to use it
The shop's voice agent can book callers straight onto a worker's calendar, but only when the owner sets booking_mode live with phone.setVoiceAi. It is off by default.
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 |
job_type_id | string (uuid) | no |
name | string | no |
minutes | integer | no |
buffer_minutes | ['integer', 'null'] | no |
deposit_minor | ['integer', 'null'] | no |
max_per_day | ['integer', 'null'] | no |
fixed_fee_minor | ['integer', 'null'] | no |
fixed_fee_label | ['string', 'null'] | no |
person_ids | array | no |
Example
POST https://doingwork.work/v1/phone/voice-job-types
content-type: application/json
Idempotency-Key: 3f1c...
{
"shop_id": "00000000-0000-4000-8000-000000000000"
}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. |