Identity
Check configured providers and availability
Reports server configuration, not live provider health or credential permissions. Phone availability requires an active account, API key, messaging profile, and webhook verification key. Inspect identity scopes separately; quotas and approvals still apply.
GET
/
capabilities
Check configured providers and availability
curl --request GET \
--url https://www.papers.bot/v1/capabilities \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.papers.bot/v1/capabilities"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.papers.bot/v1/capabilities', 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://www.papers.bot/v1/capabilities",
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://www.papers.bot/v1/capabilities"
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://www.papers.bot/v1/capabilities")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.papers.bot/v1/capabilities")
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{
"email": {
"provider": "resend",
"available": true,
"domain": "<string>"
},
"phone": {
"provider": "telnyx",
"available": true,
"status": "<string>"
},
"cards": {
"available": false,
"status": "deferred"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"retryable": true,
"details": {
"approvalId": "<string>"
}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"retryable": true,
"details": {
"approvalId": "<string>"
}
}
}Authorizations
Workspace API key or delegated OAuth access token with /v1 resource audience. Administrative routes require the Better Auth browser session instead.
⌘I
Check configured providers and availability
curl --request GET \
--url https://www.papers.bot/v1/capabilities \
--header 'Authorization: Bearer <token>'import requests
url = "https://www.papers.bot/v1/capabilities"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://www.papers.bot/v1/capabilities', 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://www.papers.bot/v1/capabilities",
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://www.papers.bot/v1/capabilities"
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://www.papers.bot/v1/capabilities")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://www.papers.bot/v1/capabilities")
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{
"email": {
"provider": "resend",
"available": true,
"domain": "<string>"
},
"phone": {
"provider": "telnyx",
"available": true,
"status": "<string>"
},
"cards": {
"available": false,
"status": "deferred"
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"retryable": true,
"details": {
"approvalId": "<string>"
}
}
}{
"error": {
"code": "<string>",
"message": "<string>",
"request_id": "<string>",
"retryable": true,
"details": {
"approvalId": "<string>"
}
}
}