Budget & Spend Tracking

Ui View Spend Logs

View spend logs with pagination support. Available at both /spend/logs/v2 (public API) and /spend/logs/ui (internal UI).

Returns paginated response with data, total, page, page_size, and total_pages.

Example:

curl -X GET "http://0.0.0.0:8000/spend/logs/v2?start_date=2025-11-25%2000:00:00&end_date=2025-11-26%2023:59:59&page=1&page_size=50" -H "Authorization: Bearer sk-1234"
get/spend/logs/v2

Query parameters

api_keystring nullable

Get spend logs based on api key

Get spend logs based on api key

user_idstring nullable

Get spend logs based on user_id

Get spend logs based on user_id

request_idstring nullable

request_id to get spend logs for specific request_id

request_id to get spend logs for specific request_id

session_idstring nullable

Filter spend logs by session_id (partial string match)

Filter spend logs by session_id (partial string match)

team_idstring nullable

Filter spend logs by team_id

Filter spend logs by team_id

min_spendnumber nullable

Filter logs with spend greater than or equal to this value

Filter logs with spend greater than or equal to this value

max_spendnumber nullable

Filter logs with spend less than or equal to this value

Filter logs with spend less than or equal to this value

start_datestring nullable

Time from which to start viewing key spend

Time from which to start viewing key spend

end_datestring nullable

Time till which to view key spend

Time till which to view key spend

pageinteger

Page number for pagination

Page number for pagination

page_sizeinteger

Number of items per page

Number of items per page

status_filterstring nullable

Filter logs by status (e.g., success, failure)

Filter logs by status (e.g., success, failure)

cache_hit_filterstring nullable

Filter logs by cache state: 'hit' or 'miss'. Miss includes legacy rows with a null/unknown cache state

Filter logs by cache state: 'hit' or 'miss'. Miss includes legacy rows with a null/unknown cache state

modelstring nullable

Filter logs by model

Filter logs by model

model_idstring nullable

Filter logs by model ID (litellm model deployment id)

Filter logs by model ID (litellm model deployment id)

model_groupstring nullable

Filter logs by model group

Filter logs by model group

key_aliasstring nullable

Filter logs by key alias

Filter logs by key alias

end_userstring nullable

Filter logs by end user

Filter logs by end user

error_codestring nullable

Filter logs by error code (e.g., '404', '500')

Filter logs by error code (e.g., '404', '500')

error_messagestring nullable

Filter logs by error message (partial string match)

Filter logs by error message (partial string match)

sort_bystring

Sort logs by field: spend, total_tokens, startTime, endTime, request_duration_ms, model, or ttft_ms

Sort logs by field: spend, total_tokens, startTime, endTime, request_duration_ms, model, or ttft_ms

sort_orderstring nullable

Sort order: asc or desc

Sort order: asc or desc

exclude_internal_health_checksboolean

Exclude LiteLLM internal health check requests from results

Exclude LiteLLM internal health check requests from results

group_by_sessionboolean

Paginate over sessions instead of raw logs: one representative row per session, total counts sessions

Paginate over sessions instead of raw logs: one representative row per session, total counts sessions

session_cursorstring nullable

Keyset cursor '<last_activity>|<api_key>|<session_key>' from a previous group_by_session page. UI route only, honored when sorting by startTime

Keyset cursor '<last_activity>|<api_key>|<session_key>' from a previous group_by_session page. UI route only, honored when sorting by startTime

searchstring nullable

Match a log whose request_id, api_key (hash), team_id, user, end_user, session_id, or model_id equals this value. request_id matches across all time; the other columns match inside start_date/end_date, which stay required

Match a log whose request_id, api_key (hash), team_id, user, end_user, session_id, or model_id equals this value. request_id matches across all time; the other columns match inside start_date/end_date, which stay required

Response

Successful Response

object required

Changes