---
title: "Get identity"
method: GET
path: "/me"
tags: ["Identity"]
---

# Get identity

`GET /me`

## Request

- Base URL: `https://api.shortsync.app/v1`
- URL: `https://api.shortsync.app/v1/me`
- Auth: HTTP bearer

Returns the kind, organization, workspace scope, granted scopes, and
the current month's API quota snapshot for the token used to make
this request. Safe to call on app boot to discover what the token
can do and how much headroom is left on the monthly caps.

## Response `200`

Token introspection.

- Identity
  - `kind` 'workspace', required: Always `workspace` for keys minted in v1 beta. Legacy account tokens may still authenticate on `/me` with `kind: "account"` but cannot reach any other endpoint.
  - `key_id` string, required
  - `prefix` string, required: First chars of the key, including the `ss_*` prefix. Safe to display.
  - `organization_id` string, required
  - `workspace_id` string, nullable: Present for `workspace` kind. `null` for `account`.
  - `workspace_allowlist` string[]: Present for `account` kind when scoped. Empty when unscoped (whole org).
  - `scopes` Scope[], required
  - `plan` 'free' | 'creator' | 'team', required: The organization's current plan tier. The monthly quota under `quota` scales with the plan; see your `quota.requests.limit` for the exact cap on this key.
  - `quota` ApiQuotaSnapshot, required: Current calendar-month API request usage and cap for the organization. The cap comes from the plan tier (Creator: 50 000 requests; Team: 500 000 requests) and counts every authenticated `/api/v1/*` call. There is no per-post or per-publish cap — paid plans get unlimited publishes. Counts reset at `resets_at` (first day of next UTC month). The cap is **per organization (subscription)**, shared across every API key the organization mints. Rotating a key or minting additional keys neither resets the counter nor multiplies the cap.
    - `requests` QuotaBucket, required
      - `used` integer, required
      - `limit` integer, required
      - `remaining` integer, required
    - `resets_at` string, date-time, required

## Other responses

- `401`: Missing, malformed, or revoked token.
- `403`: Token is valid but cannot access this resource. Common cases: - `INSUFFICIENT_SCOPE` - token lacks the required scope. - `WORKSPACE_NOT_ALLOWED` - account token is allowlisted to other workspaces.
- `429`: Per-key sliding-window rate limit (60 req/min), per-org monthly request quota, or per-user upload cap was hit. `RATE_LIMIT_EXCEEDED` carries the window headers; `QUOTA_EXCEEDED` carries `details.quota` (which counter), `used`, `limit`, `resets_at`, and `upgrade_url`. `UPLOAD_QUOTA_EXCEEDED` (Free tier on `POST /posts` only) carries the same shape plus `details.remaining`.

---

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