Status: Stub — content pending.
Status: Stub — content pending.
The Management API runs on port 9090. All routes require:
Authorization: Bearer <OBLETH_ADMIN_TOKEN>
Content-Type: application/json (for POST/PUT/PATCH)
An OpenAPI JSON schema is available at GET /api/v1/openapi.json.
| Method | Path | Description |
|---|---|---|
GET | /api/v1/tenants | List all tenants |
POST | /api/v1/tenants | Create a tenant |
GET | /api/v1/tenants/{id} | Get a tenant |
PATCH | /api/v1/tenants/{id}/weight | Update weight |
PUT | /api/v1/tenants/{id}/quota | Update TPM quota |
PATCH | /api/v1/tenants/{id}/group | Assign to a fairshare group |
# Create tenant
curl -X POST http://localhost:9090/api/v1/tenants \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "acme", "weight": 200, "tokens_per_minute": 100000}'
# Update weight
curl -X PATCH http://localhost:9090/api/v1/tenants/$ID/weight \
-H "Authorization: Bearer $TOKEN" \
-d '{"weight": 500}'
| Method | Path | Description |
|---|---|---|
POST | /api/v1/tenants/{id}/keys | Create a key for a tenant |
GET | /api/v1/keys | List all keys (no secrets) |
DELETE | /api/v1/keys/{id} | Delete a key |
PUT | /api/v1/keys/{id}/disabled | Disable or re-enable a key |
# Create key (secret returned once)
curl -X POST http://localhost:9090/api/v1/tenants/$TENANT_ID/keys \
-H "Authorization: Bearer $TOKEN" \
-d '{"name": "prod-key"}'
# -> {"key": {"id": "...", "key_prefix": "sk_a1b2c3d4e5f6a1b"}, "secret": "sk_a1b2..."}
| Method | Path | Description |
|---|---|---|
POST | /api/v1/models | Register a model |
GET | /api/v1/models | List all models |
GET | /api/v1/models/{id} | Get a model |
PUT | /api/v1/models/{id} | Update a model |
DELETE | /api/v1/models/{id} | Delete a model |
PUT | /api/v1/models/{id}/cache | Configure response cache |
| Method | Path | Description |
|---|---|---|
GET | /api/v1/fairshare/live | Live scheduler snapshot |
POST | /api/v1/fairshare/groups | Create a group |
GET | /api/v1/fairshare/groups | List all groups |
PATCH | /api/v1/fairshare/groups/{name}/weight | Update group weight |
| Method | Path | Description |
|---|---|---|
POST | /api/v1/mcp-servers | Register an MCP server |
GET | /api/v1/mcp-servers | List all servers |
GET | /api/v1/mcp-servers/{id} | Get a server |
PUT | /api/v1/mcp-servers/{id} | Update a server |
DELETE | /api/v1/mcp-servers/{id} | Delete a server |
| Method | Path | Description |
|---|---|---|
GET | /api/v1/usage | Aggregate usage (tenant/key/model) |
GET | /api/v1/usage/keys | Per-key usage |
GET | /api/v1/usage/models | Per-model usage |
GET | /api/v1/usage/series | Time-series usage |
GET | /api/v1/usage/series/tenants | Time-series per tenant |
GET | /api/v1/usage/cache | Cache stats |
GET | /api/v1/costs | Cost breakdown (uses model pricing) |
| Method | Path | Description |
|---|---|---|
GET | /api/v1/stats | Live in_flight, queued, max_in_flight |
GET | /api/v1/capacity | Current max_in_flight per pod |
PUT | /api/v1/capacity | Update max_in_flight live (no restart) |
| Method | Path | Description |
|---|---|---|
GET | /api/v1/audit | Paginated audit log (all config mutations) |
| Method | Path | Description |
|---|---|---|
GET | /api/v1/health | Health check (returns {"status":"ok"}) |
GET | /api/v1/openapi.json | OpenAPI 3.1 schema for all routes |