List organizations
GET /v1/organizations · permission organizations:read
Lists the environment's organizations, newest first. Only forward pagination (after) exists; before and an order other than desc return 422. Filters are exact matches; deleted organizations are not listed.
Request
| Field | Type | Required | Description |
|---|---|---|---|
limit |
integer | no | Page size, 1-100 (default 20). |
after |
string | no | The list_metadata.after cursor of the previous page. |
status |
string | no | Only organizations in this status: active, disabled or pending_deletion. |
slug |
string | no | Exact match on the current slug. |
external_id |
string | no | Exact match on external_id. |
domain |
string | no | Not supported yet; returns 422. |
No request body.
Response
200 OK with a page of organizations.
{
"data": [
{
"id": "org_01j9xk3m7q8r2s4t6v8w0y2z4a",
"name": "Acme Corp",
"slug": "acme",
"external_id": "crm-4821",
"status": "active",
"metadata": {
"tier": "gold"
},
"brand_color": "#1F6FEB",
"max_memberships": null,
"default_zoneinfo": null,
"created_via": "admin_api",
"disabled_at": null,
"deletion_requested_at": null,
"deletion_due_at": null,
"created_at": "2026-10-12T09:30:00.123456Z",
"updated_at": "2026-10-12T09:30:00.123456Z",
"version": 1
}
],
"list_metadata": {
"before": null,
"after": null
}
}
Errors
| HTTP | code | When |
|---|---|---|
| 400 | invalid_cursor |
The cursor is malformed or belongs to other filters. |
| 422 | validation_failed |
A query parameter is invalid (before, order=asc, domain, unknown status). |
| 401 | unauthenticated |
The credential is missing, invalid or revoked. |
| 403 | insufficient_permissions |
The credential lacks the required permission. |
| 429 | rate_limited |
The rate limit was exceeded; retry after the Retry-After period. |
| 503 | service_unavailable |
A dependency is temporarily unavailable; retry after the Retry-After period. |
Example
curl "https://api.eu.keenauth.com/v1/organizations?status=active&limit=20" \
-H "Authorization: Bearer $KEENAUTH_SECRET_KEY"