# Get your account

Source: https://help.ruuster.com/api/me

```http
GET https://api.ruuster.com/v1/me
```

Who the key belongs to, your brokerage, MLSs, hostnames, data coverage and current limits. Call it first to check credentials.

- Authentication: `x-api-key` and `x-email` headers of an owner or admin
- Rate limit: 120 requests per minute per key

A `200` means the key works. `403 brokerage_not_enabled` means API access isn't on for your brokerage yet; `403 role_not_permitted` means the key belongs to an agent. See [Authentication](https://help.ruuster.com/api/authentication).

## Response

| Field | Description |
|---|---|
| `user` | `id`, `email`, `name`, `role` (`owner` or `admin`) |
| `brokerage` | `id`, `name` |
| `leadContactDetails` | Whether lead `email` and `phone` are returned |
| `mlsIds` | The MLSs your brokerage is on |
| `attribution` | `agents`, `agentsWithMlsIds`, `confirmedOffices`: how complete listing attribution is for your brokerage |
| `hostnames` | Your Ruuster website hostnames |
| `coverage` | Which days have data: `from`, `to`, `asOf`, `stableBefore`, `ga`, `ownershipAsOf`. See [Conventions](https://help.ruuster.com/api/conventions) |
| `limits` | Your current limits, including any raised by Ruuster |
| `webhooks` | `subscriptions` in use and `maxSubscriptions` |

## Example request

cURL:

```bash
curl -s "https://api.ruuster.com/v1/me" \
  -H "x-api-key: $RUUSTER_API_KEY" \
  -H "x-email: $RUUSTER_EMAIL"
```

Node.js:

```javascript
const res = await fetch("https://api.ruuster.com/v1/me", {
  headers: {
    "x-api-key": process.env.RUUSTER_API_KEY,
    "x-email": process.env.RUUSTER_EMAIL,
  },
});
const body = await res.json();
if (!body.ok) throw new Error(`${body.error.code}: ${body.error.message} (${body.requestId})`);
console.log(body.data);
```

Python:

```python
import os
import requests

res = requests.get(
    "https://api.ruuster.com/v1/me",
    headers={"x-api-key": os.environ["RUUSTER_API_KEY"], "x-email": os.environ["RUUSTER_EMAIL"]},
    timeout=30,
)
body = res.json()
if not body["ok"]:
    raise RuntimeError(f'{body["error"]["code"]}: {body["error"]["message"]} ({body.get("requestId")})')
print(body["data"])
```

## Example response

```json
{
  "ok": true,
  "data": {
    "user": { "id": "7c1e9b42-3d85-4a6f-9e07-1b2c8d4f5a69", "email": "jane@saguarorealty.com", "name": "Jane Doe", "role": "admin" },
    "brokerage": { "id": "4f6c2a9e-8d31-4b57-9a0e-2c7d5e1b8f43", "name": "Saguaro Realty Group" },
    "leadContactDetails": true,
    "mlsIds": ["3f4a7b12-6c85-4d93-a1e0-8b2f5c9d7e31"],
    "hostnames": ["saguaro.ruuster.com"],
    "coverage": {
      "from": "2026-07-03", "to": "2026-09-30", "asOf": "2026-10-01T13:10:42Z",
      "stableBefore": "2026-09-28",
      "ga": { "from": "2023-06-16", "to": "2026-09-30", "asOf": "2026-10-01T13:30:05Z" },
      "ownershipAsOf": "2026-10-01T06:12:30Z"
    },
    "limits": {
      "perMinute": 120, "livePerMinute": 20,
      "dailyRows": 250000, "dailyLeadRows": 50000,
      "maxLimit": 500, "maxLeadLimit": 200,
      "maxRangeDays": { "day": 93, "week": 400, "month": 1096 }
    },
    "webhooks": { "subscriptions": 1, "maxSubscriptions": 10 }
  },
  "meta": { "brokerageId": "4f6c2a9e-8d31-4b57-9a0e-2c7d5e1b8f43" }
}
```
