# Identity

GET /v1/me — the organization and permissions this key holds, and the simplest way to confirm one works.

**GET https://api.e-comms.dev/v1/me**

The organization and permissions this key holds — the simplest way to confirm a key works.

Status: `200`

### Path parameters

None.

### Query parameters

None.

### Headers

- `Authorization` `string` — Required. `Bearer ek_live_<key>`.

### Request attributes

None.

### Response attributes

- `organization` `object` — Required. The organization this key belongs to.
  - `id` `string` — Required. This organization's own id.
  - `name` `string` — Required. This organization's own name.
- `key` `object` — Required. The key this call was made with.
  - `id` `string` — Required. This key's own id, never the token itself.
  - `name` `string` — Required. The name you gave it when you created it — never travels with the token.
- `permissions` `string[]` — Required. The permissions this key holds, from the one closed set a key can ever request.

Answers with no error code of its own, and costs no quota: confirming that a key works
cannot be blocked by the same limit that key is about to hit.

## Request

```bash
curl https://api.e-comms.dev/v1/me \
  -H "Authorization: Bearer ek_live_<your-key>"
```

```js
const response = await fetch("https://api.e-comms.dev/v1/me", {
  headers: { Authorization: "Bearer ek_live_<your-key>" },
})

const body = await response.json()
```

```python
import requests

response = requests.get(
    "https://api.e-comms.dev/v1/me",
    headers={"Authorization": "Bearer ek_live_<your-key>"},
)

body = response.json()
```

## Response `200` — OK

```json
{
  "organization": {
    "id": "01a0ba31-3fe4-7cc4-a1c6-64bdaaa5d99c",
    "name": "Acme"
  },
  "key": {
    "id": "01a0ba31-4a15-7c9a-9b3d-3f1e6c2b7a44",
    "name": "Zapier"
  },
  "permissions": ["messages:send"]
}
```
