List usage invoices
curl --request GET \
--url https://api.sidenet.ai/v1/billing/invoices \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sidenet.ai/v1/billing/invoices"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sidenet.ai/v1/billing/invoices', 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.sidenet.ai/v1/billing/invoices",
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.sidenet.ai/v1/billing/invoices"
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.sidenet.ai/v1/billing/invoices")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sidenet.ai/v1/billing/invoices")
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{
"invoices": [
{
"id": "61",
"period_start": "2026-10-01",
"period_end": "2026-11-01",
"status": "open",
"opening_balance": 259.73,
"credits_added": 100,
"consumed": 41.27,
"closing_balance": 318.46,
"request_count": null,
"by_group": [
{
"id": "grp_84f20c19",
"name": "Acme — production",
"for_scorers": false,
"consumed": 38.1
},
{
"id": null,
"name": "Scorers",
"for_scorers": true,
"consumed": 3.17
}
],
"closed_at": null,
"finalized_at": null
},
{
"id": "57",
"period_start": "2026-09-01",
"period_end": "2026-10-01",
"status": "finalized",
"opening_balance": 97.23,
"credits_added": 250,
"consumed": 87.5,
"closing_balance": 259.73,
"request_count": 1412,
"by_group": [
{
"id": "grp_84f20c19",
"name": "Acme — production",
"for_scorers": false,
"consumed": 87.5
}
],
"closed_at": "2026-10-01T00:05:02.118Z",
"finalized_at": "2026-10-08T00:20:01.550Z"
}
]
}Billing
List usage invoices
The organization’s monthly usage statements, newest first: one per UTC calendar month, opened with the balance carried in and closed with the balance carried out, with the month’s consumption broken down per group. The current month is open — its figures are live and keep moving until the month closes.
Requires your organization API key, from your backend.
GET
/
v1
/
billing
/
invoices
List usage invoices
curl --request GET \
--url https://api.sidenet.ai/v1/billing/invoices \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.sidenet.ai/v1/billing/invoices"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.sidenet.ai/v1/billing/invoices', 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.sidenet.ai/v1/billing/invoices",
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.sidenet.ai/v1/billing/invoices"
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.sidenet.ai/v1/billing/invoices")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.sidenet.ai/v1/billing/invoices")
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{
"invoices": [
{
"id": "61",
"period_start": "2026-10-01",
"period_end": "2026-11-01",
"status": "open",
"opening_balance": 259.73,
"credits_added": 100,
"consumed": 41.27,
"closing_balance": 318.46,
"request_count": null,
"by_group": [
{
"id": "grp_84f20c19",
"name": "Acme — production",
"for_scorers": false,
"consumed": 38.1
},
{
"id": null,
"name": "Scorers",
"for_scorers": true,
"consumed": 3.17
}
],
"closed_at": null,
"finalized_at": null
},
{
"id": "57",
"period_start": "2026-09-01",
"period_end": "2026-10-01",
"status": "finalized",
"opening_balance": 97.23,
"credits_added": 250,
"consumed": 87.5,
"closing_balance": 259.73,
"request_count": 1412,
"by_group": [
{
"id": "grp_84f20c19",
"name": "Acme — production",
"for_scorers": false,
"consumed": 87.5
}
],
"closed_at": "2026-10-01T00:05:02.118Z",
"finalized_at": "2026-10-08T00:20:01.550Z"
}
]
}