Import a number (SIP)
Bring a number you already own from another provider, connected over SIP. Not charged. The SIP credentials are stored for outbound calling and are never returned.
POST
https://api.centerfy.ai/webhooks/inbound/phone-numbers/import Headers
| Header | Required | Value | Description |
|---|---|---|---|
x-api-key | Yes | your sub-account API key (cfy_…) | Authenticates the request; or use Authorization: Bearer <key>. |
Body parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
phone_number | string | Yes | — | The number in E.164 format, e.g. +14155550123. |
termination_uri | string | Yes | — | Your SIP termination URI; 1–255 characters. |
username | string | Yes | — | SIP username; 1–255 characters. |
password | string | Yes | — | SIP password; 1–255 characters. |
trunk_name | string | No | — | Label for the SIP trunk; max 100 characters. Defaults to Imported-<timestamp>. |
Request body
{
"phone_number": "+14155550142",
"termination_uri": "sip.example.com",
"username": "example-user",
"password": "example-password",
"trunk_name": "Main office line"
}Example
curl -X POST "https://api.centerfy.ai/webhooks/inbound/phone-numbers/import" \
-H "x-api-key: $CENTERFY_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone_number": "+14155550142",
"termination_uri": "sip.example.com",
"username": "example-user",
"password": "example-password",
"trunk_name": "Main office line"
}' import { CenterfyClient } from "@centerfy/sdk";
const centerfy = new CenterfyClient({ apiKey: process.env.CENTERFY_API_KEY! });
const result = await centerfy.phoneProvisioning.import({
"phone_number": "+14155550142",
"termination_uri": "sip.example.com",
"username": "example-user",
"password": "example-password",
"trunk_name": "Main office line"
});
console.log(result); centerfy phoneProvisioning import '{"phone_number":"+14155550142","termination_uri":"sip.example.com","username":"example-user","password":"example-password","trunk_name":"Main office line"}' MCP tool: centerfy_phone_numbers_import (see MCP server)
Response
{
"status": "success",
"imported": true,
"phone_number": {
"id": "8e7d6c5b-4a39-4281-9706-5f4e3d2c1b0a",
"phone_number": "+14155550142",
"purchased": false,
"agent_id": null,
"is_active": true,
"purchased_at": null,
"next_billing_date": null
}
}Errors
400— if phone_number is not E.164 or the import request is invalid.403— with current and max if the sub-account’s phone number limit is reached.409— if the number already exists on the platform.502— if the import failed.
Notes
Returns 201.