README — GET /api/v1/orgs
Your teams and classes#
GET /api/v1/orgs · Operation ID: listOrgsApp purpose#
Filter returned organisations by kind === "team". The shared route can return classes too. Keep the selected team explicit; a user can belong to multiple organisations. An org-owned credential is limited to its own principal.Authentication and authority#
Bearer credential with orgs:read. Any authenticated caller with this scope; results reflect current membership.Scopes do not replace role, ownership, plan, current membership or effective-policy checks. The team edition uses the shared organisation route with a team ID; it does not change the backend schema for classes.Example#
Replace all REPLACE_* values and use an authorised disposable team for tests. Read-only examples still require the appropriate data access. Mutating examples change team state; policy PUT examples are complete replacements.curl --fail-with-body -X GET 'https://handwrites.io/api/v1/orgs' \
-H "Authorization: Bearer $HANDWRITE_ACCESS_TOKEN"
Responses and recovery#
| Status | Meaning | Format |
|---|
| 200 | With your role in each. | application/json |
| 401 | unauthorized: no token, or it's invalid, revoked or expired. | application/json |
| 403 | insufficient_scope, forbidden (you can see it but not do this), app_test_restricted, account_deleted (the account is scheduled for deletion; any request). | application/json |
| 429 | rate_limited (burst or daily cap) or quota_exceeded (no characters left). | application/json |
| 500 | internal_error. | application/json |
Treat 403 as a current authority/policy failure and 404 as unavailable to this caller, without probing other accounts. Plan and seat checks may add 402 failures beyond generic reference responses. Retry only when the operation semantics permit it; keep Request-Id for support. Do not parse a 204 or 304 as JSON.Modified at 2026-10-26 13:21:46