{ "/spend/calculate": { "post": { "tags": [ "Budget & Spend Tracking" ], "summary": "Calculate Spend", "description": "Accepts all the params of completion_cost.\n\nCalculate spend **before** making call:\n\nNote: If you see a spend of $0.0 you need to set custom_pricing for your model: https://docs.litellm.ai/docs/proxy/custom_pricing\n\n```\ncurl --location 'http://localhost:4000/spend/calculate'\n--header 'Authorization: Bearer sk-1234'\n--header 'Content-Type: application/json'\n--data '{\n \"model\": \"anthropic.claude-v2\",\n \"messages\": [{\"role\": \"user\", \"content\": \"Hey, how'''s it going?\"}]\n}'\n```\n\nCalculate spend **after** making call:\n\n```\ncurl --location 'http://localhost:4000/spend/calculate'\n--header 'Authorization: Bearer sk-1234'\n--header 'Content-Type: application/json'\n--data '{\n \"completion_response\": {\n \"id\": \"chatcmpl-123\",\n \"object\": \"chat.completion\",\n \"created\": 1677652288,\n \"model\": \"gpt-3.5-turbo-0125\",\n \"system_fingerprint\": \"fp_44709d6fcb\",\n \"choices\": [{\n \"index\": 0,\n \"message\": {\n \"role\": \"assistant\",\n \"content\": \"Hello there, how may I assist you today?\"\n },\n \"logprobs\": null,\n \"finish_reason\": \"stop\"\n }]\n \"usage\": {\n \"prompt_tokens\": 9,\n \"completion_tokens\": 12,\n \"total_tokens\": 21\n }\n }\n}'\n```", "operationId": "calculate_spend_spend_calculate_post", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SpendCalculateRequest" } } }, "required": true }, "responses": { "200": { "description": "The calculated cost", "content": { "application/json": { "schema": { "properties": { "cost": { "type": "number", "description": "The calculated cost", "example": 0.0 } }, "type": "object" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } }, "security": [ { "APIKeyHeader": [] } ] } }, "/spend/logs": { "get": { "tags": [ "Budget & Spend Tracking" ], "summary": "View Spend Logs", "description": "[DEPRECATED] This endpoint is not paginated and can cause performance issues.\nPlease use `/spend/logs/v2` instead for paginated access to spend logs.\n\nView all spend logs, if request_id is provided, only logs for that request_id will be returned\n\nWhen start_date and end_date are provided:\n- summarize=true (default): Returns aggregated spend data grouped by date (maintains backward compatibility)\n- summarize=false: Returns filtered individual log entries within the date range\n\nExample Request for all logs\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/logs\" -H \"Authorization: Bearer sk-1234\"\n```\n\nExample Request for specific request_id\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/logs?request_id=chatcmpl-6dcb2540-d3d7-4e49-bb27-291f863f112e\" -H \"Authorization: Bearer sk-1234\"\n```\n\nExample Request for specific api_key\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/logs?api_key=sk-test-example-key-123\" -H \"Authorization: Bearer sk-1234\"\n```\n\nExample Request for specific user_id\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/logs?user_id=ishaan@berri.ai\" -H \"Authorization: Bearer sk-1234\"\n```\n\nExample Request for date range with individual logs (unsummarized)\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/logs?start_date=2024-01-01&end_date=2024-01-02&summarize=false\" -H \"Authorization: Bearer sk-1234\"\n```", "operationId": "view_spend_logs_spend_logs_get", "security": [ { "APIKeyHeader": [] } ], "parameters": [ { "name": "api_key", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Get spend logs based on api key", "title": "Api Key" }, "description": "Get spend logs based on api key" }, { "name": "user_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Get spend logs based on user_id", "title": "User Id" }, "description": "Get spend logs based on user_id" }, { "name": "request_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "request_id to get spend logs for specific request_id. If none passed then pass spend logs for all requests", "title": "Request Id" }, "description": "request_id to get spend logs for specific request_id. If none passed then pass spend logs for all requests" }, { "name": "start_date", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Time from which to start viewing key spend", "title": "Start Date" }, "description": "Time from which to start viewing key spend" }, { "name": "end_date", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Time till which to view key spend", "title": "End Date" }, "description": "Time till which to view key spend" }, { "name": "summarize", "in": "query", "required": false, "schema": { "type": "boolean", "description": "When start_date and end_date are provided, summarize=true returns aggregated data by date (legacy behavior), summarize=false returns filtered individual logs", "default": true, "title": "Summarize" }, "description": "When start_date and end_date are provided, summarize=true returns aggregated data by date (legacy behavior), summarize=false returns filtered individual logs" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LiteLLM_SpendLogs" }, "title": "Response 200 View Spend Logs Spend Logs Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/spend/logs/v2": { "get": { "tags": [ "Budget & Spend Tracking" ], "summary": "Ui View Spend Logs", "description": "View spend logs with pagination support.\nAvailable at both `/spend/logs/v2` (public API) and `/spend/logs/ui` (internal UI).\n\nReturns paginated response with data, total, page, page_size, and total_pages.\n\nExample:\n```\ncurl -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\"\n```", "operationId": "ui_view_spend_logs_spend_logs_v2_get", "security": [ { "APIKeyHeader": [] } ], "parameters": [ { "name": "api_key", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Get spend logs based on api key", "title": "Api Key" }, "description": "Get spend logs based on api key" }, { "name": "user_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Get spend logs based on user_id", "title": "User Id" }, "description": "Get spend logs based on user_id" }, { "name": "request_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "request_id to get spend logs for specific request_id", "title": "Request Id" }, "description": "request_id to get spend logs for specific request_id" }, { "name": "team_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter spend logs by team_id", "title": "Team Id" }, "description": "Filter spend logs by team_id" }, { "name": "min_spend", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Filter logs with spend greater than or equal to this value", "title": "Min Spend" }, "description": "Filter logs with spend greater than or equal to this value" }, { "name": "max_spend", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "number" }, { "type": "null" } ], "description": "Filter logs with spend less than or equal to this value", "title": "Max Spend" }, "description": "Filter logs with spend less than or equal to this value" }, { "name": "start_date", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Time from which to start viewing key spend", "title": "Start Date" }, "description": "Time from which to start viewing key spend" }, { "name": "end_date", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Time till which to view key spend", "title": "End Date" }, "description": "Time till which to view key spend" }, { "name": "page", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "description": "Page number for pagination", "default": 1, "title": "Page" }, "description": "Page number for pagination" }, { "name": "page_size", "in": "query", "required": false, "schema": { "type": "integer", "maximum": 100, "minimum": 1, "description": "Number of items per page", "default": 50, "title": "Page Size" }, "description": "Number of items per page" }, { "name": "status_filter", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter logs by status (e.g., success, failure)", "title": "Status Filter" }, "description": "Filter logs by status (e.g., success, failure)" }, { "name": "model", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter logs by model", "title": "Model" }, "description": "Filter logs by model" }, { "name": "model_id", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter logs by model ID (litellm model deployment id)", "title": "Model Id" }, "description": "Filter logs by model ID (litellm model deployment id)" }, { "name": "key_alias", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter logs by key alias", "title": "Key Alias" }, "description": "Filter logs by key alias" }, { "name": "end_user", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter logs by end user", "title": "End User" }, "description": "Filter logs by end user" }, { "name": "error_code", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter logs by error code (e.g., '404', '500')", "title": "Error Code" }, "description": "Filter logs by error code (e.g., '404', '500')" }, { "name": "error_message", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Filter logs by error message (partial string match)", "title": "Error Message" }, "description": "Filter logs by error message (partial string match)" }, { "name": "sort_by", "in": "query", "required": false, "schema": { "type": "string", "description": "Sort logs by field: spend, total_tokens, startTime, or endTime", "default": "startTime", "title": "Sort By" }, "description": "Sort logs by field: spend, total_tokens, startTime, or endTime" }, { "name": "sort_order", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Sort order: asc or desc", "default": "desc", "title": "Sort Order" }, "description": "Sort order: asc or desc" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "object", "additionalProperties": true, "title": "Response 200 Ui View Spend Logs Spend Logs V2 Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } }, "/spend/tags": { "get": { "tags": [ "Budget & Spend Tracking" ], "summary": "View Spend Tags", "description": "LiteLLM Enterprise - View Spend Per Request Tag\n\nExample Request:\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/tags\" -H \"Authorization: Bearer sk-1234\"\n```\n\nSpend with Start Date and End Date\n```\ncurl -X GET \"http://0.0.0.0:8000/spend/tags?start_date=2022-01-01&end_date=2022-02-01\" -H \"Authorization: Bearer sk-1234\"\n```", "operationId": "view_spend_tags_spend_tags_get", "security": [ { "APIKeyHeader": [] } ], "parameters": [ { "name": "start_date", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Time from which to start viewing key spend", "title": "Start Date" }, "description": "Time from which to start viewing key spend" }, { "name": "end_date", "in": "query", "required": false, "schema": { "anyOf": [ { "type": "string" }, { "type": "null" } ], "description": "Time till which to view key spend", "title": "End Date" }, "description": "Time till which to view key spend" } ], "responses": { "200": { "description": "Successful Response", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/LiteLLM_SpendLogs" }, "title": "Response 200 View Spend Tags Spend Tags Get" } } } }, "422": { "description": "Validation Error", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/HTTPValidationError" } } } } } } } }