---
title: "Create Phone Number"
method: POST
path: "/developer/phone-numbers"
tags: ["Developer", "Developer - Phone Numbers"]
---

# Create Phone Number

`POST /developer/phone-numbers`

Create a new phone number entry for the current customer.

This endpoint is restricted to developer users only.
Creates a phone number or SIP endpoint entry that can be used for inbound call routing.

- **phone_number**: The phone number (e.g., +15551234567) or SIP endpoint (e.g., 1000)
- **label**: Optional friendly label like "Main Line" or "After Hours"
- **is_active**: Whether the number is active (default: true)

## Request body

- PhoneNumberCreate — Schema for creating a phone number.
  - `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)
  - `call_transport` 'daily_sip' | 'twilio_websocket' — Call transport: 'daily_sip' (legacy) or 'twilio_websocket' (WebSocket Media Streams)
  - `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
  - `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
  - `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 `201`

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)
  - `call_transport` 'daily_sip' | 'twilio_websocket' — Call transport: 'daily_sip' (legacy) or 'twilio_websocket' (WebSocket Media Streams)
  - `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
  - `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
  - `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

---

[API](https://skmtc.dev/openintake/apis/fastapi.md) · [All operations](https://skmtc.dev/openintake/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/openintake/fastapi/revisions/4a81645b59f6/schema)
