# Identity API

> The signed-in user or API key caller and their memberships.

- [Get the caller](#get-the-caller): `GET /v1/me`

## Get the caller

`GET /v1/me`

With an API key, the caller is the key's creator scoped to the key's organization.

- **API key:** `Authorization: Bearer vmy_…` with preset `read_only`, `use_existing`, `create_and_use`, `full_access`.
- **Browser session:** the `vmyard_session` cookie.
- **Who:** Any member.

**Responses**

| Status | Description | Body |
| --- | --- | --- |
| `200` | — | [`MeDto`](/docs/api/schemas#medto) |
| `401` | Not signed in, or the API key is malformed, expired, or revoked (`unauthenticated`, `invalid_api_key`). | [`ProblemDetails`](/docs/api/schemas#problemdetails) |

```sh title="Request"
curl "$VMYARD_API_URL/v1/me" \
  -H "Authorization: Bearer $VMYARD_API_KEY"
```

```json title="Response 200"
{
  "access": "approved",
  "active_organization_id": "6f1c2d3e-4b5a-4c7d-8e9f-0a1b2c3d4e5f",
  "email": "ada@example.com",
  "login_method_details": [
    {
      "created_at": "2026-10-12T05:51:01Z",
      "email": "ada@example.com",
      "id": "6f1c2d3e-4b5a-4c7d-8e9f-0a1b2c3d4e5f",
      "last_used_at": "2026-10-12T05:51:01Z",
      "provider": "github"
    }
  ],
  "login_methods": [
    "string"
  ],
  "memberships": [
    {
      "access": "approved",
      "organization_id": "6f1c2d3e-4b5a-4c7d-8e9f-0a1b2c3d4e5f",
      "organization_name": "string",
      "role": "owner"
    }
  ],
  "name": "dev",
  "recent_auth": false,
  "user_id": "6f1c2d3e-4b5a-4c7d-8e9f-0a1b2c3d4e5f",
  "waitlist_url": "string"
}
```
