Manage Sinch phone numbers: search available numbers, view active numbers, update configuration, and release numbers. See Sinch Numbers API on developers.sinch.com for product documentation.
Interactive by default. These commands prompt for filters before running:
active listasks for region and number type;available searchasks for region, type, capabilities, and a digit pattern. Pass the corresponding filter flags shown in each command's option table below — or add--non-interactive— to skip the prompts and get immediate output, which is what you want in scripts and CI. Foravailable searchthe digit-pattern prompt is part of the search query rather than a post-filter; leave it blank (press Enter) to match any number.
Manage phone numbers currently active in your project.
List all active phone numbers, with optional filters.
sinch numbers active list [options]| Option | Description |
|---|---|
-r, --region <code> | Filter by region code (e.g., US, GB, SE) |
-t, --type <type> | Filter by type: MOBILE, LOCAL, or TOLL_FREE |
-c, --capability <cap...> | Filter by capability: SMS, VOICE |
-p, --pattern <digits> | Filter by digit pattern |
--search-pattern <mode> | Pattern match mode: START, CONTAINS, or END |
-l, --limit <number> | Maximum results to return |
--non-interactive | Skip prompts; list with whatever filters are given |
--json | Output as JSON |
Get details for a specific active number.
sinch numbers active get [phone-number]The number is accepted in E.164 (+12027887772). Numbers copied straight from active list output — which prints the pretty format +1 202-788-7772 — are normalized automatically, so you can paste them directly. This normalization also applies to active update, active release, and available check/rent.
Update configuration for an active number (display name, SMS service plan, voice app, or callback URL).
sinch numbers active update [phone-number] [options]| Option | Description |
|---|---|
-d, --display-name <name> | New display name |
--sms-service-plan <id> | SMS service plan ID (empty string to unlink) |
--voice-app <id> | Voice app ID |
--callback-url <url> | Callback URL for provisioning events |
Release an active number, cancelling your subscription. Requires confirmation.
sinch numbers active release [phone-number] [-f, --force]Search for and rent available phone numbers. This is a group of subcommands:
| Subcommand | Purpose |
|---|---|
search | Search for available numbers to rent |
check <phone-number> | Check whether a specific number is available |
rent <phone-number> | Rent (activate) a specific number |
rent-any | Rent any number matching your criteria (US LOCAL) |
sinch numbers available search [options]| Option | Description |
|---|---|
-r, --region <code> | Region code (e.g., US, GB, SE) |
-t, --type <type> | Number type: MOBILE, LOCAL, or TOLL_FREE |
-c, --capabilities <cap...> | Capabilities: SMS, VOICE |
-p, --pattern <digits> | Digit pattern to match |
--search-pattern <mode> | Pattern match mode: START, CONTAINS, or END |
-s, --size <number> | Maximum results |
--non-interactive | Skip prompts; search with whatever flags are given |
--json | Output as JSON |
sinch numbers available rent [phone-number] [options]| Option | Description |
|---|---|
--sms-service-plan <id> | SMS service plan ID (see "Choosing the service plan, campaign and Voice app") |
--sms-campaign <id> | SMS campaign ID (for US numbers) |
--voice-app <id> | Voice app ID (for RTC) |
--voice-type <type> | Voice config type: RTC, EST, or FAX |
--trunk-id <id> | EST trunk ID (when --voice-type EST) |
--callback-url <url> | Callback URL for provisioning events |
--data-file <path> | KYC registration JSON (see sinch numbers order) |
-f, --force | Skip the confirmation prompt |
--non-interactive | Skip prompts; require configuration as flags |
--json | Output as JSON |
Some numbers show [docs required] in search results. It means the number's region requires supporting documentation (for example proof of address or business identity) before the number can be activated. Whether it applies varies by region, and it is driven by the number's supportingDocumentationRequired field from the Numbers API.
Renting one of these still works, and provisioning may simply pause until the documents are supplied. If the rental is rejected outright, rent automatically switches to the guided KYC ordering flow described under sinch numbers order — you answer the region's questionnaire inline and the order goes for review. Nothing is activated in that case until a Sinch compliance reviewer approves it.
One exception: if the API turns out to have no requirements on file for that region and number type, there is no questionnaire to run, so rent reports the original rental error instead of starting the order flow.
When you rent interactively and choose to configure SMS or RTC voice, the CLI offers a picker for each ID instead of a blank prompt. Every picker has an "Enter ID manually" escape hatch, and falls back to plain entry when the list cannot be fetched or is empty. In --non-interactive mode nothing is fetched; the --sms-service-plan, --sms-campaign and --voice-app flags are used as-is.
| ID | What the picker lists | If the list is empty |
|---|---|---|
| SMS service plan | Service plans already configured on this project's active numbers | Copy the ID from dashboard.sinch.com/sms/api/rest |
| SMS campaign (US only) | 10DLC campaigns in the project that already carry a TCR campaign ID, with their status, from the 10DLC Registration API | Leave blank and attach one once the campaign is approved |
| Voice app (RTC) | Voice apps already configured on this project's active numbers | Copy the app ID from dashboard.sinch.com/voice/apps |
Only the campaign has a real list endpoint. Service plans and Voice apps cannot be listed by any API the CLI's credentials reach, so those two pickers show what the project already uses: the first number needs a dashboard visit, later ones do not. The campaign prompt is skipped for non-US numbers, since 10DLC is a US-only construct.
Order numbers in regions that require regulatory identity documentation (KYC). Most users never invoke these directly — available rent falls back to this flow automatically when a rental is rejected for missing documentation.
An order is a different thing from a rental. Renting activates a number immediately; an order reserves the numbers for between 30 minutes and 48 hours, collects the region's KYC questionnaire and any required attachments, then submits the whole thing for human compliance review. The numbers become active only if that review passes.
A reservation cannot be cancelled. The Numbers API provides no cancel endpoint — an order you no longer want simply holds its numbers until
expireTimepasses. The confirmation prompt shown before the order is created is the last reversible moment in the flow.
Runs the whole flow: look up the region's requirements, choose numbers, reserve them, fill in the questionnaire, upload attachments, submit.
Not every region and number type needs paperwork. When the requirements lookup comes back empty, create says so and points you at sinch numbers available instead of starting the questionnaire — nothing is reserved in that case.
Interactively, and with neither --number nor --quantity given, create searches the region for available numbers and offers them as a checklist. Numbers requiring supporting documentation are tagged [docs required], the same as in sinch numbers available search. Tick as many as you want: one questionnaire covers every number in the order. Selecting nothing exits without reserving anything.
sinch numbers order create [options]| Option | Description |
|---|---|
-r, --region <code> | Region code (e.g. AU, DE, BR) |
-t, --type <type> | Number type: MOBILE, LOCAL, or TOLL_FREE |
-n, --number <e164...> | Specific phone number(s) to order; skips the search |
-q, --quantity <count> | Order any N matching numbers instead of specific ones; skips the search |
--sms-service-plan <id> | SMS service plan ID |
--sms-campaign <id> | SMS campaign ID (US 10DLC) |
--callback-url <url> | Callback URL for order events |
--data-file <path> | JSON file holding the KYC answers (required with --non-interactive) |
-f, --force | Skip confirmation prompts |
--non-interactive | Skip prompts; require --data-file |
--json | Output as JSON |
The questionnaire is not fixed. The CLI fetches it from the API at run time and builds the prompts from it, because each region defines its own fields and those change when regulators change the rules. Expect questions about intended traffic, the end business, and a contact person.
For CI, --data-file takes a JSON array whose entries line up positionally with the sections the API returns (or an object with a data key holding that array). Run the command interactively once to see the section order for your region.
Continue an order that was interrupted, or fix one that failed validation.
sinch numbers order resume [orderId] [options]Omit the ID to pick from orders tracked on this machine. The CLI works out where the order actually is by asking the API — whether it still needs the questionnaire, an attachment, or just submission — rather than trusting anything stored locally.
A validation failure on the questionnaire does not invalidate the order. Correct the answers and resume; the original reservation is still yours, and re-creating the order would only restart the 48-hour clock.
sinch numbers order get <orderId> [options]Shows state, reserved numbers, and time left on the reservation. For a REJECTED or BLOCKED order it also prints the compliance reviewer's feedback, which is the only explanation of why the order failed.
sinch numbers order list [options]Lists orders and refreshes each one's state from the API.
This list is local. The Numbers API has no endpoint for listing orders, so the CLI records the IDs of orders you create on this machine. Orders created elsewhere — the dashboard, another machine, a colleague — will not appear, and you will need the order ID to act on them. Only order identifiers are stored; your KYC answers are never written to disk.
List regions where phone numbers are available.
sinch numbers regions [options]| Option | Description |
|---|---|
-t, --type <type> | Filter by number type |
-c, --capability <cap> | Filter by capability |