A valid request URL is required to generate request examples{
"status": "success",
"message": "Operation completed successfully"
}{
"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": {
"provider": "openai",
"model_requested": "<string>",
"request_type": "<string>"
}
}{
"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": {
"provider": "openai",
"model_requested": "<string>",
"request_type": "<string>"
}
}{
"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": {
"provider": "openai",
"model_requested": "<string>",
"request_type": "<string>"
}
}{
"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": {
"provider": "openai",
"model_requested": "<string>",
"request_type": "<string>"
}
}Complete MCP client OAuth flow
Completes an OAuth flow for an MCP client after the admin has authorized the request upstream. Call it once the flow’s status_url reports “authorized”. It serves every admin-side OAuth completion with one endpoint:
- Create-time and config.json-bootstrap flows: retrieves the pending MCP client configuration and establishes the connection with the OAuth-provided credentials (per_user_oauth clients instead verify with the admin token, discover tools, and retain the token as the admin discovery credential).
- Reauthorize flows (started via POST /api/mcp/client//reauthorize): for shared “oauth” clients, reconnects the client with the fresh credential; for per_user_oauth clients, verifies the fresh admin token upstream, re-discovers tools, and promotes it to the retained admin discovery credential.
Replays are rejected with 409: hitting the endpoint again after the flow already completed (no pending configuration and no freshly-written token) returns “OAuth flow has already been completed”. A shared “oauth” reauthorize is also rejected with 409 if its flow never actually resolved via a real callback — e.g. the upstream authorization server rejected the request outright before ever redirecting back — returning “Authorization has not completed yet”. This is detected via the flow’s own row rather than the client’s overall OAuth status, which never regresses once a client has been authorized once and so can’t distinguish a stale prior authorization from a fresh one.
A valid request URL is required to generate request examples{
"status": "success",
"message": "Operation completed successfully"
}{
"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": {
"provider": "openai",
"model_requested": "<string>",
"request_type": "<string>"
}
}{
"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": {
"provider": "openai",
"model_requested": "<string>",
"request_type": "<string>"
}
}{
"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": {
"provider": "openai",
"model_requested": "<string>",
"request_type": "<string>"
}
}{
"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": {
"provider": "openai",
"model_requested": "<string>",
"request_type": "<string>"
}
}Authorizations
Management API authentication for /api/* endpoints. Use the Authorization header with Bearer <API key>.
Virtual keys, dashboard/user/session tokens, and x-api-key headers are not supported on management APIs.
Path Parameters
The oauth_config_id of the flow being completed (as returned in the initiation response's oauth_config_id / complete_url), not the MCP client ID.
Was this page helpful?

