curl --request GET \
--url https://api.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));using RestSharp;
var options = new RestClientOptions("https://api.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
import requests
url = "https://api.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption",
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.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption"
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.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption")
.header("Authorization", "Bearer <token>")
.asString();{
"consumption": 123
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}Get usage consumption for a user within a time window
Returns aggregated usage consumption for a user within the requested time window.
Time precision: from and to are aligned to full-hour boundaries before the underlying usage query is executed. The start of the range is rounded down to the beginning of its hour, and the end of the range is rounded up to the end of its hour. For example, a request for 14:12:35 to 14:12:46 is evaluated as 14:00:00 to 15:00:00.
As a result, from and to do not provide second-level (or even minute-level) precision: a window that does not itself overlap any interaction can still return non-zero usage if the hour(s) containing it do.
Time zone: from and to must be provided in UTC (or with an explicit offset that is converted to UTC). Hour-boundary alignment is performed in UTC. There is no longer a way to align the window to a different time zone.
curl --request GET \
--url https://api.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption \
--header 'Authorization: Bearer <token>'const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));using RestSharp;
var options = new RestClientOptions("https://api.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption");
var client = new RestClient(options);
var request = new RestRequest("");
request.AddHeader("Authorization", "Bearer <token>");
var response = await client.GetAsync(request);
Console.WriteLine("{0}", response.Content);
import requests
url = "https://api.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption",
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.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption"
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.console.corti.app/functions/v1/public/projects/{projectId}/customers/{customerId}/users/{userId}/consumption")
.header("Authorization", "Bearer <token>")
.asString();{
"consumption": 123
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}{
"error": "<string>",
"code": "<string>",
"details": {}
}Authorizations
JWT access token obtained from the /auth/token endpoint.
This
Admin APIis separate from theCorti APIused for speech recognition, text generation, and agentic workflows. Authentication and scope for theAdmin APIuses email-and-password to obtain a bearer token via /auth/token. This token is only used for API administration.
Path Parameters
Unique identifier of your project in the Corti API Console.
To find it, open your project at console.corti.app, go to Settings, and copy the value from the Project ID field.
"consoleproject"
The unique identifier for a Customer
"contosohospital"
The ID of the user
"123e4567-e89b-12d3-a456-426614174000"
Query Parameters
Start of the time range (inclusive), in RFC 3339 / UTC. Rounded down to the start of the containing hour before querying usage data — see the endpoint description for details.
"2026-01-05T00:00:00Z"
End of the time range (inclusive), in RFC 3339 / UTC. Rounded up to the end of the containing hour before querying usage data — see the endpoint description for details.
"2026-01-17T00:00:00Z"
Response
Consumption for the requested user and window
Total credits consumed in the requested window
Was this page helpful?