# Mastodon API
> Read Mastodon and the wider fediverse in real time — across any instance, no login or app token required. Look up any account by handle (user, @user or user@instance) and pull its posts, followers, following and featured tags. Fetch any post with its full reply thread, see who boosted or favourited it, and read a post's edit history. Run unified search over accounts, posts and hashtags; browse a hashtag timeline; and surface what's hot via trending posts, hashtags and links. Inspect any instance: its metadata (users, version, rules), federated peers, weekly activity and the public profile directory, plus poll results by id. Pass ?instance=<host> to target any Mastodon server (default mastodon.social); every call is live (no cache) and returns the upstream Mastodon REST shape unchanged. 21 endpoints — broader than the typical Mastodon wrapper. Built for fediverse social listening, account and follower analysis, content aggregation and bot back-ends. No upstream key, no cache.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/mastodon-api/..."
```

## Pricing
- **Free** (Free) — 2,600 calls/Mo, 2 req/s
- **Starter** ($9/Mo) — 54,000 calls/Mo, 8 req/s
- **Pro** ($25/Mo) — 270,000 calls/Mo, 20 req/s
- **Mega** ($59/Mo) — 1,350,000 calls/Mo, 50 req/s

## Endpoints

### Accounts

#### `GET /v1/account` — Account lookup

**Parameters:**
- `acct` (query, required, string) — Handle: user, @user or user@instance Example: `Gargron`
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/account?acct=Gargron"
```

**Response:**
```json
{
    "data": {
        "id": "1",
        "bot": false,
        "uri": "https://mastodon.social/users/Gargron",
        "url": "https://mastodon.social/@Gargron",
        "acct": "Gargron",
        "note": "<p>Executive Strategy &amp; Product Advisor, Founder of <span class=\"h-card\" translate=\"no\"><a href=\"https://mastodon.social/@Mastodon\" class=\"u-url mention\">@<span>Mastodon</span></a></span>. Film photography, prog metal, Dota 2. Likes all things analog.</p>",
        "group": false,
        "roles": [],
        "avatar": "https://files.mastodon.social/accounts/avatars/000/000/001/original/6b2384b33799a0dd.png",
        "emojis": [],
        "fields": [
            {
                "name": "GitHub",
                "value": "<a href=\"https://github.com/Gargron\" target=\"_blank\" rel=\"nofollow noopener me\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"\">github.com/Gargron</span><span class=\"invisible\"></span></a>",
                "verified_at": "2023-02-07T23:24:40.347+00:00"
            },
            {
                "name": "Portfolio",
                "value": "<a href=\"https://eugenrochko.com\" target=\"_blank\" rel=\"nofollow noopener me\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"\">eugenrochko.com</span><span class=\"invisible\"></span></a>",
                "verified_at": "2024-07-06T01:06:10.801+00:00"
            },
            {
                "name": "Mastodon Merch",
                
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/account/featured-tags` — Featured tags

**Parameters:**
- `acct` (query, required, string) — Handle: user, @user or user@instance Example: `Gargron`
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/account/featured-tags?acct=Gargron"
```

**Response:**
```json
{
    "data": [
        {
            "id": "631443",
            "url": "https://mastodon.social/@Gargron/tagged/nowplaying",
            "name": "nowplaying",
            "last_status_at": "2026-05-11",
            "statuses_count": "58"
        },
        {
            "id": "834528",
            "url": "https://mastodon.social/@Gargron/tagged/catsofmastodon",
            "name": "catsofmastodon",
            "last_status_at": "2026-03-28",
            "statuses_count": "59"
        },
        {
            "id": "631441",
            "url": "https://mastodon.social/@Gargron/tagged/filmphotography",
            "name": "filmphotography",
            "last_status_at": "2026-05-30",
            "statuses_count": "203"
        },
        {
            "id": "1363905",
            "url": "https://mastodon.social/@Gargron/tagged/plushtodon",
            "name": "Plushtodon",
            "last_status_at": "2026-04-09",
            "statuses_count": "63"
        }
    ],
    "meta": {
        "timestamp": "2026-06-02T08:33:07.985Z",
        "request_id": "4a98e3ae-cab5-4efa-84a9-dcd350829294"
    },
    "status": "ok",
    "message": "Featured tags",
    "success": true
}
```

#### `GET /v1/account/followers` — Followers

**Parameters:**
- `acct` (query, required, string) — Handle: user, @user or user@instance Example: `Gargron`
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)
- `limit` (query, optional, string) — Page size

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/account/followers?acct=Gargron"
```

