API calls for all endpoints tagged Logging.
Summary
Functions
Delete logs Deletes logs by their IDs.
Delete MCP tool logs Deletes MCP tool logs by their IDs.
Get available filter data Returns all unique filter data from logs (models, keys, virtual keys).
Get consolidated dashboard data
Returns every metric shown on the workspace dashboard in a single response: overview totals and histograms, provider usage, model rankings, dimension rankings (team, user, virtual key, customer, business unit), and MCP usage. Intended for external integrations that want the full dashboard in one call rather than orchestrating the individual endpoints. Accepts the same LLM filter parameters as the histogram and rankings endpoints, plus the MCP filter parameters (tool_names, server_labels) which apply to the mcp section. Filters are applied once and every section is computed against the same time window and bucket size. The request fails as a whole if any section cannot be computed, so the payload is always complete.
Get dropped requests count Returns the number of dropped requests.
Get a single log entry Retrieves a single log entry by its ID.
Get logs for a session
Returns the paginated logs belonging to a single parent-request session (grouped by parent_request_id). Sorted ascending by timestamp by default.
Get aggregate totals for a session Returns aggregate request count, token usage, cost, and duration for a single session.
Get logs Retrieves logs with filtering, search, and pagination via query parameters.
Get cost histogram Returns time-bucketed cost data with model breakdown.
Get cost histogram by dimension
Returns time-bucketed cost data grouped by an arbitrary dimension (provider, team_id, customer_id, user_id, business_unit_id). The dimension is supplied via the required dimension query parameter.
Get latency histogram by dimension Returns time-bucketed latency percentiles (avg, p90, p95, p99) grouped by an arbitrary dimension.
Get token histogram by dimension
Returns time-bucketed token usage grouped by an arbitrary dimension. See getLogsDimensionCostHistogram for the list of supported dimensions.
Get request count histogram Returns time-bucketed request counts. Bucket size is auto-calculated from the time range.
Get latency histogram Returns time-bucketed latency percentiles (avg, p90, p95, p99).
Get model usage histogram Returns time-bucketed model usage with success/error breakdown.
Get cost histogram by provider Returns time-bucketed cost data with provider breakdown.
Get latency histogram by provider Returns time-bucketed latency percentiles with provider breakdown.
Get token histogram by provider Returns time-bucketed token usage with provider breakdown.
Get log statistics Returns statistics for logs matching the specified filters.
Get token usage histogram Returns time-bucketed token usage (prompt, completion, total).
Get MCP tool log by ID Retrieves a single MCP tool execution log by ID, including hydrated object-storage payloads when configured.
Get MCP tool logs Retrieves MCP tool execution logs with filtering, search, and pagination via query parameters.
Get MCP cost histogram Returns time-bucketed MCP tool call cost data.
Get available MCP log filter data Returns all unique filter data from MCP tool logs (tool names, server labels).
Get MCP tool call volume histogram Returns time-bucketed MCP tool call volume with success/error breakdown.
Get MCP tool log statistics Returns statistics for MCP tool logs matching the specified filters.
Get top MCP tools by call count Returns the top 10 MCP tools by call count, with cost totals.
Get model usage rankings Returns models ranked by usage with trend percentages versus the previous comparable period. Accepts the same filter parameters as the histogram endpoints.
Get log cost recalculation status
Returns the current status of a log cost recalculation job. When id is omitted, the current in-flight job is returned, or idle when no job is running.
Recalculate log costs Starts an asynchronous background job that recalculates log costs in batches. The returned payload is a job status object that can be polled via the status endpoint.
Functions
@spec delete_logs( Tesla.Env.client(), ExBifrost.Model.DeleteLogsRequest.t(), keyword() ) :: {:ok, ExBifrost.Model.MessageResponse.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Delete logs Deletes logs by their IDs.
Parameters
connection(ExBifrost.Connection): Connection to serverdelete_logs_request(DeleteLogsRequest):opts(keyword): Optional parameters
Returns
{:ok, ExBifrost.Model.MessageResponse.t}on success{:error, Tesla.Env.t}on failure
@spec delete_mcp_logs( Tesla.Env.client(), ExBifrost.Model.DeleteMcpLogsRequest.t(), keyword() ) :: {:ok, ExBifrost.Model.MessageResponse.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Delete MCP tool logs Deletes MCP tool logs by their IDs.
Parameters
connection(ExBifrost.Connection): Connection to serverdelete_mcp_logs_request(DeleteMcpLogsRequest):opts(keyword): Optional parameters
Returns
{:ok, ExBifrost.Model.MessageResponse.t}on success{:error, Tesla.Env.t}on failure
@spec get_available_filter_data( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.BifrostError.t()} | {:ok, ExBifrost.Model.GetAvailableFilterData200Response.t()} | {:error, Tesla.Env.t()}
Get available filter data Returns all unique filter data from logs (models, keys, virtual keys).
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters
Returns
{:ok, ExBifrost.Model.GetAvailableFilterData200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_dashboard( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.GetDashboard200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get consolidated dashboard data
Returns every metric shown on the workspace dashboard in a single response: overview totals and histograms, provider usage, model rankings, dimension rankings (team, user, virtual key, customer, business unit), and MCP usage. Intended for external integrations that want the full dashboard in one call rather than orchestrating the individual endpoints. Accepts the same LLM filter parameters as the histogram and rankings endpoints, plus the MCP filter parameters (tool_names, server_labels) which apply to the mcp section. Filters are applied once and every section is computed against the same time window and bucket size. The request fails as a whole if any section cannot be computed, so the payload is always complete.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:aliases(String.t): Comma-separated list of model aliases to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:team_ids(String.t): Comma-separated list of team IDs to filter by:customer_ids(String.t): Comma-separated list of customer IDs to filter by:user_ids(String.t): Comma-separated list of user IDs to filter by:business_unit_ids(String.t): Comma-separated list of business unit IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):period(String.t): Relative time period filter:min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:stop_reasons(String.t): Comma-separated list of stop reasons to filter by:cache_hit_types(String.t): Comma-separated list of cache hit types to filter by:parent_request_id(String.t): Parent request ID to filter by:"metadata_<key>"(String.t): Metadata filter where <key> is the metadata key to match:content_search(String.t): Search in request/response content:tool_names(String.t): Comma-separated list of MCP tool names to filter the MCP section by:server_labels(String.t): Comma-separated list of MCP server labels to filter the MCP section by
Returns
{:ok, ExBifrost.Model.GetDashboard200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_dropped_requests( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.GetDroppedRequests200Response.t()} | {:error, Tesla.Env.t()}
Get dropped requests count Returns the number of dropped requests.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters
Returns
{:ok, ExBifrost.Model.GetDroppedRequests200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_log_by_id(Tesla.Env.client(), String.t(), keyword()) :: {:ok, ExBifrost.Model.BifrostError.t()} | {:ok, ExBifrost.Model.LogEntry.t()} | {:error, Tesla.Env.t()}
Get a single log entry Retrieves a single log entry by its ID.
Parameters
connection(ExBifrost.Connection): Connection to serverid(String.t): Log entry IDopts(keyword): Optional parameters
Returns
{:ok, ExBifrost.Model.LogEntry.t}on success{:error, Tesla.Env.t}on failure
@spec get_log_session_by_id(Tesla.Env.client(), String.t(), keyword()) :: {:ok, ExBifrost.Model.GetLogSessionById200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get logs for a session
Returns the paginated logs belonging to a single parent-request session (grouped by parent_request_id). Sorted ascending by timestamp by default.
Parameters
connection(ExBifrost.Connection): Connection to serversession_id(String.t): Parent request ID identifying the sessionopts(keyword): Optional parameters:limit(integer()): Number of logs to return (default 200, max 200):offset(integer()): Number of logs to skip:order(String.t): Sort order (defaultasc)
Returns
{:ok, ExBifrost.Model.GetLogSessionById200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_log_session_summary_by_id(Tesla.Env.client(), String.t(), keyword()) :: {:ok, ExBifrost.Model.GetLogSessionSummaryById200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get aggregate totals for a session Returns aggregate request count, token usage, cost, and duration for a single session.
Parameters
connection(ExBifrost.Connection): Connection to serversession_id(String.t): Parent request ID identifying the sessionopts(keyword): Optional parameters
Returns
{:ok, ExBifrost.Model.GetLogSessionSummaryById200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_logs( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.BifrostError.t()} | {:ok, ExBifrost.Model.SearchLogsResponse.t()} | {:error, Tesla.Env.t()}
Get logs Retrieves logs with filtering, search, and pagination via query parameters.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by (routing-rule, governance, or loadbalancing):start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:content_search(String.t): Search in request/response content:limit(integer()): Number of logs to return (default 50, max 1000):offset(integer()): Number of logs to skip:sort_by(String.t): Field to sort by:order(String.t): Sort order
Returns
{:ok, ExBifrost.Model.SearchLogsResponse.t}on success{:error, Tesla.Env.t}on failure
@spec get_logs_cost_histogram( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.GetLogsCostHistogram200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get cost histogram Returns time-bucketed cost data with model breakdown.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:content_search(String.t): Search in request/response content
Returns
{:ok, ExBifrost.Model.GetLogsCostHistogram200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_logs_dimension_cost_histogram(Tesla.Env.client(), String.t(), keyword()) :: {:ok, ExBifrost.Model.GetLogsDimensionCostHistogram200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get cost histogram by dimension
Returns time-bucketed cost data grouped by an arbitrary dimension (provider, team_id, customer_id, user_id, business_unit_id). The dimension is supplied via the required dimension query parameter.
Parameters
connection(ExBifrost.Connection): Connection to serverdimension(String.t): Grouping dimensionopts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:content_search(String.t): Search in request/response content
Returns
{:ok, ExBifrost.Model.GetLogsDimensionCostHistogram200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_logs_dimension_latency_histogram(Tesla.Env.client(), String.t(), keyword()) :: {:ok, ExBifrost.Model.GetLogsDimensionLatencyHistogram200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get latency histogram by dimension Returns time-bucketed latency percentiles (avg, p90, p95, p99) grouped by an arbitrary dimension.
Parameters
connection(ExBifrost.Connection): Connection to serverdimension(String.t): Grouping dimensionopts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:content_search(String.t): Search in request/response content
Returns
{:ok, ExBifrost.Model.GetLogsDimensionLatencyHistogram200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_logs_dimension_token_histogram(Tesla.Env.client(), String.t(), keyword()) :: {:ok, ExBifrost.Model.GetLogsDimensionTokenHistogram200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get token histogram by dimension
Returns time-bucketed token usage grouped by an arbitrary dimension. See getLogsDimensionCostHistogram for the list of supported dimensions.
Parameters
connection(ExBifrost.Connection): Connection to serverdimension(String.t): Grouping dimensionopts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:content_search(String.t): Search in request/response content
Returns
{:ok, ExBifrost.Model.GetLogsDimensionTokenHistogram200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_logs_histogram( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.GetLogsHistogram200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get request count histogram Returns time-bucketed request counts. Bucket size is auto-calculated from the time range.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:aliases(String.t): Comma-separated list of model aliases to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:team_ids(String.t): Comma-separated list of team IDs to filter by:customer_ids(String.t): Comma-separated list of customer IDs to filter by:user_ids(String.t): Comma-separated list of user IDs to filter by:business_unit_ids(String.t): Comma-separated list of business unit IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):period(String.t): Relative time period filter:min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:stop_reasons(String.t): Comma-separated list of stop reasons to filter by:cache_hit_types(String.t): Comma-separated list of cache hit types to filter by:parent_request_id(String.t): Parent request ID to filter by:"metadata_<key>"(String.t): Metadata filter where <key> is the metadata key to match:content_search(String.t): Search in request/response content
Returns
{:ok, ExBifrost.Model.GetLogsHistogram200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_logs_latency_histogram( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.GetLogsLatencyHistogram200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get latency histogram Returns time-bucketed latency percentiles (avg, p90, p95, p99).
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:content_search(String.t): Search in request/response content
Returns
{:ok, ExBifrost.Model.GetLogsLatencyHistogram200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_logs_model_histogram( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.BifrostError.t()} | {:ok, ExBifrost.Model.GetLogsModelHistogram200Response.t()} | {:error, Tesla.Env.t()}
Get model usage histogram Returns time-bucketed model usage with success/error breakdown.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:content_search(String.t): Search in request/response content
Returns
{:ok, ExBifrost.Model.GetLogsModelHistogram200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_logs_provider_cost_histogram( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.BifrostError.t()} | {:ok, ExBifrost.Model.GetLogsProviderCostHistogram200Response.t()} | {:error, Tesla.Env.t()}
Get cost histogram by provider Returns time-bucketed cost data with provider breakdown.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:content_search(String.t): Search in request/response content
Returns
{:ok, ExBifrost.Model.GetLogsProviderCostHistogram200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_logs_provider_latency_histogram( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.GetLogsProviderLatencyHistogram200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get latency histogram by provider Returns time-bucketed latency percentiles with provider breakdown.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:content_search(String.t): Search in request/response content
Returns
{:ok, ExBifrost.Model.GetLogsProviderLatencyHistogram200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_logs_provider_token_histogram( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.GetLogsProviderTokenHistogram200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get token histogram by provider Returns time-bucketed token usage with provider breakdown.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:content_search(String.t): Search in request/response content
Returns
{:ok, ExBifrost.Model.GetLogsProviderTokenHistogram200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_logs_stats( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.LogStats.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get log statistics Returns statistics for logs matching the specified filters.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by (routing-rule, governance, or loadbalancing):start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:content_search(String.t): Search in request/response content
Returns
{:ok, ExBifrost.Model.LogStats.t}on success{:error, Tesla.Env.t}on failure
@spec get_logs_token_histogram( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.BifrostError.t()} | {:ok, ExBifrost.Model.GetLogsTokenHistogram200Response.t()} | {:error, Tesla.Env.t()}
Get token usage histogram Returns time-bucketed token usage (prompt, completion, total).
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:content_search(String.t): Search in request/response content
Returns
{:ok, ExBifrost.Model.GetLogsTokenHistogram200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_mcp_log_by_id(Tesla.Env.client(), String.t(), keyword()) :: {:ok, ExBifrost.Model.BifrostError.t()} | {:ok, ExBifrost.Model.GetMcpLogById200Response.t()} | {:error, Tesla.Env.t()}
Get MCP tool log by ID Retrieves a single MCP tool execution log by ID, including hydrated object-storage payloads when configured.
Parameters
connection(ExBifrost.Connection): Connection to serverid(String.t): MCP tool log IDopts(keyword): Optional parameters
Returns
{:ok, ExBifrost.Model.GetMcpLogById200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_mcp_logs( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.GetMcpLogs200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get MCP tool logs Retrieves MCP tool execution logs with filtering, search, and pagination via query parameters.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:tool_names(String.t): Comma-separated list of tool names to filter by:server_labels(String.t): Comma-separated list of server labels to filter by:status(String.t): Comma-separated list of statuses to filter by (processing, success, error):virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:llm_request_ids(String.t): Comma-separated list of LLM request IDs to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter (milliseconds):max_latency(number()): Maximum latency filter (milliseconds):content_search(String.t): Search in tool arguments and results:limit(integer()): Number of logs to return (default 50, max 1000):offset(integer()): Number of logs to skip:sort_by(String.t): Field to sort by:order(String.t): Sort order
Returns
{:ok, ExBifrost.Model.GetMcpLogs200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_mcp_logs_cost_histogram( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.BifrostError.t()} | {:ok, ExBifrost.Model.GetDashboard200ResponseMcpCost.t()} | {:error, Tesla.Env.t()}
Get MCP cost histogram Returns time-bucketed MCP tool call cost data.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:tool_names(String.t): Comma-separated list of tool names to filter by:server_labels(String.t): Comma-separated list of server labels to filter by:status(String.t): Comma-separated list of statuses to filter by (processing, success, error):virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:llm_request_ids(String.t): Comma-separated list of LLM request IDs to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter (milliseconds):max_latency(number()): Maximum latency filter (milliseconds):content_search(String.t): Search in tool arguments and results
Returns
{:ok, ExBifrost.Model.GetDashboard200ResponseMcpCost.t}on success{:error, Tesla.Env.t}on failure
@spec get_mcp_logs_filter_data( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.BifrostError.t()} | {:ok, ExBifrost.Model.GetMcpLogsFilterData200Response.t()} | {:error, Tesla.Env.t()}
Get available MCP log filter data Returns all unique filter data from MCP tool logs (tool names, server labels).
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters
Returns
{:ok, ExBifrost.Model.GetMcpLogsFilterData200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_mcp_logs_histogram( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.GetLogsHistogram200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get MCP tool call volume histogram Returns time-bucketed MCP tool call volume with success/error breakdown.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:tool_names(String.t): Comma-separated list of tool names to filter by:server_labels(String.t): Comma-separated list of server labels to filter by:status(String.t): Comma-separated list of statuses to filter by (processing, success, error):virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:llm_request_ids(String.t): Comma-separated list of LLM request IDs to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter (milliseconds):max_latency(number()): Maximum latency filter (milliseconds):content_search(String.t): Search in tool arguments and results
Returns
{:ok, ExBifrost.Model.GetLogsHistogram200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_mcp_logs_stats( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.GetMcpLogsStats200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get MCP tool log statistics Returns statistics for MCP tool logs matching the specified filters.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:tool_names(String.t): Comma-separated list of tool names to filter by:server_labels(String.t): Comma-separated list of server labels to filter by:status(String.t): Comma-separated list of statuses to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:llm_request_ids(String.t): Comma-separated list of LLM request IDs to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:content_search(String.t): Search in tool arguments and results
Returns
{:ok, ExBifrost.Model.GetMcpLogsStats200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_mcp_logs_top_tools( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.BifrostError.t()} | {:ok, ExBifrost.Model.GetDashboard200ResponseMcpTopTools.t()} | {:error, Tesla.Env.t()}
Get top MCP tools by call count Returns the top 10 MCP tools by call count, with cost totals.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:tool_names(String.t): Comma-separated list of tool names to filter by:server_labels(String.t): Comma-separated list of server labels to filter by:status(String.t): Comma-separated list of statuses to filter by (processing, success, error):virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:llm_request_ids(String.t): Comma-separated list of LLM request IDs to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):min_latency(number()): Minimum latency filter (milliseconds):max_latency(number()): Maximum latency filter (milliseconds):content_search(String.t): Search in tool arguments and results
Returns
{:ok, ExBifrost.Model.GetDashboard200ResponseMcpTopTools.t}on success{:error, Tesla.Env.t}on failure
@spec get_model_rankings( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.GetModelRankings200Response.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:error, Tesla.Env.t()}
Get model usage rankings Returns models ranked by usage with trend percentages versus the previous comparable period. Accepts the same filter parameters as the histogram endpoints.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:providers(String.t): Comma-separated list of providers to filter by:models(String.t): Comma-separated list of models to filter by:aliases(String.t): Comma-separated list of model aliases to filter by:status(String.t): Comma-separated list of statuses to filter by:objects(String.t): Comma-separated list of object types to filter by:selected_key_ids(String.t): Comma-separated list of selected key IDs to filter by:virtual_key_ids(String.t): Comma-separated list of virtual key IDs to filter by:team_ids(String.t): Comma-separated list of team IDs to filter by:customer_ids(String.t): Comma-separated list of customer IDs to filter by:user_ids(String.t): Comma-separated list of user IDs to filter by:business_unit_ids(String.t): Comma-separated list of business unit IDs to filter by:routing_rule_ids(String.t): Comma-separated list of routing rule IDs to filter by:routing_engine_used(String.t): Comma-separated list of routing engines to filter by:start_time(DateTime.t): Start time filter (RFC3339 format):end_time(DateTime.t): End time filter (RFC3339 format):period(String.t): Relative time period filter:min_latency(number()): Minimum latency filter:max_latency(number()): Maximum latency filter:min_tokens(integer()): Minimum tokens filter:max_tokens(integer()): Maximum tokens filter:min_cost(number()): Minimum cost filter:max_cost(number()): Maximum cost filter:missing_cost_only(boolean()): Only show logs with missing cost:stop_reasons(String.t): Comma-separated list of stop reasons to filter by:cache_hit_types(String.t): Comma-separated list of cache hit types to filter by:parent_request_id(String.t): Parent request ID to filter by:"metadata_<key>"(String.t): Metadata filter where <key> is the metadata key to match:content_search(String.t): Search in request/response content
Returns
{:ok, ExBifrost.Model.GetModelRankings200Response.t}on success{:error, Tesla.Env.t}on failure
@spec get_recalculate_cost_status( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.ManagementErrorResponse.t()} | {:ok, ExBifrost.Model.BifrostError.t()} | {:ok, ExBifrost.Model.RecalculateCostResponse.t()} | {:error, Tesla.Env.t()}
Get log cost recalculation status
Returns the current status of a log cost recalculation job. When id is omitted, the current in-flight job is returned, or idle when no job is running.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:id(String.t): Optional recalculation job ID to fetch
Returns
{:ok, ExBifrost.Model.RecalculateCostResponse.t}on success{:error, Tesla.Env.t}on failure
@spec recalculate_log_costs( Tesla.Env.client(), keyword() ) :: {:ok, ExBifrost.Model.BifrostError.t()} | {:ok, ExBifrost.Model.ManagementErrorResponse.t()} | {:ok, ExBifrost.Model.RecalculateCostResponse.t()} | {:error, Tesla.Env.t()}
Recalculate log costs Starts an asynchronous background job that recalculates log costs in batches. The returned payload is a job status object that can be polled via the status endpoint.
Parameters
connection(ExBifrost.Connection): Connection to serveropts(keyword): Optional parameters:body(RecalculateCostRequest):
Returns
{:ok, ExBifrost.Model.RecalculateCostResponse.t}on success{:error, Tesla.Env.t}on failure