Buy Phone Number
curl --request POST \
--url https://api.ravan.ai/api/v1/phone-numbers/buy/ \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"phone_number": "<string>",
"price": 123,
"per_minute_price_inbound": 123,
"per_minute_price_outbound": 123
}
'import requests
url = "https://api.ravan.ai/api/v1/phone-numbers/buy/"
payload = {
"phone_number": "<string>",
"price": 123,
"per_minute_price_inbound": 123,
"per_minute_price_outbound": 123
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phone_number: '<string>',
price: 123,
per_minute_price_inbound: 123,
per_minute_price_outbound: 123
})
};
fetch('https://api.ravan.ai/api/v1/phone-numbers/buy/', 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.ravan.ai/api/v1/phone-numbers/buy/",
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([
'phone_number' => '<string>',
'price' => 123,
'per_minute_price_inbound' => 123,
'per_minute_price_outbound' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$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.ravan.ai/api/v1/phone-numbers/buy/"
payload := strings.NewReader("{\n \"phone_number\": \"<string>\",\n \"price\": 123,\n \"per_minute_price_inbound\": 123,\n \"per_minute_price_outbound\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
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.ravan.ai/api/v1/phone-numbers/buy/")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phone_number\": \"<string>\",\n \"price\": 123,\n \"per_minute_price_inbound\": 123,\n \"per_minute_price_outbound\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ravan.ai/api/v1/phone-numbers/buy/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone_number\": \"<string>\",\n \"price\": 123,\n \"per_minute_price_inbound\": 123,\n \"per_minute_price_outbound\": 123\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Request completed successfully",
"data": {
"phone_number": "+14155550100",
"price": 1.99,
"status": "active",
"purchased_at": "2026-03-14T12:00:00Z"
}
}
Phone Number & Telephony API
Buy Phone Number
Buy Phone Number.
POST
/
api
/
v1
/
phone-numbers
/
buy
/
Buy Phone Number
curl --request POST \
--url https://api.ravan.ai/api/v1/phone-numbers/buy/ \
--header 'Content-Type: application/json' \
--header 'X-Api-Key: <api-key>' \
--data '
{
"phone_number": "<string>",
"price": 123,
"per_minute_price_inbound": 123,
"per_minute_price_outbound": 123
}
'import requests
url = "https://api.ravan.ai/api/v1/phone-numbers/buy/"
payload = {
"phone_number": "<string>",
"price": 123,
"per_minute_price_inbound": 123,
"per_minute_price_outbound": 123
}
headers = {
"X-Api-Key": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-Api-Key': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
phone_number: '<string>',
price: 123,
per_minute_price_inbound: 123,
per_minute_price_outbound: 123
})
};
fetch('https://api.ravan.ai/api/v1/phone-numbers/buy/', 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.ravan.ai/api/v1/phone-numbers/buy/",
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([
'phone_number' => '<string>',
'price' => 123,
'per_minute_price_inbound' => 123,
'per_minute_price_outbound' => 123
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-Api-Key: <api-key>"
],
]);
$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.ravan.ai/api/v1/phone-numbers/buy/"
payload := strings.NewReader("{\n \"phone_number\": \"<string>\",\n \"price\": 123,\n \"per_minute_price_inbound\": 123,\n \"per_minute_price_outbound\": 123\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-Api-Key", "<api-key>")
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.ravan.ai/api/v1/phone-numbers/buy/")
.header("X-Api-Key", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"phone_number\": \"<string>\",\n \"price\": 123,\n \"per_minute_price_inbound\": 123,\n \"per_minute_price_outbound\": 123\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ravan.ai/api/v1/phone-numbers/buy/")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-Api-Key"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"phone_number\": \"<string>\",\n \"price\": 123,\n \"per_minute_price_inbound\": 123,\n \"per_minute_price_outbound\": 123\n}"
response = http.request(request)
puts response.read_body{
"success": true,
"message": "Request completed successfully",
"data": {
"phone_number": "+14155550100",
"price": 1.99,
"status": "active",
"purchased_at": "2026-03-14T12:00:00Z"
}
}
Authorizations
string
required
Your Agni API key used to authenticate the request. Pass it in the
X-Api-Key header. Find or rotate it from your Ravan AI account settings.Body
string
The phone number in E.164 format. Example:
+14157774444.number
The purchase price or configured price for the phone number.
integer
The inbound call price per minute for the phone number.
integer
The outbound call price per minute for the phone number.
Response
boolean
Whether the request succeeded.
string
Human-readable status message.
object
{
"success": true,
"message": "Request completed successfully",
"data": {
"phone_number": "+14155550100",
"price": 1.99,
"status": "active",
"purchased_at": "2026-03-14T12:00:00Z"
}
}
Authorizations
Body
application/json
⌘I