**Response:**
```json
{
    "data": [
        {
            "id": "116679545885966767",
            "bot": false,
            "uri": "https://mastodon.social/ap/users/116679545885966767",
            "url": "https://mastodon.social/@itsmehellen",
            "acct": "itsmehellen",
            "note": "<p>Love travelling🥰🥰❤️❤️❤️</p>",
            "group": false,
            "roles": [],
            "avatar": "https://files.mastodon.social/accounts/avatars/116/679/545/885/966/767/original/f5d2a55b2bab517e.jpg",
            "emojis": [],
            "fields": [],
            "header": "https://mastodon.social/headers/original/missing.png",
            "locked": false,
            "noindex": false,
            "username": "itsmehellen",
            "indexable": true,
            "created_at": "2026-06-02T00:00:00.000Z",
            "show_media": true,
            "discoverable": true,
            "display_name": "Hellen Cutey🥰🥰❤️",
            "avatar_static": "https://files.mastodon.social/accounts/avatars/116/679/545/885/966/767/original/f5d2a55b2bab517e.jpg",
            "header_static": "https://mastodon.social/headers/original/missing.png",
            "show_featured": true,
            "last_status_at": "2026-06-02",
            "statuses_count": 1,
            "followers_count": 0,
            "following_count": 39,
            "feature_approval": {
                "manual": [],
                "automatic": [
                    "public"
                ],
          
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/account/following` — Following

