Get Usage
curl --request GET \
--url https://api.signa.so/v1/organization/usage \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/organization/usage"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/organization/usage', 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.signa.so/v1/organization/usage",
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.signa.so/v1/organization/usage"
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.signa.so/v1/organization/usage")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/organization/usage")
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{
"object": "usage",
"schema_versions": [2],
"billing_period": {
"start": "2026-06-01T00:00:00.000Z",
"end": "2026-07-01T00:00:00.000Z"
},
"by_endpoint_type": {
"search": { "used": 2400, "beta_used": 0, "limit": null, "limit_source": "pooled" },
"read": { "used": 860, "beta_used": 0, "limit": null, "limit_source": "pooled" },
"compute": { "used": 120, "beta_used": 0, "limit": null, "limit_source": "pooled" },
"class_lookup": { "used": 36, "beta_used": 0, "limit": null, "limit_source": "pooled" },
"gs_validate": { "used": 0, "beta_used": 0, "limit": null, "limit_source": "pooled", "gated": true }
},
"rate_limits": {
"search": 60,
"read": 60,
"monitoring": 60,
"utility": 60,
"reference": 60,
"compute": 30,
"class_lookup": 60,
"gs_validate": 30
},
"request_id": "req_aS6kL2mN"
}
Usage & Credits
Get Usage
Retrieve API usage statistics for the current billing period
GET
/
v1
/
organization
/
usage
Get Usage
curl --request GET \
--url https://api.signa.so/v1/organization/usage \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.signa.so/v1/organization/usage"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.signa.so/v1/organization/usage', 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.signa.so/v1/organization/usage",
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.signa.so/v1/organization/usage"
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.signa.so/v1/organization/usage")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.signa.so/v1/organization/usage")
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{
"object": "usage",
"schema_versions": [2],
"billing_period": {
"start": "2026-06-01T00:00:00.000Z",
"end": "2026-07-01T00:00:00.000Z"
},
"by_endpoint_type": {
"search": { "used": 2400, "beta_used": 0, "limit": null, "limit_source": "pooled" },
"read": { "used": 860, "beta_used": 0, "limit": null, "limit_source": "pooled" },
"compute": { "used": 120, "beta_used": 0, "limit": null, "limit_source": "pooled" },
"class_lookup": { "used": 36, "beta_used": 0, "limit": null, "limit_source": "pooled" },
"gs_validate": { "used": 0, "beta_used": 0, "limit": null, "limit_source": "pooled", "gated": true }
},
"rate_limits": {
"search": 60,
"read": 60,
"monitoring": 60,
"utility": 60,
"reference": 60,
"compute": 30,
"class_lookup": 60,
"gs_validate": 30
},
"request_id": "req_aS6kL2mN"
}
Credits: 0.
Overview
Returns API usage for the current billing period, broken down by metered endpoint type, plus the per-endpoint-type requests-per-minute limits your plan enforces.by_endpoint_type reports used, beta_used, limit and limit_source for each metered endpoint type.
used is credits actually spent from your organization’s pooled balance. beta_used is the nominal value of requests that ran free because the action is in beta; it is reported separately and is never part of used.
limit is null and limit_source is pooled: every endpoint type draws on one shared credit balance, so there is no per-type allowance. See Get Credits for the balance, grant, and reset date. A bucket marked gated: true is not included in your plan: once traffic bills under that endpoint type, those requests are refused with 403 plan_gated before any credits are spent.
Requires the billing:read scope.
Response
string
Always
usage.integer[]
Sorted distinct credit schedule versions present in this billing period’s billable events (
1 = the pre-launch placeholder weights, 2 = the credit schedule at signa.so/pricing). Empty when the period has no billable events; two entries mean the period spans a schedule change, so per-request credits are not comparable across it. See schema_version on List Request Logs for the per-request value.object
object
Show Per-endpoint-type usage
Show Per-endpoint-type usage
Keyed by metered endpoint type. Buckets for endpoint types that are not being metered yet read
0 until the API starts recording them. Each value is an object:Historical requests may have been recorded under an endpoint type the API no longer uses: check was split into compute, reconcile, fees_estimate, gs_draft and gs_validate, and the classification, goods-and-services, design-code, fee and rules catalogues moved from the free reference bucket to the metered class_lookup (1 credit per request) and rules_lookup (10 credits per request) buckets. Those retired buckets are not reported here; use GET /v1/organization/usage/estimate to see past usage priced at the current schedule.
integer
Credits spent from the pooled balance in the current billing period for this endpoint type.
integer
Nominal credits for requests that were metered but not charged because the action is free during its beta. Always present,
0 for anything charged. Not included in used.integer | null
null: credits come from one pooled balance, not a per-type allowance. See Get Credits.string
pooled: your organization spends one shared credit balance. The schema enum also lists plan and default, which belong to the pre-launch quota model and are not returned on credit plans.boolean
Present, and
true, only when the endpoint type is not included in your plan. Once traffic bills under it, those requests are refused with 403 plan_gated.object
Requests-per-minute limit per endpoint type (
search, read, screening, monitoring, utility, reference, and the metered action types: compute, reconcile, fees_estimate, gs_draft, gs_validate, class_suggest, class_lookup, rules_lookup, analytics, market_analytics), as enforced by the rate limiter. See Rate Limits for how limits are applied.string
Unique request identifier for support and debugging.
{
"object": "usage",
"schema_versions": [2],
"billing_period": {
"start": "2026-06-01T00:00:00.000Z",
"end": "2026-07-01T00:00:00.000Z"
},
"by_endpoint_type": {
"search": { "used": 2400, "beta_used": 0, "limit": null, "limit_source": "pooled" },
"read": { "used": 860, "beta_used": 0, "limit": null, "limit_source": "pooled" },
"compute": { "used": 120, "beta_used": 0, "limit": null, "limit_source": "pooled" },
"class_lookup": { "used": 36, "beta_used": 0, "limit": null, "limit_source": "pooled" },
"gs_validate": { "used": 0, "beta_used": 0, "limit": null, "limit_source": "pooled", "gated": true }
},
"rate_limits": {
"search": 60,
"read": 60,
"monitoring": 60,
"utility": 60,
"reference": 60,
"compute": 30,
"class_lookup": 60,
"gs_validate": 30
},
"request_id": "req_aS6kL2mN"
}
Code Examples
curl "https://api.signa.so/v1/organization/usage" \
-H "Authorization: Bearer sig_YOUR_KEY"
import { Signa } from "@signa-so/sdk";
const signa = new Signa({ api_key: process.env.SIGNA_API_KEY });
const usage = await signa.organization.usage();
console.log("Search used:", usage.by_endpoint_type.search.used);
Related Endpoints
- Get Current Organization, organization profile and plan
- Get Usage Summary, daily breakdown by endpoint type or API key
- List API Keys, manage API keys