Get account state, capabilities and limits
curl --request GET \
--url https://api.sentfrom.ai/v1/account \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sentfrom.ai/v1/account"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sentfrom.ai/v1/account', 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.sentfrom.ai/v1/account",
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.sentfrom.ai/v1/account"
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.sentfrom.ai/v1/account")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sentfrom.ai/v1/account")
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{
"tenant_id": "<string>",
"name": "<string>",
"onboarding_state": "unclaimed",
"claimed_at": "2023-11-07T05:31:56Z",
"sending_enabled_at": "2023-11-07T05:31:56Z",
"unclaimed_expires_at": "2023-11-07T05:31:56Z",
"expired": true,
"capabilities": {
"receive": true,
"read": true,
"send": true,
"manage": true
},
"limits": {
"inboxes": 2,
"received_messages": 1,
"received_bytes": 1
},
"usage": {
"received_messages": 1,
"received_bytes": 1
},
"inboxes": [
{
"id": "<string>",
"address": "jsmith@example.com"
}
],
"sending_status": "enabled",
"sending_paused_at": "2023-11-07T05:31:56Z"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Agent onboarding
Get account status
Read onboarding state, capabilities and current limits with the saved API key.
GET
/
account
Get account state, capabilities and limits
curl --request GET \
--url https://api.sentfrom.ai/v1/account \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sentfrom.ai/v1/account"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sentfrom.ai/v1/account', 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.sentfrom.ai/v1/account",
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.sentfrom.ai/v1/account"
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.sentfrom.ai/v1/account")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sentfrom.ai/v1/account")
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{
"tenant_id": "<string>",
"name": "<string>",
"onboarding_state": "unclaimed",
"claimed_at": "2023-11-07T05:31:56Z",
"sending_enabled_at": "2023-11-07T05:31:56Z",
"unclaimed_expires_at": "2023-11-07T05:31:56Z",
"expired": true,
"capabilities": {
"receive": true,
"read": true,
"send": true,
"manage": true
},
"limits": {
"inboxes": 2,
"received_messages": 1,
"received_bytes": 1
},
"usage": {
"received_messages": 1,
"received_bytes": 1
},
"inboxes": [
{
"id": "<string>",
"address": "jsmith@example.com"
}
],
"sending_status": "enabled",
"sending_paused_at": "2023-11-07T05:31:56Z"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}{
"error": "<string>",
"message": "<string>"
}Requires the agent-onboarding API release. See Set up your agent
for credential handling, safe retries and the human claim flow.
Check
sending_status and capabilities.send before attempting to send. A claimed
account can still be paused. usage.received_messages and usage.received_bytes
track the onboarding receive quota, not lifetime or billing usage after claim.
An expired account can read its status here but cannot read inbox/message contents.Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Response
Current account state.
Available options:
unclaimed, claimed Claim-time start of sending warmup for agent-created accounts.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Counters consumed by the unclaimed onboarding receive quota. These are not lifetime or billing usage after claim.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Current sending readiness. Check this together with capabilities.send; enabled remains subject to plan, warming, suppression and abuse checks.
Available options:
enabled, paused, unclaimed, expired, suspended When sending was paused, or null if no current pause is recorded.

