---
title: "List the caller’s teams"
method: GET
path: "/api/v1/teams"
tags: ["Teams"]
---

# List the caller’s teams

`GET /api/v1/teams`

## Request

- Base URL: `https://charm.ing`
- URL: `https://charm.ing/api/v1/teams`
- Auth: one of:
  - HTTP bearer
  - API key in cookie `__Secure-better-auth.session_token`

User-gated (`chrm_user_*` or session). Every team the caller belongs to, with their role, member roster (owners first, caller flagged via `isYou`), and app-count rollup.

## Response `200`

The caller’s teams.

- TeamListResponse
  - `ok` true, required
  - `teams` TeamSummary[], required
    - `teamId` string, required
    - `name` string, required
    - `slug` string, required
    - `role` string, required: The caller’s own role in this team.
    - `memberCount` integer, required
    - `appCount` integer, required
    - `paid` boolean, required: True while the team is on a live paid plan.
    - `members` TeamMemberSummary[], required
      - `userId` string, required
      - `memberId` string, required
      - `name` string, required
      - `image` string, nullable, required
      - `handle` string, nullable, required
      - `role` string, required: Comma-joined role string (e.g. `owner`).
      - `isYou` boolean, required
      - `badges` NameBadges, required: The marks Charming shows beside a person’s name, derived from live plans at read time.
        - `pro` boolean, required: True while the person pays for a plan on their own account.
        - `affiliation` object, nullable, required: The paid team the person shows beside their name, or null for none.
          - `name` string, required
          - `logoUrl` string, uri, required

## Other responses

- `401`: Sign-in required.

---

[API](https://skmtc.dev/charm/apis/charming-api.md) · [All operations](https://skmtc.dev/charm/apis/charming-api/llms.txt) · [OpenAPI document](https://skmtc.dev/charm/apis/charming-api/revisions/a9d06c419b3a?raw)
