curl --request GET \
--url https://api.qumo-deploy.com/v1/billing/export \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qumo-deploy.com/v1/billing/export"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.qumo-deploy.com/v1/billing/export', 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.qumo-deploy.com/v1/billing/export",
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.qumo-deploy.com/v1/billing/export"
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.qumo-deploy.com/v1/billing/export")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qumo-deploy.com/v1/billing/export")
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_bodyTimestamp,Project ID,Project Name,Metric,Amount,Environment,Unit,API Key ID
2026-10-31T23:00:00Z,9b1d6e2f-4a3c-4f8b-a7e5-0c9d2b4f6e81,live-events,gateway.egress_bytes,52428800,prod,count,n/a{
"error": "organization_id is required"
}{
"error": "organization_id is required"
}{
"error": "organization_id is required"
}Export usage as CSV
Downloads the organization’s usage between from and to as a CSV file,
newest first, one row per project, metric and time bucket. The range may
span at most 366 days.
curl --request GET \
--url https://api.qumo-deploy.com/v1/billing/export \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.qumo-deploy.com/v1/billing/export"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.qumo-deploy.com/v1/billing/export', 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.qumo-deploy.com/v1/billing/export",
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.qumo-deploy.com/v1/billing/export"
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.qumo-deploy.com/v1/billing/export")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.qumo-deploy.com/v1/billing/export")
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_bodyTimestamp,Project ID,Project Name,Metric,Amount,Environment,Unit,API Key ID
2026-10-31T23:00:00Z,9b1d6e2f-4a3c-4f8b-a7e5-0c9d2b4f6e81,live-events,gateway.egress_bytes,52428800,prod,count,n/a{
"error": "organization_id is required"
}{
"error": "organization_id is required"
}{
"error": "organization_id is required"
}Authorizations
A personal access token (POST /v1/auth/tokens) or a machine
identity token (POST /v1/projects/{project_id}/identities/{identity_id}/tokens),
both prefixed qumo_pat_. A token's scopes cap what it can do; see
Scopes and permissions. A personal
token names no organization: on a route whose path names no project or
organization, pass ?organization_id=.
Query Parameters
The organization the request acts in. Required with a personal token or a session, which name no organization themselves; an identity token's organization is implied.
Start of the range (inclusive), RFC 3339.
End of the range (exclusive), RFC 3339. Must not be before from.
Response
The usage rows as CSV, sent as an attachment named
usage_export_<from>_<to>.csv. The header row is Timestamp, Project ID, Project Name, Metric, Amount, Environment, Unit, API Key ID. API keys were removed: API Key ID is n/a except on rows
recorded under a key before then.
The response is of type string.