GetVoicePhoneNumberSMSAPI mirrors the single-number half of
curl --request GET \
--url https://api.erdo.ai/v1/voice/phone-numbers/{number}/sms \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.erdo.ai/v1/voice/phone-numbers/{number}/sms"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.erdo.ai/v1/voice/phone-numbers/{number}/sms', 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.erdo.ai/v1/voice/phone-numbers/{number}/sms",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.erdo.ai/v1/voice/phone-numbers/{number}/sms"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.erdo.ai/v1/voice/phone-numbers/{number}/sms")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.erdo.ai/v1/voice/phone-numbers/{number}/sms")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"address": "<string>",
"agent_ref": "<string>",
"brand_status": "<string>",
"campaign_status": "<string>",
"last_polled_at": "2023-11-07T05:31:56Z",
"missing_profile_fields": [
"<string>"
],
"mock": true,
"next_step": "<string>",
"not_registerable_reason": "<string>",
"profile_status": "<string>",
"reason": "<string>",
"registerable": true,
"requested_at": "2023-11-07T05:31:56Z",
"sender_kind": "<string>",
"status": "<string>"
}{
"code": "not_found",
"details": {},
"message": "<string>"
}API Reference
GetVoicePhoneNumberSMSAPI mirrors the single-number half of
erdo_voice_phone_number_list: what one number’s SMS registration is waiting on, and why it was rejected if it was.
GET
/
v1
/
voice
/
phone-numbers
/
{number}
/
sms
GetVoicePhoneNumberSMSAPI mirrors the single-number half of
curl --request GET \
--url https://api.erdo.ai/v1/voice/phone-numbers/{number}/sms \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.erdo.ai/v1/voice/phone-numbers/{number}/sms"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.erdo.ai/v1/voice/phone-numbers/{number}/sms', 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.erdo.ai/v1/voice/phone-numbers/{number}/sms",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.erdo.ai/v1/voice/phone-numbers/{number}/sms"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.erdo.ai/v1/voice/phone-numbers/{number}/sms")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.erdo.ai/v1/voice/phone-numbers/{number}/sms")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"address": "<string>",
"agent_ref": "<string>",
"brand_status": "<string>",
"campaign_status": "<string>",
"last_polled_at": "2023-11-07T05:31:56Z",
"missing_profile_fields": [
"<string>"
],
"mock": true,
"next_step": "<string>",
"not_registerable_reason": "<string>",
"profile_status": "<string>",
"reason": "<string>",
"registerable": true,
"requested_at": "2023-11-07T05:31:56Z",
"sender_kind": "<string>",
"status": "<string>"
}{
"code": "not_found",
"details": {},
"message": "<string>"
}Authorizations
An Erdo API key (erdo_api_...) or scoped token (erdo_token_...).
Path Parameters
Response
Success response
Erdo's own numbers.
needs before registration can be submitted, so the answer to "why isn't my number replying" is actionable rather than "it isn't registered".
when Registerable is true.
Erdo's own shared numbers, or one on the root account. It is reported rather than left to the attempt, because an approval card for a call that can never execute is worse than a refusal: it sits in the work feed looking like a decision somebody still has to make.

