
# Get your profile

`GET /fapi/v1/me` · called from the environment's sign-in host

Returns the authenticated user's own profile: the seven fields the user can change and `user_metadata`. Contact details, verification state, `app_metadata` and administrative fields are not returned. The `ETag` header is the profile version; send it in `If-Match` to make a change conditional. Requires the authenticated user's `__Host-idp_session` cookie; if the cookie is missing, expired, or revoked, returns `401 unauthenticated`. A first-party app on another origin can instead send its front API access token (`Authorization: DPoP <token>` with a DPoP proof; see [Front API access token](/docs/api/fapi/front-api-token)). No recent re-verification is needed. The answer is personal data and is never cached.

## Request

Headers:

| Header | Required | Description |
| --- | --- | --- |
| `Idp-Client` | yes | SDK identifier. |

No body.

## Response

`200 OK` with an `ETag` header (the profile version, for example `"8"`):

| Field | Type | Description |
| --- | --- | --- |
| `id` | string | User identifier (`usr_…`), the same as the tokens' `sub`. |
| `given_name` | string | Given name. |
| `family_name` | string | Family name. |
| `name` | string | Full name. |
| `picture` | string | Picture URL (`https`). |
| `locale` | string | Language (BCP 47 tag). |
| `zoneinfo` | string | Time zone (IANA name). |
| `username` | string | Username. |
| `user_metadata` | object | The user's own metadata; always a JSON object (`{}` when empty). |

Fields without a value are absent from the answer.

```json
{
  "id": "usr_01jbz6x8kq3m2n4p5r6s7t8v9w",
  "given_name": "Ada",
  "family_name": "Lovelace",
  "name": "Ada Lovelace",
  "locale": "en-GB",
  "zoneinfo": "Europe/London",
  "username": "ada",
  "user_metadata": {
    "theme": "dark"
  }
}
```

## Errors

| Status | Code | When |
| --- | --- | --- |
| 401 | `unauthenticated` | No valid session cookie. |
| 404 | `not_found` | The account cannot be read (for example blocked or being deleted). |
| 503 | `service_unavailable` | The user directory is temporarily unavailable; retry after `Retry-After` seconds. |

## Example

```bash
curl https://example.keenauth.app/fapi/v1/me \
  -H "Idp-Client: my-app/1.0.0 (node/22.0.0)" \
  -b cookies.txt
```

## Personal data

This endpoint carries personal data: end-user profile. [Personal data in the KeenAuth APIs](/docs/policies/personal-data) describes what is stored, how long it is kept and how it is deleted. Do not send special categories of personal data (health, biometric data, religion, political opinions, sexual orientation) in any field.
