Overview

VoIPBIN’s Number API enables you to provision, manage, and configure phone numbers for your communication applications. Numbers serve as the entry points for inbound calls and messages, and can be configured with custom flows for automated handling.

With the Number API you can:

  • Search and provision phone numbers from available inventory

  • Configure call and message handling flows

  • Port existing numbers from other providers

  • Manage number settings and metadata

  • Release numbers when no longer needed

How Numbers Work

Numbers connect external callers to your VoIPBIN applications through configurable flows.

Number Architecture

+-----------------------------------------------------------------------+
|                         Number System                                 |
+-----------------------------------------------------------------------+

External World                    VoIPBIN                    Your Application
     |                               |                              |
     | Inbound call/SMS              |                              |
     | to +15551234567               |                              |
     +------------------------------>|                              |
     |                               |                              |
     |                        +------+------+                       |
     |                        |   Number    |                       |
     |                        | +1555123... |                       |
     |                        +------+------+                       |
     |                               |                              |
     |                   +-----------+-----------+                  |
     |                   |                       |                  |
     |                   v                       v                  |
     |            +------------+          +------------+            |
     |            | call_flow  |          | msg_flow   |            |
     |            +------+-----+          +------+-----+            |
     |                   |                       |                  |
     |                   v                       v                  |
     |            Execute flow            Execute flow              |
     |            (IVR, AI,               (auto-reply,              |
     |             queue, etc.)            forward, etc.)           |
     |                   |                       |                  |
     |                   +--------->+<-----------+                  |
     |                              |                               |
     |                              v                               |
     |                       +-----------+                          |
     |                       |  Webhook  |------------------------->|
     |                       +-----------+                          |

Key Components

  • Number: A phone number provisioned in VoIPBIN

  • Call Flow: Actions to execute when a call arrives

  • Message Flow: Actions to execute when an SMS/MMS arrives

  • Webhook: Notifications sent to your application

Number Lifecycle

Numbers progress through predictable states from provisioning to release.

Number States

Search available numbers
       |
       v
+------------+
| available  | (in VoIPBIN inventory)
+-----+------+
      |
      | POST /numbers (provision)
      v
+------------+
|   active   |<-----------------+
+-----+------+                  |
      |                         |
      | suspend                 | reactivate
      v                         |
+------------+                  |
| suspended  |------------------+
+-----+------+
      |
      | DELETE /numbers/{id}
      v
+------------+
|  released  |
+------------+

State Descriptions

State

What’s happening

available

Number is in inventory, ready to be provisioned

active

Number is provisioned and ready to receive calls/messages

suspended

Number is temporarily disabled

released

Number returned to inventory or carrier

Provisioning Numbers

Provision numbers through a two-step process: search, then provision.

Step 1: Search Available Numbers

$ curl -X GET 'https://api.voipbin.net/v1.0/number_availables?token=<token>&country=US&type=local'

Response:

{
    "result": [
        {
            "number": "+15551234567",
            "country": "US",
            "type": "local",
            "region": "California",
            "city": "San Francisco"
        },
        {
            "number": "+15551234568",
            "country": "US",
            "type": "local",
            "region": "California",
            "city": "Los Angeles"
        }
    ]
}

Step 2: Provision the Number

$ curl -X POST 'https://api.voipbin.net/v1.0/numbers?token=<token>' \
    --header 'Content-Type: application/json' \
    --data '{
        "number": "+15551234567"
    }'

Flow Execution

VoIPBIN’s Number resource allows you to associate multiple flows with a single number for handling different types of communications.

Flow Configuration

+-----------------------------------------------------------------------+
|                    Number Flow Configuration                          |
+-----------------------------------------------------------------------+

Number: +15551234567
+-----------------------------------------------------------------------+
|                                                                       |
|  call_flow_id: "flow-abc-123"                                        |
|  +---------------------------+                                        |
|  | Inbound Call Flow         |                                        |
|  | 1. Play greeting          |                                        |
|  | 2. Collect DTMF           |                                        |
|  | 3. Route to queue         |                                        |
|  +---------------------------+                                        |
|                                                                       |
|  message_flow_id: "flow-xyz-789"                                     |
|  +---------------------------+                                        |
|  | Inbound Message Flow      |                                        |
|  | 1. Parse keywords         |                                        |
|  | 2. Auto-reply             |                                        |
|  | 3. Forward to agent       |                                        |
|  +---------------------------+                                        |
|                                                                       |
+-----------------------------------------------------------------------+
_images/number-flow_execution.png

Configure Flows

$ curl -X PUT 'https://api.voipbin.net/v1.0/numbers/<number-id>?token=<token>' \
    --header 'Content-Type: application/json' \
    --data '{
        "call_flow_id": "flow-abc-123",
        "message_flow_id": "flow-xyz-789"
    }'

Number Types

VoIPBIN supports various number types for different use cases.

Normal vs Virtual Number Routing

Normal numbers are routed through an external provider (Telnyx/Twilio) from the PSTN, while virtual numbers are routed internally from non-PSTN callers (AI calls, WebRTC, SIP clients) without any provider involvement.

