Get Story Unit usage
curl --request GET \
--url https://api.kitefrost.ai/v1/billing/su-usageimport requests
url = "https://api.kitefrost.ai/v1/billing/su-usage"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.kitefrost.ai/v1/billing/su-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.kitefrost.ai/v1/billing/su-usage",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.kitefrost.ai/v1/billing/su-usage"
req, _ := http.NewRequest("GET", url, nil)
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.kitefrost.ai/v1/billing/su-usage")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kitefrost.ai/v1/billing/su-usage")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"period_start": "2026-03-01T00:00:00Z",
"story_units_limit": 250,
"story_units_remaining": 237.5,
"story_units_used": 12.5,
"tier": "pro"
}{
"error": "Forbidden",
"code": "forbidden",
"request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"message": "Your API key does not have the required scope.",
"doc_url": "https://docs.kitefrost.ai/errors/forbidden"
}{
"error": "Not found",
"code": "not_found",
"request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"message": "The requested resource does not exist.",
"doc_url": "https://docs.kitefrost.ai/errors/not_found"
}{
"error": "Internal server error",
"code": "internal_error",
"request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"message": "An unexpected error occurred.",
"doc_url": "https://docs.kitefrost.ai/errors/internal_error"
}billing
Get Story Unit usage
Return Story Unit (SU) usage for the current billing period: units consumed, monthly limit, and units remaining. Enterprise tenants have no limit (story_units_limit and story_units_remaining are null).
GET
/
v1
/
billing
/
su-usage
Get Story Unit usage
curl --request GET \
--url https://api.kitefrost.ai/v1/billing/su-usageimport requests
url = "https://api.kitefrost.ai/v1/billing/su-usage"
response = requests.get(url)
print(response.text)const options = {method: 'GET'};
fetch('https://api.kitefrost.ai/v1/billing/su-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.kitefrost.ai/v1/billing/su-usage",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
]);
$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.kitefrost.ai/v1/billing/su-usage"
req, _ := http.NewRequest("GET", url, nil)
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.kitefrost.ai/v1/billing/su-usage")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.kitefrost.ai/v1/billing/su-usage")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
response = http.request(request)
puts response.read_body{
"period_start": "2026-03-01T00:00:00Z",
"story_units_limit": 250,
"story_units_remaining": 237.5,
"story_units_used": 12.5,
"tier": "pro"
}{
"error": "Forbidden",
"code": "forbidden",
"request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"message": "Your API key does not have the required scope.",
"doc_url": "https://docs.kitefrost.ai/errors/forbidden"
}{
"error": "Not found",
"code": "not_found",
"request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"message": "The requested resource does not exist.",
"doc_url": "https://docs.kitefrost.ai/errors/not_found"
}{
"error": "Internal server error",
"code": "internal_error",
"request_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"message": "An unexpected error occurred.",
"doc_url": "https://docs.kitefrost.ai/errors/internal_error"
}Response
Story Unit usage
Story Unit (SU) usage for the current billing period.
Story Units consumed this billing period
Monthly SU cap for the current tier. Null for enterprise (unlimited).
SU available until period reset. Null for enterprise (unlimited).
Current subscription tier
ISO-8601 start of the current billing period
⌘I