The base tenant endpoints (create, list, get) are under API Reference → Tenants. This page covers lifecycle operations available to platform-admin callers.
These endpoints are intended for platform operators, not tenant users. In production, route them through a separate auth boundary (e.g. an internal admin API gateway).
Update tenant
curl -X PUT https://api.qustody.io/v1/tenants/tnt_01HXYZ \
-H "Authorization: Bearer $QUSTODY_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Acme Treasury (Renamed)",
"ip_allowlist": ["203.0.113.0/24"],
"metadata": {"tier": "enterprise"}
}'
Updatable fields
| Field | Description |
|---|
name | Display name |
ip_allowlist | Array of CIDRs; empty = no restriction |
metadata | Free-form JSON object |
Response 200
{
"id": "tnt_01HXYZ...",
"name": "Acme Treasury (Renamed)",
"status": "active",
"ip_allowlist": ["203.0.113.0/24"],
"metadata": {"tier": "enterprise"},
"updated_at": "2026-04-27T10:15:00Z"
}
Suspend tenant
Marks the tenant suspended. All subsequent API calls from credentials in that tenant return 1000 UNAUTHORIZED. In-flight transactions remain visible but cannot transition states.
POST /v1/tenants/{id}/suspend
curl -X POST https://api.qustody.io/v1/tenants/tnt_01HXYZ/suspend \
-H "Authorization: Bearer $QUSTODY_ADMIN_KEY" \
-H "Content-Type: application/json" \
-d '{"reason": "non-payment", "notify_email": "billing@acme.example"}'
Reactivate tenant
Restores a suspended tenant to active. Webhook deliveries that accumulated during suspension are not replayed automatically — use /webhooks/{id}/replay if needed.
POST /v1/tenants/{id}/reactivate
curl -X POST https://api.qustody.io/v1/tenants/tnt_01HXYZ/reactivate \
-H "Authorization: Bearer $QUSTODY_ADMIN_KEY"
Required permissions
| Endpoint | Permission |
|---|
PUT /v1/tenants/{id} | tenants:update |
POST /v1/tenants/{id}/suspend | tenants:update |
POST /v1/tenants/{id}/reactivate | tenants:update |
Only admin has these by default.