---
title: "List team members + pending invites for the current customer"
method: GET
path: "/api/me/team"
tags: ["me"]
---

# List team members + pending invites for the current customer

`GET /api/me/team`

## Request

- Base URL: `https://api.signalraven.ai`
- URL: `https://api.signalraven.ai/api/me/team`
- Auth: none declared

All roles can read. Returns current customer_users rows alongside pending (non-accepted, non-expired) invites.

## Response `200`

Team listing

- TeamListResponse
  - `members` object[], required
    - `userId` string, uuid, required
    - `email` string, email, required
    - `role` 'admin' | 'manager' | 'prospector' | 'user', required
    - `joinedAt` string, date-time, required
    - `lastLoginAt` string, date-time, nullable, required
    - `isSelf` boolean, required: true if this row is the calling user
    - `isPaused` boolean, required: True when the membership is paused (over-cap after a plan change). Paused members do not consume the seat cap and cannot sign in until reactivated. (Trial-to-Solo-seat-pause migration 0049)
    - `pausedAt` string, date-time, nullable, required: Timestamp when the membership was paused; null when isPaused=false.
  - `pendingInvites` object[], required
    - `inviteId` string, uuid, required
    - `email` string, email, required
    - `role` 'user' | 'manager' | 'prospector', required
    - `invitedAt` string, date-time, required
    - `expiresAt` string, date-time, required
    - `inviterUserId` string, uuid, required
  - `seatUsage` object, required
    - `members` integer, required: Active members (rows in customer_users).
    - `pendingInvites` integer, required: Non-accepted, non-expired invites — each counts against the cap.
    - `used` integer, required: members + pendingInvites
    - `cap` number, nullable, required: Hard cap for this customer. null = unlimited (Scale + Internal plans; serialized from in-memory Infinity per #50 Day 3).
    - `remaining` integer, nullable, required: max(0, cap - used). null when cap is null (unlimited plan).
    - `capReached` boolean, required: True when used >= cap — invites refused with 402 SeatCapReached. Always false for unlimited plans.

## Other responses

- `401`: Not authenticated

---

[API](https://skmtc.dev/signalraven/apis/zygnal-api.md) · [All operations](https://skmtc.dev/signalraven/apis/zygnal-api/llms.txt) · [OpenAPI document](https://skmtc.dev/signalraven/apis/zygnal-api/revisions/36e1d9b9d604?raw)
