Posts
View .mdEndpoints for the timeline, single posts, photos and media, replies, user profiles, search, and post deletion.
https://micro.blog
/posts/all
Returns the authenticated user’s timeline in JSON Feed format with Micro.blog extensions, newest first. Page backwards with before_id and forwards with since_id. Requires a token with the read scope.
Example Request
curl -X GET "https://micro.blog/posts/all?count=50" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
count
|
integer | Optional |
Maximum number of posts to return.
Example:
50
|
since_id
|
integer | Optional |
Only return posts published after this post.
Example:
77479242
|
before_id
|
integer | Optional |
Only return posts published before this post. Use the last id from the previous page to load older posts.
Example:
77494371
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Response Properties
version
string
https://jsonfeed.org/version/1
title
string
Micro.blog - Timeline
home_page_url
string
https://micro.blog
feed_url
string
https://micro.blog/posts/all
_microblog
object
about
string
https://micro.blog/about/api
items
array of object
id
string
77494371
content_html
string
<p>Post content...</p>
summary
string
url
string
https://www.manton.org/2025/11/07/if-you-are-on-the.html
date_published
string
2025-11-07T18:00:00+00:00
author
object
name
string
Manton Reece
url
string
https://manton.org
avatar
string
https://avatars.micro.blog/avatars/2025/22/3.jpg
_microblog
object
_microblog
object
date_relative
string
19:00
date_timestamp
integer
1762538400
is_favorite
boolean
is_bookmark
boolean
is_favorite.is_deletable
boolean
edit_url
string
null otherwise.https://micro.blog/account/posts/12345/edit/67890
is_conversation
boolean
is_linkpost
boolean
is_mention
boolean
is_podcast
boolean
audio
object
url, plus duration_seconds and duration_display when known. Only present when is_podcast is true and an audio URL was found.{"url": "https://example.com/episode.mp3", "duration_seconds": 1834, "duration_display": "30:34"}
note
string
syndication
array
[https://example.com/syndication/url]
Response
200 OK application/jsonReturns a JSON Feed object containing an array of posts with Micro.blog extensions. Returns 401 without a valid token.
Example Response
{
"version": "https://jsonfeed.org/version/1",
"title": "Micro.blog - Timeline",
"home_page_url": "https://micro.blog",
"feed_url": "https://micro.blog/posts/all",
"_microblog": {
"about": "https://micro.blog/about/api"
},
"items": [
{
"id": "77494371",
"content_html": "<p>If you are on the TestFlight beta for Micro.blog iOS, you will have seen our experiments to enable Liquid Glass. I'm admitting defeat today, going to opt out of the new UI for the next version. There are too many little glitches.</p>\n",
"summary": "",
"url": "https://www.manton.org/2025/11/07/if-you-are-on-the.html",
"date_published": "2025-11-07T18:00:00+00:00",
"author": {
"name": "Manton Reece",
"url": "https://manton.org",
"avatar": "https://avatars.micro.blog/avatars/2025/22/3.jpg",
"_microblog": {
"username": "manton"
}
},
"_microblog": {
"date_relative": "19:00",
"date_timestamp": 1762538400,
"is_favorite": false,
"is_bookmark": false,
"is_deletable": false,
"is_conversation": false,
"is_linkpost": false,
"is_mention": false,
"is_podcast": false,
"note": "",
"syndication": [
"https://example.com/syndication/url"
]
}
}
]
}
/posts/timeline
Returns the authenticated user’s timeline in JSON Feed format. Same parameters and response as GET /posts/all, except the feed URL. Requires a token with the read scope.
Example Request
curl -X GET "https://micro.blog/posts/timeline?count=50" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
count
|
integer | Optional |
Maximum number of posts to return.
Example:
50
|
since_id
|
integer | Optional |
Only return posts published after this post.
Example:
77479242
|
before_id
|
integer | Optional |
Only return posts published before this post. Use the last id from the previous page to load older posts.
Example:
77494371
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Response
200 OK application/json
Returns a JSON Feed object. Items have the same shape as GET /posts/all.
Example Response
{
"version": "https://jsonfeed.org/version/1",
"title": "Micro.blog - Timeline",
"home_page_url": "https://micro.blog",
"feed_url": "https://micro.blog/posts/timeline",
"_microblog": {
"about": "https://micro.blog/about/api"
},
"items": []
}
/posts/timeline/{id}
Returns a single post by ID as a timeline post object, not wrapped in a feed. Requires a token with the read scope.
Example Request
curl -X GET "https://micro.blog/posts/timeline/77494371" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id
|
integer | Required |
Post ID.
Example:
77494371
|
Response
200 OK application/json
Returns one post with the same shape as an item in GET /posts/all. Returns 404 with a plain-text message when the post does not exist.
Example Response
{
"id": "77494371",
"content_html": "<p>If you are on the TestFlight beta for Micro.blog iOS, you will have seen our experiments to enable Liquid Glass.</p>\n",
"summary": "",
"url": "https://www.manton.org/2025/11/07/if-you-are-on-the.html",
"date_published": "2025-11-07T18:00:00+00:00",
"author": {
"name": "Manton Reece",
"url": "https://manton.org",
"avatar": "https://avatars.micro.blog/avatars/2025/22/3.jpg",
"_microblog": {
"username": "manton"
}
},
"_microblog": {
"date_relative": "19:00",
"date_timestamp": 1762538400,
"is_favorite": false,
"is_bookmark": false,
"is_deletable": false,
"is_conversation": false,
"is_linkpost": false,
"is_mention": false,
"is_podcast": false,
"note": "",
"syndication": []
}
}
/posts/all/by_id
Returns a single post by ID as a timeline post object, not wrapped in a feed. Same as GET /posts/timeline/{id} with the ID in the query string. Requires a token with the read scope.
Example Request
curl -X GET "https://micro.blog/posts/all/by_id?id=77494371" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id
|
integer | Required |
Post ID.
Example:
77494371
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Response
200 OK application/json
Returns one post with the same shape as an item in GET /posts/all. Returns 404 with a plain-text message when id is missing or the post does not exist.
Example Response
{
"id": "77494371",
"content_html": "<p>If you are on the TestFlight beta for Micro.blog iOS, you will have seen our experiments to enable Liquid Glass.</p>\n",
"summary": "",
"url": "https://www.manton.org/2025/11/07/if-you-are-on-the.html",
"date_published": "2025-11-07T18:00:00+00:00",
"author": {
"name": "Manton Reece",
"url": "https://manton.org",
"avatar": "https://avatars.micro.blog/avatars/2025/22/3.jpg",
"_microblog": {
"username": "manton"
}
},
"_microblog": {
"date_relative": "19:00",
"date_timestamp": 1762538400,
"is_favorite": false,
"is_bookmark": false,
"is_deletable": false,
"is_conversation": false,
"is_linkpost": false,
"is_mention": false,
"is_podcast": false,
"note": "",
"syndication": []
}
}
/posts/photos
Returns posts with images from the authenticated user’s timeline in JSON Feed format. Without before_id, only the 200 most recent timeline posts are scanned, so a page can hold fewer than count posts. Requires a token with the read scope.
Example Request
curl -X GET "https://micro.blog/posts/photos?count=25" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
count
|
integer | Optional |
Maximum number of posts to return.
Example:
25
|
since_id
|
integer | Optional |
Only return posts published after this post.
Example:
77479242
|
before_id
|
integer | Optional |
Only return posts published before this post.
Example:
77494371
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Response
200 OK application/json
Returns a JSON Feed object. Items have the same shape as GET /posts/all.
Example Response
{
"version": "https://jsonfeed.org/version/1",
"title": "Micro.blog - Photos",
"home_page_url": "https://micro.blog",
"feed_url": "https://micro.blog/posts/photos",
"_microblog": {
"about": "https://micro.blog/about/api"
},
"items": []
}
/posts/media
Returns posts with photos or video from the authenticated user’s timeline in JSON Feed format. Each item adds a media classification and, when known, the size and blurhash of its first image. Requires a token with the read scope.
Example Request
curl -X GET "https://micro.blog/posts/media?count=25&filter=photos" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
count
|
integer | Optional |
Maximum number of posts to return.
Example:
25
|
since_id
|
integer | Optional |
Only return posts published after this post.
Example:
77479242
|
before_id
|
integer | Optional |
Only return posts published before this post.
Example:
77494371
|
filter
|
string | Optional |
Comma-separated media types to keep, photos and/or videos. The photos filter skips images classified as screenshots or graphics. Omit to return all media posts.
Example:
photos,videos
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Response
200 OK application/json
Returns a JSON Feed object. Items have the same shape as GET /posts/all, plus _microblog.classification (photo, video, screenshot, graphic, or unknown) and, when known, _microblog.default_photo with width, height, and blurhash.
Example Response
{
"version": "https://jsonfeed.org/version/1",
"title": "Micro.blog - Media",
"home_page_url": "https://micro.blog",
"feed_url": "https://micro.blog/posts/media",
"_microblog": {
"about": "https://micro.blog/about/api"
},
"items": [
{
"id": "77494371",
"content_html": "<p><img src=\"https://manton.org/uploads/2025/photo.jpg\" width=\"600\" height=\"450\" alt=\"\"></p>\n",
"summary": "",
"url": "https://www.manton.org/2025/11/07/photo.html",
"date_published": "2025-11-07T18:00:00+00:00",
"author": {
"name": "Manton Reece",
"url": "https://manton.org",
"avatar": "https://avatars.micro.blog/avatars/2025/22/3.jpg",
"_microblog": {
"username": "manton"
}
},
"_microblog": {
"date_relative": "19:00",
"date_timestamp": 1762538400,
"is_favorite": false,
"is_bookmark": false,
"is_deletable": false,
"is_conversation": false,
"is_linkpost": false,
"is_mention": false,
"is_podcast": false,
"note": "",
"syndication": [],
"classification": "photo",
"default_photo": {
"width": 1200,
"height": 900,
"blurhash": "LEHV6nWB2yk8pyo0adR*.7kCMdnj"
}
}
}
]
}
/posts/replies
Returns the authenticated user’s own replies, newest first, in JSON Feed format. Requires a token with the read scope.
Example Request
curl -X GET "https://micro.blog/posts/replies?count=50" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
count
|
integer | Optional |
Maximum number of replies to return. Values above 100 are capped at 100.
Example:
50
|
q
|
string | Optional |
Only return replies whose text contains this string.
Example:
thanks
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Response
200 OK application/json
Returns a JSON Feed object with the user as the feed author. Reply items have a smaller shape than timeline posts, including content_text and only date_relative and is_deletable under _microblog.
Example Response
{
"version": "https://jsonfeed.org/version/1",
"title": "Micro.blog - Replies",
"home_page_url": "https://micro.blog",
"feed_url": "https://micro.blog/posts/replies",
"_microblog": {
"about": "https://micro.blog/about/api"
},
"author": {
"name": "Manton Reece",
"url": "https://manton.org",
"avatar": "https://avatars.micro.blog/avatars/2025/22/3.jpg"
},
"items": [
{
"id": "98765",
"content_html": "<p><a href=\"https://micro.blog/jean\">@jean</a> Thanks!</p>",
"content_text": "@jean Thanks!",
"url": "https://micro.blog/manton/98765",
"date_published": "2025-11-07T18:00:00+00:00",
"author": {
"name": "Manton Reece",
"url": "https://manton.org",
"avatar": "https://avatars.micro.blog/avatars/2025/22/3.jpg",
"_microblog": {
"username": "manton"
}
},
"_microblog": {
"date_relative": "19:00",
"is_deletable": true
}
}
]
}
/posts/search
Searches recent posts featured in Discover. Every word in the query must appear in the post text. Returns up to 50 posts in JSON Feed format. No authentication is required; with a token, posts from muted users are removed and is_favorite reflects the user’s bookmarks.
Example Request
curl -X GET "https://micro.blog/posts/search?q=coffee"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
q
|
string | Required |
Search words. Queries shorter than 4 characters return no results. Characters other than letters, digits, and spaces are ignored.
Example:
coffee
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Optional |
Optional bearer token. Format: Bearer {token}. Needs the read scope when sent.
|
Response
200 OK application/json
Returns a JSON Feed object. Items have the same shape as GET /posts/all.
Example Response
{
"version": "https://jsonfeed.org/version/1",
"title": "Micro.blog - Search",
"home_page_url": "https://micro.blog",
"feed_url": "https://micro.blog/posts/",
"_microblog": {
"about": "https://micro.blog/about/api"
},
"items": []
}
/posts/{id}
Deletes one of the authenticated user’s posts. A blog post is removed from the blog as well as the timeline. Requires a token with the delete scope.
Example Request
curl -X DELETE "https://micro.blog/posts/77494371" \
--header "Authorization: Bearer ABCDEF1234567890ABCD"
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Required |
Bearer token for authentication. Format: Bearer {token}.
|
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
id
|
integer | Required |
Post ID.
Example:
77494371
|
Response
200 OK application/json
Returns an empty JSON object. The response is the same when the post does not exist or belongs to someone else; nothing is deleted in those cases. Returns 403 when the token lacks the delete scope.
Example Response
{}
/posts/{username}
Returns a user’s profile and recent blog posts and replies, newest first, in JSON Feed format. No authentication is required; with a token, is_following, is_you, and is_favorite reflect the authenticated user and posts from muted users are removed.
Example Request
curl -X GET "https://micro.blog/posts/manton?count=10"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
count
|
integer | Optional |
Maximum number of blog posts, and separately of replies, to include. The feed can hold up to twice this many items.
Example:
10
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Optional |
Optional bearer token. Format: Bearer {token}. Needs the read scope when sent. Required to view a user who has hidden their profile.
|
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
username
|
string | Required |
Micro.blog username.
Example:
manton
|
Response
200 OK application/json
Returns a JSON Feed object with profile fields under _microblog and the user as the feed author. Items have the same shape as GET /posts/all. Returns 404 when the user does not exist, or has hidden their profile and no token is sent.
Example Response
{
"version": "https://jsonfeed.org/version/1",
"title": "Micro.blog - Manton Reece",
"home_page_url": "https://micro.blog",
"feed_url": "https://micro.blog/posts/manton",
"_microblog": {
"about": "https://micro.blog/about/api",
"id": "12345",
"username": "manton",
"bio": "Founder of Micro.blog.",
"pronouns": "",
"is_following": false,
"is_you": false,
"following_count": 300,
"discover_count": 10
},
"author": {
"name": "Manton Reece",
"url": "https://manton.org",
"avatar": "https://avatars.micro.blog/avatars/2025/22/3.jpg"
},
"items": []
}
/posts/{username}/photos
Returns a user’s recent photo posts in JSON Feed format, with the same profile fields as GET /posts/{username}. No authentication is required; with a token, is_following, is_you, and is_favorite reflect the authenticated user.
Example Request
curl -X GET "https://micro.blog/posts/manton/photos?count=10"
Query Parameters
| Name | Type | Required | Description |
|---|---|---|---|
count
|
integer | Optional |
Maximum number of photo posts to return.
Example:
10
|
Header Parameters
| Name | Type | Required | Description |
|---|---|---|---|
Authorization
|
string | Optional |
Optional bearer token. Format: Bearer {token}. Needs the read scope when sent.
|
Path Parameters
| Name | Type | Required | Description |
|---|---|---|---|
username
|
string | Required |
Micro.blog username.
Example:
manton
|
Response
200 OK application/json
Returns a JSON Feed object. Each item adds image (the photo URL) and _microblog.thumbnail_url (a 400-pixel thumbnail). Returns 404 when the user does not exist.
Example Response
{
"version": "https://jsonfeed.org/version/1",
"title": "Micro.blog - Manton Reece - Photos",
"home_page_url": "https://micro.blog",
"feed_url": "https://micro.blog/posts/manton",
"_microblog": {
"about": "https://micro.blog/about/api",
"id": "12345",
"username": "manton",
"bio": "Founder of Micro.blog.",
"pronouns": "",
"is_following": false,
"is_you": false,
"following_count": 300,
"discover_count": 10
},
"author": {
"name": "Manton Reece",
"url": "https://manton.org",
"avatar": "https://avatars.micro.blog/avatars/2025/22/3.jpg"
},
"items": [
{
"id": "77494371",
"content_html": "<p><img src=\"https://manton.org/uploads/2025/photo.jpg\" width=\"600\" height=\"450\" alt=\"\"></p>\n",
"url": "https://www.manton.org/2025/11/07/photo.html",
"date_published": "2025-11-07T18:00:00+00:00",
"image": "https://manton.org/uploads/2025/photo.jpg",
"author": {
"name": "Manton Reece",
"url": "https://manton.org",
"avatar": "https://avatars.micro.blog/avatars/2025/22/3.jpg",
"_microblog": {
"username": "manton"
}
},
"_microblog": {
"date_relative": "19:00",
"date_timestamp": 1762538400,
"is_favorite": false,
"is_bookmark": false,
"is_deletable": true,
"is_conversation": false,
"thumbnail_url": "https://micro.blog/photos/400/https://manton.org/uploads/2025/photo.jpg"
}
}
]
}