---
title: "List your organizations"
method: GET
path: "/public/organizations"
tags: ["Organizations"]
---

# List your organizations

`GET /public/organizations`

## Request

- Base URL: `https://api.johnsessentials.com/api/v1`
- URL: `https://api.johnsessentials.com/api/v1/public/organizations`
- Auth: HTTP bearer

Returns every team the API key's owner is an active member of, with
the owner's role in each and which one is current. Read-only; scoped
to the key owner — a key never sees teams it doesn't belong to.

## Response `200`

The teams you belong to.

- object
  - `data` object: Handler payload on success; null on error.
    - `count` integer
    - `organizations` OrganizationSummary[]
      - `id` string, uuid, required
      - `is_current` boolean, required: True for the owner's default/active organization.
      - `name` string, required
      - `role` 'owner' | 'admin' | 'member' | 'viewer', required: The key owner's role in this org.
      - `tier` 'free' | 'starter' | 'business' | 'enterprise', required: The org's plan; every active seat inherits this tier.
  - `error` ErrorBody: Additional fields per code (validation errors, retry_after, hints) appear at this level. additionalProperties: true is intentional.
    - `code` 'auth_missing_header' | 'auth_malformed_header' | 'auth_invalid_key' | 'auth_expired_key' | 'auth_inactive_key' | 'auth_scope_missing' | 'quota_calls_exceeded' | 'quota_cost_exceeded' | 'quota_storage_exceeded' | 'quota_agent_runs_exceeded' | 'credit_exhausted' | 'tool_not_found' | 'tool_input_invalid' | 'tool_file_too_large' | 'tool_file_not_found' | 'tool_unsupported' | 'tool_timeout' | 'tool_internal' | 'idempotency_key_in_use' | 'agent_max_iterations' | 'agent_unauthorized_tool' | 'agent_invalid_plan' | 'workflow_not_found' | 'workflow_invalid' | 'bad_request' | 'forbidden' | 'not_found' | 'conflict' | 'internal_error' | 'service_unavailable', required: Stable canonical code from the taxonomy. Branch on this, not on `message`. Full list at /api/errors.
    - `doc_url` string, uri, required
    - `message` string, required
    - `request_id` string, uuid
  - `meta` EnvelopeMeta, required
    - `rate_limit` object
      - `limit` integer
      - `remaining` integer
      - `reset` integer: Unix seconds
    - `timestamp` string, date-time, required
    - `version` string, required
  - `request_id` string, uuid, required
  - `success` boolean, required

## Other responses

- `401`: Auth failed (missing/malformed/invalid/expired/inactive key).
- `403`: API key lacks required scope (auth_scope_missing).
- `429`: Sliding 1-hour rate limit exceeded.

---

[API](https://skmtc.dev/johnsessentials/apis/john-s-essentials-api.md) · [All operations](https://skmtc.dev/johnsessentials/apis/john-s-essentials-api/llms.txt) · [OpenAPI document](https://skmtc.dev/johnsessentials/apis/john-s-essentials-api/revisions/56586ff78e6d?raw)
