curl --request POST \
--url https://api.voxo.co/v2/admin/extensions/voice/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"tenantId": 123,
"name": "<string>",
"number": "<string>",
"emergencyLocationId": 123,
"recordingEmail": "jsmith@example.com"
}
'import requests
url = "https://api.voxo.co/v2/admin/extensions/voice/"
payload = {
"tenantId": 123,
"name": "<string>",
"number": "<string>",
"emergencyLocationId": 123,
"recordingEmail": "jsmith@example.com"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
tenantId: 123,
name: '<string>',
number: '<string>',
emergencyLocationId: 123,
recordingEmail: 'jsmith@example.com'
})
};
fetch('https://api.voxo.co/v2/admin/extensions/voice/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.voxo.co/v2/admin/extensions/voice/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'tenantId' => 123,
'name' => '<string>',
'number' => '<string>',
'emergencyLocationId' => 123,
'recordingEmail' => 'jsmith@example.com'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.voxo.co/v2/admin/extensions/voice/"
payload := strings.NewReader("{\n \"tenantId\": 123,\n \"name\": \"<string>\",\n \"number\": \"<string>\",\n \"emergencyLocationId\": 123,\n \"recordingEmail\": \"jsmith@example.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.voxo.co/v2/admin/extensions/voice/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"tenantId\": 123,\n \"name\": \"<string>\",\n \"number\": \"<string>\",\n \"emergencyLocationId\": 123,\n \"recordingEmail\": \"jsmith@example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.voxo.co/v2/admin/extensions/voice/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"tenantId\": 123,\n \"name\": \"<string>\",\n \"number\": \"<string>\",\n \"emergencyLocationId\": 123,\n \"recordingEmail\": \"jsmith@example.com\"\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"name": "<string>",
"number": "<string>",
"email": "<string>",
"peerName": "<string>",
"dnd": "<string>",
"callerIdNumber": "<string>",
"enableMeet": 123,
"enableTranscription": 123,
"trunk": "<string>",
"trunkHost": "<string>",
"trunkCallerIdSource": "<string>",
"trunkEmergencyCallerIdOverride": "<string>",
"callLimit": 123,
"mailbox": "<string>",
"recording": "<string>",
"dialTimeout": 123,
"outboundDialPrefix": "<string>",
"enableDirectFax": 123,
"recordingEmail": "<string>",
"includeInDialByName": "<string>",
"includeInPhonebook": "<string>",
"callWaiting": "<string>",
"accountNumber": "<string>",
"enableForwarding": "<string>",
"emergencyLocationComment": "<string>",
"tenant": {
"id": 123,
"name": "<string>"
},
"branch": {
"id": 123,
"name": "<string>"
},
"routingProfile": {
"id": 123,
"name": "<string>",
"type": "<string>"
},
"musicOnHold": {
"id": 123,
"name": "<string>"
},
"user": {
"id": 123,
"email": "<string>"
},
"efaxUser": {
"id": 123,
"name": "<string>",
"email": "<string>",
"callerIdNumber": "<string>"
},
"emergencyLocation": {
"id": 123,
"address": "<unknown>"
},
"devices": [],
"noAnswerDestinations": [],
"busyDestinations": [],
"offlineDestinations": [],
"forwardingDestinations": []
}Create Voice Extension
Create a voice extension (with optional device, fax, and user invite)
curl --request POST \
--url https://api.voxo.co/v2/admin/extensions/voice/ \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"tenantId": 123,
"name": "<string>",
"number": "<string>",
"emergencyLocationId": 123,
"recordingEmail": "jsmith@example.com"
}
'import requests
url = "https://api.voxo.co/v2/admin/extensions/voice/"
payload = {
"tenantId": 123,
"name": "<string>",
"number": "<string>",
"emergencyLocationId": 123,
"recordingEmail": "jsmith@example.com"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
tenantId: 123,
name: '<string>',
number: '<string>',
emergencyLocationId: 123,
recordingEmail: 'jsmith@example.com'
})
};
fetch('https://api.voxo.co/v2/admin/extensions/voice/', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.voxo.co/v2/admin/extensions/voice/",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'tenantId' => 123,
'name' => '<string>',
'number' => '<string>',
'emergencyLocationId' => 123,
'recordingEmail' => 'jsmith@example.com'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.voxo.co/v2/admin/extensions/voice/"
payload := strings.NewReader("{\n \"tenantId\": 123,\n \"name\": \"<string>\",\n \"number\": \"<string>\",\n \"emergencyLocationId\": 123,\n \"recordingEmail\": \"jsmith@example.com\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("Authorization", "Bearer <token>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.voxo.co/v2/admin/extensions/voice/")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"tenantId\": 123,\n \"name\": \"<string>\",\n \"number\": \"<string>\",\n \"emergencyLocationId\": 123,\n \"recordingEmail\": \"jsmith@example.com\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.voxo.co/v2/admin/extensions/voice/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"tenantId\": 123,\n \"name\": \"<string>\",\n \"number\": \"<string>\",\n \"emergencyLocationId\": 123,\n \"recordingEmail\": \"jsmith@example.com\"\n}"
response = http.request(request)
puts response.read_body{
"id": 123,
"name": "<string>",
"number": "<string>",
"email": "<string>",
"peerName": "<string>",
"dnd": "<string>",
"callerIdNumber": "<string>",
"enableMeet": 123,
"enableTranscription": 123,
"trunk": "<string>",
"trunkHost": "<string>",
"trunkCallerIdSource": "<string>",
"trunkEmergencyCallerIdOverride": "<string>",
"callLimit": 123,
"mailbox": "<string>",
"recording": "<string>",
"dialTimeout": 123,
"outboundDialPrefix": "<string>",
"enableDirectFax": 123,
"recordingEmail": "<string>",
"includeInDialByName": "<string>",
"includeInPhonebook": "<string>",
"callWaiting": "<string>",
"accountNumber": "<string>",
"enableForwarding": "<string>",
"emergencyLocationComment": "<string>",
"tenant": {
"id": 123,
"name": "<string>"
},
"branch": {
"id": 123,
"name": "<string>"
},
"routingProfile": {
"id": 123,
"name": "<string>",
"type": "<string>"
},
"musicOnHold": {
"id": 123,
"name": "<string>"
},
"user": {
"id": 123,
"email": "<string>"
},
"efaxUser": {
"id": 123,
"name": "<string>",
"email": "<string>",
"callerIdNumber": "<string>"
},
"emergencyLocation": {
"id": 123,
"address": "<unknown>"
},
"devices": [],
"noAnswerDestinations": [],
"busyDestinations": [],
"offlineDestinations": [],
"forwardingDestinations": []
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Body
32 - 10^\d+$yeschange, no, nochange ^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$^(?!\.)(?!.*\.\.)([A-Za-z0-9_'+\-\.]*)[A-Za-z0-9_+-]@([A-Za-z0-9][A-Za-z0-9\-]*\.)+[A-Za-z]{2,}$0 <= x <= 1^[1-9]\d{9}$0 <= x <= 10 <= x <= 10 <= x <= 1^[1-9]\d{9}$0 <= x <= 75Must be a multiple of 5yes, no, 50Show child attributes
Show child attributes
Response
Created voice extension
Extension ID
Extension name
Extension number
Extension email
SIP peer name
Do not disturb state
Outbound caller ID number
Meet enabled (1 = yes, 0 = no)
Transcription enabled (1 = yes, 0 = no)
Trunk state
Trunk host
Trunk caller ID source
Trunk emergency caller ID override
Concurrent call limit
Mailbox address
Call recording mode
Inbound ring timeout (seconds)
Outbound dial prefix
Direct fax enabled (1 = yes, 0 = no)
Recording delivery email
Dial-by-name inclusion
Phonebook inclusion
Call waiting state
Account number
Forwarding state
Free-text emergency location comment
Owning tenant
Show child attributes
Show child attributes
Branch
Show child attributes
Show child attributes
Routing profile
Show child attributes
Show child attributes
Music on hold
Show child attributes
Show child attributes
Linked user
Show child attributes
Show child attributes
eFax user mapping
Show child attributes
Show child attributes
Emergency location
Show child attributes
Show child attributes
Assigned devices
Show child attributes
Show child attributes
No-answer routing
Show child attributes
Show child attributes
Busy routing
Show child attributes
Show child attributes
Offline routing
Show child attributes
Show child attributes
Unconditional forwarding
Show child attributes
Show child attributes
Was this page helpful?