Add a number
curl --request POST \
--url https://api.goyappr.com/carrier-accounts/{id}/numbers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"number": "+972501234567",
"friendly_name": "<string>",
"outbound_agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.goyappr.com/carrier-accounts/{id}/numbers"
payload = {
"number": "+972501234567",
"friendly_name": "<string>",
"outbound_agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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({
number: '+972501234567',
friendly_name: '<string>',
outbound_agent_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.goyappr.com/carrier-accounts/{id}/numbers', 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.goyappr.com/carrier-accounts/{id}/numbers",
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([
'number' => '+972501234567',
'friendly_name' => '<string>',
'outbound_agent_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.goyappr.com/carrier-accounts/{id}/numbers"
payload := strings.NewReader("{\n \"number\": \"+972501234567\",\n \"friendly_name\": \"<string>\",\n \"outbound_agent_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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.goyappr.com/carrier-accounts/{id}/numbers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"number\": \"+972501234567\",\n \"friendly_name\": \"<string>\",\n \"outbound_agent_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goyappr.com/carrier-accounts/{id}/numbers")
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 \"number\": \"+972501234567\",\n \"friendly_name\": \"<string>\",\n \"outbound_agent_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"number": "+972551234567",
"friendly_name": "<string>",
"provider": "<string>",
"status": "active",
"is_active": true,
"inbound_agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"outbound_agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sip_inbound_configured": true,
"sip_outbound_configured": true,
"country_code": "<string>",
"monthly_cost": 123,
"created_at": "2023-11-07T05:31:56Z",
"carrier_account": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"provider": "telnyx",
"status": "untested"
},
"ownership_verified_at": "2023-11-07T05:31:56Z"
}
}{
"error": "<string>",
"code": "<string>"
}{
"error": "Calling out through your own Telnyx account is switched off for this workspace. Contact Yappr support.",
"code": "CARRIER_ACCOUNTS_NOT_ENABLED",
"enabled": false
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Carrier accounts
Add Number to Carrier Account
Add a number you own in the connected Telnyx account. Yappr asks Telnyx, with
your key, whether it is an active number in your account, and adds it only if
it is. It becomes a phone number of your workspace with provider: external:
use it as from on POST /calls, as a campaign’s
number, or as an agent’s outbound number. Requires carrier_accounts:manage.
Limit: 50 per workspace per day.
POST
/
carrier-accounts
/
{id}
/
numbers
Add a number
curl --request POST \
--url https://api.goyappr.com/carrier-accounts/{id}/numbers \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"number": "+972501234567",
"friendly_name": "<string>",
"outbound_agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
'import requests
url = "https://api.goyappr.com/carrier-accounts/{id}/numbers"
payload = {
"number": "+972501234567",
"friendly_name": "<string>",
"outbound_agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a"
}
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({
number: '+972501234567',
friendly_name: '<string>',
outbound_agent_id: '3c90c3cc-0d44-4b50-8888-8dd25736052a'
})
};
fetch('https://api.goyappr.com/carrier-accounts/{id}/numbers', 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.goyappr.com/carrier-accounts/{id}/numbers",
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([
'number' => '+972501234567',
'friendly_name' => '<string>',
'outbound_agent_id' => '3c90c3cc-0d44-4b50-8888-8dd25736052a'
]),
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.goyappr.com/carrier-accounts/{id}/numbers"
payload := strings.NewReader("{\n \"number\": \"+972501234567\",\n \"friendly_name\": \"<string>\",\n \"outbound_agent_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\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.goyappr.com/carrier-accounts/{id}/numbers")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"number\": \"+972501234567\",\n \"friendly_name\": \"<string>\",\n \"outbound_agent_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.goyappr.com/carrier-accounts/{id}/numbers")
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 \"number\": \"+972501234567\",\n \"friendly_name\": \"<string>\",\n \"outbound_agent_id\": \"3c90c3cc-0d44-4b50-8888-8dd25736052a\"\n}"
response = http.request(request)
puts response.read_body{
"data": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"number": "+972551234567",
"friendly_name": "<string>",
"provider": "<string>",
"status": "active",
"is_active": true,
"inbound_agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"outbound_agent_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"sip_inbound_configured": true,
"sip_outbound_configured": true,
"country_code": "<string>",
"monthly_cost": 123,
"created_at": "2023-11-07T05:31:56Z",
"carrier_account": {
"id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"name": "<string>",
"provider": "telnyx",
"status": "untested"
},
"ownership_verified_at": "2023-11-07T05:31:56Z"
}
}{
"error": "<string>",
"code": "<string>"
}{
"error": "Calling out through your own Telnyx account is switched off for this workspace. Contact Yappr support.",
"code": "CARRIER_ACCOUNTS_NOT_ENABLED",
"enabled": false
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}{
"error": "<string>",
"code": "<string>"
}Add a number you own in the connected Telnyx account. Yappr asks Telnyx, with your
API key, whether it is an active number in your account, and adds it only if it
is. It becomes a phone number of your workspace with
provider: "external", and from
then on it works everywhere a number you bought does for outbound: from on
POST /calls, a campaign’s number, or the number an
outbound agent calls from. Requires carrier_accounts:manage.
Choose the Call Control App first.
curl -X POST https://api.goyappr.com/carrier-accounts/7c1e…/numbers \
-H "Authorization: Bearer ypr_live_..." \
-H "Content-Type: application/json" \
-d '{
"number": "+972501234567",
"friendly_name": "Sales line",
"outbound_agent_id": "5b0f…"
}'
{
"data": {
"id": "e2a4…",
"number": "+972501234567",
"friendly_name": "Sales line",
"provider": "external",
"status": "active",
"is_active": true,
"inbound_agent_id": null,
"outbound_agent_id": "5b0f…",
"sip_inbound_configured": false,
"sip_outbound_configured": true,
"country_code": "IL",
"monthly_cost": null,
"created_at": "2026-09-23T10:02:00Z",
"carrier_account": { "id": "7c1e…", "name": "Main Telnyx account", "provider": "telnyx", "status": "untested" },
"ownership_verified_at": "2026-09-23T10:02:00Z"
}
}
Outbound only
Calls to the number keep going where they go today in Telnyx. The agent calls out from it but does not answer it. Settinginbound_agent_id on it answers
422 INBOUND_NOT_AVAILABLE_ON_EXTERNAL_NUMBER. To have an agent answer, route the
number in Telnyx to a SIP endpoint. Leave the
number’s own settings in Telnyx as they are.
A number someone else registered
Every number is in Yappr once. If another workspace registered your number but its Telnyx key no longer proves it, Yappr releases that claim and adds the number to you. If it is a number bought from Yappr, or its holder still proves it, the answer is409 NUMBER_ALREADY_REGISTERED, which does not say where. The same 409 comes
back when the lapsed claim is still in use there (a campaign calls from it, or past
calls were made from it): that claim is switched off so it can never call, but it is
not removed, so the other workspace’s history stays intact. Contact Yappr support to
move the number.
Errors
| Status | code | Meaning |
|---|---|---|
| 400 | INVALID_NUMBER | Not E.164. +972 numbers are +972 followed by 8 or 9 digits. |
| 400 | INVALID_AGENT | outbound_agent_id is not an agent in this workspace. |
| 400 | INVALID_NAME, INVALID_JSON | Fix the field named in error. |
| 403 | CARRIER_ACCOUNTS_NOT_ENABLED | Yappr has switched carrier accounts off for this workspace. Contact Yappr support. |
| 404 | CARRIER_ACCOUNT_NOT_FOUND | Not in this workspace. |
| 409 | CONNECTION_REQUIRED | Choose the Call Control App first. |
| 409 | NUMBER_ALREADY_REGISTERED | The number is in use in Yappr, or held by a lapsed claim still in use there. |
| 422 | NUMBER_NOT_IN_YOUR_TELNYX_ACCOUNT | Telnyx does not list it as an active number in your account. Nothing was added. |
| 422 | TELNYX_KEY_REJECTED | Telnyx refused the saved key. |
| 429 | RATE_LIMITED | 50 numbers added in this workspace today. |
| 503 | TELNYX_UNAVAILABLE, OWNERSHIP_CHECK_UNAVAILABLE | Telnyx did not answer. Nothing was added. |
Authorizations
Your Yappr API key (e.g. ypr_live_...). Generate one in the dashboard under Settings → API Keys.
Path Parameters
Body
application/json
An active number in the Telnyx account you connected, in E.164 (+972 numbers are 12 or 13 characters). Yappr checks it with your key before adding it.
Example:
"+972501234567"
Maximum string length:
100The agent that calls from this number by default.
Response
Number added
Show child attributes
Show child attributes