Normal Number (e.g. +15551234567)
==================================

  PSTN/Mobile                                                   Your Application
       |                                                                |
       | Outbound call from PSTN                                        |
       | to +15551234567                                                |
       +------------>  Telnyx/Twilio (provider)                         |
                            |                                           |
                            v                                           |
                      +-----------+                                     |
                      | Kamailio  |                                     |
                      +-----+-----+                                     |
                            |                                           |
                            v                                           |
                      +-----------+     +----------+     +-----------+  |
                      | Asterisk  |---->| Number   |---->| Call Flow |--+-->
                      +-----------+     | Lookup   |     | Execution |  |
                                        +----------+     +-----------+  |
                                        type: normal                    |
                                        provider: telnyx                |


  Virtual Number (e.g. +899123456789)
  ====================================

  Non-PSTN Caller                                                Your Application
  (AI, WebRTC, SIP)                                                     |
       |                                                                |
       | Call from non-PSTN caller                                      |
       | to +899123456789                                               |
       +--------------- No Provider needed                              |
                            |                                           |
                            v                                           |
                      +-----------+                                     |
                      | Kamailio  |                                     |
                      +-----+-----+                                     |
                            |                                           |
                            v                                           |
                      +-----------+     +----------+     +-----------+  |
                      | Asterisk  |---->| Number   |---->| Call Flow |--+-->
                      +-----------+     | Lookup   |     | Execution |  |
                                        +----------+     +-----------+  |
                                        type: virtual                   |
                                        provider: none                  |

Comparison

Aspect

Normal Number

Virtual Number

Format

E.164 (e.g. +15551234567)

+899 prefix (+899XXXXXXXXX)

Provider

Telnyx or Twilio

None (internal only)

Inbound routing

PSTN -> Provider -> VoIPBIN

Non-PSTN caller -> VoIPBIN

Flow execution

Same (call_flow/message_flow)

Same (call_flow/message_flow)

Best for

Production, external callers

AI, WebRTC, internal routing

For billing and cost details, see Billing Account.

Virtual Number Tier Limits

Virtual numbers are free to create but subject to tier-based limits. When the limit is reached, further virtual number creation is denied. See Plan Tiers for tier limits and billing details.

Common Scenarios

Scenario 1: Customer Service Hotline

Set up a number for inbound customer calls.

1. Search for toll-free number
   GET /number_availables?country=US&type=toll_free

2. Provision the number
   POST /numbers { "number": "+18005551234" }

3. Create IVR flow
   - Greeting message
   - Menu options (1=Sales, 2=Support, 3=Billing)
   - Route to appropriate queue

4. Assign flow to number
   PUT /numbers/{id} { "call_flow_id": "..." }

Result:
+--------------------------------------------+
| Caller dials 1-800-555-1234               |
| -> Hears: "Welcome to Company X..."        |
| -> Press 1 for Sales                       |
| -> Connected to sales queue                |
+--------------------------------------------+

Scenario 2: SMS Auto-Responder

Configure automatic SMS responses.

1. Provision local number for SMS
   POST /numbers { "number": "+15551234567" }

2. Create message flow
   - Check for keywords (HOURS, HELP, STOP)
   - Send appropriate auto-reply
   - Forward unknown messages to agent

3. Assign message flow
   PUT /numbers/{id} { "message_flow_id": "..." }

Result:
+--------------------------------------------+
| Customer texts "HOURS"                     |
| -> Auto-reply: "We're open Mon-Fri 9-5"    |
+--------------------------------------------+

Scenario 3: Virtual Number for Testing

Create a virtual number for development and testing without purchasing from a provider.

1. Search for available virtual numbers
   GET /available_numbers?type=virtual&page_size=5

2. Provision the virtual number
   POST /numbers { "number": "+899100000001" }

3. Assign a call flow for testing
   PUT /numbers/{id} { "call_flow_id": "..." }

Result:
+--------------------------------------------+
| Virtual number +899100000001 is active    |
| -> No provider charges                     |
| -> Ready for development/testing           |
+--------------------------------------------+

Scenario 4: Multi-Purpose Number

Use one number for both calls and messages.

Number: +15551234567
+--------------------------------------------+
| call_flow_id: IVR with queue routing       |
| message_flow_id: SMS keyword handler       |
+--------------------------------------------+

Inbound call -> Execute call flow
Inbound SMS  -> Execute message flow

Best Practices

1. Number Selection

  • Choose local numbers for regional presence

  • Use toll-free for national customer service

  • Consider number memorability for marketing

2. Flow Configuration

  • Always configure both call and message flows

  • Test flows before going live

  • Use variables to personalize responses

3. Number Management

  • Document what each number is used for

  • Set up monitoring for call/message volumes

  • Review and update flows regularly

4. Compliance

  • Follow local regulations for number usage

  • Include opt-out options for SMS

  • Maintain records of number provisioning

Troubleshooting

Provisioning Issues

Symptom

Solution

Number not available

Try different region or type; number may have been provisioned by another customer

Provisioning failed

Check account balance; verify number format; contact support if issue persists

Call/Message Issues

Symptom

Solution

Calls not connecting

Check flow is assigned; verify flow is valid; test flow in isolation

Messages not received

Verify message_flow_id is set; check carrier routing; review webhook logs

Wrong flow executing

Verify correct flow ID is assigned to number; check for flow execution errors