---
title: "Show who the token belongs to and what its plan allows"
method: GET
path: "/me"
tags: ["Identity"]
---

# Show who the token belongs to and what its plan allows

`GET /me`

## Request

- Base URL: `https://www.juzpost.com/api/cli/v1`
- URL: `https://www.juzpost.com/api/cli/v1/me`
- Auth: HTTP bearer

Returns the calling user, the credential, the workspace and its scheduling defaults,
the plan, billing state, the entitlements that gate every other operation, quota usage,
the limits in force and a `blocked` list of plain-English reasons a write would fail.
This is the only authenticated operation that is not itself gated on the `api`
capability, so call it first to discover whether a schedule or upload would be
rejected with `402`. The same shape backs the MCP `get_context` tool.

## Response `200`

Identity, credential, workspace, plan, billing, entitlements, quotas, limits and blockers.

- Me: Everything an agent needs to know before acting, in one call.
  - `user` object, required: The user the credential was minted for.
    - `id` string, uuid, required: The user's id.
    - `email` string, nullable, required: The user's email address, or null if the account has none on record.
  - `credential` object, required: The credential used for this request. Never includes the secret.
    - `type` 'api_key' | 'oauth', required: `api_key` for a dashboard-issued key, `oauth` for an AI connector grant.
    - `scopes` string[], required: Scopes granted. API keys hold all four.
    - `expiresAt` string, date-time, nullable, required: When an OAuth access token expires. Null for API keys.
  - `workspace` object, required: The workspace this credential is scoped to. Everything you can read or write lives inside it.
    - `id` string, uuid, required: The account id. You never send it anywhere; quote it if you contact support.
    - `name` string, required: Display name of the account.
    - `timezone` string, required: IANA timezone name, such as `America/New_York`. Preset posting times are wall-clock times in this zone, converted to UTC at scheduling time, so daylight saving is handled for you.
    - `defaultTimes` string[], required: Preset posting times as 24-hour `HH:MM` wall-clock strings in your timezone. `POST /schedule` uses these unless you override them, and fails with `422` if this list is empty and you pass none.
    - `slug` string, required: URL slug of the workspace.
    - `role` string, required: The calling user's role in the workspace, such as `owner`.
  - `plan` object, required: The plan in force. An unknown or lapsed subscription resolves to `none`.
    - `id` 'none' | 'solo' | 'growth' | 'pro', required: Plan id. `none` means no active paid plan, in which case most operations return `402`.
    - `name` string, required: Display name of the plan.
    - `trialActive` boolean, required: Whether the subscription is in its trial period.
  - `billing` Billing, required: Subscription state for the workspace.
    - `status` string, required: The billing provider's subscription status, such as `active`, `trialing` or `past_due`.
    - `periodEnd` string, date-time, required: End of the current billing period.
    - `cancelAtPeriodEnd` boolean, required: Whether the subscription ends at `periodEnd`.
    - `graceUntil` integer, nullable, required: Unix milliseconds until which already-scheduled posts keep publishing after a failed payment. Null when not in dunning.
    - `dunning` boolean, required: True while payment has failed and the grace window is open. New schedules are refused; scheduled posts still fire until `graceUntil`.
  - `entitlements` Entitlements, required: The capability flags that gate this API. Check these before attempting a write rather than discovering a `402` mid-workflow.
    - `api` Entitlement, required: One capability and, when it is locked, the lowest plan that allows it.
      - `allowed` boolean, required: Whether the plan behind this token permits the action right now.
      - `requiredPlan` 'none' | 'solo' | 'growth' | 'pro' | 'null', nullable, required: The lowest plan that allows the action, or null when `allowed` is true.
    - `schedule` Entitlement, required: One capability and, when it is locked, the lowest plan that allows it.
      - `allowed` boolean, required: Whether the plan behind this token permits the action right now.
      - `requiredPlan` 'none' | 'solo' | 'growth' | 'pro' | 'null', nullable, required: The lowest plan that allows the action, or null when `allowed` is true.
    - `publish` Entitlement, required: One capability and, when it is locked, the lowest plan that allows it.
      - `allowed` boolean, required: Whether the plan behind this token permits the action right now.
      - `requiredPlan` 'none' | 'solo' | 'growth' | 'pro' | 'null', nullable, required: The lowest plan that allows the action, or null when `allowed` is true.
    - `connectAccount` Entitlement, required: One capability and, when it is locked, the lowest plan that allows it.
      - `allowed` boolean, required: Whether the plan behind this token permits the action right now.
      - `requiredPlan` 'none' | 'solo' | 'growth' | 'pro' | 'null', nullable, required: The lowest plan that allows the action, or null when `allowed` is true.
    - `createWorkspace` Entitlement, required: One capability and, when it is locked, the lowest plan that allows it.
      - `allowed` boolean, required: Whether the plan behind this token permits the action right now.
      - `requiredPlan` 'none' | 'solo' | 'growth' | 'pro' | 'null', nullable, required: The lowest plan that allows the action, or null when `allowed` is true.
  - `quotas` object, required: Usage against the caps. `subscription` is one pool shared by every workspace the plan owner has; `workspace` is this workspace alone.
    - `subscription` object, required
      - `ownedBy` 'you' | 'workspace owner', required: Whose subscription the plan and these counts belong to.
      - `accounts` object, required
        - `used` integer, required: Social accounts connected across every workspace the owner has.
        - `max` integer, required: Account slots granted to the subscription.
      - `queuedPosts` object, required
        - `used` integer, required: Posts scheduled and not yet published, across every workspace the owner has.
        - `max` integer, required: Maximum scheduled posts the plan allows at once.
    - `workspace` object, required
      - `accounts` integer, required: Social accounts connected in this workspace.
      - `storage` object, required
        - `usedBytes` integer, required: Bytes of media stored in this workspace.
        - `quotaBytes` integer, required: Storage quota in bytes for this workspace.
  - `limits` object, required: The fixed limits scheduling and uploads are validated against.
    - `scheduleAheadDays` integer, required: How far into the future a post may be scheduled.
    - `minScheduleMinutes` integer, required: Minimum lead time for a scheduled post.
    - `maxFilesPerPost` integer, required: Maximum media files on one post.
    - `blockedPlatforms` string[], required: Platforms the plan cannot post to.
    - `presignPerMinute` integer, required: `POST /storage/presign` calls allowed per minute.
  - `blocked` string[], required: Plain-English reasons a write would fail right now, such as a missing plan, a past-due subscription or a full queue. Empty when nothing blocks you. Show these to the user instead of attempting the doomed write.

## Other responses

- `401`: No bearer token was sent, or the token is unknown, revoked or malformed. Run the device login again to obtain a new token.

---

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