curl --request GET \
--url https://api.checkfu.com/v1/billing/status \
--header 'Authorization: Bearer <token>' \
--header 'checkfu-version: <checkfu-version>'import requests
url = "https://api.checkfu.com/v1/billing/status"
headers = {
"checkfu-version": "<checkfu-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'checkfu-version': '<checkfu-version>', Authorization: 'Bearer <token>'}
};
fetch('https://api.checkfu.com/v1/billing/status', 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.checkfu.com/v1/billing/status",
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>",
"checkfu-version: <checkfu-version>"
],
]);
$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.checkfu.com/v1/billing/status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("checkfu-version", "<checkfu-version>")
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.checkfu.com/v1/billing/status")
.header("checkfu-version", "<checkfu-version>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.checkfu.com/v1/billing/status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["checkfu-version"] = '<checkfu-version>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"organization_id": "<string>",
"workspace_id": "<string>",
"rollout": {
"catalog_visible": true,
"platform_supply_eligible": true,
"usage_projection_enabled": true,
"charging_enabled": true
},
"catalog": {
"kind": "hidden"
},
"commercial": {
"state": "ready",
"current_plan_id": "explore",
"payment_state": "current",
"pooled_credit": {
"granted_microusd": 1,
"remaining_microusd": 1,
"usage_microusd": 1
}
},
"provisioning": {
"local_state": "pending",
"external_state": "pending",
"last_error_code": "<string>"
},
"model_access": {
"binding_id": "<string>",
"source": "workspace_override_configured",
"platform_supply_state": "available",
"provider": "<string>",
"model": "<string>",
"invalid_byok_falls_back": false
},
"builder_seats": {
"authoritative_quantity": 1,
"projection_state": "pending",
"remote_quantity": 1,
"source": "organization_membership"
},
"usage_projections": [
{
"state": "pending",
"count": 1
}
],
"local_usage": {
"charge_count": 1,
"correction_count": 1,
"original_charge": {
"microusd": 123,
"remainder_millionths": 0
},
"correction_delta": {
"microusd": 123,
"remainder_millionths": 0
},
"net_charge": {
"microusd": 123,
"remainder_millionths": 0
},
"dimensions": {
"uncached_input_tokens": 1,
"cached_input_tokens": 1,
"cache_write_input_tokens": 1,
"output_tokens": 1,
"reasoning_output_tokens": 1
}
},
"recovery_actions": [
"add_or_repair_byok"
]
}{
"error": {
"type": "validation.malformed",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-malformed"
}
}{
"error": {
"type": "auth.invalid_key",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-invalid-key"
}
}{
"error": {
"type": "auth.disabled_tenancy",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-disabled-tenancy"
}
}{
"error": {
"type": "budget.exceeded",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#budget-exceeded"
}
}{
"error": {
"type": "runtime.internal",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#runtime-internal"
}
}Get workspace billing status
Returns the workspace’s billing snapshot: rollout, catalog, the organization commercial state, provisioning state, model access (the active ModelRoutingProfile, whether it resolves a workspace BYOK override or platform supply, and platform-supply availability), builder seat counts, usage-projection delivery states, and exact local charge totals. recovery_actions names the concrete steps that would clear the current condition. A rejected BYOK override never silently falls back to platform supply.
Checkfu support posture: preview; rollout_fenced. Required evidence journey: platform-supply-billing. Deployment-specific readiness and the latest proven release are available from GET /v1/support/capabilities.
curl --request GET \
--url https://api.checkfu.com/v1/billing/status \
--header 'Authorization: Bearer <token>' \
--header 'checkfu-version: <checkfu-version>'import requests
url = "https://api.checkfu.com/v1/billing/status"
headers = {
"checkfu-version": "<checkfu-version>",
"Authorization": "Bearer <token>"
}
response = requests.get(url, headers=headers)
print(response.text)const options = {
method: 'GET',
headers: {'checkfu-version': '<checkfu-version>', Authorization: 'Bearer <token>'}
};
fetch('https://api.checkfu.com/v1/billing/status', 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.checkfu.com/v1/billing/status",
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>",
"checkfu-version: <checkfu-version>"
],
]);
$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.checkfu.com/v1/billing/status"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("checkfu-version", "<checkfu-version>")
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.checkfu.com/v1/billing/status")
.header("checkfu-version", "<checkfu-version>")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.checkfu.com/v1/billing/status")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["checkfu-version"] = '<checkfu-version>'
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"organization_id": "<string>",
"workspace_id": "<string>",
"rollout": {
"catalog_visible": true,
"platform_supply_eligible": true,
"usage_projection_enabled": true,
"charging_enabled": true
},
"catalog": {
"kind": "hidden"
},
"commercial": {
"state": "ready",
"current_plan_id": "explore",
"payment_state": "current",
"pooled_credit": {
"granted_microusd": 1,
"remaining_microusd": 1,
"usage_microusd": 1
}
},
"provisioning": {
"local_state": "pending",
"external_state": "pending",
"last_error_code": "<string>"
},
"model_access": {
"binding_id": "<string>",
"source": "workspace_override_configured",
"platform_supply_state": "available",
"provider": "<string>",
"model": "<string>",
"invalid_byok_falls_back": false
},
"builder_seats": {
"authoritative_quantity": 1,
"projection_state": "pending",
"remote_quantity": 1,
"source": "organization_membership"
},
"usage_projections": [
{
"state": "pending",
"count": 1
}
],
"local_usage": {
"charge_count": 1,
"correction_count": 1,
"original_charge": {
"microusd": 123,
"remainder_millionths": 0
},
"correction_delta": {
"microusd": 123,
"remainder_millionths": 0
},
"net_charge": {
"microusd": 123,
"remainder_millionths": 0
},
"dimensions": {
"uncached_input_tokens": 1,
"cached_input_tokens": 1,
"cache_write_input_tokens": 1,
"output_tokens": 1,
"reasoning_output_tokens": 1
}
},
"recovery_actions": [
"add_or_repair_byok"
]
}{
"error": {
"type": "validation.malformed",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#validation-malformed"
}
}{
"error": {
"type": "auth.invalid_key",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-invalid-key"
}
}{
"error": {
"type": "auth.disabled_tenancy",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#auth-disabled-tenancy"
}
}{
"error": {
"type": "budget.exceeded",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#budget-exceeded"
}
}{
"error": {
"type": "runtime.internal",
"message": "<string>",
"more": "https://docs.checkfu.com/reference/errors#runtime-internal"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
2026-08-27 Response
Success
^org_[0-9a-f]{32}$^wrkspc_[0-9a-f]{32}$Show child attributes
Show child attributes
- Option 1
- Option 2
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
add_or_repair_byok, retry_provisioning, update_payment_method, wait_for_projection, contact_support