Skip to main content
GET
List LLM calls
Use this endpoint to retrieve the LLM call ledger for a project. The response contains one record for each individual LLM call, including details such as the model, provider, token usage, latency, and cost. The endpoint does not aggregate calls by conversation turn. Use the dataMode parameter to control the level of detail returned. The default mode returns call-level facts, while full additionally includes the exact prompt and response payloads when available. The available filtering criteria are:
  • Date range — required: fromDate and toDate. fromDate is inclusive, while toDate is exclusive.
  • Source: Filter by the source of the LLM call.
  • Source subtype: Further filter calls by source subtype.
  • Model: Filter calls by the LLM model.
  • Provider: Filter calls by the model provider.
  • Other query parameters: The endpoint also supports pagination and sorting, but these control how results are returned rather than which records are included.

Authorizations

x-api-key
string
header
required

Project-bound API key. Do not send an Authorization header.

Path Parameters

projectId
string
required
Minimum string length: 1

Query Parameters

fromDate
string<date-time>
required
toDate
string<date-time>
required
limit
integer
default:100

How many calls to return. When dataMode=full, a page may come back with fewer rows than requested so the response stays within the 1 MiB size limit — check hasMore rather than assuming a short page is the last one.

Required range: 1 <= x <= 10000
offset
integer
default:0
Required range: x >= 0
sessionIds
string[]

Filter to specific sessions. Pass up to 10,000 session IDs, comma-separated or by repeating the parameter.

Maximum array length: 10000
Minimum string length: 1
channel
enum<string>

Filter by the channel the conversation took place on. Design-time calls, such as Studio test calls, are not tied to a channel and will not match any channel filter.

Matched exactly as stored, with no alias handling. Unlike the sessions endpoint, shorthand such as web or sms is not expanded here — use the exact channel name such as web_chat or twilio_sms.

Not restricted to a fixed list, so an unrecognised value returns no results rather than an error. Cannot be empty (400 INVALID_FILTER).

Available options:
http_async,
slack,
line,
msteams,
whatsapp,
messenger,
instagram,
twilio_sms,
zendesk,
telegram,
genesys,
genesys_open_messaging,
ai4w,
kore_agent_assist,
email,
voice_vxml,
korevg,
audiocodes,
genesys_audio_connector,
voice_pipeline,
voice_realtime,
voice,
voice_twilio,
voice_livekit,
ag_ui,
a2a,
sdk_websocket,
web_debug,
web_chat,
api,
http
source
enum<string>

Filter by which part of the platform made the call — for example runtime for live agent traffic, or evals for evaluation runs.

You can pass either the current name or an older one; the older spellings listed under x-alias-groups are translated for you, and matching is case-insensitive with - and spaces treated as _. So agent_session finds the same calls as runtime.

Not restricted to a fixed list, so an unrecognised value returns no results rather than an error. Cannot be empty (400 INVALID_FILTER).

Available options:
runtime,
runtime_internal,
arch,
evals,
pipelines,
guardrails,
knowledge,
studio_test_calls,
channels,
agent_session,
eval,
analytics_pipeline,
analytics_query,
guardrail,
search_ai,
prompt_library,
model_health,
model_admin,
health:credential-store,
sdk_widget_localization
sourceSubtype
enum<string>

Filter by the specific purpose of the call within its source — for example response_generation for replies to users, or guardrails for safety checks.

Older spellings are translated for you, as listed under x-alias-groups. If you also pass source, translation is limited to that source's subtypes; on its own, subtype names are resolved across all sources.

Not restricted to a fixed list, so an unrecognised value returns no results rather than an error. Cannot be empty (400 INVALID_FILTER).

