> ## Documentation Index
> Fetch the complete documentation index at: https://orchestrator-docs.hexoforge.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Current user profile

> Fetch the authenticated user's profile from the database.

Returns the current user record. Requires `X-API-Key` and a valid **Bearer** access token.

<Info>
  Send both `X-API-Key` and `Authorization: Bearer` with your access token. Prefer local JWT validation with JWKS for hot paths; use this endpoint as a fallback or for testing.
</Info>

## Response

**200 OK**

```json theme={null}
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "email": "user@example.com",
  "name": "Jane Doe",
  "phone": "+1234567890",
  "is_active": true,
  "email_verified": true,
  "totp_enabled": false,
  "metadata": { "plan": "pro" },
  "last_login_method": "email",
  "roles": ["user", "editor"],
  "permissions": ["read:posts", "write:posts"]
}
```

<ResponseField name="id" type="string (uuid)">
  User identifier.
</ResponseField>

<ResponseField name="email" type="string">
  Email address.
</ResponseField>

<ResponseField name="name" type="string | null">
  Display name.
</ResponseField>

<ResponseField name="phone" type="string | null">
  Phone.
</ResponseField>

<ResponseField name="is_active" type="boolean">
  Whether the account is active.
</ResponseField>

<ResponseField name="email_verified" type="boolean">
  Email verification state.
</ResponseField>

<ResponseField name="totp_enabled" type="boolean">
  Whether TOTP is enabled.
</ResponseField>

<ResponseField name="metadata" type="object">
  Custom metadata.
</ResponseField>

<ResponseField name="last_login_method" type="string | null">
  Last authentication method.
</ResponseField>

<ResponseField name="roles" type="string[]">
  Role slugs.
</ResponseField>

<ResponseField name="permissions" type="string[]">
  Permission slugs.
</ResponseField>

Each successful call hits the database.

## Status codes

| Code | Meaning                                              |
| ---- | ---------------------------------------------------- |
| 200  | Success                                              |
| 401  | Missing, invalid, or revoked token                   |
| 403  | IP or firewall block, or email verification required |
| 429  | Rate limited                                         |
