Still can't find an answer? Open a ticket


The Voxbone WebRTC SDK is great to build any application that helps users interact from within their browsers. It enables the development of applications like click-to-call buttons that can be implemented on any web page or app and initiate calls to any of Voxbone's DIDs. Virtual Call centers or conference bridges are great examples of what can be create using Voxbone's WebRTC SDK. View some examples in the sample applications gallery.
Authentication issues (Error code 401) can happen for several reasons:
  • Your username contains special characters which are not 'escaped' at auhtentication. Your WebRTC username can be changed without affecting your Voxbone account username if this is the case.
  • Your call is launched at the same time authentication takes place (if you launch calls automatically as the browser renders the page. The solution for this is to delay your call for authentication to take place first.
  • Your server clock is off. This can be fixed by downloading the NTP package at http://www.ntp.org and installing it on your machine.
  • Your XML is invalid. If you are using the Java servlet and entering your password within web.xml, it might need to be escaped if it contains the following characters: '<, ", ', \, &, >'.
    Here is a link to how to escape special characters and replace them with HTML entities.
  • You can change your secret key (within the WebRTC tab) here
The method to set X-Voxbone-Context header is simply a variable called 'context' in
<script src="http://webrtc.voxbone.com/js/voxbone-0.0.1.js" type="text/javascript"/>
The context variable can be set using the following:

var valueString1 = "I am an object value"
var valueString2 = "Me too!"

var object = {
               'value1': valueString1,
               'value2': valueString2

voxbone.WebRTC.context = object;
This value will then get pushed to SIP INVITE headers (X-Voxbone-Context) for which your service has to retrieve. Here's what it looks like:

var headers = {
  'X-Voxbone-Pop': 'value',
  'X-Voxbone-Context': 'value'
To make it easier to process it on your side afterwards, we recommend to use json data format for the value set to context.
Your WebRTC calls can pass through our SuperPOP servers in Hong Kong, Belgium, Los Angeles (USA). You can set the preferedPOP variable to use a particular POP by setting it with one of the server codes:
  • Hong Kong: 'CN'
  • Los Angeles, USA: 'LA'
  • Belgium: 'BE'
Or you can leave its default null value which will issue ping determing the most optimal POP for the user.

//Set the string variable to CN, BE, or LA
voxbone.WebRTC.preferedPop = 'BE';
You can set your tones to be sent through DTMF:

var tone = '#'
There are 5 protection levels:
  1. A session requires a to get a token from our authentication webservice, requiring a strong username/password
  2. The token is valid for no more than 5 minutes.
  3. Calls to numbers for which WebRTC is not activated are rejected.
  4. There's a rate limiting of a max. of 8 req/s per source IP.
  5. To 'stop' an attack, WebRTC can be disabled (temporarily) with a single click
The SIP RFC only restricts the size of the entire SIP message. There's no restrictions on individual headers. At Voxbone, if the From header is larger than 255 characters, it will be truncated in the CDRs. Note that the X-Voxbone-Context header can also be used to pass along context information (any type of content). This X-Voxbone-Context header however doesn't go into the CDRs.
The javascript library is 0.5Mb and the API is 11Kb.
8080 is used for websocket, 443 for secure websocket. This will be transparent for you. Our webservice will give you a valid websockets, which can be used to start a session.

Click2Vox Widget Generator

click2vox is a simple to use interface that lets you experiment with Voxbone’s WebRTC to SIP service. The service creates a button that allows anyone with a WebRTC browser to call a SIP address you define. The widget generator allows you to try this button in real time or lets you cut and paste code that can be inserted into your own website to place the button there. Click2Vox is built on top of Voxbone's WebRTC API service that launched in 2014.
Web based calling allows for seamless customer interaction and increased engagement. Rather than asking your customers to look away from your website, find their phone, and then dial a 9 to 15 digit number, web calling allows them just click to connect immediately. We include advanced audio codecs that generally provide superior voice quality to PSTN dialing. In addition, our features allow you to automatically pass contextual information about the customer or the page they are looking at to streamline customer interactions.
No. The Cick2Vox Beta portal is completely independent of your existing Voxbone account so you can feel free to experiment without worrying about affecting your existing configuration.
As part of the click2vox Beta we are giving you a the ability to call any SIP address. To prevent abuse we require a strict password. Remember, this is completely independent of your existing Voxbone account.
es, WebRTC is enabled on all Voxbone accounts and you will see a version of Click2Vox in your DID configuration to create a widget. Please see our How To - Set up WebRTC on Voxbone Portal guide for details.
Yes, feel free to share your account information with others inside your organization. However, remember we only allow one SIP URI to be assigned per account. We recommend you request an additional account for the colleague so that they can create their own widget.
Definitely! Please just contact us with the email addresses you would like to add and we will get you setup.
click2vox supports the current and Beta versions of Chrome and Firefox on Linux, Windows, OSX, and Android.Safari and Internet Explorer do not currently support WebRTC. Voxbone has support for these browsers via plug-in planned. Support for Microsoft’s Edge browser on Windows 10 is planned. Can't wait - please contact us.
Currently only Android devices support WebRTC for Chrome and Firefox Browsers. Native mobile SDKs that can be used as part of iOS and Android apps are planned.
Yes. You can apply your own CSS styles in addition to or instead of our widget.css sheet. You can point your web designer to this "How-To" guide.
This option will be available with paid accounts. You can also use CSS styling to hide this - please see above.
The current Beta program allows creation of multiple widgets for a single SIP URI. We will add the option to add mutliple SIP URI's on paid accounts. Can't wait - please contact us.
Click2Vox is free for existing Voxbone customers? Interested in becomming a Voxbone customer? please contact us.
Absolutely. Click2Vox is built on top of Voxbone's WebRTC API. You can take our source code and modify it to fit your own needs.
Yes. The widget includes a Context field in the Advanced Configuration area. This information is passed via the `X-Voxbone-Context' header to your SIP infrastructure. Have your developer look at our WebRTC API documentation to do this programmatically.
Yes. The widget includes a Context field in the Advanced Configuration area. This information is passed via the `X-Voxbone-Context' header to your SIP infrastructure. Have your developer look at our WebRTC API documentation to do this programmatically.
It is extremely unlikely your customers would need to make firewall changes to make WebRTC calls. WebRTC uses an advanced NAT traversal mechanism known as Interactive Connectivity Establishment (ICE). Voxbone’s WebRTC service utilizes a TURN server that allows WebRTC connectivity in even strict firewall environments with the need for custom firewall configurations or SBCs. For the SIP traffic coming into your switches, yow will need to allow the appropriate IP addresses and ports. Please see Voxbone's official list of IP Address ranges.
Yes. Voxbone is partnered with a number of web development shops that can help you implement web calling into your website and/or applications. Please contact us for details.
Yes - we built the click2call portal so that it can be reused by Voxbone’s customers. Please contact us for details.
No. WebRTC uses an advanced NAT traversal mechanism known as Interactive Connectivity Establishment (ICE). Voxbone’s WebRTC service utilizes a TURN server that allows WebRTC connectivity in even strict firewall environments with the need for custom firewall configurations or SBCs.
No - Voxbone has muliple layers of controls including:
  • Rate limiting of no more than 8 requests per second per source IP for WebRTC calls
  • Maximum simultaneous calls (channels) per Click2Vox.com button set to 2
  • An Ingress SBC that regulates incoming WebRTC gateway traffic
  • Voxbone's existing egress SBC and security mechanisms used to protect all traffic
  • Authentication timeout period set to 15 minutes
Additional security controls are available for Voxbone customers. Please contact us for details.

Provisioning API

We've recently removed HTTP support for the API in favor of only HTTPS. If you are requesting an HTTP endpoint, you might be getting this error.
Authentication issues (Error code 401) can happen for several reasons:
  • If you think you are having authentication issues, please first try the following curl request with your own credentials to check if your credentials are fine:
  • curl -u username:password -H "Content-type: application/json" -H "Accept: application/json" "https://api.voxbone.com/ws-voxbone/services/rest/inventory/country?countryCodeA3=BEL&pageNumber=0&pageSize=1"
    If you are not seeing information about the request and instead receiving a 401 error, you may be having authentication issues. Below are some reasons:
  • The credentials you are using are wrong. Keep in mind your API credentials may differ from your Voxbone account.
  • You've changed your credentials recently. If you are trying to log in to the Sandbox and have changed your credentials within the last 24 hours, keep it mind we only sync the Sandbox environment every 24 hours. You will have to wait a little before your changes are sync'd.
  • Your account is not enabled for API use. If you did not find a solution with the above points, your account my simply not be enabled for API use. Please contact your account manager regarding this issue.
There are a few of reasons why this might occur:
  • You forgot to checkout the cart. When adding the products to your carts, don't forget to use the GET request /cart/{cartIdentifier}/checkout to properly checkout your cart.
  • You do not have enough funds on your account. make sure that you have enough funds on your account balance with /accountbalance
  • The did group you order has no stock. Please see: "My Order is “pending” what does that mean?"
The ordering process works in a sequence of a few steps:
  1. Create a cart
  2. Add products to the cart
  3. Checkout the cart
At cart checkout, you receive a status letting you know whether your purchase was successful or not - This is where you need to pay attention:
  • SUCCESS: Your products have successfully been purchased and added to your inventory and your cart is discarded.
  • WARNING: Your products have not been purchased nor are they in your inventory. Your cart is not discarded. This is usually due to a low balance on your account.
  • PARTIAL: Your DIDs have been purchased, however, the Voxbone stock was empty for this particular DIDGroup at the time of purchase and it was not directly provisioned. Your DID will eventually appear in your inventory when Voxbone creates a new order for this particular DIDGroup. You can check the status of your order using the ‘status’ field in the list order endpoint (/order).
Below is a safe way for you to check whether your DIDs have been delivered so that you don’t end up buying additional DidGroups:
  • Check the DidGroup has enough stock for the intended purchase.
  • Check your account balance is high enough.
  • If both are fine, proceed to the checkout and note the status of the order and order reference
  • You will be able to check the status of your order using the order reference from checkout in the list order endpoint (/order)
  • Check your inventory to see if your DID was provisioned using the order reference
  • Human readable: a message is available on the portal for each country.
  • Human readable: a /restriction endpoint (Inventory module) returns information about the country's restrictions
  • Computer friendly: Information is available in /didgroup endpoint, and provides 2 things : address type (Geographic vs. National) and whether a proof is required or not (all in the response).
Certain DIDs have special regulation requirements and are therefore blocked. They will be unblocked once you link the right regulation address to the corresponding DID (endpoint: /regulation/address/{regulationAddressId}/link and response: "NUMBERS_LINKED_AND_UNBLOCKED").


Default expiry for all services (outbound, inbound, and Delivery reports) is 48hrs and we will keep retrying every 15 minutes.
Yes, we support UTF8, depending on which charset you send in your UTF8 - that will determine which charset will be used on the carrier leg (please review the following page to check how long your message can be: https://developers.voxbone.com/how-to/fragment-sms/)
For USA and Canada, you can use a VoxSMS-enabled mobile or Geographic DID as a ‘from’. For the rest of the world, only VoxSMS-enabled mobile numbers are supported.