**Parameters:**
- `acct` (query, required, string) — Handle: user, @user or user@instance Example: `Gargron`
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)
- `limit` (query, optional, string) — Page size

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/account/following?acct=Gargron"
```

**Response:**
```json
{
    "data": [
        {
            "id": "116679209473973584",
            "bot": false,
            "uri": "https://aus.social/users/weirdestate",
            "url": "https://aus.social/@weirdestate",
            "acct": "weirdestate@aus.social",
            "note": "<p>This is an account dedicated to weird real estate from around the world. Weird might be good, or weird might be bad, but either way it's not going to be boring!</p><p>This account supersedes an older one at <span class=\"h-card\" translate=\"no\"><a href=\"https://eigenmagic.net/@weirdestate\" class=\"u-url mention\" rel=\"nofollow noopener\" target=\"_blank\">@<span>weirdestate</span></a></span></p><p>Submissions are welcome but please include the link to the actual listing. </p><p>Note: If you like weird automobiles, check out my other account at <span class=\"h-card\" translate=\"no\"><a href=\"https://social.chinwag.org/@weirdonwheels\" class=\"u-url mention\" rel=\"nofollow noopener\" target=\"_blank\">@<span>weirdonwheels</span></a></span></p>",
            "group": false,
            "avatar": "https://files.mastodon.social/cache/accounts/avatars/116/679/209/473/973/584/original/2c5d2baeed74f748.png",
            "emojis": [],
            "fields": [
                {
                    "name": "Location",
                    "value": "Australia",
                    "verified_at": null
                },
                {
                    "name": "I like my houses",
                    "value":
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/account/statuses` — Account posts

**Parameters:**
- `acct` (query, required, string) — Handle: user, @user or user@instance Example: `Gargron`
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)
- `limit` (query, optional, string) — Page size

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/account/statuses?acct=Gargron"
```

**Response:**
```json
{
    "data": [
        {
            "id": "116678946958540489",
            "uri": "https://mastodon.social/users/Gargron/statuses/116678946958540489",
            "url": "https://mastodon.social/@Gargron/116678946958540489",
            "card": null,
            "poll": null,
            "tags": [],
            "quote": null,
            "emojis": [],
            "reblog": null,
            "account": {
                "id": "1",
                "bot": false,
                "uri": "https://mastodon.social/users/Gargron",
                "url": "https://mastodon.social/@Gargron",
                "acct": "Gargron",
                "note": "<p>Executive Strategy &amp; Product Advisor, Founder of <span class=\"h-card\" translate=\"no\"><a href=\"https://mastodon.social/@Mastodon\" class=\"u-url mention\">@<span>Mastodon</span></a></span>. Film photography, prog metal, Dota 2. Likes all things analog.</p>",
                "group": false,
                "roles": [],
                "avatar": "https://files.mastodon.social/accounts/avatars/000/000/001/original/6b2384b33799a0dd.png",
                "emojis": [],
                "fields": [
                    {
                        "name": "GitHub",
                        "value": "<a href=\"https://github.com/Gargron\" target=\"_blank\" rel=\"nofollow noopener me\" translate=\"no\"><span class=\"invisible\">https://</span><span class=\"\">github.com/Gargron</span><span class=\"invisible\"></span></a>",
                   
…(truncated, see openapi.json for full schema)
```

### Statuses

#### `GET /v1/poll` — Poll detail

**Parameters:**
- `id` (query, required, string) — Status/poll id (instance-specific)
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/poll"
```

#### `GET /v1/status` — Status detail

**Parameters:**
- `id` (query, required, string) — Status/poll id (instance-specific)
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/status"
```

#### `GET /v1/status/context` — Thread context

**Parameters:**
- `id` (query, required, string) — Status/poll id (instance-specific)
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/status/context"
```

#### `GET /v1/status/favourited-by` — Favourited by

**Parameters:**
- `id` (query, required, string) — Status/poll id (instance-specific)
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/status/favourited-by"
```

#### `GET /v1/status/history` — Edit history

**Parameters:**
- `id` (query, required, string) — Status/poll id (instance-specific)
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/status/history"
```

#### `GET /v1/status/reblogged-by` — Boosted by

**Parameters:**
- `id` (query, required, string) — Status/poll id (instance-specific)
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/status/reblogged-by"
```

### Search

#### `GET /v1/search` — Search accounts/posts/tags

**Parameters:**
- `q` (query, required, string) — Query Example: `berlin`
- `type` (query, optional, string) — accounts|statuses|hashtags
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)
- `limit` (query, optional, string) — Page size

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/search?q=berlin"
```

**Response:**
```json
{
    "data": {
        "accounts": [
            {
                "id": "113466441119434407",
                "bot": false,
                "uri": "https://social.computertruhe.de/users/berlin",
                "url": "https://social.computertruhe.de/@berlin",
                "acct": "berlin@social.computertruhe.de",
                "note": "<p>Computertruhe e. V. - Regionaler Account des Standorts Berlin mit Potsdam, Teltow und Umgebung.</p><p>Wir bereiten ehrenamtlich Hardware-Spenden von Unternehmen und Privatleuten auf und geben sie kostenlos an bedürftige Menschen und gemeinnützige Organisationen in Berlin, Potsdam, Teltow und Umgebung weiter.</p><p><a href=\"https://social.computertruhe.de/tags/Teilhabe\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>Teilhabe</span></a> <a href=\"https://social.computertruhe.de/tags/Nachhaltigkeit\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>Nachhaltigkeit</span></a> <a href=\"https://social.computertruhe.de/tags/ZeroWaste\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>ZeroWaste</span></a> <a href=\"https://social.computertruhe.de/tags/FreieSoftware\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>FreieSoftware</span></a> <a href=\"https://social.computertruhe.de/tags/Ehrenamt\" class=\"mention hashtag\" rel=\"nofollow noopener\" target=\"_blank\">#<span>Ehrenamt</span></a> <a href=\"https://social.computert
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/timelines/tag` — Hashtag timeline

**Parameters:**
- `tag` (query, required, string) — Hashtag (no #) Example: `art`
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)
- `limit` (query, optional, string) — Page size

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/timelines/tag?tag=art"
```

**Response:**
```json
{
    "data": [
        {
            "id": "116679585760135163",
            "uri": "https://mastodon.social/ap/users/116578086118159445/statuses/116679585760135163",
            "url": "https://mastodon.social/@spaceraphael/116679585760135163",
            "card": null,
            "poll": null,
            "tags": [
                {
                    "url": "https://mastodon.social/tags/art",
                    "name": "art"
                },
                {
                    "url": "https://mastodon.social/tags/drawing",
                    "name": "drawing"
                },
                {
                    "url": "https://mastodon.social/tags/urban",
                    "name": "urban"
                },
                {
                    "url": "https://mastodon.social/tags/feed",
                    "name": "feed"
                },
                {
                    "url": "https://mastodon.social/tags/spaceraphael",
                    "name": "spaceraphael"
                },
                {
                    "url": "https://mastodon.social/tags/painting",
                    "name": "painting"
                },
                {
                    "url": "https://mastodon.social/tags/contemporary",
                    "name": "contemporary"
                },
                {
                    "url": "https://mastodon.social/tags/artwork",
                    "name": "artwork"
                }
            ],
            "quote": null
…(truncated, see openapi.json for full schema)
```

### Trends

#### `GET /v1/trends/links` — Trending links

**Parameters:**
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)
- `limit` (query, optional, string) — Page size

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/trends/links"
```

**Response:**
```json
{
    "data": [
        {
            "url": "https://www.404media.co/hackers-simply-asked-meta-ai-to-give-them-access-to-high-profile-instagram-accounts-it-worked/",
            "html": "",
            "type": "link",
            "image": "https://files.mastodon.social/cache/preview_cards/images/195/002/069/original/f60a8ca398b9ea51.png",
            "title": "Hackers Simply Asked Meta AI to Give Them Access to High-Profile Instagram Accounts. It Worked",
            "width": 563,
            "height": 408,
            "authors": [],
            "history": [
                {
                    "day": "1780358400",
                    "uses": "384",
                    "accounts": "365"
                },
                {
                    "day": "1780272000",
                    "uses": "1500",
                    "accounts": "1333"
                },
                {
                    "day": "1780185600",
                    "uses": "0",
                    "accounts": "0"
                },
                {
                    "day": "1780099200",
                    "uses": "0",
                    "accounts": "0"
                },
                {
                    "day": "1780012800",
                    "uses": "0",
                    "accounts": "0"
                },
                {
                    "day": "1779926400",
                    "uses": "0",
                    "accounts": "0"
                },
                {
                    "day
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/trends/statuses` — Trending posts

**Parameters:**
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)
- `limit` (query, optional, string) — Page size

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/trends/statuses"
```

**Response:**
```json
{
    "data": [
        {
            "id": "116679159774562439",
            "uri": "https://front-end.social/users/hdv/statuses/116679159708508948",
            "url": "https://front-end.social/@hdv/116679159708508948",
            "card": null,
            "poll": null,
            "tags": [],
            "quote": null,
            "emojis": [],
            "reblog": null,
            "account": {
                "id": "109292980981191593",
                "bot": false,
                "uri": "https://front-end.social/users/hdv",
                "url": "https://front-end.social/@hdv",
                "acct": "hdv@front-end.social",
                "note": "<p>Music and movie nerd. </p><p>I work on standards for the Dutch government at W3C and ETSI, including WCAG, WCAG-EM and Web Sustainability Guidelines. I'm also on the W3C's <span class=\"h-card\" translate=\"no\"><a href=\"https://w3c.social/@ab\" class=\"u-url mention\" rel=\"nofollow noopener\" target=\"_blank\">@<span>ab</span></a></span>. Opinions are mine.<br>\u2029Interests include: the world wide web, books, personal websites, CMSes, access, equity, live music and the video conferencing apps of our decade.</p>",
                "group": false,
                "avatar": "https://files.mastodon.social/cache/accounts/avatars/109/292/980/981/191/593/original/de9dbd3f7380e78b.jpg",
                "emojis": [],
                "fields": [
                    {
                        "name": "Location",
             
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/trends/tags` — Trending hashtags

**Parameters:**
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)
- `limit` (query, optional, string) — Page size

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/trends/tags"
```

**Response:**
```json
{
    "data": [
        {
            "id": "19519434",
            "url": "https://mastodon.social/tags/penpalamovieorplay",
            "name": "PenPalAMovieOrPlay",
            "history": [
                {
                    "day": "1780358400",
                    "uses": "353",
                    "accounts": "78"
                },
                {
                    "day": "1780272000",
                    "uses": "0",
                    "accounts": "0"
                },
                {
                    "day": "1780185600",
                    "uses": "0",
                    "accounts": "0"
                },
                {
                    "day": "1780099200",
                    "uses": "0",
                    "accounts": "0"
                },
                {
                    "day": "1780012800",
                    "uses": "0",
                    "accounts": "0"
                },
                {
                    "day": "1779926400",
                    "uses": "0",
                    "accounts": "0"
                },
                {
                    "day": "1779840000",
                    "uses": "0",
                    "accounts": "0"
                }
            ]
        },
        {
            "id": "19501346",
            "url": "https://mastodon.social/tags/cookiesabook",
            "name": "CookiesABook",
            "history": [
                {
                    "day": "1780358400",
                    "uses":
…(truncated, see openapi.json for full schema)
```

### Instance

#### `GET /v1/directory` — Profile directory

**Parameters:**
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)
- `limit` (query, optional, string) — Page size

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/directory"
```

**Response:**
```json
{
    "data": [
        {
            "id": "112926907460211902",
            "bot": false,
            "uri": "https://mastodon.social/users/linksmensch",
            "url": "https://mastodon.social/@linksmensch",
            "acct": "linksmensch",
            "note": "<p><span class=\"h-card\" translate=\"no\"><a href=\"https://mastodon.social/@linksmensch\" class=\"u-url mention\">@<span>linksmensch</span></a></span></p>",
            "group": false,
            "roles": [],
            "avatar": "https://files.mastodon.social/accounts/avatars/112/926/907/460/211/902/original/fbf87e76984b54e5.jpg",
            "emojis": [],
            "fields": [],
            "header": "https://mastodon.social/headers/original/missing.png",
            "locked": false,
            "noindex": false,
            "username": "linksmensch",
            "indexable": true,
            "created_at": "2024-08-08T00:00:00.000Z",
            "show_media": true,
            "discoverable": true,
            "display_name": "linksmensch",
            "avatar_static": "https://files.mastodon.social/accounts/avatars/112/926/907/460/211/902/original/fbf87e76984b54e5.jpg",
            "header_static": "https://mastodon.social/headers/original/missing.png",
            "show_featured": true,
            "last_status_at": "2026-06-02",
            "statuses_count": 9040,
            "followers_count": 24,
            "following_count": 47,
            "feature_approval": {
                "manual": [],
  
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/instance` — Instance info

**Parameters:**
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/instance"
```

**Response:**
```json
{
    "data": {
        "icon": [
            {
                "src": "https://mastodon.social/packs/assets/android-chrome-36x36-DLiBQg3N.png",
                "size": "36x36"
            },
            {
                "src": "https://mastodon.social/packs/assets/android-chrome-48x48-C7lKWFwX.png",
                "size": "48x48"
            },
            {
                "src": "https://mastodon.social/packs/assets/android-chrome-72x72-9LRpA3QN.png",
                "size": "72x72"
            },
            {
                "src": "https://mastodon.social/packs/assets/android-chrome-96x96-BKKwkkY-.png",
                "size": "96x96"
            },
            {
                "src": "https://mastodon.social/packs/assets/android-chrome-144x144-D-ewI-KZ.png",
                "size": "144x144"
            },
            {
                "src": "https://mastodon.social/packs/assets/android-chrome-192x192-jYKJbpas.png",
                "size": "192x192"
            },
            {
                "src": "https://mastodon.social/packs/assets/android-chrome-256x256-DXt2vsq7.png",
                "size": "256x256"
            },
            {
                "src": "https://mastodon.social/packs/assets/android-chrome-384x384-CbK7cG33.png",
                "size": "384x384"
            },
            {
                "src": "https://mastodon.social/packs/assets/android-chrome-512x512-Dz2ThkhV.png",
                "size": "512x512"
            }
        ],
        "rules
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/instance/activity` — Weekly activity

**Parameters:**
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/instance/activity"
```

**Response:**
```json
{
    "data": [
        {
            "week": "1780340008",
            "logins": "60414",
            "statuses": "123266",
            "registrations": "1214"
        },
        {
            "week": "1779735208",
            "logins": "157328",
            "statuses": "882452",
            "registrations": "8818"
        },
        {
            "week": "1779130408",
            "logins": "159392",
            "statuses": "911120",
            "registrations": "8915"
        },
        {
            "week": "1778525608",
            "logins": "162612",
            "statuses": "919787",
            "registrations": "9875"
        },
        {
            "week": "1777920808",
            "logins": "164802",
            "statuses": "906073",
            "registrations": "15010"
        },
        {
            "week": "1777316008",
            "logins": "156394",
            "statuses": "912328",
            "registrations": "9088"
        },
        {
            "week": "1776711208",
            "logins": "157628",
            "statuses": "872995",
            "registrations": "9363"
        },
        {
            "week": "1776106408",
            "logins": "163282",
            "statuses": "933109",
            "registrations": "12037"
        },
        {
            "week": "1775501608",
            "logins": "160435",
            "statuses": "924024",
            "registrations": "11471"
        },
        {
            "week": "1774896808",
            "logins": "16
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/instance/peers` — Federated peers

**Parameters:**
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/instance/peers"
```

**Response:**
```json
{
    "data": [
        "3ggm8r7pc.activitypub-troll.cf",
        "xw22cyg4j7ziw1.gab.best",
        "nomoresha.me",
        "peertube.darktech.org",
        "mastodon.apievangelist.com",
        "ostatus.yoh2.ddo.jp",
        "blog.cadanapay.com",
        "sexualpaedagogik.wordpress.com",
        "mastodon.cxm.cz",
        "mastodon.maho-do.jp",
        "delicious-links.glitch.me",
        "beginnertechtips.com",
        "herr-jemineh.de",
        "friendica.dupreez.id.au",
        "circleofamber.com",
        "mastodon.walther.network",
        "masto.svavar.com",
        "odgaard.ca",
        "bengo.is",
        "disney.host",
        "friendica.electronvolt.com",
        "daytongang.social",
        "lemmy.directory",
        "tailsproject.co",
        "lemmy.socdojo.com",
        "canica.pe",
        "zeroping.us",
        "social.milkers.online",
        "crazymastodon.com",
        "mastodon.redp.icu",
        "estrogen.city",
        "oasdg.astrocampania.it",
        "tammenpaa.com",
        "tube.tuxfriend.fr",
        "stammtisch.tupambae.org",
        "msd.surindaku.dev",
        "1vtijd8kp.activitypub-troll.cf",
        "my-ghost-site.link",
        "zomgie.de",
        "kanye.aiwnios.com",
        "social.iheartmichelle.com",
        "lembitre.masto.host",
        "tsubuyaki.choro3.net",
        "brief.pressroom.page",
        "3054srhjz.activitypub-troll.cf",
        "thrashzone.org",
        "tube.nixc.us",
        "theshadowrealm.party",
        "anthro.social
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/instance/rules` — Instance rules

**Parameters:**
- `instance` (query, optional, string) — Mastodon host (default mastodon.social)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/instance/rules"
```

**Response:**
```json
{
    "data": [
        {
            "id": "1",
            "hint": "This includes content that is particularly provocative even if it may not show specific body parts, as well as dead bodies, bloody injuries, and other gore. Particularly obscene content may be prohibited entirely. Profile pictures and header images may not contain sexually explicit or violent media.",
            "text": "Sexually explicit or violent media must be marked as sensitive or with a content warning",
            "translations": {
                "de": {
                    "hint": "Das beinhaltet ausdrücklich provokative Inhalte, auch wenn keine bestimmten Körperteile zu sehen sind, sowie Leichname, blutige Verletzungen und vergleichbare extreme Darstellungen. Besonders obszöne Inhalte können vollständig verboten werden. Profil- und Titelbilder dürfen keine sexuell expliziten oder Gewaltdarstellungen abbilden.",
                    "text": "Sexuell explizite Darstellungen oder solche von Gewalt müssen mit einer Inhaltswarnung versehen werden."
                },
                "es": {
                    "hint": "Esto incluye contenido especialmente provocativo, aunque no muestre partes específicas del cuerpo, así como cadáveres, heridas sangrientas y otras escenas sangrientas. Los contenidos especialmente obscenos pueden prohibirse por completo. Las fotos de perfil y las imágenes de cabecera no pueden contener contenido sexual explícito o violento.",
                    "text": "El 
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Spec

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/mastodon-api/v1/meta"
```

**Response:**
```json
{
    "data": {
        "auth": "none upstream (public read); this gateway requires x-api-key",
        "name": "Mastodon API",
        "note": "Pass ?instance=<host> to query any Mastodon server (default mastodon.social). acct accepts user, @user or user@instance. IDs are per-instance. Live, no cache; pagination via limit + max_id.",
        "source": "Mastodon REST API (public, cross-instance)",
        "endpoints": 21,
        "default_instance": "mastodon.social"
    },
    "meta": {
        "timestamp": "2026-06-02T08:33:13.318Z",
        "request_id": "000044ed-68f1-4e6c-8a85-d75e101268ad"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


---
Marketplace page: https://www.oanor.com/api/mastodon-api
OpenAPI spec: https://www.oanor.com/api/mastodon-api/openapi.json
