A valid request URL is required to generate request examples{
"project": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"is_active": true,
"expires_at": "2023-11-07T05:31:56Z",
"access_rule": "intersect",
"membership_mode": "explicit",
"accounting_mode": "both",
"split_policy": "none",
"calendar_aligned": false,
"allow_all_providers": false,
"budgets": [
{
"max_limit": 1,
"reset_duration": "1M",
"id": "<string>",
"reset_config": {
"quarter_start_month": 6
},
"current_usage": 123,
"last_reset": "2023-11-07T05:31:56Z",
"override_amount": 123,
"override_mode": "<string>",
"override_cycles_remaining": 123,
"override_cycles_total": 123,
"override_anchor_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"rate_limit": {
"id": "<string>",
"token_max_limit": 1,
"token_reset_duration": "1h",
"request_max_limit": 1,
"request_reset_duration": "1h",
"token_current_usage": 123,
"token_last_reset": "2023-11-07T05:31:56Z",
"request_current_usage": 123,
"request_last_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"provider_configs": [
{
"provider_name": "openai",
"id": 123,
"all_models_allowed": false,
"allowed_models": [
"<string>"
],
"blacklisted_models": [
"<string>"
],
"key_ids": [
"<string>"
],
"weight": 123,
"budgets": [
{
"max_limit": 1,
"reset_duration": "1M",
"id": "<string>",
"reset_config": {
"quarter_start_month": 6
},
"current_usage": 123,
"last_reset": "2023-11-07T05:31:56Z",
"override_amount": 123,
"override_mode": "<string>",
"override_cycles_remaining": 123,
"override_cycles_total": 123,
"override_anchor_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"rate_limit": {
"id": "<string>",
"token_max_limit": 1,
"token_reset_duration": "1h",
"request_max_limit": 1,
"request_reset_duration": "1h",
"token_current_usage": 123,
"token_last_reset": "2023-11-07T05:31:56Z",
"request_current_usage": 123,
"request_last_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"model_budgets": [
{
"model_name": "<string>",
"budgets": [
{
"max_limit": 1,
"reset_duration": "1M",
"id": "<string>",
"reset_config": {
"quarter_start_month": 6
},
"current_usage": 123,
"last_reset": "2023-11-07T05:31:56Z",
"override_amount": 123,
"override_mode": "<string>",
"override_cycles_remaining": 123,
"override_cycles_total": 123,
"override_anchor_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"rate_limit": {
"id": "<string>",
"token_max_limit": 1,
"token_reset_duration": "1h",
"request_max_limit": 1,
"request_reset_duration": "1h",
"token_current_usage": 123,
"token_last_reset": "2023-11-07T05:31:56Z",
"request_current_usage": 123,
"request_last_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}
]
}
],
"mcp_configs": [
{
"id": 123,
"mcp_client_id": 123,
"mcp_client_name": "<string>",
"mcp_client": {
"config": {
"client_id": "<string>",
"name": "<string>",
"is_code_mode_client": true,
"connection_type": "http",
"connection_string": "<string>",
"stdio_config": {
"command": "<string>",
"args": [
"<string>"
],
"envs": [
"<string>"
]
},
"openapi_config": {
"spec": "<string>",
"spec_url": "<string>",
"base_url": "<string>",
"security_credentials": {},
"include_deprecated": false,
"max_response_bytes": 1,
"spec_size": 123,
"spec_hash": "<string>",
"spec_title": "<string>",
"openapi_version": "<string>",
"operation_count": 123
},
"tls_config": {
"insecure_skip_verify": true,
"ca_cert_pem": "<string>"
},
"auth_type": "none",
"oauth_config_id": "<string>",
"headers": {},
"tools_to_execute": [
"<string>"
],
"tools_to_auto_execute": [
"<string>"
],
"tool_pricing": {},
"allow_on_all_virtual_keys": false,
"per_user_header_keys": [
"<string>"
],
"token_exchange": {
"audience": "<string>",
"use_idp_credentials": true,
"client_id": "<string>",
"client_secret": "<string>",
"scopes": [
"<string>"
],
"authorization_server_url": "<string>"
},
"disabled": false,
"require_public_target": false
},
"tools": [
{
"name": "<string>",
"description": "<string>",
"parameters": {},
"strict": true
}
],
"state": "healthy",
"last_failure": {
"stage": "connect",
"message": "<string>",
"at": "2023-11-07T05:31:56Z",
"since": "2023-11-07T05:31:56Z"
},
"node_states": {},
"vk_configs": [
{
"virtual_key_id": "<string>",
"virtual_key_name": "<string>",
"tools_to_execute": [
"<string>"
]
}
]
},
"tools_to_execute": [
"<string>"
]
}
],
"virtual_mcps": [
{
"virtual_mcp_name": "<string>",
"virtual_mcp_id": 2
}
],
"members": [
{
"user_id": "<string>",
"id": "<string>",
"budget_shares": [
{
"source_budget_id": "<string>",
"id": "<string>",
"project_id": "<string>",
"user_id": "<string>",
"budget_id": "<string>",
"share_value": 123,
"share_type": "percent",
"budget": {
"max_limit": 1,
"reset_duration": "1M",
"id": "<string>",
"reset_config": {
"quarter_start_month": 6
},
"current_usage": 123,
"last_reset": "2023-11-07T05:31:56Z",
"override_amount": 123,
"override_mode": "<string>",
"override_cycles_remaining": 123,
"override_cycles_total": 123,
"override_anchor_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"rate_limit_shares": [
{
"source_rate_limit_id": "<string>",
"id": "<string>",
"project_id": "<string>",
"user_id": "<string>",
"rate_limit_id": "<string>",
"token_share": 123,
"token_share_type": "percent",
"request_share": 123,
"request_share_type": "percent",
"rate_limit": {
"id": "<string>",
"token_max_limit": 1,
"token_reset_duration": "1h",
"request_max_limit": 1,
"request_reset_duration": "1h",
"token_current_usage": 123,
"token_last_reset": "2023-11-07T05:31:56Z",
"request_current_usage": 123,
"request_last_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"user_name": "<string>",
"user_email": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"created_by_user_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"event_id": "<string>",
"type": "<string>",
"is_bifrost_error": true,
"status_code": 123,
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"event_id": "<string>"
},
"extra_fields": {
"routing_info": {
"provider": "anthropic",
"model": "<string>",
"key": "<string>",
"resolved_key_alias": {
"model_id": "<string>",
"model_name": "<string>",
"model_family": "<string>"
},
"is_fallback": true,
"primary_provider": "anthropic",
"primary_model": "<string>",
"requested_provider": "anthropic",
"requested_model": "<string>",
"server_side_fallback_model": "<string>"
},
"provider": "anthropic",
"original_model_requested": "<string>",
"resolved_model_used": "<string>",
"request_type": "<string>",
"mcp_request_type": "<string>",
"a2a_request_type": "<string>",
"a2a_agent_name": "<string>",
"error_type": "<string>",
"retry_after_ms": 150500,
"raw_request": "<unknown>",
"raw_response": "<unknown>",
"converted_request_type": "<string>",
"dropped_compat_plugin_params": [
"<string>"
],
"latency": 123,
"key_statuses": [
{
"key_id": "<string>",
"status": "success",
"provider": "anthropic",
"error": "<unknown>"
}
],
"mcp_auth_required": {
"kind": "<string>",
"mcp_client_id": "<string>",
"mcp_client_name": "<string>",
"message": "<string>",
"authorize_url": "<string>",
"session_id": "<string>"
},
"billed_usage": {
"prompt_tokens": 123,
"prompt_tokens_details": {
"text_tokens": 123,
"audio_tokens": 123,
"image_tokens": 123,
"cached_read_tokens": 123,
"cached_write_tokens": 123
},
"completion_tokens": 123,
"completion_tokens_details": {
"text_tokens": 123,
"accepted_prediction_tokens": 123,
"audio_tokens": 123,
"citation_tokens": 123,
"num_search_queries": 123,
"reasoning_tokens": 123,
"image_tokens": 123,
"rejected_prediction_tokens": 123
},
"total_tokens": 123,
"tool_usage": {
"web_search": {
"num_requests": 123
}
},
"cost": {
"input_tokens_cost": 123,
"output_tokens_cost": 123,
"reasoning_tokens_cost": 123,
"citation_tokens_cost": 123,
"search_queries_cost": 123,
"request_cost": 123,
"total_cost": 123
}
}
}
}{
"event_id": "<string>",
"type": "<string>",
"is_bifrost_error": true,
"status_code": 123,
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"event_id": "<string>"
},
"extra_fields": {
"routing_info": {
"provider": "anthropic",
"model": "<string>",
"key": "<string>",
"resolved_key_alias": {
"model_id": "<string>",
"model_name": "<string>",
"model_family": "<string>"
},
"is_fallback": true,
"primary_provider": "anthropic",
"primary_model": "<string>",
"requested_provider": "anthropic",
"requested_model": "<string>",
"server_side_fallback_model": "<string>"
},
"provider": "anthropic",
"original_model_requested": "<string>",
"resolved_model_used": "<string>",
"request_type": "<string>",
"mcp_request_type": "<string>",
"a2a_request_type": "<string>",
"a2a_agent_name": "<string>",
"error_type": "<string>",
"retry_after_ms": 150500,
"raw_request": "<unknown>",
"raw_response": "<unknown>",
"converted_request_type": "<string>",
"dropped_compat_plugin_params": [
"<string>"
],
"latency": 123,
"key_statuses": [
{
"key_id": "<string>",
"status": "success",
"provider": "anthropic",
"error": "<unknown>"
}
],
"mcp_auth_required": {
"kind": "<string>",
"mcp_client_id": "<string>",
"mcp_client_name": "<string>",
"message": "<string>",
"authorize_url": "<string>",
"session_id": "<string>"
},
"billed_usage": {
"prompt_tokens": 123,
"prompt_tokens_details": {
"text_tokens": 123,
"audio_tokens": 123,
"image_tokens": 123,
"cached_read_tokens": 123,
"cached_write_tokens": 123
},
"completion_tokens": 123,
"completion_tokens_details": {
"text_tokens": 123,
"accepted_prediction_tokens": 123,
"audio_tokens": 123,
"citation_tokens": 123,
"num_search_queries": 123,
"reasoning_tokens": 123,
"image_tokens": 123,
"rejected_prediction_tokens": 123
},
"total_tokens": 123,
"tool_usage": {
"web_search": {
"num_requests": 123
}
},
"cost": {
"input_tokens_cost": 123,
"output_tokens_cost": 123,
"reasoning_tokens_cost": 123,
"citation_tokens_cost": 123,
"search_queries_cost": 123,
"request_cost": 123,
"total_cost": 123
}
}
}
}Create project
Creates a project. access_rule is required and has no default, since a
rule that could be assumed might widen a request. The project starts with
no members: add the roster through the member routes.
A valid request URL is required to generate request examples{
"project": {
"id": "<string>",
"name": "<string>",
"description": "<string>",
"is_active": true,
"expires_at": "2023-11-07T05:31:56Z",
"access_rule": "intersect",
"membership_mode": "explicit",
"accounting_mode": "both",
"split_policy": "none",
"calendar_aligned": false,
"allow_all_providers": false,
"budgets": [
{
"max_limit": 1,
"reset_duration": "1M",
"id": "<string>",
"reset_config": {
"quarter_start_month": 6
},
"current_usage": 123,
"last_reset": "2023-11-07T05:31:56Z",
"override_amount": 123,
"override_mode": "<string>",
"override_cycles_remaining": 123,
"override_cycles_total": 123,
"override_anchor_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"rate_limit": {
"id": "<string>",
"token_max_limit": 1,
"token_reset_duration": "1h",
"request_max_limit": 1,
"request_reset_duration": "1h",
"token_current_usage": 123,
"token_last_reset": "2023-11-07T05:31:56Z",
"request_current_usage": 123,
"request_last_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"provider_configs": [
{
"provider_name": "openai",
"id": 123,
"all_models_allowed": false,
"allowed_models": [
"<string>"
],
"blacklisted_models": [
"<string>"
],
"key_ids": [
"<string>"
],
"weight": 123,
"budgets": [
{
"max_limit": 1,
"reset_duration": "1M",
"id": "<string>",
"reset_config": {
"quarter_start_month": 6
},
"current_usage": 123,
"last_reset": "2023-11-07T05:31:56Z",
"override_amount": 123,
"override_mode": "<string>",
"override_cycles_remaining": 123,
"override_cycles_total": 123,
"override_anchor_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"rate_limit": {
"id": "<string>",
"token_max_limit": 1,
"token_reset_duration": "1h",
"request_max_limit": 1,
"request_reset_duration": "1h",
"token_current_usage": 123,
"token_last_reset": "2023-11-07T05:31:56Z",
"request_current_usage": 123,
"request_last_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"model_budgets": [
{
"model_name": "<string>",
"budgets": [
{
"max_limit": 1,
"reset_duration": "1M",
"id": "<string>",
"reset_config": {
"quarter_start_month": 6
},
"current_usage": 123,
"last_reset": "2023-11-07T05:31:56Z",
"override_amount": 123,
"override_mode": "<string>",
"override_cycles_remaining": 123,
"override_cycles_total": 123,
"override_anchor_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"rate_limit": {
"id": "<string>",
"token_max_limit": 1,
"token_reset_duration": "1h",
"request_max_limit": 1,
"request_reset_duration": "1h",
"token_current_usage": 123,
"token_last_reset": "2023-11-07T05:31:56Z",
"request_current_usage": 123,
"request_last_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}
]
}
],
"mcp_configs": [
{
"id": 123,
"mcp_client_id": 123,
"mcp_client_name": "<string>",
"mcp_client": {
"config": {
"client_id": "<string>",
"name": "<string>",
"is_code_mode_client": true,
"connection_type": "http",
"connection_string": "<string>",
"stdio_config": {
"command": "<string>",
"args": [
"<string>"
],
"envs": [
"<string>"
]
},
"openapi_config": {
"spec": "<string>",
"spec_url": "<string>",
"base_url": "<string>",
"security_credentials": {},
"include_deprecated": false,
"max_response_bytes": 1,
"spec_size": 123,
"spec_hash": "<string>",
"spec_title": "<string>",
"openapi_version": "<string>",
"operation_count": 123
},
"tls_config": {
"insecure_skip_verify": true,
"ca_cert_pem": "<string>"
},
"auth_type": "none",
"oauth_config_id": "<string>",
"headers": {},
"tools_to_execute": [
"<string>"
],
"tools_to_auto_execute": [
"<string>"
],
"tool_pricing": {},
"allow_on_all_virtual_keys": false,
"per_user_header_keys": [
"<string>"
],
"token_exchange": {
"audience": "<string>",
"use_idp_credentials": true,
"client_id": "<string>",
"client_secret": "<string>",
"scopes": [
"<string>"
],
"authorization_server_url": "<string>"
},
"disabled": false,
"require_public_target": false
},
"tools": [
{
"name": "<string>",
"description": "<string>",
"parameters": {},
"strict": true
}
],
"state": "healthy",
"last_failure": {
"stage": "connect",
"message": "<string>",
"at": "2023-11-07T05:31:56Z",
"since": "2023-11-07T05:31:56Z"
},
"node_states": {},
"vk_configs": [
{
"virtual_key_id": "<string>",
"virtual_key_name": "<string>",
"tools_to_execute": [
"<string>"
]
}
]
},
"tools_to_execute": [
"<string>"
]
}
],
"virtual_mcps": [
{
"virtual_mcp_name": "<string>",
"virtual_mcp_id": 2
}
],
"members": [
{
"user_id": "<string>",
"id": "<string>",
"budget_shares": [
{
"source_budget_id": "<string>",
"id": "<string>",
"project_id": "<string>",
"user_id": "<string>",
"budget_id": "<string>",
"share_value": 123,
"share_type": "percent",
"budget": {
"max_limit": 1,
"reset_duration": "1M",
"id": "<string>",
"reset_config": {
"quarter_start_month": 6
},
"current_usage": 123,
"last_reset": "2023-11-07T05:31:56Z",
"override_amount": 123,
"override_mode": "<string>",
"override_cycles_remaining": 123,
"override_cycles_total": 123,
"override_anchor_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"rate_limit_shares": [
{
"source_rate_limit_id": "<string>",
"id": "<string>",
"project_id": "<string>",
"user_id": "<string>",
"rate_limit_id": "<string>",
"token_share": 123,
"token_share_type": "percent",
"request_share": 123,
"request_share_type": "percent",
"rate_limit": {
"id": "<string>",
"token_max_limit": 1,
"token_reset_duration": "1h",
"request_max_limit": 1,
"request_reset_duration": "1h",
"token_current_usage": 123,
"token_last_reset": "2023-11-07T05:31:56Z",
"request_current_usage": 123,
"request_last_reset": "2023-11-07T05:31:56Z",
"config_hash": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
},
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"user_name": "<string>",
"user_email": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
],
"created_by_user_id": "<string>",
"created_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z"
}
}{
"event_id": "<string>",
"type": "<string>",
"is_bifrost_error": true,
"status_code": 123,
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"event_id": "<string>"
},
"extra_fields": {
"routing_info": {
"provider": "anthropic",
"model": "<string>",
"key": "<string>",
"resolved_key_alias": {
"model_id": "<string>",
"model_name": "<string>",
"model_family": "<string>"
},
"is_fallback": true,
"primary_provider": "anthropic",
"primary_model": "<string>",
"requested_provider": "anthropic",
"requested_model": "<string>",
"server_side_fallback_model": "<string>"
},
"provider": "anthropic",
"original_model_requested": "<string>",
"resolved_model_used": "<string>",
"request_type": "<string>",
"mcp_request_type": "<string>",
"a2a_request_type": "<string>",
"a2a_agent_name": "<string>",
"error_type": "<string>",
"retry_after_ms": 150500,
"raw_request": "<unknown>",
"raw_response": "<unknown>",
"converted_request_type": "<string>",
"dropped_compat_plugin_params": [
"<string>"
],
"latency": 123,
"key_statuses": [
{
"key_id": "<string>",
"status": "success",
"provider": "anthropic",
"error": "<unknown>"
}
],
"mcp_auth_required": {
"kind": "<string>",
"mcp_client_id": "<string>",
"mcp_client_name": "<string>",
"message": "<string>",
"authorize_url": "<string>",
"session_id": "<string>"
},
"billed_usage": {
"prompt_tokens": 123,
"prompt_tokens_details": {
"text_tokens": 123,
"audio_tokens": 123,
"image_tokens": 123,
"cached_read_tokens": 123,
"cached_write_tokens": 123
},
"completion_tokens": 123,
"completion_tokens_details": {
"text_tokens": 123,
"accepted_prediction_tokens": 123,
"audio_tokens": 123,
"citation_tokens": 123,
"num_search_queries": 123,
"reasoning_tokens": 123,
"image_tokens": 123,
"rejected_prediction_tokens": 123
},
"total_tokens": 123,
"tool_usage": {
"web_search": {
"num_requests": 123
}
},
"cost": {
"input_tokens_cost": 123,
"output_tokens_cost": 123,
"reasoning_tokens_cost": 123,
"citation_tokens_cost": 123,
"search_queries_cost": 123,
"request_cost": 123,
"total_cost": 123
}
}
}
}{
"event_id": "<string>",
"type": "<string>",
"is_bifrost_error": true,
"status_code": 123,
"error": {
"type": "<string>",
"code": "<string>",
"message": "<string>",
"param": "<string>",
"event_id": "<string>"
},
"extra_fields": {
"routing_info": {
"provider": "anthropic",
"model": "<string>",
"key": "<string>",
"resolved_key_alias": {
"model_id": "<string>",
"model_name": "<string>",
"model_family": "<string>"
},
"is_fallback": true,
"primary_provider": "anthropic",
"primary_model": "<string>",
"requested_provider": "anthropic",
"requested_model": "<string>",
"server_side_fallback_model": "<string>"
},
"provider": "anthropic",
"original_model_requested": "<string>",
"resolved_model_used": "<string>",
"request_type": "<string>",
"mcp_request_type": "<string>",
"a2a_request_type": "<string>",
"a2a_agent_name": "<string>",
"error_type": "<string>",
"retry_after_ms": 150500,
"raw_request": "<unknown>",
"raw_response": "<unknown>",
"converted_request_type": "<string>",
"dropped_compat_plugin_params": [
"<string>"
],
"latency": 123,
"key_statuses": [
{
"key_id": "<string>",
"status": "success",
"provider": "anthropic",
"error": "<unknown>"
}
],
"mcp_auth_required": {
"kind": "<string>",
"mcp_client_id": "<string>",
"mcp_client_name": "<string>",
"message": "<string>",
"authorize_url": "<string>",
"session_id": "<string>"
},
"billed_usage": {
"prompt_tokens": 123,
"prompt_tokens_details": {
"text_tokens": 123,
"audio_tokens": 123,
"image_tokens": 123,
"cached_read_tokens": 123,
"cached_write_tokens": 123
},
"completion_tokens": 123,
"completion_tokens_details": {
"text_tokens": 123,
"accepted_prediction_tokens": 123,
"audio_tokens": 123,
"citation_tokens": 123,
"num_search_queries": 123,
"reasoning_tokens": 123,
"image_tokens": 123,
"rejected_prediction_tokens": 123
},
"total_tokens": 123,
"tool_usage": {
"web_search": {
"num_requests": 123
}
},
"cost": {
"input_tokens_cost": 123,
"output_tokens_cost": 123,
"reasoning_tokens_cost": 123,
"citation_tokens_cost": 123,
"search_queries_cost": 123,
"request_cost": 123,
"total_cost": 123
}
}
}
}| Permission | Granted via |
|---|---|
Projects:Create | RBAC role or API key scope |
Authorizations
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 ofBasicAuth).
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.
Body
A project starts with no members: the roster is written through the member routes, so this body has no members field.
How the project's own access composes with the access the caller already holds. intersect permits only what both allow, so a project with no provider config permits nothing. union leaves the caller's access untouched and adds to it, so a project with no provider or MCP config only attributes and caps spend.
intersect, union explicit admits only the users on the roster. open admits every authenticated caller and has no membership rows, which is why it cannot divide a budget between members.
explicit, open Which ledgers a request's spend lands on. both charges the project and the caller. project_only takes the request off everything the caller funds, including the teams and business units above them. principal_only leaves the project's caps on record but checks and charges none of them. The deployment's own global caps always apply.
both, project_only, principal_only none keeps the project's caps shared, and individual members can still be capped by hand. equal gives every member an equal slice of every budget and rate limit the project holds, at every tier, as a second cap within it.
none, equal When true, grants access to every provider, including ones without a provider_configs entry and providers added later. Listed providers keep their own model, key, budget, and rate-limit rules.
Show child attributes
Show child attributes
A token and request rate limit on a project, on a provider inside it, or on a model under that provider. The two dimensions run independent windows, and a cap is enforced only together with its window.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Show child attributes
A Virtual MCP assigned to the project. A scoped request can reach each one at its /mcp/<slug> endpoint. Assignments are a set, so a repeat collapses rather than doubling, and the list is replaced wholesale on update rather than diffed.
- Option 1
- Option 2
Show child attributes
Show child attributes
Response
Project created
A per-request access scope and accounting ledger that callers opt into with a header.
Show child attributes
Show child attributes
Was this page helpful?

