---
title: "Update Phone Number"
method: PATCH
path: "/developer/phone-numbers/{phone_number_id}"
tags: ["Developer", "Developer - Phone Numbers"]
---

# Update Phone Number

`PATCH /developer/phone-numbers/{phone_number_id}`

## Request

- Base URL: `https://api.openintake.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openintake.ai/developer/phone-numbers/{phone_number_id}`
- Auth: none declared

Update a phone number entry.

This endpoint is restricted to developer users only.
Updates the label or active status of a phone number.

- **label**: Optional friendly label
- **is_active**: Optional active status

## Path parameters

- `phone_number_id` string, uuid, required

## Request body

- PhoneNumberUpdate: Schema for updating a phone number.
  - `label` string, nullable: Friendly label
  - `is_active` boolean, nullable: Active status
  - `is_test` boolean, nullable: Whether this is a test number
  - `provider` 'twilio' | 'daily' | 'vapi', nullable: Telephony provider
  - `agent_platform` 'pipecat' | 'vapi', nullable: Voice agent platform
  - `inbound_squad_id` string, nullable: Vapi squad ID for inbound assistant-request routing
  - `outbound_squad_id` string, nullable: Vapi squad ID for outbound calls
  - `outbound_squad_id_es` string, nullable: Vapi squad ID for outbound calls to Spanish-language leads (falls back to outbound_squad_id)
  - `business_hours_inbound_squad_id` string, nullable: Vapi squad ID for inbound calls during business hours (used when business_hours_enabled feature flag is on)
  - `after_hours_inbound_squad_id` string, nullable: Vapi squad ID for inbound calls outside business hours (used when business_hours_enabled feature flag is on)
  - `outbound_enabled` boolean, nullable: Whether this number is available for automated outbound dialing
  - `provider_bypass_enabled` boolean, nullable: Route inbound Twilio calls through our own /telephony/inbound-vapi endpoint instead of Vapi's inbound webhook. Required for attended transfer, which needs Twilio call control to stay on our side
  - `is_bounce_back` boolean, nullable: Dedicated bounce-back return line: unanswered transferred calls forwarded back here are matched to their original call and the conversation is injected into the inbound squad
  - `is_staff_transfer` boolean, nullable: Dedicated staff-to-AI transfer line: the PBX AI extension forwards here; the caller is matched to the AI call they were transferred out of, which stays canonical and absorbs this leg
  - `bounce_back_intake_squad_id` string, nullable: Vapi squad ID for bounce-backs whose original call was transferred to intake (Intake Dept / On Call); falls back to inbound_squad_id
  - `vapi_phone_number_id` string, nullable: VAPI phone number resource ID (for outbound API calls)
  - `default_greeting_override` string, nullable: Per-number default greeting; overrides the customer-wide default/business-hours greeting selection for calls to this number
  - `contact_greeting_override` string, nullable: Per-number known-contact greeting template ({first_name}/{last_name}); overrides the customer-wide contact greeting for calls to this number

## Response `200`

Successful Response

- PhoneNumberResponse: Schema for phone number response.
  - `phone_number` string, required: Phone number or SIP endpoint (e.g., +15551234567 or 1000)
  - `label` string, nullable: Friendly label like 'Main Line' or 'After Hours'
  - `is_active` boolean, required: Whether the number is active
  - `is_test` boolean, required: Whether this is a test number (calls won't make real changes)
  - `provider` 'twilio' | 'daily' | 'vapi', required: Telephony provider (twilio, daily, or vapi)
  - `agent_platform` 'pipecat' | 'vapi': Voice agent platform: 'pipecat' or 'vapi'
  - `inbound_squad_id` string, nullable: Vapi squad ID for inbound assistant-request routing
  - `outbound_squad_id` string, nullable: Vapi squad ID for outbound calls
  - `outbound_squad_id_es` string, nullable: Vapi squad ID for outbound calls to Spanish-language leads (falls back to outbound_squad_id)
  - `business_hours_inbound_squad_id` string, nullable: Vapi squad ID for inbound calls during business hours (used when business_hours_enabled feature flag is on)
  - `after_hours_inbound_squad_id` string, nullable: Vapi squad ID for inbound calls outside business hours (used when business_hours_enabled feature flag is on)
  - `outbound_enabled` boolean: Whether this number is available for automated outbound dialing
  - `provider_bypass_enabled` boolean: Route inbound Twilio calls through our own /telephony/inbound-vapi endpoint instead of Vapi's inbound webhook. Required for attended transfer, which needs Twilio call control to stay on our side
  - `is_bounce_back` boolean: Dedicated bounce-back return line: unanswered transferred calls forwarded back here are matched to their original call and the conversation is injected into the inbound squad
  - `is_staff_transfer` boolean: Dedicated staff-to-AI transfer line: the PBX AI extension forwards here; the caller is matched to the AI call they were transferred out of, which stays canonical and absorbs this leg
  - `bounce_back_intake_squad_id` string, nullable: Vapi squad ID for bounce-backs whose original call was transferred to intake (Intake Dept / On Call); falls back to inbound_squad_id
  - `vapi_phone_number_id` string, nullable: VAPI phone number resource ID (for outbound API calls)
  - `default_greeting_override` string, nullable: Per-number default greeting; overrides the customer-wide default/business-hours greeting selection for calls to this number
  - `contact_greeting_override` string, nullable: Per-number known-contact greeting template ({first_name}/{last_name}); overrides the customer-wide contact greeting for calls to this number
  - `phone_number_id` string, uuid, required: Phone number ID
  - `customer_id` string, uuid, required: Customer ID
  - `created_at` string, required: Creation timestamp
  - `type` 'PSTN' | 'SIP', required: Derived phone number type based on format.

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-14** `5d668a9fc9dd`: 2 info
  - added the new optional request property `is_staff_transfer`
  - added the optional property `is_staff_transfer` to the response with the `200` status
- **2026-10-05** `40f22baa60d7`: 2 info
  - added the new optional request property `bounce_back_intake_squad_id`
  - added the optional property `bounce_back_intake_squad_id` to the response with the `200` status
- **2026-10-04** `9b68080e1bb5`: 2 info
  - added the new optional request property `outbound_squad_id_es`
  - added the optional property `outbound_squad_id_es` to the response with the `200` status
- **2026-10-01** `a98bb982d178`: 2 warning, 1 info
  - removed the request property `call_transport`
  - removed the optional property `call_transport` from the response with the `200` status
  - the `agent_platform` response's property default value changed from `pipecat` to `vapi` for the status `200`

[Operation history](https://skmtc.dev/openintake/apis/openintake-api/changes/developer/phone-numbers/:phone_number_id/patch.md)

---

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