ExBifrost.Api.Logging (ex_bifrost v0.1.0)

Copy Markdown View Source

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

delete_logs(connection, delete_logs_request, opts \\ [])

Delete logs Deletes logs by their IDs.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • delete_logs_request (DeleteLogsRequest):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.MessageResponse.t} on success
  • {:error, Tesla.Env.t} on failure

delete_mcp_logs(connection, delete_mcp_logs_request, opts \\ [])

Delete MCP tool logs Deletes MCP tool logs by their IDs.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • delete_mcp_logs_request (DeleteMcpLogsRequest):
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.MessageResponse.t} on success
  • {:error, Tesla.Env.t} on failure

get_available_filter_data(connection, opts \\ [])

@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 server
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.GetAvailableFilterData200Response.t} on success
  • {:error, Tesla.Env.t} on failure

get_dashboard(connection, opts \\ [])

@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 server
  • opts (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

get_dropped_requests(connection, opts \\ [])

@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 server
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.GetDroppedRequests200Response.t} on success
  • {:error, Tesla.Env.t} on failure

get_log_by_id(connection, id, opts \\ [])

@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 server
  • id (String.t): Log entry ID
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.LogEntry.t} on success
  • {:error, Tesla.Env.t} on failure

get_log_session_by_id(connection, session_id, opts \\ [])

@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 server
  • session_id (String.t): Parent request ID identifying the session
  • opts (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 (default asc)

Returns

  • {:ok, ExBifrost.Model.GetLogSessionById200Response.t} on success
  • {:error, Tesla.Env.t} on failure

get_log_session_summary_by_id(connection, session_id, opts \\ [])

@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 server
  • session_id (String.t): Parent request ID identifying the session
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.GetLogSessionSummaryById200Response.t} on success
  • {:error, Tesla.Env.t} on failure

get_logs(connection, opts \\ [])

Get logs Retrieves logs with filtering, search, and pagination via query parameters.

Parameters

  • connection (ExBifrost.Connection): Connection to server
  • opts (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

get_logs_cost_histogram(connection, opts \\ [])

@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 server
  • opts (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

get_logs_dimension_cost_histogram(connection, dimension, opts \\ [])

@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 server
  • dimension (String.t): Grouping dimension
  • opts (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

get_logs_dimension_latency_histogram(connection, dimension, opts \\ [])

@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 server
  • dimension (String.t): Grouping dimension
  • opts (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

get_logs_dimension_token_histogram(connection, dimension, opts \\ [])

@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 server
  • dimension (String.t): Grouping dimension
  • opts (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

get_logs_histogram(connection, opts \\ [])

@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 server
  • opts (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

get_logs_latency_histogram(connection, opts \\ [])

@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 server
  • opts (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

get_logs_model_histogram(connection, opts \\ [])

@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 server
  • opts (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

get_logs_provider_cost_histogram(connection, opts \\ [])

@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 server
  • opts (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

get_logs_provider_latency_histogram(connection, opts \\ [])

@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 server
  • opts (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

get_logs_provider_token_histogram(connection, opts \\ [])

@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 server
  • opts (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

get_logs_stats(connection, opts \\ [])

@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 server
  • opts (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

get_logs_token_histogram(connection, opts \\ [])

@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 server
  • opts (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

get_mcp_log_by_id(connection, id, opts \\ [])

@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 server
  • id (String.t): MCP tool log ID
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.GetMcpLogById200Response.t} on success
  • {:error, Tesla.Env.t} on failure

get_mcp_logs(connection, opts \\ [])

@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 server
  • opts (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

get_mcp_logs_cost_histogram(connection, opts \\ [])

@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 server
  • opts (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

get_mcp_logs_filter_data(connection, opts \\ [])

@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 server
  • opts (keyword): Optional parameters

Returns

  • {:ok, ExBifrost.Model.GetMcpLogsFilterData200Response.t} on success
  • {:error, Tesla.Env.t} on failure

get_mcp_logs_histogram(connection, opts \\ [])

@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 server
  • opts (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

get_mcp_logs_stats(connection, opts \\ [])

@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 server
  • opts (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

get_mcp_logs_top_tools(connection, opts \\ [])

@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 server
  • opts (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

get_model_rankings(connection, opts \\ [])

@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 server
  • opts (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

get_recalculate_cost_status(connection, opts \\ [])

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 server
  • opts (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

recalculate_log_costs(connection, opts \\ [])

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 server
  • opts (keyword): Optional parameters
    • :body (RecalculateCostRequest):

Returns

  • {:ok, ExBifrost.Model.RecalculateCostResponse.t} on success
  • {:error, Tesla.Env.t} on failure