Languages: every operation supports cURL, Node.js (TypeScript), Python, Go, Ruby, and PHP. The first 15 operations on this page show all six languages; the remaining 11 show cURL and TypeScript — the two most-used.
Public API
Public endpoints exposed by the Devotel CPaaS API Base path:/api/v1
Endpoint count: 26
List embed
GET /api/v1/public/analytics/dashboards/embedcURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/analytics/dashboards/embed" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/analytics/dashboards/embed', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/analytics/dashboards/embed", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/analytics/dashboards/embed", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/analytics/dashboards/embed')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/analytics/dashboards/embed');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Get callbacks
GET /api/v1/public/callbacks/{token}string
required
—
cURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {
"id": "cbk_01J8Q2WZP4Q3R8YW7T6S",
"status": "pending",
"attempts": 1,
"max_attempts": 3,
"next_attempt_at": "2026-08-26T12:30:00.000Z",
"scheduled_for": "2026-08-26T12:30:00.000Z",
"caller": "+1234***5678",
"can_cancel": true,
"can_reschedule": true
},
"meta": {
"request_id": "req_01J8Q5C1NK7W6QF0B2PZ3",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
List status
GET /api/v1/public/callbacks/{token}/statusstring
required
—
cURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a/status" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a/status', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a/status", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a/status", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a/status')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a/status');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {
"id": "cbk_01J8Q2WZP4Q3R8YW7T6S",
"status": "pending",
"attempts": 1,
"max_attempts": 3,
"next_attempt_at": "2026-08-26T12:30:00.000Z",
"scheduled_for": "2026-08-26T12:30:00.000Z",
"caller": "+1234***5678",
"can_cancel": true,
"can_reschedule": true
},
"meta": {
"request_id": "req_01J8Q5C2NK7W6QF0B2PZ4",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
List questions
GET /api/v1/public/community/questionscURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/community/questions" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/community/questions', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/community/questions", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/community/questions", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/community/questions')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/community/questions');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Get questions
GET /api/v1/public/community/questions/{id}string
required
—
cURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/community/questions/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/community/questions/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/community/questions/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/community/questions/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/community/questions/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/community/questions/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
List transcript
GET /api/v1/public/conversations/{token}/transcriptstring
required
—
cURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/conversations/tkn_0c1d3e5f7a/transcript" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/conversations/tkn_0c1d3e5f7a/transcript', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/conversations/tkn_0c1d3e5f7a/transcript", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/conversations/tkn_0c1d3e5f7a/transcript", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/conversations/tkn_0c1d3e5f7a/transcript')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/conversations/tkn_0c1d3e5f7a/transcript');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
List ideas
GET /api/v1/public/ideascURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/ideas" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/ideas', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/ideas", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/ideas", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/ideas')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/ideas');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Get ideas
GET /api/v1/public/ideas/{id}string
required
—
cURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/ideas/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/ideas/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/ideas/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/ideas/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/ideas/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/ideas/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
List roadmap
GET /api/v1/public/ideas/roadmapcURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/ideas/roadmap" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/ideas/roadmap', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/ideas/roadmap", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/ideas/roadmap", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/ideas/roadmap')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/ideas/roadmap');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
List pages
GET /api/v1/public/pagescURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/pages" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/pages', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/pages", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/pages", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/pages')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/pages');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Get pages
GET /api/v1/public/pages/{slug}string
required
—
cURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/pages/launch-assistant" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/pages/launch-assistant', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/pages/launch-assistant", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/pages/launch-assistant", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/pages/launch-assistant')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/pages/launch-assistant');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Get recordings
GET /api/v1/public/recordings/{token}string
required
—
cURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/recordings/tkn_0c1d3e5f7a" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/recordings/tkn_0c1d3e5f7a', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/recordings/tkn_0c1d3e5f7a", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/recordings/tkn_0c1d3e5f7a", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/recordings/tkn_0c1d3e5f7a')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/recordings/tkn_0c1d3e5f7a');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
List stale
GET /api/v1/public/stalecURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/stale" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/stale', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/stale", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/stale", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/stale')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/stale');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
List confirm
GET /api/v1/public/subprocessor-subscriptions/confirmcURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions/confirm" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions/confirm', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions/confirm", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions/confirm", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions/confirm')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions/confirm');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
List unsubscribe
GET /api/v1/public/subprocessor-subscriptions/unsubscribecURL
curl -X GET "https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions/unsubscribe" \
-H "X-API-Key: dv_live_sk_your_key_here"
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions/unsubscribe', {
method: 'GET',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
},
})
console.log(await res.json())
Python
import os, requests
headers = {"X-API-Key": os.environ["ORBIT_API_KEY"]}
r = requests.get("https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions/unsubscribe", headers=headers)
print(r.json())
Go
package main
import (
"bytes"
"net/http"
"os"
)
func main() {
req, _ := http.NewRequest("GET", "https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions/unsubscribe", nil)
req.Header.Set("X-API-Key", os.Getenv("ORBIT_API_KEY"))
http.DefaultClient.Do(req)
}
Ruby
require 'net/http'
require 'json'
uri = URI('https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions/unsubscribe')
req = Net::HTTP::Get.new(uri)
req['X-API-Key'] = ENV['ORBIT_API_KEY']
res = Net::HTTP.start(uri.host, uri.port, use_ssl: true) { |h| h.request(req) }
puts res.body
PHP
<?php
$ch = curl_init('https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions/unsubscribe');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'GET');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'X-API-Key: ' . getenv('ORBIT_API_KEY'),
]);
echo curl_exec($ch);
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Submit a marketing lead
POST /api/v1/marketing-leadsVALIDATION_ERROR), and Turnstile failures (422 TURNSTILE_REQUIRED) when the bot-protection gate is armed. On success the lead is persisted and the endpoint replies 201 with { data: { id, status: "received" }, meta }; rate-limited submissions return the standard 429 envelope. This is a public Devotel-property ingest — no caller API key is accepted, and the 503 SERVICE_UNAVAILABLE envelope is returned when the signing secret is not provisioned (the pipeline fails closed).
string
Stripe-style idempotency token. Pass a stable, client-generated value (1-255 chars) to dedupe retries on transient timeouts. The same key+credential+path replays the original response for 24h on 2xx (5min on 4xx, 30s on 5xx). Returns 409 if a concurrent request with the same key is already in flight; replayed responses include the
Idempotency-Replay: true response header.string (enum: true|false)
Sandbox opt-in for Clerk-session-authenticated requests. Set to
true to route the call through the test-mode pipeline: no real provider delivery, no credits deducted, response meta.test_mode: true. Ignored for live API keys (dv_live_sk_*) — server-to-server clients must use a test-prefixed key (dv_test_sk_*) to exercise sandbox. Test-prefixed keys unconditionally enable sandbox regardless of this header.string
Originating property — e.g.
devotel.io-contact, landing-page.string
The contact’s full name.
string
The contact’s email address.
string
Company or organization name (optional).
string
The contact’s message body.
object
UTM attribution captured from the landing session. Any subset of
source, medium, campaign, term, content (each ≤ 200 chars).string
Visitor user-agent captured at the form edge (optional).
string
Visitor referrer URL captured at the form edge (optional).
string
Cloudflare Turnstile token (
cf-turnstile-response) solved by the landing form and forwarded inside the signed body. Required when the bot-protection gate is armed server-side; single-use, never persisted.cURL
curl -X POST "https://api.orbit.devotel.io/api/v1/marketing-leads" \
-H "X-API-Key: dv_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/marketing-leads', {
method: 'POST',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
})
console.log(await res.json())
{
"data": {
"id": "msg_3f6a81c2d4e5471a9b0c2d5e",
"status": "delivered"
},
"meta": {}
}
Create cancel
POST /api/v1/public/callbacks/{token}/cancelstring
required
—
cURL
curl -X POST "https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a/cancel" \
-H "X-API-Key: dv_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a/cancel', {
method: 'POST',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
})
console.log(await res.json())
{
"data": {
"ok": true,
"status": "canceled",
"already_canceled": false
},
"meta": {
"request_id": "req_01J8Q5C3NK7W6QF0B2PZ5",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Create reschedule
POST /api/v1/public/callbacks/{token}/reschedulestring
required
—
cURL
curl -X POST "https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a/reschedule" \
-H "X-API-Key: dv_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/callbacks/tkn_0c1d3e5f7a/reschedule', {
method: 'POST',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
})
console.log(await res.json())
{
"data": {
"ok": true,
"status": "pending",
"scheduled_for": "2026-08-27T09:00:00.000Z"
},
"meta": {
"request_id": "req_01J8Q5C4NK7W6QF0B2PZ6",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Create vote
POST /api/v1/public/community/answers/{id}/votestring
required
—
cURL
curl -X POST "https://api.orbit.devotel.io/api/v1/public/community/answers/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3/vote" \
-H "X-API-Key: dv_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/community/answers/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3/vote', {
method: 'POST',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
})
console.log(await res.json())
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Questions community
POST /api/v1/public/community/questionscURL
curl -X POST "https://api.orbit.devotel.io/api/v1/public/community/questions" \
-H "X-API-Key: dv_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/community/questions', {
method: 'POST',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
})
console.log(await res.json())
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Create answers
POST /api/v1/public/community/questions/{id}/answersstring
required
—
cURL
curl -X POST "https://api.orbit.devotel.io/api/v1/public/community/questions/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3/answers" \
-H "X-API-Key: dv_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/community/questions/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3/answers', {
method: 'POST',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
})
console.log(await res.json())
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Create vote
POST /api/v1/public/community/questions/{id}/votestring
required
—
cURL
curl -X POST "https://api.orbit.devotel.io/api/v1/public/community/questions/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3/vote" \
-H "X-API-Key: dv_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/community/questions/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3/vote', {
method: 'POST',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
})
console.log(await res.json())
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Ideas public
POST /api/v1/public/ideascURL
curl -X POST "https://api.orbit.devotel.io/api/v1/public/ideas" \
-H "X-API-Key: dv_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/ideas', {
method: 'POST',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
})
console.log(await res.json())
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Create comments
POST /api/v1/public/ideas/{id}/commentsstring
required
—
cURL
curl -X POST "https://api.orbit.devotel.io/api/v1/public/ideas/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3/comments" \
-H "X-API-Key: dv_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/ideas/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3/comments', {
method: 'POST',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
})
console.log(await res.json())
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Create vote
POST /api/v1/public/ideas/{id}/votestring
required
—
cURL
curl -X POST "https://api.orbit.devotel.io/api/v1/public/ideas/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3/vote" \
-H "X-API-Key: dv_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/ideas/num_8fb2d1b7c00c4ec9a1d3f5e7b9c1d3/vote', {
method: 'POST',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
})
console.log(await res.json())
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}
Subprocessor-subscriptions public
POST /api/v1/public/subprocessor-subscriptionscURL
curl -X POST "https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions" \
-H "X-API-Key: dv_live_sk_your_key_here" \
-H "Content-Type: application/json" \
-d '{}'
Node.js
import { Orbit } from '@devotel-orbit/node'
const orbit = new Orbit({
apiKey: process.env.ORBIT_API_KEY!,
})
const res = await fetch('https://api.orbit.devotel.io/api/v1/public/subprocessor-subscriptions', {
method: 'POST',
headers: {
'X-API-Key': process.env.ORBIT_API_KEY!,
'Content-Type': 'application/json',
},
body: JSON.stringify({}),
})
console.log(await res.json())
{
"data": {},
"meta": {
"request_id": "req_01HZQX4E7JQ4M2E2H2DM9XE5FJ",
"timestamp": "2026-08-26T12:00:00.000Z"
}
}