Skip to main content
GET
Error
Required Permissions How permissions work

Authorizations

Authorization
string
header
required

Management API authentication for /api/* endpoints. Use the Authorization header with Bearer <token>, where <token> is one of:

  • a Bifrost management API key,
  • a dashboard session token issued by POST /api/session/login,
  • base64 of <admin-username>:<admin-password> (legacy equivalent of BasicAuth).

Virtual keys (sk-bf-*) and the x-api-key header are not accepted on management APIs - the sole exception is GET /api/governance/virtual-keys/quota, which is virtual-key-only.

Authentication alone is not sufficient in Bifrost Enterprise: each operation page shows a Required Permissions table (Resource:Operation, for example Dashboard:View) above its Authorizations section, and the caller's RBAC role or management API key scopes must include what it lists, otherwise the request is rejected with 403 Forbidden.

A local admin — authenticated with the admin password, or any caller on a deployment with dashboard auth disabled — bypasses these checks and can call every management endpoint.

OSS setup lock. On Bifrost OSS, while dashboard auth is not active (no admin account, or auth disabled), every management endpoint except the public ones (/health, /api/version, /api/session/is-auth-enabled, /api/session/login, ...) requires the operator's setup token in the X-Bifrost-Setup-Token header, in place of Authorization. The token is set with setup_token in config.json or the BIFROST_SETUP_TOKEN environment variable. A missing header returns 401, a wrong token 403. The header stops working once dashboard auth is enabled. The dashboard instead trades the token once for an HttpOnly bifrost_setup_session cookie via POST /api/session/setup. See Required permissions for how permissions are derived and which endpoints are exempt.

Path Parameters

id
string
required

Log entry ID

Response

Successful response

Log entry

id
string
project_id
string | null

The governance project the request was scoped to, or null when it named none. This is the resolved project, not the header the caller sent.

project_name
string | null

The project's name as it stood when the request was served, kept on the row so it still reads correctly after a rename or a delete.

parent_request_id
string
provider
string
model
string
status
enum<string>
Available options:
processing,
success,
error
object
string
timestamp
string<date-time>
number_of_retries
integer
fallback_index
integer
latency
number
cost
number
selected_key_id
string
selected_key_name
string
virtual_key_id
string
virtual_key_name
string | null
routing_engines_used
string[]

Array of routing engines used for this request (routing-rule, governance, or loadbalancing)

tool_call_names
string[] | null

Distinct function names the response called. Always recorded, even when content logging is disabled, and kept on the log row in hybrid storage mode. Use the tool_call_names query filter to search on it. Full tool calls with arguments are in tool_calls and are available only when content is retained.

routing_rule_id
string | null
routing_rule_name
string | null
complexity_tier
enum<string> | null

Complexity tier used for routing; null when no routing rule referenced complexity_tier. REASONING is historical-only — it was merged into COMPLEX and is never emitted for new requests, but survives in log rows recorded under the old scheme.

Available options:
SIMPLE,
MEDIUM,
COMPLEX,
REASONING
complexity_mechanism
enum<string> | null

How the effective complexity tier was determined. decision means the configured decision model supplied the tier; session means retained session state supplied it; skipped means classification was demanded but produced no tier.

Available options:
semantic,
decision,
llm,
session,
skipped,
null
complexity_score
number | null

Similarity score of the nearest reference phrase behind the tier. Absent for decision-model, LLM, session, and skipped decisions.

session_id
string | null

Raw opaque Bifrost session ID resolved at ingress for key stickiness and request correlation.

child_count
integer

Rows nesting under this one (fallback attempts, and settled async cost rows). Present only on roots_only responses.

children_cost
number

Cost summed over those nested rows, under the same filters as the listing. Present only on roots_only responses.

children_tokens
integer

Tokens summed over those nested rows, under the same filters as the listing. Present only on roots_only responses.

session_child_count
integer

Rows in this session other than this one. Present only on the root of a collapsed session (group_sessions responses), and absent for a session with a single matching row.

session_total_cost
number

Cost summed over the whole session, this row included, under the same filters as the listing. Present only on the root of a collapsed session (group_sessions responses), and absent for a session with a single matching row or when the total is zero.

session_total_tokens
integer

Tokens summed over the whole session, this row included, under the same filters as the listing. Present only on the root of a collapsed session (group_sessions responses), and absent for a session with a single matching row or when the total is zero.

stream
boolean
raw_request
string
raw_response
string
redaction_mapping
object

Phase-scoped placeholder-to-original-value mappings for reversible redactions. Present only on log detail responses when the caller has Logs:Reveal.

created_at
string<date-time>
token_usage
object

Token usage information

error_details
object

Error response from Bifrost

input_history
object[]
responses_input_history
object[]
output_message
object
responses_output
object[]
embedding_output
number[][]
params
object
tools
object[]
tool_calls
object[]
speech_input
object
transcription_input
object
image_generation_input
object
speech_output
object
transcription_output
object
image_generation_output
object
cache_debug
object
metadata
object

Custom metadata captured from request headers (configured via logging_headers or x-bf-lh-* prefix)

selected_key
object
virtual_key
object
is_passthrough
boolean

The request came through a passthrough route (/openai_passthrough, /anthropic_passthrough, /genai_passthrough, ...). Its object is the request type the route was inferred as (chat_completion, responses, embedding, ...), with the streaming variant for a streamed call (chat_completion_stream, responses_stream, text_completion_stream, ...), or passthrough / passthrough_stream when the route has no typed equivalent. Filtering objects=passthrough matches every passthrough row; objects=passthrough_stream matches the streamed ones.

passthrough_request_body
string

Raw passthrough request body (for passthrough integration routes)

passthrough_response_body
string

Raw passthrough response body (for passthrough integration routes)

routing_engine_logs
object

Detailed logs from the routing engine decision process

is_large_payload_request
boolean

Whether the request payload exceeded the large payload threshold

is_large_payload_response
boolean

Whether the response payload exceeded the large payload threshold

rerank_output
object

Rerank operation output

video_generation_input
object

Video generation request input

video_generation_output
object

Video generation response output

video_retrieve_output
object

Video retrieve response output

video_list_output
object

Video list response output

video_delete_output
object

Video delete response output

video_download_output
object

Video download response output

list_models_output
object

List models response output