---
title: "Current principal"
method: GET
path: "/v2/me"
tags: ["Identity"]
---

# Current principal

`GET /v2/me`

## Request

- Base URL: `https://api.infolang.ai`
- URL: `https://api.infolang.ai/v2/me`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer
  - HTTP bearer

The authenticated principal, their workspaces with roles, and headline stats (activity events in the last 24h).

On the `il_*` lanes `principal` is `null` — the principal lives inside Kairos and its grant payload carries no id, so the gateway reports null rather than attributing the call to the human who owns the workspace — and `workspaces` is the CREDENTIAL's reach (its grant set intersected with its workspace ceiling), not everything its owner owns.

Requires the `workspace:read` scope. Accepts all three lanes: a session JWT (bounded by the caller's role on this workspace) or an `il_*` machine credential whose own scope set, workspace set and validity window cover it — both ceilings apply and neither can raise the other, so a credential carrying `workspace:read` is still refused where the role does not permit it.

A credential with no scope record resolves to `LEGACY_DEFAULT`, which does NOT include `workspace:read` — mint a key with it explicitly (`POST /v2/workspaces/{id}/keys`).

## Response `200`

The caller

- object
  - `principal` string, nullable, required
  - `email` string, email
  - `workspaces` object[], required
    - `workspace_id` string, required
    - `name` string, required
    - `role` 'Owner' | 'Admin' | 'Member' | 'ReadOnly', required
  - `stats` object, required
    - `requests_24h` integer, required
  - `capabilities` object, required
    - `canon` boolean, required

## Other responses

- `401`: Missing/invalid credential, or `credential_expired` — the credential is outside its `[not_before, expires_at)` window and must be replaced
- `403`: `insufficient_scope` — the credential's own scope set, or the caller's role on this workspace, does not cover the scope this route requires (the missing scope is named in the message). Or `forbidden` — the credential is not scoped to this workspace, or holds no grant on it

---

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