Available options:
response_generation,
conversation_history_compaction,
ner_gather_llm_extraction,
model_based_pii_entity_recognizer,
model_entity_preview,
llm_backed_validation,
searchai_kb_query_intelligence,
searchai_query_assistance,
routing_pipeline,
pipeline_classifier,
pipeline_tool_filter,
pipeline_merge,
contextual_filler_generation,
tool_result_summarization,
sip_handoff_summary,
semantic_execution,
legacy_nlu_fallback,
general_assistance,
project_assistance,
eval_remediation,
evaluation_suite_generation,
natural_language_analytics_query,
text_to_sql,
guardrails,
studio_test_calls,
widget_copy_translation,
tool_use_iteration,
response_gen,
realtime_response,
conversation_compaction,
nlu_entity_extraction,
kb_classify_rewrite,
field_validation,
agent_building,
eval_suite_creation,
eval_design_time_asset_generation,
nl_to_sql,
nl_query,
query_intelligence,
prompt_test,
prompt_experiment,
credential_health_check,
translation_generation
status
enum<string>

Filter to successful or failed calls. Any other value is rejected with 400 INVALID_STATUS.

Available options:
success,
failed
model
string

Filter by model, using the exact model id as recorded, such as gpt-4o. There is no fixed list, because each tenant can register its own models. Calls recorded without a model id appear as unknown and can be found with model=unknown. Cannot be empty (400 INVALID_FILTER).

Minimum string length: 1
provider
string

Filter by model provider, such as openai or azure. Calls recorded without a provider appear as unknown and can be found with provider=unknown.

Not restricted to a fixed list, so an unrecognised value returns no results rather than an error. The values below are the providers the platform can call. Cannot be empty (400 INVALID_FILTER).

Minimum string length: 1
environment
enum<string>

Filter by environment. Note that this endpoint stores development rather than dev — unlike the sessions endpoint, which uses dev. Design-time calls, such as Studio test calls, are not tied to an environment and will not match this filter.

Matched exactly as stored. Not restricted to a fixed list, so an unrecognised value returns no results rather than an error. Cannot be empty (400 INVALID_FILTER).

Available options:
development,
staging,
production,
working-copy
name
string

Exact effective agent name, operation type, or provider fallback.

Minimum string length: 1
channelType
enum<string>

Exact transport-specific channel type.

Available options:
http_async,
slack,
line,
msteams,
whatsapp,
messenger,
instagram,
twilio_sms,
zendesk,
telegram,
genesys,
genesys_open_messaging,
ai4w,
kore_agent_assist,
email,
voice_vxml,
korevg,
audiocodes,
genesys_audio_connector,
voice_pipeline,
voice_realtime,
voice,
voice_twilio,
voice_livekit,
ag_ui,
a2a,
sdk_websocket,
web_debug,
web_chat,
api,
http
attributionName
string

Display name of the credential, auth profile or other source the call is attributed to. Matched case-insensitively against the name after trimming. When the name matches more than one source, all of them are included and the response carries attributionMatch.

Minimum string length: 1
attributionType
string

Exact attribution type recorded on the call, for example credential or auth_profile.

Minimum string length: 1
attributionId
string

Exact attribution ID recorded on the call. Combine with attributionType to select one credential or auth profile.

Minimum string length: 1
attributionScope
string

Exact attribution scope recorded on the call.

Minimum string length: 1
dataMode
enum<string>
default:summary

How much detail to return per call. summary returns the facts about each call. full also includes the prompt sent and the response received, under payload, where these were stored.

Available options:
summary,
full
sortBy
enum<string>
default:timestamp
Available options:
timestamp,
latencyMs,
cost,
totalTokens
sortOrder
enum<string>
default:asc
Available options:
asc,
desc

Response

LLM ledger page returned successfully.

success
boolean
required

Always true on a successful response.

statusCode
integer
required

HTTP status code returned by the provider — 200 when the call succeeded.

total
integer
required

Total number of calls matching your filters, across all pages.

Required range: x >= 0
limit
integer
required

The page size applied to this response.

Required range: 1 <= x <= 10000
offset
integer
required

The offset applied to this response.

Required range: x >= 0
dataMode
enum<string>
required

The detail level applied to this response, echoing your request.

Available options:
summary,
full
hasMore
boolean
required

Whether more pages are available after this one.

generations
object[]
required

The LLM calls on this page.

attributionMatch
object

Present only when an attributionName filter matched more than one source.