---
title: "Get the caller's own identity and workspaces"
method: GET
path: "/api/me"
tags: ["Users"]
---

# Get the caller's own identity and workspaces

`GET /api/me`

## Request

- Base URL: `https://tre-app.com`
- URL: `https://tre-app.com/api/me`
- Auth: HTTP bearer

Same body as MCP's `whoami`: id, name, email, avatar, and the workspaces visible to the caller with the role held in each. A workspace-bound token sees only its audience. Bearer callers also receive token (name, kind, scope, workspace, expiresAt); sessions omit it. Use `id` for `assigneeUserIds` and a workspace `slug` for the `?workspace=` parameter elsewhere — the only way to learn either without triggering a write error.

## Response `200`

Success

- Me
  - `id` string, uuid, required
  - `name` string, nullable
  - `email` string, email
  - `image` string, nullable
  - `workspaces` object[], required
    - `slug` string, required
    - `name` string, required
    - `role` 'owner' | 'admin' | 'member', required
  - `token` object: Present when a bearer token is calling: its name, kind, scope ceiling, audience workspace slug (null = every workspace) and expiry (null = never).
    - `name` string, required
    - `kind` 'personal' | 'oauth', required
    - `scope` 'read' | 'write' | 'admin', required
    - `workspace` string, nullable, required
    - `expiresAt` string, date-time, nullable, required

## Other responses

- `400`: Invalid request
- `401`: Unauthenticated
- `403`: Forbidden: insufficient role or token scope; scope denials name the held scope and the operation
- `404`: Not found
- `409`: Conflict
- `429`: Rate limited
- `500`: Internal server error
- `503`: Temporarily unavailable

---

[API](https://skmtc.dev/tre-app/apis/tre-rest-api.md) · [All operations](https://skmtc.dev/tre-app/apis/tre-rest-api/llms.txt) · [OpenAPI document](https://skmtc.dev/tre-app/apis/tre-rest-api/revisions/26a7187a05fc?raw)
