POST /v1/organizations/:orgId/resume
Lift a suspension and return a customer org to active.
POST
/v1/organizations/:orgId/resumePhase 1stableidempotent
- Auth
- Bearer
- Scope
- org:admin
Lift a suspension and return a child org to active. The child's own keys start working again immediately and held work resumes.
Idempotent by state: resuming an already-active org is a no-op that returns its current state. You cannot resume an archived org (409 CONFLICT) — archival is terminal.
Path
orgIdstringrequiredThe child org id (`org_`-prefixed or bare UUID).
Example request
curl -X POST https://api.layers.com/v1/organizations/org_d4e5f6a7-8b9c-4d0e-9f2a-3b4c5d6e7f80/resume \
-H "Authorization: Bearer $PARENT_KEY"const org = await fetch(
"https://api.layers.com/v1/organizations/org_d4e5f6a7-8b9c-4d0e-9f2a-3b4c5d6e7f80/resume",
{ method: "POST", headers: { "Authorization": `Bearer ${process.env.PARENT_KEY}` } },
).then((r) => r.json());import os, requests
org = requests.post(
"https://api.layers.com/v1/organizations/org_d4e5f6a7-8b9c-4d0e-9f2a-3b4c5d6e7f80/resume",
headers={"Authorization": f"Bearer {os.environ['PARENT_KEY']}"},
).json()Response
200OK
{
"id": "org_d4e5f6a7-8b9c-4d0e-9f2a-3b4c5d6e7f80",
"parentOrganizationId": "org_2481fa5c-a404-44ed-a561-565392499abc",
"name": "Acme Coffee",
"status": "active",
"metadata": { "externalId": "cust_12345", "plan": "growth" },
"billingEmail": "ops@acme.example",
"archivedAt": null,
"createdAt": "2026-06-01T14:30:00.000000+00:00",
"updatedAt": "2026-06-02T12:00:00.000000+00:00"
}Errors
| Status | Code | When |
|---|---|---|
| 404 | NOT_FOUND | No such org, or it isn't a direct child of your org. |
| 422 | VALIDATION | The :orgId is not a valid organization id (malformed UUID). |
| 409 | CONFLICT | The org is archived — terminal and cannot be resumed. |
| 401 | UNAUTHENTICATED | Missing or invalid key. |
| 403 | FORBIDDEN_SCOPE | Key lacks org:admin. |
See also
POST /v1/organizations/:orgId/suspend— the inverse.- Organizations concept — the lifecycle diagram.