Two endpoints, both behindDocumentation Index
Fetch the complete documentation index at: https://internal.september.wtf/llms.txt
Use this file to discover all available pages before exploring further.
X-Admin-Key (set via ORCH_ADMIN_KEY).
These are the only endpoints that don’t use a product key — they
create products.
POST /products/register
Register a new product. Returns the platform API key — save it.Request
| Field | Type | Required | Purpose |
|---|---|---|---|
slug | string | yes | Unique slug (e.g. bap, demo). Used in audit and logs. |
display_name | string | yes | Human-readable name. |
policy | object | no | Initial policy. Default: {} (no limits). See Policy. |
Response (200)
Errors
401 INVALID_ADMIN_KEY— wrong or missingX-Admin-Key.409 PRODUCT_SLUG_EXISTS— slug already in use.
PUT /products//policy
Update a product’s policy. Used to raise/lower limits without re-registering.Request
| Field | Type | Required | Purpose |
|---|---|---|---|
policy | object | yes | Replaces the existing policy entirely. |
Response (200)
max_engines are NOT destroyed
retroactively.
Errors
401 INVALID_ADMIN_KEY— wrong or missingX-Admin-Key.404 PRODUCT_NOT_FOUND— product_id doesn’t exist.
What admin endpoints can’t do
- Destroy a product. No DELETE today. To remove a product:
destroy all its engines, then delete the row directly:
DELETE FROM products WHERE id = '...';. Cascades clean up engines. - Rotate a platform key. No endpoint today. Re-register the
product or update
products.api_key_hashdirectly. - Upgrade engine version per product. Engines run on
ORCH_ENGINE_IMAGEglobally. To run different versions per product, you need separate orchestrator deployments.
Security
The admin key is a single secret per orchestrator deployment. Treat it like a database master password:- Keep it in your secret manager.
- Audit access to it.
- Rotate quarterly.
- Don’t share with products’ application code.

