Download OpenAPI specification:Download
You can create orders, check portability, and more. When you port in phone numbers to Sinch you need to make sure the numbers are portable, you can use the portability check to make sure the numbers are portable before creating an order. If a number is not portable the whole order will fail. When porting a number to Sinch you can either use the dashboard or the API, the API is recommended for larger orders and for automation.
Note: For port orders of over 500 numbers, please contact the support team.
The recommended way to port numbers to Sinch is to schedule the port, this means that you create an order and specify a desired port date and time, If you have more advanced needs like on-demand activation, you can read more about that in the advanced porting section.
In general you work with porting orders, a porting order is the resource that keeps the number(s) status and progress in one place.
Before creating port order you should check the portability of the numbers you want to port in, if a number is not portable the order will fail.
POST /portabilityChecks
{
"phoneNumbers": ["+12345678901"]
}
If the number is portable you can create an order like this:
POST v1/projects/{projectId}/orders/portIns
{
"desiredPortSchedule": {
"desiredPortDate": "2024-09-25",
},
"phoneNumbers": [
{
"phoneNumber": "+12345678901",
"voiceConfiguration": {
"type": "EST",
"trunkId": "123456"
},
"portOutInfo": {
"existingPortOutPin": "1234"
},
"endUser": {
"name": "John Doe",
"streetName": "Main St",
"streetNum": "123",
"city": "Anytown",
"state": "NY",
"zipCode": "12345"
},
}
]
}
```
#### Lifetime of a port order
If everything is correct, the order run thru is life cycle and keep you updated on changes but hopefully nothing will change and the number will be ported in on the desired port date.
If more information is needed from you, it will be communicated to you via the order notes and error statuses on the individual numbers. And you reply with a note or update your order with required information.
It's not uncommon for a port order to be a few days or weeks in the making, so don't worry if you don't receive an update right away.
### Port-In phone numbers
When you port in phone numbers to Sinch you need to make sure the numbers are portable, you can use the portability check to make sure the numbers are portable before creating an order.
a phone port item
phoneNumber required | string <e164> | ||||||||||||||||||||||||||||||||||||||
required | object (EndUser) if specified will override the endUser for the order | ||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||
required | object (PortOutItem) if specified will override the endUser for the order | ||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||
status | string Default: "PENDING"
| ||||||||||||||||||||||||||||||||||||||
exclusionReason | string Default: "" If the phone number is excluded or rejected, the status here would reflect as such. In this case, there would be exclusion reason along with date of exclusion. | ||||||||||||||||||||||||||||||||||||||
exclusionTime | string <date-time> If the phone number is excluded or rejected, the status here would reflect as such. In this case, there would be exclusion reason along with date of exclusion. | ||||||||||||||||||||||||||||||||||||||
countryCode | string The country code of the number ISD code US, SE etc. At the moment only north american numbers are supported | ||||||||||||||||||||||||||||||||||||||
activateTime | string the time the number was activated UTC timezone | ||||||||||||||||||||||||||||||||||||||
activateUser | string The user that activated the number | ||||||||||||||||||||||||||||||||||||||
RTC (object) or EST (object) or FAX (object) (VoiceConfiguration) | |||||||||||||||||||||||||||||||||||||||
One of: if specified will override the voice configuration for the order
| |||||||||||||||||||||||||||||||||||||||
object (SmsConfiguration) if specified will override the sms configuration for the order | |||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||
object (Feature) | |||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||
newPortOutPin | string | ||||||||||||||||||||||||||||||||||||||
rejectReason | string The reason the number was rejected | ||||||||||||||||||||||||||||||||||||||
Array of objects | |||||||||||||||||||||||||||||||||||||||
Array
| |||||||||||||||||||||||||||||||||||||||
phoneNumberGroup | string | ||||||||||||||||||||||||||||||||||||||
focDate | string <date-time> Once the phone number has a firm order confirmation date, it will be returned as part of the phone number details. |
{- "phoneNumber": "+12345678901",
- "status": "PENDING",
- "exclusionReason": "",
- "exclusionTime": "2019-08-24T14:15:22Z",
- "countryCode": "US",
- "activateTime": "14:00",
- "activateUser": "string",
- "voiceConfiguration": {
- "type": "RTC",
- "appId": "6afd2da3-1692-4443-834c-8a2f386ec284"
}, - "smsConfiguration": {
- "smsAppId": "string"
}, - "endUser": {
- "name": "Joe Doe",
- "streetNum": 123,
- "streetName": "Main St",
- "streetPreDir": "N",
- "streetType": "Court",
- "streetPostDir": "SW",
- "locationType1": "Suite",
- "locationValue1": 2134,
- "locationType2": "",
- "locationValue2": "",
- "locationType3": "",
- "locationValue3": "",
- "city": "Anytown",
- "state": "CA",
- "zipCode": "12345",
- "typeOfService": "B"
}, - "portOutInfo": {
- "existingPortOutPin": "string",
- "accountNum": "string",
- "accountPhoneNumber": "string",
- "authorizingName": "string",
- "authorizingDate": "string"
}, - "features": {
- "e911": {
- "name": "string",
- "streetNum": "string",
- "streetInfo": "string",
- "location": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "postalCodePlusFour": "string",
- "enhStreetNum": "string",
- "enhStreetInfo": "string",
- "enhLocation": "string",
- "enhCity": "string",
- "enhState": "string",
- "enhPostalCode": "string",
- "enhPostalCodePlusFour": "string"
}
}, - "newPortOutPin": "string",
- "rejectReason": "string",
- "excludedFeatures": [
- {
- "featureName": "string",
- "exclusionReason": "string"
}
], - "phoneNumberGroup": "GW Verizon Grp1",
- "focDate": "2019-08-24T14:15:22Z"
}
Use this before creating a order to make sure all numbers are available for port in to Sinch. Please not that if you try to port a number that is not portable the order will fail.
{ }
{- "phoneNumbers": [
- {
- "phoneNumber": "+12345678901",
- "portable": true,
- "carrier": "T-Mobile",
- "reason": "string"
}
]
}
Create an order to port phone numbers from another carrier into Sinch. Refer to the Port-In Status section for more information on port-in order updates. Please note that order will fail if you try to port numbers that are not portable, so you should always use the portability check before creating an order.
Note: For port orders of over 500 numbers, please contact the support team.
Note: In order to send SMS and MMS messages in the US using 10DLC phone numbers, all messages must be sent via an approved campaign. Your campaigns are managed under US 10DLC Campaigns in the SMS section. A number can be associated to an approved campaign after the port completes.
Order Port-In phone numbers
Successful operation
required | object (DesiredPortDateTime) The date and time you want the numbers to be ported in. If you set a System Default Time: 09:00:00 US/Eastern | ||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||
id | number The unique identifier for the order | ||||||||||||||||||||||||||||||||||||||||||||||||
status | string (OrderStatus)
| ||||||||||||||||||||||||||||||||||||||||||||||||
customerOrderReference | string Default: "" Your reference you specified when creating the order | ||||||||||||||||||||||||||||||||||||||||||||||||
onDemandActivation | boolean Default: false If you use onDemand activation you will need to make sure the numbers are both confirmed and released for activation, if you don't use onDemand the numbers will be activated on the desiredPortDate is the recommended way.
If true the numbers will be activated as when you call | ||||||||||||||||||||||||||||||||||||||||||||||||
Array of objects (Phone numbers) The numbers for the order in e164 format | |||||||||||||||||||||||||||||||||||||||||||||||||
Array
| |||||||||||||||||||||||||||||||||||||||||||||||||
Array of objects (OrderNote) Notes if any on the order, you will get notes if there is any problems with the order and you send notes as reply to those problems | |||||||||||||||||||||||||||||||||||||||||||||||||
Array of objects (OrderDocumentBase) Documents if any on the order, you will get documents if there is any problems with the order and you send documents as reply to those problems | |||||||||||||||||||||||||||||||||||||||||||||||||
createdDate | string <date-time> When the order was created | ||||||||||||||||||||||||||||||||||||||||||||||||
resellerName | string Default: "" This is requirement for canadian numbers only, we need to figure out what we expect here and where the customer can find this info |
{- "desiredPortSchedule": {
- "desiredPortDate": "2025-01-31",
- "desiredPortTime": "10:00:00",
- "desiredPortTimeZone": "US/Eastern"
}, - "phoneNumbers": [
- {
- "phoneNumber": "+12345678901",
- "voiceConfiguration": {
- "type": "EST",
- "trunkId": "123456"
}, - "portOutInfo": {
- "existingPortOutPin": "1234"
}, - "endUser": {
- "name": "John Doe",
- "streetName": "Main St",
- "streetNum": "123",
- "city": "Anytown",
- "state": "NY",
- "zipCode": "12345"
}
}
]
}
{- "id": 890192331,
- "status": "PENDING",
- "customerOrderReference": "123456",
- "onDemandActivation": false,
- "desiredPortSchedule": {
- "desiredPortDate": "2025-01-31",
- "desiredPortTime": "09:00:00",
- "desiredPortTimeZone": "US/Eastern"
}, - "phoneNumbers": [
- {
- "phoneNumber": "+12345678901",
- "status": "PENDING",
- "exclusionReason": "",
- "exclusionTime": "2019-08-24T14:15:22Z",
- "countryCode": "US",
- "activateTime": "14:00",
- "activateUser": "string",
- "voiceConfiguration": {
- "type": "RTC",
- "appId": "6afd2da3-1692-4443-834c-8a2f386ec284"
}, - "smsConfiguration": {
- "smsAppId": "string"
}, - "endUser": {
- "name": "Joe Doe",
- "streetNum": 123,
- "streetName": "Main St",
- "streetPreDir": "N",
- "streetType": "Court",
- "streetPostDir": "SW",
- "locationType1": "Suite",
- "locationValue1": 2134,
- "locationType2": "",
- "locationValue2": "",
- "locationType3": "",
- "locationValue3": "",
- "city": "Anytown",
- "state": "CA",
- "zipCode": "12345",
- "typeOfService": "B"
}, - "portOutInfo": {
- "existingPortOutPin": "string",
- "accountNum": "string",
- "accountPhoneNumber": "string",
- "authorizingName": "string",
- "authorizingDate": "string"
}, - "features": {
- "e911": {
- "name": "string",
- "streetNum": "string",
- "streetInfo": "string",
- "location": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "postalCodePlusFour": "string",
- "enhStreetNum": "string",
- "enhStreetInfo": "string",
- "enhLocation": "string",
- "enhCity": "string",
- "enhState": "string",
- "enhPostalCode": "string",
- "enhPostalCodePlusFour": "string"
}
}, - "newPortOutPin": "string",
- "rejectReason": "string",
- "excludedFeatures": [
- {
- "featureName": "string",
- "exclusionReason": "string"
}
], - "phoneNumberGroup": "GW Verizon Grp1",
- "focDate": "2019-08-24T14:15:22Z"
}
], - "notes": [
- {
- "note": "string",
- "createdTime": "string",
- "createdBy": "string"
}
], - "documents": [
- {
- "id": 0,
- "documentName": "string",
- "description": "string"
}
], - "createdDate": "2019-08-24T14:15:22Z",
- "resellerName": ""
}
Retrieve a list of port-in based on the search parameters, you can also specify view here to get less detail
orderId | number Search by the ID of the order. | ||||||||||||||
orderStatus | string (OrderStatus) Search by the status of the order.
| ||||||||||||||
customerOrderReference | string The reference you specified when creating the order. | ||||||||||||||
createdDateStart | string Search by the created date. This query sets the start date of the search period. Date Format: yyyy-mm-dd. | ||||||||||||||
createdDateEnd | string Search by the created date. This query sets the end date of the search period. Date Format: yyyy-mm-dd. | ||||||||||||||
phoneNumber | string Search by a phone number. | ||||||||||||||
focStartDate | string <date-time> Search by the firm order confirmation. This query sets the start date of the search period. Date format: yyyy-mm-dd. | ||||||||||||||
focEndDate | string <date-time> Search by the firm order confirmation. This query sets the end date of the search period. Date format: yyyy-mm-dd. | ||||||||||||||
pageSize | integer [ 1 .. 1000 ] The maximum number of items to return per request. The default is 100 and the maximum is 1000. If you need to export larger amounts and pagination is not suitable for you can use the Export function in the dashboard. | ||||||||||||||
page | string The page you want to retrieve returned from a previous List request, if any |
Successful operation
Array of objects (OrderListItem) | |||||||||||||||||||||||||||||||||
Array
| |||||||||||||||||||||||||||||||||
page | integer Current page | ||||||||||||||||||||||||||||||||
totalPages | integer Total number of pages. | ||||||||||||||||||||||||||||||||
pageSize | integer Number of items per page. | ||||||||||||||||||||||||||||||||
totalItems | integer <int32> Total size of the result. |
{- "orders": [
- {
- "id": 890192331,
- "status": "PENDING",
- "customerOrderReference": "123456",
- "createdDate": "2019-08-24T14:15:22Z",
- "phoneNumberQuantity": 0,
- "focQuantity": 0,
- "activatedQuantity": 0,
- "rejectedQuantity": 0,
- "excludedQuantity": 0
}
], - "page": 0,
- "totalPages": 0,
- "pageSize": 0,
- "totalItems": 0
}
Get details about an existing order along with order notes and process notes (for Port-In orders). For realtime updates on the order status, please refer to the Webhooks section. wich is the recommended way to get updates on the order status.
Successful operation
required | object (DesiredPortDateTime) The date and time you want the numbers to be ported in. If you set a System Default Time: 09:00:00 US/Eastern | ||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||
id | number The unique identifier for the order | ||||||||||||||||||||||||||||||||||||||||||||||||
status | string (OrderStatus)
| ||||||||||||||||||||||||||||||||||||||||||||||||
customerOrderReference | string Default: "" Your reference you specified when creating the order | ||||||||||||||||||||||||||||||||||||||||||||||||
onDemandActivation | boolean Default: false If you use onDemand activation you will need to make sure the numbers are both confirmed and released for activation, if you don't use onDemand the numbers will be activated on the desiredPortDate is the recommended way.
If true the numbers will be activated as when you call | ||||||||||||||||||||||||||||||||||||||||||||||||
Array of objects (Phone numbers) The numbers for the order in e164 format | |||||||||||||||||||||||||||||||||||||||||||||||||
Array
| |||||||||||||||||||||||||||||||||||||||||||||||||
Array of objects (OrderNote) Notes if any on the order, you will get notes if there is any problems with the order and you send notes as reply to those problems | |||||||||||||||||||||||||||||||||||||||||||||||||
Array of objects (OrderDocumentBase) Documents if any on the order, you will get documents if there is any problems with the order and you send documents as reply to those problems | |||||||||||||||||||||||||||||||||||||||||||||||||
createdDate | string <date-time> When the order was created | ||||||||||||||||||||||||||||||||||||||||||||||||
resellerName | string Default: "" This is requirement for canadian numbers only, we need to figure out what we expect here and where the customer can find this info |
{- "id": 890192331,
- "status": "PENDING",
- "customerOrderReference": "123456",
- "onDemandActivation": false,
- "desiredPortSchedule": {
- "desiredPortDate": "2025-01-31",
- "desiredPortTime": "09:00:00",
- "desiredPortTimeZone": "US/Eastern"
}, - "phoneNumbers": [
- {
- "phoneNumber": "+12345678901",
- "status": "PENDING",
- "exclusionReason": "",
- "exclusionTime": "2019-08-24T14:15:22Z",
- "countryCode": "US",
- "activateTime": "14:00",
- "activateUser": "string",
- "voiceConfiguration": {
- "type": "RTC",
- "appId": "6afd2da3-1692-4443-834c-8a2f386ec284"
}, - "smsConfiguration": {
- "smsAppId": "string"
}, - "endUser": {
- "name": "Joe Doe",
- "streetNum": 123,
- "streetName": "Main St",
- "streetPreDir": "N",
- "streetType": "Court",
- "streetPostDir": "SW",
- "locationType1": "Suite",
- "locationValue1": 2134,
- "locationType2": "",
- "locationValue2": "",
- "locationType3": "",
- "locationValue3": "",
- "city": "Anytown",
- "state": "CA",
- "zipCode": "12345",
- "typeOfService": "B"
}, - "portOutInfo": {
- "existingPortOutPin": "string",
- "accountNum": "string",
- "accountPhoneNumber": "string",
- "authorizingName": "string",
- "authorizingDate": "string"
}, - "features": {
- "e911": {
- "name": "string",
- "streetNum": "string",
- "streetInfo": "string",
- "location": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "postalCodePlusFour": "string",
- "enhStreetNum": "string",
- "enhStreetInfo": "string",
- "enhLocation": "string",
- "enhCity": "string",
- "enhState": "string",
- "enhPostalCode": "string",
- "enhPostalCodePlusFour": "string"
}
}, - "newPortOutPin": "string",
- "rejectReason": "string",
- "excludedFeatures": [
- {
- "featureName": "string",
- "exclusionReason": "string"
}
], - "phoneNumberGroup": "GW Verizon Grp1",
- "focDate": "2019-08-24T14:15:22Z"
}
], - "notes": [
- {
- "note": "string",
- "createdTime": "string",
- "createdBy": "string"
}
], - "documents": [
- {
- "id": 0,
- "documentName": "string",
- "description": "string"
}
], - "createdDate": "2019-08-24T14:15:22Z",
- "resellerName": ""
}
This operation allows you to update information on a Pending order. Please note that you need to send the full object, its not a patch
Update Pending Order
required | object (DesiredPortDateTime) The date and time you want the numbers to be ported in. If you set a System Default Time: 09:00:00 US/Eastern | ||||||||||||||||
| |||||||||||||||||
customerOrderReference | string Default: "" Your reference you specified when creating the order | ||||||||||||||||
onDemandActivation | boolean Default: false If you use onDemand activation you will need to make sure the numbers are both confirmed and released for activation, if you don't use onDemand the numbers will be activated on the desiredPortDate is the recommended way.
If true the numbers will be activated as when you call | ||||||||||||||||
Array of objects (Phone numbers) The numbers for the order in e164 format | |||||||||||||||||
Array
| |||||||||||||||||
resellerName | string Default: "" This is requirement for canadian numbers only, we need to figure out what we expect here and where the customer can find this info |
Successful operation
required | object (DesiredPortDateTime) The date and time you want the numbers to be ported in. If you set a System Default Time: 09:00:00 US/Eastern | ||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||
id | number The unique identifier for the order | ||||||||||||||||||||||||||||||||||||||||||||||||
status | string (OrderStatus)
| ||||||||||||||||||||||||||||||||||||||||||||||||
customerOrderReference | string Default: "" Your reference you specified when creating the order | ||||||||||||||||||||||||||||||||||||||||||||||||
onDemandActivation | boolean Default: false If you use onDemand activation you will need to make sure the numbers are both confirmed and released for activation, if you don't use onDemand the numbers will be activated on the desiredPortDate is the recommended way.
If true the numbers will be activated as when you call | ||||||||||||||||||||||||||||||||||||||||||||||||
Array of objects (Phone numbers) The numbers for the order in e164 format | |||||||||||||||||||||||||||||||||||||||||||||||||
Array
| |||||||||||||||||||||||||||||||||||||||||||||||||
Array of objects (OrderNote) Notes if any on the order, you will get notes if there is any problems with the order and you send notes as reply to those problems | |||||||||||||||||||||||||||||||||||||||||||||||||
Array of objects (OrderDocumentBase) Documents if any on the order, you will get documents if there is any problems with the order and you send documents as reply to those problems | |||||||||||||||||||||||||||||||||||||||||||||||||
createdDate | string <date-time> When the order was created | ||||||||||||||||||||||||||||||||||||||||||||||||
resellerName | string Default: "" This is requirement for canadian numbers only, we need to figure out what we expect here and where the customer can find this info |
{- "desiredPortSchedule": {
- "desiredPortDate": "2025-01-31"
}
}
{- "id": 890192331,
- "status": "PENDING",
- "customerOrderReference": "123456",
- "onDemandActivation": false,
- "desiredPortSchedule": {
- "desiredPortDate": "2025-01-31",
- "desiredPortTime": "09:00:00",
- "desiredPortTimeZone": "US/Eastern"
}, - "phoneNumbers": [
- {
- "phoneNumber": "+12345678901",
- "status": "PENDING",
- "exclusionReason": "",
- "exclusionTime": "2019-08-24T14:15:22Z",
- "countryCode": "US",
- "activateTime": "14:00",
- "activateUser": "string",
- "voiceConfiguration": {
- "type": "RTC",
- "appId": "6afd2da3-1692-4443-834c-8a2f386ec284"
}, - "smsConfiguration": {
- "smsAppId": "string"
}, - "endUser": {
- "name": "Joe Doe",
- "streetNum": 123,
- "streetName": "Main St",
- "streetPreDir": "N",
- "streetType": "Court",
- "streetPostDir": "SW",
- "locationType1": "Suite",
- "locationValue1": 2134,
- "locationType2": "",
- "locationValue2": "",
- "locationType3": "",
- "locationValue3": "",
- "city": "Anytown",
- "state": "CA",
- "zipCode": "12345",
- "typeOfService": "B"
}, - "portOutInfo": {
- "existingPortOutPin": "string",
- "accountNum": "string",
- "accountPhoneNumber": "string",
- "authorizingName": "string",
- "authorizingDate": "string"
}, - "features": {
- "e911": {
- "name": "string",
- "streetNum": "string",
- "streetInfo": "string",
- "location": "string",
- "city": "string",
- "state": "string",
- "postalCode": "string",
- "postalCodePlusFour": "string",
- "enhStreetNum": "string",
- "enhStreetInfo": "string",
- "enhLocation": "string",
- "enhCity": "string",
- "enhState": "string",
- "enhPostalCode": "string",
- "enhPostalCodePlusFour": "string"
}
}, - "newPortOutPin": "string",
- "rejectReason": "string",
- "excludedFeatures": [
- {
- "featureName": "string",
- "exclusionReason": "string"
}
], - "phoneNumberGroup": "GW Verizon Grp1",
- "focDate": "2019-08-24T14:15:22Z"
}
], - "notes": [
- {
- "note": "string",
- "createdTime": "string",
- "createdBy": "string"
}
], - "documents": [
- {
- "id": 0,
- "documentName": "string",
- "description": "string"
}
], - "createdDate": "2019-08-24T14:15:22Z",
- "resellerName": ""
}
This operation allows you to add a document to an existing order.
{ }
{- "id": 0,
- "documentName": "string",
- "description": "string"
}
This operation allows you to retrieve specific document contents attached to an existing order.
{- "documentId": 0,
- "id": 0,
- "documentName": "string",
- "description": "string",
- "fileContent": "string",
- "contentType": "string"
}