---
title: "List your current team's members"
method: GET
path: "/public/organizations/members"
tags: ["Organizations"]
---

# List your current team's members

`GET /public/organizations/members`

## Request

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

Returns the roster of the key owner's current organization — a
curated, secret-free projection (id, email, role, status,
joined_at). Pending invitations appear with their invited email and
`status: pending`. Read-only; scoped to your own team. Returns an
empty list if you are not in an organization. Never includes Stripe
ids or other members' account internals.

## Response `200`

Your team's roster.

- object
  - `data` object: Handler payload on success; null on error.
    - `count` integer
    - `members` OrganizationMemberPublic[]
      - `email` string, email, required: Member's email, or the invited email for a pending seat.
      - `id` string, uuid, required: Membership id (not the user id).
      - `joined_at` string, date-time: When the member accepted; absent while pending.
      - `role` 'owner' | 'admin' | 'member' | 'viewer', required
      - `status` 'pending' | 'active' | 'suspended', required
  - `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)
