Rent and configure your virtual number using PHP

After searching for a number, rent and configure that number for SMS, Voice or both.

Note:

Before you can get started, you need the following already set up:

Rent and configure your virtual number

Fill in your parameters

  1. Create a file (example: rent-config-number.php) and add the supplied sample code.

    Rent and configure a virtual number

    <?php
    // Requires libcurl
    
    const projectId = "YOUR_projectId";
    const phoneNumber = "YOUR_phoneNumber";
    $curl = curl_init();
    
    $payload = array(
      "smsConfiguration" => array(
        "servicePlanId" => "YOUR_servicePlanId",
        "scheduledProvisioning" => array(
          "status" => "WAITING",
          "errorCodes" => array(
            "INTERNAL_ERROR"
          )
        ),
        "campaignId" => "YOUR_campaignId"
      ),
      "voiceConfiguration" => array(
        "appId" => "YOUR_appId",
        "scheduledProvisioning" => array(
          "status" => "WAITING"
        )
      )
    );
    
    curl_setopt_array($curl, [
      CURLOPT_HTTPHEADER => [
        "Content-Type: application/json"
      ],
      CURLOPT_POSTFIELDS => json_encode($payload),
      CURLOPT_URL => "https://numbers.api.sinch.com/v1/projects/" . projectId . "/availableNumbers/" . phoneNumber . ":rent",
      CURLOPT_RETURNTRANSFER => true,
      CURLOPT_CUSTOMREQUEST => "POST",
    ]);
    
    $response = curl_exec($curl);
    $error = curl_error($curl);
    
    curl_close($curl);
    
    if ($error) {
      echo "cURL Error #:" . $error;
    } else {
      echo $response;
    }
    
    ?>
    
    
ParameterYour value
YOUR_usernameyour client_id or key_id found in the Sinch Customer Dashboard.
YOUR_passwordYour client_secret or key_secret. This is generated upon new key creation in the Customer Dashboard. Generate a new key if you have lost your secret key.
YOUR_servicePlanIdYour SMS service plan IDThis is only required for SMS configuration.
YOUR_10DLC_campaignIdYour 10DLC campaign ID for this campaign. Found on the TCR platform. Remove this parameter entirely for non-10DLC numbers.
YOUR_appIdThe Voice app ID or voice API key. Found in the Customer Dashboard.
YOUR_ProjectIDThe project ID found in the Customer Dashboard.
YOUR_PhoneNumberThe virtual phone number that you previously searched for and would like to rent.
  1. Save the file.

Run the code

Copy
Copied
php rent-config-number.php

Response

You should get a response similar to this one:

Copy
Copied
{
  "phoneNumber": "+12025550134",
  "projectId": "51bc3f40-f266-4ca8-8938-a1ed0ff32b9a",
  "displayName": "string",
  "regionCode": "US",
  "type": "MOBILE",
  "capability": [
    "SMS"
  ],
  "money": {
    "currencyCode": "USD",
    "amount": "2.00"
  },
  "paymentIntervalMonths": 0,
  "nextChargeDate": "2019-08-24T14:15:22Z",
  "expireAt": "2019-08-24T14:15:22Z",
  "smsConfiguration": {
    "servicePlanId": "82b42acf74924bd687ef9fb212f2060c",
    "scheduledProvisioning": {
      "servicePlanId": "82b42acf74924bd687ef9fb212f20611",
      "status": "WAITING",
      "lastUpdatedTime": "2019-08-24T14:15:22Z",
      "campaignId": "string",
      "errorCodes": [
        "INTERNAL_ERROR"
      ]
    },
    "campaignId": "string"
  },
  "voiceConfiguration": {
    "appId": "string",
    "scheduledVoiceProvisioning": {
      "appId": "string",
      "status": "WAITING",
      "lastUpdatedTime": "2019-08-24T14:15:22Z"
    },
    "lastUpdatedTime": "2019-08-24T14:15:22Z"
  }
}

Next steps

Send a message to yourself using the SMS API or the Voice API (after setting each up accordingly) to verify that the configuration was successful.

Additional resources

Was this page helpful?

Rent and configure a virtual number

<?php
// Requires libcurl

const projectId = "YOUR_projectId";
const phoneNumber = "YOUR_phoneNumber";
$curl = curl_init();

$payload = array(
  "smsConfiguration" => array(
    "servicePlanId" => "YOUR_servicePlanId",
    "scheduledProvisioning" => array(
      "status" => "WAITING",
      "errorCodes" => array(
        "INTERNAL_ERROR"
      )
    ),
    "campaignId" => "YOUR_campaignId"
  ),
  "voiceConfiguration" => array(
    "appId" => "YOUR_appId",
    "scheduledProvisioning" => array(
      "status" => "WAITING"
    )
  )
);

curl_setopt_array($curl, [
  CURLOPT_HTTPHEADER => [
    "Content-Type: application/json"
  ],
  CURLOPT_POSTFIELDS => json_encode($payload),
  CURLOPT_URL => "https://numbers.api.sinch.com/v1/projects/" . projectId . "/availableNumbers/" . phoneNumber . ":rent",
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_CUSTOMREQUEST => "POST",
]);

$response = curl_exec($curl);
$error = curl_error($curl);

curl_close($curl);

if ($error) {
  echo "cURL Error #:" . $error;
} else {
  echo $response;
}

?>