curl --request GET \
--url https://data.otterly.ai/v1/accounts/info \
--header 'Authorization: Bearer <token>'import requests
url = "https://data.otterly.ai/v1/accounts/info"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://data.otterly.ai/v1/accounts/info', 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://data.otterly.ai/v1/accounts/info",
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://data.otterly.ai/v1/accounts/info"
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://data.otterly.ai/v1/accounts/info")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.otterly.ai/v1/accounts/info")
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{
"subscriptionPlan": "standard",
"subscriptionEndDate": "2026-06-19T00:00:00.000Z",
"promptsUsedCount": 142,
"promptsMaxCount": 500,
"geoAuditUsedCount": 7,
"geoAuditMaxCount": 25,
"apiRequestsUsedCount": 38,
"apiRequestsMaxCount": 1500,
"apiRequestsPeriodEnd": "2026-06-01",
"mcpRequestsUsedCount": 12,
"mcpRequestsMaxCount": 2000
}{
"message": "Report not found"
}{
"message": "Report not found"
}{
"message": "Report not found"
}Get account information
Returns the authenticated team’s subscription plan, end date, and current period usage/limits for prompts, GEO audits, public API requests, and MCP tool calls.
curl --request GET \
--url https://data.otterly.ai/v1/accounts/info \
--header 'Authorization: Bearer <token>'import requests
url = "https://data.otterly.ai/v1/accounts/info"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://data.otterly.ai/v1/accounts/info', 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://data.otterly.ai/v1/accounts/info",
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://data.otterly.ai/v1/accounts/info"
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://data.otterly.ai/v1/accounts/info")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://data.otterly.ai/v1/accounts/info")
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{
"subscriptionPlan": "standard",
"subscriptionEndDate": "2026-06-19T00:00:00.000Z",
"promptsUsedCount": 142,
"promptsMaxCount": 500,
"geoAuditUsedCount": 7,
"geoAuditMaxCount": 25,
"apiRequestsUsedCount": 38,
"apiRequestsMaxCount": 1500,
"apiRequestsPeriodEnd": "2026-06-01",
"mcpRequestsUsedCount": 12,
"mcpRequestsMaxCount": 2000
}{
"message": "Report not found"
}{
"message": "Report not found"
}{
"message": "Report not found"
}Authorizations
Provide your API key as a Bearer token: Authorization: Bearer YOUR_API_KEY.
Response
Account information for the authenticated team.
The team's subscription plan. "trial" while the team is in trial; "custom" for teams whose plan is not one of the standard tiers.
trial, lite, standard, premium, custom, null "standard"
When the current subscription (or trial) ends. Null when no end date is set.
"2026-06-19T00:00:00.000Z"
x >= 0142
x >= 0500
x >= 07
x >= 025
x >= 038
x >= 01500
End of the current Public API billing period (YYYY-MM-DD, UTC). For custom plans this is the first day of the next UTC month, clipped to the subscription end. Null when no usable plan is active.
"2026-06-01"
x >= 012
Max MCP tool calls per billing period. Null = unlimited (e.g. Enterprise); 0 = MCP disabled.
x >= 02000