curl --request POST \
--url https://{host}/api/public/analytics/projects/{projectId}/llm-ledger \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"fromDate": "2026-08-01T00:00:00.000Z",
"toDate": "2026-08-02T00:00:00.000Z",
"status": "failed",
"dataMode": "summary",
"sortBy": "timestamp",
"sortOrder": "desc",
"limit": 50,
"offset": 0
}
'{
"protected": "eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIiwia2lkIjoiNjZmN2ExYzJlNGIwYTFkMmMzZTRmNWE2IiwicGtmIjoiYTk1YWRiNGE2NTAwOTdmMzk1YTcyZDE0M2M4OGFjZmYxZDdmNzE3OTlkYzZmNDFiNjhiZDU5YmQzMGI1Mjc0MiJ9",
"encrypted_key": "CYZa0douXIvcxdFpLN93tTs84XAkpHSBv9cCmiIoL7NgSdIhH3zn31vC0pnzWSKzIlZzrAPOQSRj7DNYY1wUM7q66HqYLeB0Z4fQaJ-WRpTNoP4i7rO-EB4lSQTMo8hm0gPFIY1QuiMv5QBVqqYMpyE32keFnj_JjC3YIN9QwyvyDScEbJ6nCqG9etkkpS_yHBRDP7vgtzBWT0MEuE2Xotu4fLV7WHDtNrS5FjpTE6FdaRPHnqs4mFtrmJaGWZzBdp5ssIffrS8OzXPo-eAW9NIZzzY3LnrNm0LeC5Rke9SBRh-EhP7ggHv_GlhM13v8d-qfFjeD15CIRZTU5UmnIA",
"iv": "N2dEX08LzFPtTZiA",
"ciphertext": "nZsJoUJj3bjdddpTOa--ww",
"tag": "OUVK4WI9pnx0vPxB5dxZNg"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}List LLM calls using JWE payload
POST form of GET on this path. It accepts the same parameters as a flat JSON
body (LlmLedgerQueryBody) instead of a query string, and returns the same response.
Use it when the request parameters must be encrypted. See “Sending parameters
in a POST body” and “Payload encryption” in the API description.
- Request encryption off: send
LlmLedgerQueryBodyasapplication/json. - Request encryption on: send the same object encrypted as an
EncryptedRequest, preferably asapplication/jose+json. - Response encryption on: every response except
401is anEncryptedResponsewithX-ABL-Encrypted: true.
curl --request POST \
--url https://{host}/api/public/analytics/projects/{projectId}/llm-ledger \
--header 'Content-Type: application/json' \
--header 'x-api-key: <api-key>' \
--data '
{
"fromDate": "2026-08-01T00:00:00.000Z",
"toDate": "2026-08-02T00:00:00.000Z",
"status": "failed",
"dataMode": "summary",
"sortBy": "timestamp",
"sortOrder": "desc",
"limit": 50,
"offset": 0
}
'{
"protected": "eyJhbGciOiJSU0EtT0FFUC0yNTYiLCJlbmMiOiJBMjU2R0NNIiwia2lkIjoiNjZmN2ExYzJlNGIwYTFkMmMzZTRmNWE2IiwicGtmIjoiYTk1YWRiNGE2NTAwOTdmMzk1YTcyZDE0M2M4OGFjZmYxZDdmNzE3OTlkYzZmNDFiNjhiZDU5YmQzMGI1Mjc0MiJ9",
"encrypted_key": "CYZa0douXIvcxdFpLN93tTs84XAkpHSBv9cCmiIoL7NgSdIhH3zn31vC0pnzWSKzIlZzrAPOQSRj7DNYY1wUM7q66HqYLeB0Z4fQaJ-WRpTNoP4i7rO-EB4lSQTMo8hm0gPFIY1QuiMv5QBVqqYMpyE32keFnj_JjC3YIN9QwyvyDScEbJ6nCqG9etkkpS_yHBRDP7vgtzBWT0MEuE2Xotu4fLV7WHDtNrS5FjpTE6FdaRPHnqs4mFtrmJaGWZzBdp5ssIffrS8OzXPo-eAW9NIZzzY3LnrNm0LeC5Rke9SBRh-EhP7ggHv_GlhM13v8d-qfFjeD15CIRZTU5UmnIA",
"iv": "N2dEX08LzFPtTZiA",
"ciphertext": "nZsJoUJj3bjdddpTOa--ww",
"tag": "OUVK4WI9pnx0vPxB5dxZNg"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>",
"details": {}
},
"success": false,
"message": "<string>",
"required": "<string>"
}POST endpoint when the request parameters must be encrypted. When request encryption is enabled for the Platform Key, send the LlmLedgerQueryBody as an encrypted JWE. When response encryption is enabled, the endpoint also returns the response as an encrypted JWE, including error responses after the API key has been authenticated.
The endpoint returns individual LLM calls rather than aggregating calls by conversation turn. You can use dataMode to return either call-level details or, with full, the stored prompt and response payloads when available.Authorizations
Project-bound API key. Do not send an Authorization header.
Path Parameters
1Body
- Option 1
- Option 2
POST form of the GET query parameters: a flat JSON object whose keys are the
GET query parameter names. For a Platform Key with request encryption on, send
this object encrypted as an EncryptedRequest instead.
Same as the fromDate query parameter of the GET operation.
Same as the toDate query parameter of the GET operation.
Same as the limit query parameter of the GET operation.
1 <= x <= 10000Same as the offset query parameter of the GET operation.
x >= 0Same as the sessionIds query parameter of the GET operation. Send a JSON array, or a comma-separated string as in the query string.
100001Same as the channel query parameter of the GET operation.
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 Same as the source query parameter of the GET operation.
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 Same as the sourceSubtype query parameter of the GET operation.
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 Same as the status query parameter of the GET operation.
success, failed Same as the model query parameter of the GET operation.
1Same as the provider query parameter of the GET operation.
1Same as the environment query parameter of the GET operation.
development, staging, production, working-copy Same as the name query parameter of the GET operation.
1Same as the channelType query parameter of the GET operation.
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 Same as the attributionName query parameter of the GET operation.
1Same as the attributionType query parameter of the GET operation.
1Same as the attributionId query parameter of the GET operation.
1Same as the attributionScope query parameter of the GET operation.
1Same as the dataMode query parameter of the GET operation.
summary, full Same as the sortBy query parameter of the GET operation.
timestamp, latencyMs, cost, totalTokens Same as the sortOrder query parameter of the GET operation.
asc, desc Response
LLM ledger page returned successfully (same body as the GET form).
- Option 1
- Option 2
Always true on a successful response.
HTTP status code returned by the provider — 200 when the call succeeded.
Total number of calls matching your filters, across all pages.
x >= 0The page size applied to this response.
1 <= x <= 10000The offset applied to this response.
x >= 0The detail level applied to this response, echoing your request.
summary, full Whether more pages are available after this one.
The LLM calls on this page.
Show child attributes
Show child attributes
Present only when an attributionName filter matched more than one source.
Show child attributes
Show child attributes
Was this page helpful?