curl "https://api.lumenfall.ai/v1/requests?limit=5" \
-H "Authorization: Bearer $LUMENFALL_API_KEY"
curl "https://api.lumenfall.ai/v1/requests?created_after=2026-03-01T00:00:00Z&created_before=2026-03-31T23:59:59Z&summary=true" \
-H "Authorization: Bearer $LUMENFALL_API_KEY"
import requests
response = requests.get(
"https://api.lumenfall.ai/v1/requests",
headers={"Authorization": "Bearer your-lumenfall-api-key"},
params={
"limit": 5,
"created_after": "2026-03-01T00:00:00Z",
"summary": "true",
},
)
data = response.json()
for req in data["data"]:
print(f"{req['created_at']} {req['model']} ${req['cost']}")
# Paginate
while data["next_page_url"]:
response = requests.get(
f"https://api.lumenfall.ai{data['next_page_url']}",
headers={"Authorization": "Bearer your-lumenfall-api-key"},
)
data = response.json()
for req in data["data"]:
print(f"{req['created_at']} {req['model']} ${req['cost']}")
const baseUrl = "https://api.lumenfall.ai";
const headers = { Authorization: "Bearer your-lumenfall-api-key" };
let url: string | null = `${baseUrl}/v1/requests?limit=5&summary=true`;
while (url) {
const response = await fetch(url, { headers });
const data = await response.json();
for (const req of data.data) {
console.log(`${req.created_at} ${req.model} $${req.cost}`);
}
url = data.next_page_url ? `${baseUrl}${data.next_page_url}` : null;
}
{
"object": "list",
"data": [
{
"id": "req_2m4jLFHhkN1i4VrVHpjJqCOKlPw",
"object": "request",
"created_at": "2026-03-15T14:32:10.000Z",
"model": "flux-pro",
"modality": "image",
"endpoint": "/openai/v1/images/generations",
"status": "completed",
"cost": 0.045,
"currency": "usd",
"duration_ms": 2340,
"key_id": "test_abc123",
"error_code": null,
"error_message": null,
"session_id": null,
"trace_id": null,
"user": null,
"request_size_bytes": 1024,
"response_size_bytes": 524288
},
{
"id": "req_2m4jKEGfmR8h3UqTGnhHpBNkMOx",
"object": "request",
"created_at": "2026-03-15T14:30:05.000Z",
"model": "gpt-image-1.5",
"modality": "image",
"endpoint": "/openai/v1/images/generations",
"status": "completed",
"cost": 0.02,
"currency": "usd",
"duration_ms": 4120,
"key_id": "test_abc123",
"error_code": null,
"error_message": null,
"session_id": null,
"trace_id": null,
"user": null,
"request_size_bytes": 512,
"response_size_bytes": 1048576
}
],
"next_page_url": "/v1/requests?starting_after=req_2m4jKEGfmR8h3UqTGnhHpBNkMOx&limit=5",
"previous_page_url": null
}
{
"object": "list",
"data": [
{
"id": "req_2m4jLFHhkN1i4VrVHpjJqCOKlPw",
"object": "request",
"created_at": "2026-03-15T14:32:10.000Z",
"model": "flux-pro",
"modality": "image",
"endpoint": "/openai/v1/images/generations",
"status": "completed",
"cost": 0.045,
"currency": "usd",
"duration_ms": 2340,
"key_id": "test_abc123",
"error_code": null,
"error_message": null,
"session_id": null,
"trace_id": null,
"user": null,
"request_size_bytes": 1024,
"response_size_bytes": 524288
}
],
"next_page_url": "/v1/requests?starting_after=req_2m4jLFHhkN1i4VrVHpjJqCOKlPw&limit=20&summary=true",
"previous_page_url": null,
"summary": {
"total_cost": 12.34,
"currency": "usd",
"count": 347
}
}
Billing
List requests
Retrieve a paginated list of your API requests with optional filtering and cost summary
GET
/
v1
/
requests
curl "https://api.lumenfall.ai/v1/requests?limit=5" \
-H "Authorization: Bearer $LUMENFALL_API_KEY"
curl "https://api.lumenfall.ai/v1/requests?created_after=2026-03-01T00:00:00Z&created_before=2026-03-31T23:59:59Z&summary=true" \
-H "Authorization: Bearer $LUMENFALL_API_KEY"
import requests
response = requests.get(
"https://api.lumenfall.ai/v1/requests",
headers={"Authorization": "Bearer your-lumenfall-api-key"},
params={
"limit": 5,
"created_after": "2026-03-01T00:00:00Z",
"summary": "true",
},
)
data = response.json()
for req in data["data"]:
print(f"{req['created_at']} {req['model']} ${req['cost']}")
# Paginate
while data["next_page_url"]:
response = requests.get(
f"https://api.lumenfall.ai{data['next_page_url']}",
headers={"Authorization": "Bearer your-lumenfall-api-key"},
)
data = response.json()
for req in data["data"]:
print(f"{req['created_at']} {req['model']} ${req['cost']}")
const baseUrl = "https://api.lumenfall.ai";
const headers = { Authorization: "Bearer your-lumenfall-api-key" };
let url: string | null = `${baseUrl}/v1/requests?limit=5&summary=true`;
while (url) {
const response = await fetch(url, { headers });
const data = await response.json();
for (const req of data.data) {
console.log(`${req.created_at} ${req.model} $${req.cost}`);
}
url = data.next_page_url ? `${baseUrl}${data.next_page_url}` : null;
}
{
"object": "list",
"data": [
{
"id": "req_2m4jLFHhkN1i4VrVHpjJqCOKlPw",
"object": "request",
"created_at": "2026-03-15T14:32:10.000Z",
"model": "flux-pro",
"modality": "image",
"endpoint": "/openai/v1/images/generations",
"status": "completed",
"cost": 0.045,
"currency": "usd",
"duration_ms": 2340,
"key_id": "test_abc123",
"error_code": null,
"error_message": null,
"session_id": null,
"trace_id": null,
"user": null,
"request_size_bytes": 1024,
"response_size_bytes": 524288
},
{
"id": "req_2m4jKEGfmR8h3UqTGnhHpBNkMOx",
"object": "request",
"created_at": "2026-03-15T14:30:05.000Z",
"model": "gpt-image-1.5",
"modality": "image",
"endpoint": "/openai/v1/images/generations",
"status": "completed",
"cost": 0.02,
"currency": "usd",
"duration_ms": 4120,
"key_id": "test_abc123",
"error_code": null,
"error_message": null,
"session_id": null,
"trace_id": null,
"user": null,
"request_size_bytes": 512,
"response_size_bytes": 1048576
}
],
"next_page_url": "/v1/requests?starting_after=req_2m4jKEGfmR8h3UqTGnhHpBNkMOx&limit=5",
"previous_page_url": null
}
{
"object": "list",
"data": [
{
"id": "req_2m4jLFHhkN1i4VrVHpjJqCOKlPw",
"object": "request",
"created_at": "2026-03-15T14:32:10.000Z",
"model": "flux-pro",
"modality": "image",
"endpoint": "/openai/v1/images/generations",
"status": "completed",
"cost": 0.045,
"currency": "usd",
"duration_ms": 2340,
"key_id": "test_abc123",
"error_code": null,
"error_message": null,
"session_id": null,
"trace_id": null,
"user": null,
"request_size_bytes": 1024,
"response_size_bytes": 524288
}
],
"next_page_url": "/v1/requests?starting_after=req_2m4jLFHhkN1i4VrVHpjJqCOKlPw&limit=20&summary=true",
"previous_page_url": null,
"summary": {
"total_cost": 12.34,
"currency": "usd",
"count": 347
}
}
Returns a paginated list of API requests for your organization, sorted newest first.
This endpoint uses the native Lumenfall API path (
/v1/requests), not the OpenAI-compatible prefix (/openai/v1).Query parameters
Number of results to return per page. Minimum 1, maximum 100.
Cursor for forward pagination. Returns results older than the request with this ID.
Use the
next_page_url from a previous response instead of constructing this manually.Cursor for backward pagination. Returns results newer than the request with this ID.
Cannot be combined with
starting_after.Filter to requests created at or after this time. ISO 8601 datetime (e.g.,
2026-03-01T00:00:00Z).Filter to requests created at or before this time. ISO 8601 datetime (e.g.,
2026-03-31T23:59:59Z).Filter to requests made with a specific API key ID. You can retrieve your key IDs from the List API keys endpoint.
Filter to requests with a specific status. Accepts a single value:
completed, pending, processing, upstream_failure, rejected, or cancelled. Matches the status field on each request object.When
true, includes a summary object with the total cost and count of all matching requests (not just the current page).Response
Always
list.Array of request objects, sorted newest first.
Show Request object
Show Request object
Unique request identifier (e.g.,
req_2m4jLFHhkN1i4VrVHpjJqCOKlPw).Always
request.When the request started, as an ISO 8601 datetime.
The model used (e.g.,
flux-pro, gpt-image-1.5).The request modality -
image, video, speech, or vision.The API endpoint path (e.g.,
/openai/v1/images/generations).Request status -
completed, pending, processing, upstream_failure, rejected, or cancelled.Request cost in USD (e.g.,
0.045).Always
usd.Total response time in milliseconds.
The API key ID used for this request.
Error code if the request failed (e.g.,
ALL_PROVIDERS_EXHAUSTED).Human-readable error message if the request failed.
Caller-provided session ID for grouping related requests.
Trace ID extracted from the W3C
traceparent header.End user identifier from the request body.
Size of the request body in bytes.
Size of the response body in bytes.
URL to fetch the next page of results.
null when there are no more results.
Includes all original filters so you can follow it directly.URL to fetch the previous page of results.
null when on the first page.curl "https://api.lumenfall.ai/v1/requests?limit=5" \
-H "Authorization: Bearer $LUMENFALL_API_KEY"
curl "https://api.lumenfall.ai/v1/requests?created_after=2026-03-01T00:00:00Z&created_before=2026-03-31T23:59:59Z&summary=true" \
-H "Authorization: Bearer $LUMENFALL_API_KEY"
import requests
response = requests.get(
"https://api.lumenfall.ai/v1/requests",
headers={"Authorization": "Bearer your-lumenfall-api-key"},
params={
"limit": 5,
"created_after": "2026-03-01T00:00:00Z",
"summary": "true",
},
)
data = response.json()
for req in data["data"]:
print(f"{req['created_at']} {req['model']} ${req['cost']}")
# Paginate
while data["next_page_url"]:
response = requests.get(
f"https://api.lumenfall.ai{data['next_page_url']}",
headers={"Authorization": "Bearer your-lumenfall-api-key"},
)
data = response.json()
for req in data["data"]:
print(f"{req['created_at']} {req['model']} ${req['cost']}")
const baseUrl = "https://api.lumenfall.ai";
const headers = { Authorization: "Bearer your-lumenfall-api-key" };
let url: string | null = `${baseUrl}/v1/requests?limit=5&summary=true`;
while (url) {
const response = await fetch(url, { headers });
const data = await response.json();
for (const req of data.data) {
console.log(`${req.created_at} ${req.model} $${req.cost}`);
}
url = data.next_page_url ? `${baseUrl}${data.next_page_url}` : null;
}
{
"object": "list",
"data": [
{
"id": "req_2m4jLFHhkN1i4VrVHpjJqCOKlPw",
"object": "request",
"created_at": "2026-03-15T14:32:10.000Z",
"model": "flux-pro",
"modality": "image",
"endpoint": "/openai/v1/images/generations",
"status": "completed",
"cost": 0.045,
"currency": "usd",
"duration_ms": 2340,
"key_id": "test_abc123",
"error_code": null,
"error_message": null,
"session_id": null,
"trace_id": null,
"user": null,
"request_size_bytes": 1024,
"response_size_bytes": 524288
},
{
"id": "req_2m4jKEGfmR8h3UqTGnhHpBNkMOx",
"object": "request",
"created_at": "2026-03-15T14:30:05.000Z",
"model": "gpt-image-1.5",
"modality": "image",
"endpoint": "/openai/v1/images/generations",
"status": "completed",
"cost": 0.02,
"currency": "usd",
"duration_ms": 4120,
"key_id": "test_abc123",
"error_code": null,
"error_message": null,
"session_id": null,
"trace_id": null,
"user": null,
"request_size_bytes": 512,
"response_size_bytes": 1048576
}
],
"next_page_url": "/v1/requests?starting_after=req_2m4jKEGfmR8h3UqTGnhHpBNkMOx&limit=5",
"previous_page_url": null
}
{
"object": "list",
"data": [
{
"id": "req_2m4jLFHhkN1i4VrVHpjJqCOKlPw",
"object": "request",
"created_at": "2026-03-15T14:32:10.000Z",
"model": "flux-pro",
"modality": "image",
"endpoint": "/openai/v1/images/generations",
"status": "completed",
"cost": 0.045,
"currency": "usd",
"duration_ms": 2340,
"key_id": "test_abc123",
"error_code": null,
"error_message": null,
"session_id": null,
"trace_id": null,
"user": null,
"request_size_bytes": 1024,
"response_size_bytes": 524288
}
],
"next_page_url": "/v1/requests?starting_after=req_2m4jLFHhkN1i4VrVHpjJqCOKlPw&limit=20&summary=true",
"previous_page_url": null,
"summary": {
"total_cost": 12.34,
"currency": "usd",
"count": 347
}
}
⌘I