Admin
Credential plane administration
Credential plane administration
Every request needs a credential — see Authentication.
| Method | Path | Summary |
|---|---|---|
GET | /sandbox/v1/admin/credential-plane/keys | Admin: list provider key ids (no key material) |
POST | /sandbox/v1/admin/credential-plane/keys | Admin: append LLM provider key (credential plane multi-key pool) |
DELETE | /sandbox/v1/admin/credential-plane/keys/{key_id} | Admin: deactivate a provider key in the pool |
POST | /sandbox/v1/admin/credential-plane/keys/{key_id}/rotate | Admin: rotate a specific provider key in the pool |
POST | /sandbox/v1/admin/credential-plane/teams | Admin: create team (credential plane) |
POST | /sandbox/v1/admin/keyhive/keys | Admin: add LLM provider key (legacy path; proxies credential plane) |
POST | /sandbox/v1/admin/keyhive/teams | Admin: create team (legacy path; proxies credential plane) |
DELETE | /sandbox/v1/admin/quotas/{tenant}/{project} | Admin: delete a tenant/project concurrency quota |
GET | /sandbox/v1/admin/quotas/{tenant}/{project} | Admin: inspect a tenant/project concurrency quota |
PUT | /sandbox/v1/admin/quotas/{tenant}/{project} | Admin: create or replace a tenant/project concurrency quota |
Common headers
Accepted on every endpoint on this page.
| Name | In | Type | Required | Description |
|---|---|---|---|---|
x-correlation-id | header | string | no | End-to-end correlation id for this eval run. When set, the gateway and downstream services honor it verbatim in logs, Cloud Trace span attributes, async job payloads, and Langfuse trace.id. When omitted, the gateway generates a ULID and echoes it on the response. |
Endpoints
Admin: list provider key ids (no key material)
GET /sandbox/v1/admin/credential-plane/keys
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
namespace | query | string | yes |
Responses
| Status | Description | Body |
|---|---|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
Admin: append LLM provider key (credential plane multi-key pool)
POST /sandbox/v1/admin/credential-plane/keys
Request body
application/json, required
Responses
| Status | Description | Body |
|---|---|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
Admin: deactivate a provider key in the pool
DELETE /sandbox/v1/admin/credential-plane/keys/{key_id}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
key_id | path | string | yes |
Responses
| Status | Description | Body |
|---|---|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
Admin: rotate a specific provider key in the pool
POST /sandbox/v1/admin/credential-plane/keys/{key_id}/rotate
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
key_id | path | string | yes |
Request body
application/json, required
Responses
| Status | Description | Body |
|---|---|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
Admin: create team (credential plane)
POST /sandbox/v1/admin/credential-plane/teams
Request body
application/json, required
Responses
| Status | Description | Body |
|---|---|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
Admin: add LLM provider key (legacy path; proxies credential plane)
POST /sandbox/v1/admin/keyhive/keys
Request body
application/json, required
Responses
| Status | Description | Body |
|---|---|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
Admin: create team (legacy path; proxies credential plane)
POST /sandbox/v1/admin/keyhive/teams
Request body
application/json, required
Responses
| Status | Description | Body |
|---|---|---|
200 | Successful Response | object |
422 | Validation Error | HTTPValidationError |
Admin: delete a tenant/project concurrency quota
DELETE /sandbox/v1/admin/quotas/{tenant}/{project}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
tenant | path | string | yes | |
project | path | string | yes |
Responses
| Status | Description | Body |
|---|---|---|
200 | Successful Response | any |
422 | Validation Error | HTTPValidationError |
Admin: inspect a tenant/project concurrency quota
GET /sandbox/v1/admin/quotas/{tenant}/{project}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
tenant | path | string | yes | |
project | path | string | yes |
Responses
| Status | Description | Body |
|---|---|---|
200 | Successful Response | any |
422 | Validation Error | HTTPValidationError |
Admin: create or replace a tenant/project concurrency quota
PUT /sandbox/v1/admin/quotas/{tenant}/{project}
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
tenant | path | string | yes | |
project | path | string | yes |
Request body
application/json, required — QuotaPolicyRequest
| Field | Type | Required | Description |
|---|---|---|---|
max_concurrent | integer | yes |
Responses
| Status | Description | Body |
|---|---|---|
200 | Successful Response | any |
422 | Validation Error | HTTPValidationError |
Schemas
The object shapes referenced above.
HTTPValidationError
| Field | Type | Required | Description |
|---|---|---|---|
detail | ValidationError[] | no |
QuotaPolicyRequest
Admin request to set one project or tenant-default concurrency limit.
| Field | Type | Required | Description |
|---|---|---|---|
max_concurrent | integer | yes |
ValidationError
| Field | Type | Required | Description |
|---|---|---|---|
loc | string | integer[] | yes | |
msg | string | yes | |
type | string | yes | |
input | any | no | |
ctx | object | no |
Machine-readable spec: OpenAPI YAML.