API reference
Custom providers
Workspace-owned OpenAI-compatible providers.
Workspace-owned OpenAI-compatible providers.
This page is GENERATED from the OpenAPI spec (openapi.yaml) — it can never
drift from the served API. Set UR_BASE_URL (required: your gateway’s URL)
and UR_API_KEY (an ur_sk_* key); secrets are always the $UR_API_KEY placeholder.
List custom providers
GET /v1/workspaces/{id}/providersAuth: Session cookie + workspace RBAC.
curl -sS -X GET "$UR_BASE_URL/v1/workspaces/req_0000000000000000/providers" \
-H "Cookie: better-auth.session_token=$UR_SESSION"Register a custom provider
POST /v1/workspaces/{id}/providersThe base URL is SSRF-validated on save.
Auth: Session cookie + workspace RBAC.
curl -sS -X POST "$UR_BASE_URL/v1/workspaces/req_0000000000000000/providers" \
-H "Cookie: better-auth.session_token=$UR_SESSION" \
-H "Content-Type: application/json" \
-d '{
"name": "string",
"base_url": "string"
}'Get a custom provider
GET /v1/workspaces/{id}/providers/{providerId}Auth: Session cookie + workspace RBAC.
curl -sS -X GET "$UR_BASE_URL/v1/workspaces/req_0000000000000000/providers/prov_0000000000000000" \
-H "Cookie: better-auth.session_token=$UR_SESSION"Update a custom provider
PATCH /v1/workspaces/{id}/providers/{providerId}A changed base URL is re-validated through the SSRF guard.
Auth: Session cookie + workspace RBAC.
curl -sS -X PATCH "$UR_BASE_URL/v1/workspaces/req_0000000000000000/providers/prov_0000000000000000" \
-H "Cookie: better-auth.session_token=$UR_SESSION" \
-H "Content-Type: application/json" \
-d '{
"name": "string",
"base_url": "string"
}'Delete a custom provider
DELETE /v1/workspaces/{id}/providers/{providerId}Auth: Session cookie + workspace RBAC.
curl -sS -X DELETE "$UR_BASE_URL/v1/workspaces/req_0000000000000000/providers/prov_0000000000000000" \
-H "Cookie: better-auth.session_token=$UR_SESSION"