$ -weight: 500;">curl --request POST \ --url http://localhost:8080/api/governance/customers \ --header 'Content-Type: application/json' \ --data '{ "name": "acme-corp", "budget": { "max_limit": 500, "reset_duration": "monthly" } }'
-weight: 500;">curl --request POST \ --url http://localhost:8080/api/governance/customers \ --header 'Content-Type: application/json' \ --data '{ "name": "acme-corp", "budget": { "max_limit": 500, "reset_duration": "monthly" } }'
-weight: 500;">curl --request POST \ --url http://localhost:8080/api/governance/customers \ --header 'Content-Type: application/json' \ --data '{ "name": "acme-corp", "budget": { "max_limit": 500, "reset_duration": "monthly" } }'
{ "customer": { "id": "cust-abc123", "name": "acme-corp", "budget": { "id": "bdgt-xyz", "max_limit": 500, "reset_duration": "monthly", "current_usage": 0 } }
}
{ "customer": { "id": "cust-abc123", "name": "acme-corp", "budget": { "id": "bdgt-xyz", "max_limit": 500, "reset_duration": "monthly", "current_usage": 0 } }
}
{ "customer": { "id": "cust-abc123", "name": "acme-corp", "budget": { "id": "bdgt-xyz", "max_limit": 500, "reset_duration": "monthly", "current_usage": 0 } }
}
-weight: 500;">curl --request POST \ --url http://localhost:8080/api/logs/search \ --header 'Content-Type: application/json' \ --data '{ "filters": { "providers": ["openai"], "min_cost": 0.10, "start_time": "2026-03-31T00:00:00Z" }, "pagination": { "limit": 50, "sort_by": "cost", "order": "desc" } }'
-weight: 500;">curl --request POST \ --url http://localhost:8080/api/logs/search \ --header 'Content-Type: application/json' \ --data '{ "filters": { "providers": ["openai"], "min_cost": 0.10, "start_time": "2026-03-31T00:00:00Z" }, "pagination": { "limit": 50, "sort_by": "cost", "order": "desc" } }'
-weight: 500;">curl --request POST \ --url http://localhost:8080/api/logs/search \ --header 'Content-Type: application/json' \ --data '{ "filters": { "providers": ["openai"], "min_cost": 0.10, "start_time": "2026-03-31T00:00:00Z" }, "pagination": { "limit": 50, "sort_by": "cost", "order": "desc" } }'
npx -y @maximhq/bifrost
npx -y @maximhq/bifrost
npx -y @maximhq/bifrost - Text: token-based and character-based pricing for chat completions, text completions, and embeddings
- Audio: token-based and duration-based pricing for speech synthesis and transcription
- Images: per-image costs with tiered pricing for high-token contexts
- Tiered pricing: automatic rate changes above 128k tokens, reflecting actual provider pricing - Customer - set a spending cap for an entire customer account
- Team - limit spend per team within a customer
- Virtual Key - control costs per API key (useful for per-feature or per-environment budgets)
- Provider Config - cap total spend on a specific provider - Provider and model used
- Input tokens, output tokens, total tokens
- Calculated cost (broken down into input cost, output cost, request cost, total cost)
- Status (success or error)
- Full input/output content (serialized as JSON) - Direct cache hit (exact match): zero cost. The response comes from cache, no provider API call is made.
- Semantic cache hit (similar query found): the cost is the embedding generation cost only. No model inference cost.
- Cache miss with storage: the cost is the base model usage plus the embedding generation cost for storing the result. - GitHub repo
- Documentation