curl --request GET \
--url https://preuve.ai/api/agent/agency \
--header 'x-preuve-key: <api-key>'import requests
url = "https://preuve.ai/api/agent/agency"
headers = {"x-preuve-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-preuve-key': '<api-key>'}};
fetch('https://preuve.ai/api/agent/agency', 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://preuve.ai/api/agent/agency",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-preuve-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"
"net/http"
"io"
)
func main() {
url := "https://preuve.ai/api/agent/agency"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-preuve-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://preuve.ai/api/agent/agency")
.header("x-preuve-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://preuve.ai/api/agent/agency")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-preuve-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"agency": {
"id": "<string>",
"name": "<string>",
"role": "<string>"
},
"quota": {
"plan": "<string>",
"isActiveSubscription": true,
"trialLimit": 123,
"trialUsed": 123,
"trialExpired": true,
"delinquent": true,
"monthlyLimit": 123,
"monthlyUsed": 123,
"monthlyRemaining": 123,
"topupRemaining": 123,
"totalRemaining": 123,
"requiresPaymentSetup": true,
"canScan": true,
"nextResetAt": "2023-11-07T05:31:56Z"
},
"canRunScan": true,
"reports": [
{
"reportId": "<string>",
"title": "<string>",
"status": "<string>",
"scanType": "starter",
"createdAt": "2023-11-07T05:31:56Z",
"reportUrl": "<string>"
}
],
"nextOffset": 123
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}Get the Agency workspace
Workspace identity, the caller’s role, remaining shared project quota, and one page of the workspace’s client reports - dashboard-created ones included, newest first, without report bodies. Consultant and AppSumo Agency accounts only: a key whose account holds no Agency workspace, or whose membership was removed, gets 404 AGENCY_NOT_FOUND on the next call. Membership is resolved live on every request, independently of the key.
curl --request GET \
--url https://preuve.ai/api/agent/agency \
--header 'x-preuve-key: <api-key>'import requests
url = "https://preuve.ai/api/agent/agency"
headers = {"x-preuve-key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'x-preuve-key': '<api-key>'}};
fetch('https://preuve.ai/api/agent/agency', 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://preuve.ai/api/agent/agency",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"x-preuve-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"
"net/http"
"io"
)
func main() {
url := "https://preuve.ai/api/agent/agency"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("x-preuve-key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://preuve.ai/api/agent/agency")
.header("x-preuve-key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://preuve.ai/api/agent/agency")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["x-preuve-key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"agency": {
"id": "<string>",
"name": "<string>",
"role": "<string>"
},
"quota": {
"plan": "<string>",
"isActiveSubscription": true,
"trialLimit": 123,
"trialUsed": 123,
"trialExpired": true,
"delinquent": true,
"monthlyLimit": 123,
"monthlyUsed": 123,
"monthlyRemaining": 123,
"topupRemaining": 123,
"totalRemaining": 123,
"requiresPaymentSetup": true,
"canScan": true,
"nextResetAt": "2023-11-07T05:31:56Z"
},
"canRunScan": true,
"reports": [
{
"reportId": "<string>",
"title": "<string>",
"status": "<string>",
"scanType": "starter",
"createdAt": "2023-11-07T05:31:56Z",
"reportUrl": "<string>"
}
],
"nextOffset": 123
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}{
"error": "<string>",
"code": "<string>",
"details": {},
"limit": 123,
"remaining": 123,
"resetAt": "2023-11-07T05:31:56Z",
"tokenBalance": 123,
"scansUsed": 123,
"scansRemaining": 123,
"limitType": "<string>",
"upgradeHint": "<string>",
"paused": true,
"upsell": {
"offer": "founder_report",
"price": "<string>",
"guarantee": "<string>",
"url": "<string>",
"locked": [
"<string>"
],
"note": "<string>"
}
}Authorizations
Your API key (prv_...), sent as-is. It is the only credential the API needs - see the Authentication guide.
Query Parameters
Client reports to return in the reports array.
1 <= x <= 50Paging offset into the reports array.
0 <= x <= 10000Response
Workspace, role, quota, and one page of client reports.
Show child attributes
Show child attributes
Shared project quota for the workspace, same pool as the dashboard.
Show child attributes
Show child attributes
Eligibility, not live availability. True only when the role may run scans, the workspace is approved, billing setup is done, and quota remains. It does not read the service kill switch, the LLM pause or the rate limiters, so a start can still answer 503 or 429 while this is true. None of those refusals spends a project credit.
One page of the workspace's client reports, newest first, including ones created in the Agency dashboard. Same shape and paging as /api/agent/agency/reports.
Show child attributes
Show child attributes
Offset of the next page of reports, or null on the last page.