# Who am I?

> The account and key a request acts as, the plan and whether the Mac is online.

`GET /v1/me`

The account and key a request acts as, the plan and whether the Mac is online. A quick way to check a key works.

Needs a key with the `account:read` scope. [Keys and scopes](https://usebluebot.com/docs/concepts/api-keys)

## Example

```bash
curl "https://usebluebot.com/api/v1/me" \
  -H "Authorization: Bearer $BLUEBOT_API_KEY"
```

```ts
import BlueBot from '@usebluebot/sdk';

const client = new BlueBot({ apiKey: process.env.BLUEBOT_API_KEY });

const me = await client.me();
console.log(me);
```

```python
import os
from bluebot import BlueBot

client = BlueBot(api_key=os.environ["BLUEBOT_API_KEY"])

me = client.me()
print(me)
```

## Response

`200`: The account and key.

| Field | Type | Required | Description |
| --- | --- | --- | --- |
| `object` | "me" | Yes |   |
| `account` | object | Yes |   |
| `account.id` | string | Yes | A acct_ id. Starts with `acct_` |
| `account.email` | string | Yes |   |
| `account.name` | string or null | Yes |   |
| `account.time_zone` | string | Yes |   |
| `account.created_at` | timestamp | Yes | When the account was made. |
| `key` | object or null | Yes | The key the request carried; null for other kinds of sign-in. |
| `key.id` | string | Yes | A key_ id. Starts with `key_` |
| `key.name` | string | Yes |   |
| `key.prefix` | string | Yes | The start of the key, to tell keys apart. |
| `key.mode` | string | Yes | One of `live`, `test` |
| `key.scopes` | array of strings | Yes | One of `messages:send`, `messages:read`, `contacts:write`, `contacts:read`, `webhooks:manage`, `account:read` |
| `key.created_at` | timestamp | Yes | When the key was made. |
| `plan` | object or null | Yes |   |
| `plan.status` | string | Yes | One of `trialing`, `active`, `past_due`, `canceled`, `unpaid`, `incomplete`, `incomplete_expired`, `paused` |
| `plan.active` | boolean | Yes | Whether texts can go. |
| `plan.trial_end` | timestamp or null | Yes | When the trial ends. |
| `plan.current_period_end` | timestamp or null | Yes | When the current month ends. |
| `device` | object | Yes |   |
| `device.status` | string | Yes | One of `online`, `offline`, `never_connected` |

The answer, `200`:

```json
{
  "object": "me",
  "account": {
    "id": "acct_1Hq2LxW9cVbN3mKpRtYs0a",
    "email": "dana@example.com",
    "name": "Dana Reyes",
    "time_zone": "America/Chicago",
    "created_at": "2026-11-01T15:00:00.000Z"
  },
  "key": {
    "id": "key_1Hq2LxW9cVbN3mKpRtYs0a",
    "name": "Zapier",
    "prefix": "bb_live_7Hq2Lx",
    "mode": "live",
    "scopes": [
      "messages:send",
      "messages:read",
      "contacts:write",
      "contacts:read",
      "webhooks:manage",
      "account:read"
    ],
    "created_at": "2026-11-01T15:10:00.000Z"
  },
  "plan": {
    "status": "active",
    "active": true,
    "trial_end": null,
    "current_period_end": "2026-12-01T15:00:00.000Z"
  },
  "device": {
    "status": "online"
  }
}
```

## Errors

Every refusal has the same envelope and a page of its own. These are the ones this operation can give.

| Code                                                    | Status | What it means                                                                                                                               |
| ------------------------------------------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------- |
| [`unauthorized`](https://usebluebot.com/docs/errors/unauthorized)             | 401    | The request carried no key, or a key BlueBot doesn’t know: mistyped, revoked, or a test key sent to the live API.                           |
| [`insufficient_scope`](https://usebluebot.com/docs/errors/insufficient_scope) | 403    | The key doesn’t carry the scope the endpoint needs. Each endpoint’s reference names its scope.                                              |
| [`rate_limited`](https://usebluebot.com/docs/errors/rate_limited)             | 429    | Too many requests. A key may make 120 requests a minute. The `RateLimit` header says how many are left, and `Retry-After` how long to wait. |
| [`internal`](https://usebluebot.com/docs/errors/internal)                     | 500    | Something went wrong on BlueBot’s side. It was reported. Send the request again; with an Idempotency-Key that is always safe.               |

## Try it
