curl --request GET \
--url https://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs', 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://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs",
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://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs"
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://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs")
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{
"data": [
{
"request_id": "req_7f3a9c2b1d4e4f5a8b6c0d1e2f3a4b5c",
"at": "2026-09-11T10:04:12Z",
"method": "GET",
"endpoint": "/v1/episodes/{episode_id}/transcript",
"status": 200,
"duration_ms": 137,
"credits_charged": 1,
"charge_pending": false,
"error_code": null
},
{
"request_id": "req_1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d",
"at": "2026-09-11T10:02:55Z",
"method": "POST",
"endpoint": "/v1/quotes/{quote_id}/confirm",
"status": 200,
"duration_ms": 1840,
"credits_charged": 22,
"charge_pending": true,
"error_code": null
},
{
"request_id": "req_9f8e7d6c5b4a39281706f5e4d3c2b1a0",
"at": "2026-09-11T09:58:01Z",
"method": "POST",
"endpoint": "/v1/transcripts",
"status": 402,
"duration_ms": 88,
"credits_charged": 0,
"charge_pending": false,
"error_code": "payment_required"
}
],
"next_cursor": "eyJzayI6IkxPRyMyMDI2",
"omitted": {
"reason": "refused_at_the_edge",
"message": "Requests refused before they reached the API are not listed here: a key that was not recognized or has been revoked, and requests turned away by the per-minute rate limit. Those are refused at the edge, which authenticates without writing anything, so there is no record of them to show. Everything your key was allowed to run appears above."
}
}{
"error": {
"code": "invalid_request",
"type": "invalid_request",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"retryable": true
}
}{
"error": {
"code": "invalid_request",
"type": "invalid_request",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"retryable": true
}
}{
"error": {
"code": "invalid_request",
"type": "invalid_request",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"retryable": true
}
}{
"error": {
"code": "invalid_request",
"type": "invalid_request",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"retryable": true
}
}The account's recent API requests and what each one cost
One entry per request the account made: when it arrived, the endpoint it called, how it ended, and the credits it was charged. Newest first, paged with limit and cursor.
credits_charged is what was actually spent, never what was held. A request that submits work answers 202 having reserved a ceiling and spent nothing, and its charge is written later, when the job settles — so the figure here starts at 0 and grows as the work lands. It never falls: a reservation that is released is never charged. charge_pending is true for exactly those requests, so a zero that is about to change is distinguishable from a request that was free. Every figure is the same ledger GET /v1/usage reports from, so the two pages cannot disagree about one request.
omitted says what this log cannot show. Requests refused at the edge — an unrecognized or revoked API key, and the per-minute rate limit — never reach the API, and the component that refuses them authenticates with a single read and writes nothing, so no record of them exists. Their absence is stated rather than left to be discovered.
Entries are retained for 30 days and then expire.
curl --request GET \
--url https://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs \
--header 'Authorization: Bearer <token>'import requests
url = "https://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs', 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://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs",
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://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs"
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://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://k8mfogcvz4.execute-api.us-east-1.amazonaws.com/prod/v1/logs")
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{
"data": [
{
"request_id": "req_7f3a9c2b1d4e4f5a8b6c0d1e2f3a4b5c",
"at": "2026-09-11T10:04:12Z",
"method": "GET",
"endpoint": "/v1/episodes/{episode_id}/transcript",
"status": 200,
"duration_ms": 137,
"credits_charged": 1,
"charge_pending": false,
"error_code": null
},
{
"request_id": "req_1a2b3c4d5e6f7a8b9c0d1e2f3a4b5c6d",
"at": "2026-09-11T10:02:55Z",
"method": "POST",
"endpoint": "/v1/quotes/{quote_id}/confirm",
"status": 200,
"duration_ms": 1840,
"credits_charged": 22,
"charge_pending": true,
"error_code": null
},
{
"request_id": "req_9f8e7d6c5b4a39281706f5e4d3c2b1a0",
"at": "2026-09-11T09:58:01Z",
"method": "POST",
"endpoint": "/v1/transcripts",
"status": 402,
"duration_ms": 88,
"credits_charged": 0,
"charge_pending": false,
"error_code": "payment_required"
}
],
"next_cursor": "eyJzayI6IkxPRyMyMDI2",
"omitted": {
"reason": "refused_at_the_edge",
"message": "Requests refused before they reached the API are not listed here: a key that was not recognized or has been revoked, and requests turned away by the per-minute rate limit. Those are refused at the edge, which authenticates without writing anything, so there is no record of them to show. Everything your key was allowed to run appears above."
}
}{
"error": {
"code": "invalid_request",
"type": "invalid_request",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"retryable": true
}
}{
"error": {
"code": "invalid_request",
"type": "invalid_request",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"retryable": true
}
}{
"error": {
"code": "invalid_request",
"type": "invalid_request",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"retryable": true
}
}{
"error": {
"code": "invalid_request",
"type": "invalid_request",
"message": "<string>",
"doc_url": "<string>",
"request_id": "<string>",
"retryable": true
}
}Authorizations
A Cognito access token, issued through the dashboard's own sign-up and sign-in pages (a backend-for-frontend; there is no Cognito Hosted UI) and sent as Authorization: Bearer <jwt>. Dashboard operations require this scheme and cannot be called with an API key, with no exception. GET /v1/usage and GET /v1/limits offered both schemes from 0.8.0; 0.8.1 withdrew that, because the control-plane API serves them alone and its authorizer has no API-key branch. An account_id supplied by the client is ignored; all reads/writes are scoped server-side to the authenticated account.
Query Parameters
Maximum number of items to return.
1 <= x <= 100Opaque pagination cursor from a previous page's next_cursor.
An opaque pagination cursor. Callers must treat it as opaque.
^[A-Za-z0-9_-]{1,512}$Response
One page of the account's recent requests, newest first.
Requests newest first.
100Show child attributes
Show child attributes
An opaque pagination cursor, or null when there is no next page.
^[A-Za-z0-9_-]{1,512}$What this log does not contain, stated in every response including an empty one.
Show child attributes
Show child attributes

