---
title: "Who this key belongs to"
method: GET
path: "/api/v1/me"
tags: ["Workspace"]
---

# Who this key belongs to

`GET /api/v1/me`

## Request

- Base URL: `https://mailcheer.com`
- URL: `https://mailcheer.com/api/v1/me`
- Auth: one of:
  - HTTP bearer
  - API key in header `X-Api-Key`

Workspace, the key's permissions, plan, this month's usage (sent, queued, remaining, reset date), billing status and any scheduled plan change, member and domain limits, the daily limit of a new workspace, sending domains and senders. Call this first: it is what tells you which address to write from — and, before a send, whether it fits. No particular permission is required.

## Response `200`

The state of the workspace.

- Account: What the key gives access to, and what is left to use. The first call to make: it gives the verified domains and the registered senders — that is, the only addresses your sends will pass with — and everything a send can be refused for: the monthly quota (queue included), the daily limit of a new workspace, the billing status.
  - `object` 'account'
  - `organization` object: The workspace the key belongs to. `null` if the workspace has been deleted.
    - `id` string
    - `name` string
    - `slug` string
  - `key` object: The key used for this call. Its secret is never returned.
    - `id` string: The key's identifier (not its secret) — the `key_id` of a `key_quota_exceeded`.
    - `name` string: The name you gave it.
    - `scopes` string[]: The permissions of THIS key. A call outside this list returns 403.
    - `mode` 'live' | 'test': `live`, or `test` for a test key (`mch_test_…`): its sends are checked and simulated, nothing goes out.
    - `language` 'en' | 'fr': The language of this key's messages when a call asks for none (`Accept-Language` absent, or not English or French). Set under Settings → API; `en` by default.
    - `monthly_limit` object, nullable: The key's own monthly limit and what it used this month (its emails and the campaigns it launched, copies included, queue included). `null` when the key has none — only the workspace quota counts then. Beyond it: `402 key_quota_exceeded`.
      - `limit` integer
      - `used` integer
      - `remaining` integer
      - `resets_at` string, date-time
  - `plan` object
    - `id` string
    - `name` string
    - `emails_per_month` integer, nullable: `null` = unlimited.
  - `usage` object
    - `period` string: The current month, `YYYY-MM`.
    - `emails_sent` integer: This month's sends accepted by our provider — campaigns, automations, tests and API together.
    - `emails_in_flight` integer: Promised but not yet sent: campaign messages waiting in the queue or being sent, reserved automation sends. Already deducted from `emails_remaining`.
    - `emails_remaining` integer, nullable: What can still be sent this month: quota − `emails_sent` − `emails_in_flight`, never negative. `null` = unlimited. A send asking for more than this returns `402 quota_exceeded`.
    - `resets_at` string, date-time: When the monthly counter resets: the 1st of next month at 00:00 UTC (ISO 8601).
  - `billing` object: The subscription as our payment provider reports it. It explains a `plan` that is not the one being paid for: when a payment fails for good, the workspace runs on the free plan's limits while `subscribed_plan` still names the plan that was bought.
    - `status` 'none' | 'active' | 'trialing' | 'past_due' | 'unpaid' | 'canceled' | 'incomplete' | 'incomplete_expired' | 'paused': `none` = never subscribed (free plan, nothing to pay). Otherwise the provider's status: `active`, `trialing`, `past_due` (a payment failed, access kept while it retries), `unpaid` (retries abandoned: free plan limits apply), `canceled`, `incomplete`, `incomplete_expired`, `paused`.
    - `subscribed_plan` 'starter' | 'pro' | 'agency' | 'null', nullable: The plan being billed, while a subscription is alive; `null` otherwise. It can differ from `plan.id` (see `status`).
    - `current_period_end` string, date-time, nullable: End of the period already paid for; `null` without a live subscription.
    - `cancel_at_period_end` boolean: `true` when the subscription has been cancelled and stops at the end of the period.
    - `trial_ends_at` string, date-time, nullable: End of the free week — offered once per workspace, on its first move to a paid plan — when `status` is `trialing`: the plan already applies and the first charge falls on this date (ISO 8601). `null` otherwise.
    - `scheduled_change` object, nullable: A change that will take effect later — a downgrade, or a cancellation (`plan: "free"`); `null` if none.
      - `plan` 'free' | 'starter' | 'pro' | 'agency': The plan that will apply.
      - `effective_at` string, date-time: When it takes effect (ISO 8601).
    - `manage_url` string, uri: The billing screen where the owner or an administrator changes plan, card or invoices. In the language of the call (`Accept-Language`).
  - `limits` object: The other limits of the plan, and how much of each is used.
    - `members` object: Seats in the workspace. A pending, unexpired invitation takes a seat.
      - `used` integer: Current members.
      - `pending_invitations` integer: Invitations sent and still valid.
      - `max` integer, nullable: The plan's maximum; `null` = unlimited.
    - `sending_domains` object: Sending domains, verified or not.
      - `used` integer: Domains added to the workspace.
      - `max` integer, nullable: The plan's maximum; `null` = unlimited.
    - `daily` object, nullable: The daily limit of a new workspace, over a rolling 24 hours: 1,000 emails until the workspace is verified (automatically, at its first send), then none. `null` when it does not apply. A send above it returns `429 daily_quota_exceeded`.
      - `limit` integer: Emails allowed per rolling 24 hours.
      - `used` integer: Accepted over the last 24 hours, plus what is waiting in the queue.
      - `remaining` integer: What can still go out now; never negative.
      - `next_limit` integer, nullable: The next limit (`500`), or `null` when the next step lifts it.
      - `changes_at` string, date-time, nullable: When the limit changes (ISO 8601).
  - `subscribers` integer: Subscribers with status `subscribed` — the ones a campaign would reach.
  - `sending_domains` object[]: The workspace's domains. Only those with `verified: true` can serve as `from`.
    - `domain` string
    - `verified` boolean
  - `senders` object[]: The registered senders. A CAMPAIGN can only go out from one of them; an individual email, on the other hand, accepts any address on a verified domain.
    - `id` string: To pass as `sender_id` when creating a campaign.
    - `from` string, email
    - `name` string, nullable: The name shown in the inbox.
    - `default` boolean: The one a campaign takes if you designate none.

## Other responses

- `401`: Key missing, unknown or revoked.
- `429`: More than 600 requests per minute for this key (`rate_limit_exceeded` — a batch of N subscribers counts as N), or a new workspace reached its daily limit (`daily_quota_exceeded`: 1,000 emails per rolling 24 hours until it is verified). `Retry-After` always says how many seconds to wait.

---

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