# Pixelfed API
> Live data for Pixelfed, the federated photo-sharing network — the open Instagram alternative built on ActivityPub — no key, nothing cached. This reads a Pixelfed creator's public profile and photos directly. The account endpoint resolves a @username (optionally @user@instance) to its profile: display name, bio, follower and following counts, total posts, avatar and join date — Pixelfed's founder @dansup resolves to a profile with tens of thousands of followers. The posts endpoint returns a creator's most recent photo posts from their public feed, each with the image URL, the caption, the hashtags and a link to the post. The hashtags endpoint summarises what a creator posts about — their most-used hashtags and recent posting activity. Point it at anyone on pixelfed.social, or with user@instance at anyone across the Pixelfed fediverse. This is the creator-profile-and-photo layer for any social, photography, marketing or fediverse app. Live from Pixelfed, nothing stored. Distinct from fediverse-statistics and microblog APIs — this is Pixelfed creator profiles and their photos. 4 endpoints.

## 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/pixelfed-api/..."
```

## Pricing
- **Free** (Free) — 14,000 calls/Mo, 3 req/s
- **Starter** ($7/Mo) — 165,000 calls/Mo, 8 req/s
- **Pro** ($17/Mo) — 710,000 calls/Mo, 15 req/s
- **Scale** ($40/Mo) — 3,550,000 calls/Mo, 30 req/s

## Endpoints

### Pixelfed

#### `GET /v1/account` — A creator's profile

**Parameters:**
- `user` (query, required, string) — Username or user@instance Example: `dansup`

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

**Response:**
```json
{
    "data": {
        "bio": "Hi, I'm the developer behind @Pixelfed ! #pixelfed #photography #nature #dogs #fedi22",
        "url": "https://pixelfed.social/dansup",
        "acct": "dansup",
        "posts": 395,
        "avatar": "https://pixelfed.social/storage/avatars/000/000/000/000/000/000/2/mLZr2R47XEwbmasH2M3P_avatar.jpg?v=57",
        "locked": false,
        "instance": "pixelfed.social",
        "username": "dansup",
        "followers": 97915,
        "following": 210,
        "created_at": "2018-06-01T05:01:59.000000Z",
        "display_name": "dansup"
    },
    "meta": {
        "timestamp": "2026-06-09T11:39:28.304Z",
        "request_id": "1a25e8e9-5dfc-4066-a314-f6291639ea99"
    },
    "status": "ok",
    "message": "Account retrieved successfully",
    "success": true
}
```

#### `GET /v1/hashtags` — A creator's most-used hashtags

**Parameters:**
- `user` (query, required, string) — Username or user@instance Example: `dansup`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/pixelfed-api/v1/hashtags?user=dansup"
```

**Response:**
```json
{
    "data": {
        "user": "dansup",
        "latest_post": "2026-06-05T16:30:12.000Z",
        "top_hashtags": [
            {
                "tag": "astrophotography",
                "count": 5
            },
            {
                "tag": "dogsofpixelfed",
                "count": 3
            },
            {
                "tag": "space",
                "count": 2
            },
            {
                "tag": "startrails",
                "count": 1
            },
            {
                "tag": "seestars30pro",
                "count": 1
            },
            {
                "tag": "jake",
                "count": 1
            },
            {
                "tag": "labsofpixelfed",
                "count": 1
            },
            {
                "tag": "dogs",
                "count": 1
            },
            {
                "tag": "boopthebloom",
                "count": 1
            },
            {
                "tag": "fedicon",
                "count": 1
            },
            {
                "tag": "zetadraconis",
                "count": 1
            },
            {
                "tag": "moon",
                "count": 1
            },
            {
                "tag": "lunar",
                "count": 1
            },
            {
                "tag": "yellowlab",
                "count": 1
            }
        ],
        "posts_analysed": 10,
        "distinct_hashtags": 14
    },
    "meta":
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/posts` — A creator's recent photos

**Parameters:**
- `user` (query, required, string) — Username or user@instance Example: `dansup`
- `limit` (query, optional, string) — How many (default 20, max 40) Example: `20`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/pixelfed-api/v1/posts?user=dansup&limit=20"
```

**Response:**
```json
{
    "data": {
        "user": "dansup",
        "count": 10,
        "posts": [
            {
                "url": "https://pixelfed.social/p/dansup/968549570111641933",
                "caption": "Star trails over the trees last night #astrophotography #StarTrails #SeeStarS30Pro",
                "hashtags": [
                    "astrophotography",
                    "StarTrails",
                    "SeeStarS30Pro"
                ],
                "image_url": "https://pxscdn.com/public/m/_v2/2/b5862bd14-4506fa/aLMuHeX6b1MW/SySEub9rtS0kmm8PVjM06tTZy09KnXOU5ykbTLAT.jpg",
                "published": "2026-06-05T16:30:12.000Z"
            },
            {
                "url": "https://pixelfed.social/p/dansup/965272699071587926",
                "caption": "Howdy partner 🤠 #dogsOfPixelfed",
                "hashtags": [
                    "dogsOfPixelfed"
                ],
                "image_url": "https://pxscdn.com/public/m/_v2/2/0d402c64b-2701fc/6Lysmem0eKcc/wMcgO34l96uFriAgyWMHD5cjaWYtczWrhListapj.jpg",
                "published": "2026-05-27T15:29:05.000Z"
            },
            {
                "url": "https://pixelfed.social/p/dansup/965257116732349206",
                "caption": "One year old and already a flower connoisseur 🌼 #Jake #LabsOfPixelfed #Dogs #DogsOfPixelfed #BoopTheBloom",
                "hashtags": [
                    "Jake",
                    "LabsOfPixelfed",
                    "Dogs",
                    "DogsOfPixel
…(truncated, see openapi.json for full schema)
```

### Meta

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

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

**Response:**
```json
{
    "data": {
        "source": "Pixelfed (Mastodon-compatible account API + public Atom feed, live)",
        "service": "pixelfed-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/posts": "A creator's recent photo posts (user=, limit up to 40): image, caption, hashtags.",
            "GET /v1/account": "A creator's profile (user=dansup or user@instance): followers, following, posts, bio.",
            "GET /v1/hashtags": "A creator's most-used hashtags and recent activity (user=)."
        },
        "description": "Live data for Pixelfed, the federated photo-sharing network (open Instagram alternative on ActivityPub): resolve a @username (or @user@instance) to its profile (display name, bio, followers, following, post count, avatar, join date); list a creator's recent photo posts with image URL, caption, hashtags and link; and summarise a creator's most-used hashtags and posting activity. Live, no key, nothing stored. Distinct from fediverse-statistics and microblog APIs — this is Pixelfed creator profiles and their photos.",
        "upstream_status": "ok"
    },
    "meta": {
        "timestamp": "2026-06-09T11:39:29.026Z",
        "request_id": "1bb5debc-3f98-4fde-b5a6-07bf17aa0dc2"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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