# Micro.blog Discover API
> Live Micro.blog Discover timeline as an API — a window into what the Micro.blog community is sharing right now. Micro.blog is an independent, ad-free microblogging and short-form blogging platform, and its Discover feed is a human-curated stream of the best recent posts, also sliced into curated topics: books, photos, music, art, movies, podcasts, travel and writing. For each post this returns the author (name, username, profile URL and avatar), the post text and HTML, its permalink and publish time, and flags such as whether it is a conversation or a link-post. Pull the main Discover stream, a single topic, or the list of curated topics. A clean discovery layer for social readers, dashboards and content apps. Live, no key. Distinct from Mastodon, Misskey and Mbin APIs (other platforms) and from book or reading APIs — this is Micro.blog's own curated discovery feed.

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

## Pricing
- **Free** (Free) — 10,000 calls/Mo, 5 req/s
- **Starter** ($8/Mo) — 150,000 calls/Mo, 15 req/s
- **Pro** ($21/Mo) — 750,000 calls/Mo, 40 req/s
- **Scale** ($48/Mo) — 4,000,000 calls/Mo, 100 req/s

## Endpoints

### Discover

#### `GET /v1/discover` — The curated Discover stream

**Parameters:**
- `limit` (query, optional, string) — Max posts (1-100) Example: `30`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/microblog-api/v1/discover?limit=30"
```

**Response:**
```json
{
    "data": {
        "count": 30,
        "posts": [
            {
                "id": "91797127",
                "url": "https://ross.karchner.com/2026/06/08/i-saw-this-on-my.html",
                "rank": 1,
                "text": "I saw this on my walk tonight. I’ve decided that it’s the Godot guy, and he wants me to stop slacking on gamedev stuff. Tonight, my goal is to get get my Jezzball-like-game to the point where it identifies and fills in areas that have been closed off.",
                "author": {
                    "url": "https://ross.karchner.com",
                    "name": "Ross Karchner",
                    "avatar": "https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2023%2F43%2F1498288.jpg",
                    "username": "ross.karchner.com"
                },
                "excerpt": "I saw this on my walk tonight. I’ve decided that it’s the Godot guy, and he wants me to stop slacking on gamedev stuff. Tonight, my goal is to get get my Jezzball-like-game to the point where it identifies and fills in areas that have been closed off.",
                "published": "2026-06-09T00:40:12+00:00",
                "timestamp": 1780965612,
                "is_mention": false,
                "is_linkpost": false,
                "is_conversation": false
            },
            {
                "id": "91796772",
                "url": "https://andshewas.micro.blog/2026/06/08/obiter-dictum-why-i-havent.html",
    
…(truncated, see openapi.json for full schema)
```

### Topic

#### `GET /v1/topic` — Posts for a curated topic

**Parameters:**
- `topic` (query, required, string) — books, photos, music, art, movies, podcasts, travel or writing Example: `books`
- `limit` (query, optional, string) — Max posts (1-100) Example: `30`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/microblog-api/v1/topic?topic=books&limit=30"
```

**Response:**
```json
{
    "data": {
        "count": 30,
        "posts": [
            {
                "id": "91800419",
                "url": "https://samfiske.net/2026/06/08/this-book-is-as-insightful.html",
                "rank": 1,
                "text": "This book is as insightful as people claimed. Homelessness is one of those issues people see some stats on, then move on. This grounds those stats in real life experiences, but names and faces to numbers. Finished reading: There Is No Place for Us by Brian Goldstone 📚",
                "author": {
                    "url": "http://samfiske.net",
                    "name": "Sam Fiske",
                    "avatar": "https://avatars.micro.blog/avatars/2025/04/1717217.jpg",
                    "username": "samfiske.net"
                },
                "excerpt": "This book is as insightful as people claimed. Homelessness is one of those issues people see some stats on, then move on. This grounds those stats in real life experiences, but names and faces to numbers. Finished reading: There Is No Place for Us by Brian Goldstone 📚",
                "published": "2026-06-09T01:38:46+00:00",
                "timestamp": 1780969126,
                "is_mention": false,
                "is_linkpost": false,
                "is_conversation": false
            },
            {
                "id": "91780157",
                "url": "https://dain.micro.blog/2026/06/08/currently-reading-yellowface-by-rf.html",
                "rank": 2,
…(truncated, see openapi.json for full schema)
```

### Topics

#### `GET /v1/topics` — List the curated Discover topics

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

**Response:**
```json
{
    "data": {
        "count": 8,
        "topics": [
            {
                "url": "https://micro.blog/discover/books",
                "slug": "books",
                "description": "Books, reading and literature"
            },
            {
                "url": "https://micro.blog/discover/photos",
                "slug": "photos",
                "description": "Photography and photo posts"
            },
            {
                "url": "https://micro.blog/discover/music",
                "slug": "music",
                "description": "Music, albums and listening"
            },
            {
                "url": "https://micro.blog/discover/art",
                "slug": "art",
                "description": "Art, illustration and design"
            },
            {
                "url": "https://micro.blog/discover/movies",
                "slug": "movies",
                "description": "Film and television"
            },
            {
                "url": "https://micro.blog/discover/podcasts",
                "slug": "podcasts",
                "description": "Podcasts and audio"
            },
            {
                "url": "https://micro.blog/discover/travel",
                "slug": "travel",
                "description": "Travel and places"
            },
            {
                "url": "https://micro.blog/discover/writing",
                "slug": "writing",
                "description": "Writing, blogging and the craft"
   
…(truncated, see openapi.json for full schema)
```

### Meta

#### `GET /v1/meta` — Service metadata

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

**Response:**
```json
{
    "data": {
        "source": "Micro.blog public Discover JSON Feed (live)",
        "topics": [
            "books",
            "photos",
            "music",
            "art",
            "movies",
            "podcasts",
            "travel",
            "writing"
        ],
        "service": "microblog-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/topic": "Posts for a curated topic (topic=books|photos|music|art|movies|podcasts|travel|writing, limit).",
            "GET /v1/topics": "List the curated Discover topics.",
            "GET /v1/discover": "Main curated Discover stream (limit up to 100)."
        },
        "description": "Live Micro.blog Discover timeline as an API: the human-curated stream of the best recent posts on Micro.blog, plus curated topics (books, photos, music, art, movies, podcasts, travel, writing). Each post carries author (name, username, profile, avatar), text and HTML, permalink, publish time and post-type flags. Pull the main Discover stream, a topic, or the topic list. Live, no key. Distinct from Mastodon / Misskey / Mbin and from book/reading APIs — this is Micro.blog's curated discovery layer.",
        "discover_items_now": 50
    },
    "meta": {
        "timestamp": "2026-06-09T03:02:48.108Z",
        "request_id": "79081c75-7055-4242-8e09-c9b282de563f"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```

### Members

#### `GET /v1/conversation` — The reply thread for a post

**Parameters:**
- `id` (query, required, string) — Numeric post id (from a /v1/discover or /v1/user post) Example: `92050025`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/microblog-api/v1/conversation?id=92050025"
```

**Response:**
```json
{
    "data": {
        "id": "92050025",
        "count": 3,
        "source": "Micro.blog",
        "replies": [
            {
                "id": "92054328",
                "url": "https://micro.blog/ayjay/92054328",
                "rank": 1,
                "text": "@frjonjordan Well, it’s been a few years since I’ve been in Rome, but I don’t recall seeing such things….",
                "author": {
                    "url": "https://ayjay.org",
                    "name": "Alan Jacobs ",
                    "avatar": "https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2022%2F650.jpg",
                    "username": "ayjay.org"
                },
                "excerpt": "@frjonjordan Well, it’s been a few years since I’ve been in Rome, but I don’t recall seeing such things….",
                "published": "2026-06-12T17:25:51+00:00",
                "timestamp": 1781285151,
                "is_mention": true,
                "is_linkpost": false,
                "is_conversation": true
            },
            {
                "id": "92051588",
                "url": "https://micro.blog/frjonjordan/92051588",
                "rank": 2,
                "text": "@ayjay I have been in Rome on a school and then family trip for the past couple of weeks. Reading this in that context has me envisioning men in red robes feeding nuns.",
                "author": {
                    "url": "http://jonjordan.com",
            
…(truncated, see openapi.json for full schema)
```

#### `GET /v1/user` — A member's recent posts

**Parameters:**
- `username` (query, required, string) — Micro.blog username Example: `manton`
- `limit` (query, optional, string) — Max posts (1-100) Example: `25`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/microblog-api/v1/user?username=manton&limit=25"
```

**Response:**
```json
{
    "data": {
        "count": 25,
        "posts": [
            {
                "id": "92107305",
                "url": "https://www.manton.org/2026/06/13/great-blog-post-by-nikita.html",
                "rank": 1,
                "text": "Great blog post by Nikita Prokopov about imperfection in the in-between state of animated transitions. The most polished apps usually sweat these little details. Hard to do, and my own apps often fall short here.",
                "author": {
                    "url": "https://manton.org",
                    "name": "Manton Reece",
                    "avatar": "https://cdn.micro.blog/photos/96/https%3A%2F%2Favatars.micro.blog%2Favatars%2F2025%2F22%2F3.jpg",
                    "username": "manton.org"
                },
                "excerpt": "Great blog post by Nikita Prokopov about imperfection in the in-between state of animated transitions. The most polished apps usually sweat these little details. Hard to do, and my own apps often fall short here.",
                "published": "2026-06-13T14:04:20+00:00",
                "timestamp": 1781359460,
                "is_mention": false,
                "is_linkpost": false,
                "is_conversation": false
            },
            {
                "id": "92106993",
                "url": "https://micro.blog/manton/92106993",
                "rank": 2,
                "text": "@hutaffe @philbowell Yeah, I think it’s partly that too, or a combination of things. Thi
…(truncated, see openapi.json for full schema)
```


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