Today in your feeds
Summary HTML for the requested entries.
# Build with Micro.blog Site: https://microblog.dev/ Micro.blog API base URL: https://micro.blog This full document includes site pages, public API endpoint details, and example project flows. ## Site Pages ### Home URL: https://microblog.dev/ Unofficial API docs, examples, and app showcases for the Micro.blog platform. Micro.blog supports multiple APIs and open-source apps. Use these docs to explore the API, learn from working examples, and build your own integrations. ### Micro.blog API Documentation URL: https://microblog.dev/api/ Explore Micro.blog API endpoints for authentication, timelines, posting, bookmarks, notes, books, feeds, discovery, account settings, and IndieWeb protocols. ### Example Apps URL: https://microblog.dev/example-apps/ Trace real app flows back to the API docs. Each example links to its source repository and the Micro.blog endpoints it uses. ## API Reference The API base URL for Micro.blog endpoints is `https://micro.blog`. Use bearer token authentication where an endpoint lists an `Authorization` header. ## Authentication URL: https://microblog.dev/api/authentication/ Sign in, registration, and token verification endpoints. ### POST /account/signin URL: `https://micro.blog/account/signin` Sends a sign-in email for an existing account. App sign-in requests must include a registered app name and redirect URL. Notes: - Apps that use this sign-in flow must be registered with Micro.blog before sending `app_name` and `redirect_url`. Email [help@micro.blog](mailto:help@micro.blog) with the app name and redirect URL to request registration. Query parameters: - `email` (string, required): Email address for the account. Example: `example@example.com` - `app_name` (string, optional): Name of the app requesting access. Example: `Micro.blog for Android` - `redirect_url` (string, optional): Registered redirect URL for the app sign-in flow. Example: `microblog://signin/` - `is_mobile` (integer, optional): Set to `1` for the mobile sign-in email flow. Example: `1` Example request: ```sh curl -X POST "https://micro.blog/account/signin?email=example%40example.com" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty object on success. Example response: ```json {} ``` ### POST /account/verify URL: `https://micro.blog/account/verify` Verifies an emailed sign-in or app token and returns account information plus the API token to use on authenticated requests. Query parameters: - `token` (string, required): Verification or access token. Example: `EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/account/verify?token=Bearer+EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns user information and authentication token upon successful verification. Response properties: - `token` (string): Authentication token for subsequent API requests. Example: `EF7BBXXXXXX..` Important: Include this value in the `Authorization` header as `Bearer {token}` for authenticated API requests. - `name` (string): The user's display name. Example: `Vincent` - `username` (string): The user's username. Example: `vincent` - `avatar` (string): URL to the user's avatar image. Example: `https://avatars.micro.blog/avatars/2025/39/3008.jpg` - `bio` (string): The user's bio or description. - `default_site` (string): The user's default Micro.blog site. Example: `vincent-social.micro.blog` - `full_name` (string): The user's full name. Example: `Vincent` - `gravatar_url` (string): URL to the user's Gravatar image. Example: `https://avatars.micro.blog/avatars/2025/39/3008.jpg` - `has_site` (boolean): Whether the user has a Micro.blog site. Example: `true` - `plan` (string): The user's current subscription plan. Example: `premium` - `plans` (array of string): Array of subscription plans the user has access to. Example: `[premium]` - `is_fullaccess` (boolean): Whether the user has full access features. Example: `true` - `is_premium` (boolean): Whether the user has a premium subscription. Example: `true` - `is_using_ai` (boolean): Whether the user is using AI features. Example response: ```json { "token": "EF7BBXXXXXX..", "name": "Vincent", "username": "vincent", "avatar": "https://avatars.micro.blog/avatars/2025/39/3008.jpg", "bio": "", "default_site": "vincent-social.micro.blog", "full_name": "Vincent", "gravatar_url": "https://avatars.micro.blog/avatars/2025/39/3008.jpg", "has_site": true, "plan": "premium", "plans": [ "premium" ], "is_fullaccess": true, "is_premium": true, "is_using_ai": false } ``` ### POST /account/apple URL: `https://micro.blog/account/apple` Verifies a Sign in with Apple identity token and returns a temporary Micro.blog verification token. Query parameters: - `identity_token` (string, required): Apple identity token. Example: `APPLE_IDENTITY_TOKEN` - `user_id` (string, required): Apple user identifier. Example: `001234.apple` - `email` (string, optional): Email address. Example: `example@example.com` - `full_name` (string, optional): Full display name. Example: `Vincent` - `username` (string, optional): Micro.blog username. Example: `vincent` Example request: ```sh curl -X POST "https://micro.blog/account/apple?identity_token=APPLE_IDENTITY_TOKEN&user_id=001234.apple" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "username": "vincent", "token": "EF7BB9BCAC1F6D561C93" } ``` ### POST /indieauth/approve URL: `https://micro.blog/indieauth/approve` Approves an IndieAuth authorization request and redirects to the client with a code. Query parameters: - `scope` (string, optional): Requested or granted scope string. Example: `profile read create update` Example request: ```sh curl -X POST "https://micro.blog/indieauth/approve" ``` Response: - Status: 302 - Content-Type: `text/html` - Description: Redirects to the registered redirect URI with `code` and `state`. Example response: ```html HTTP/1.1 302 Found Location: https://example-app.com/callback?code=AUTHCODE&state=state123 ``` ### GET /indieauth/auth URL: `https://micro.blog/indieauth/auth` Starts the IndieAuth authorization flow and renders the authorization screen. Query parameters: - `me` (string, optional): Canonical user URL. Example: `https://example.micro.blog/` - `client_id` (string, required): IndieAuth client ID URL. Example: `https://example-app.com/` - `redirect_uri` (string, required): IndieAuth redirect URI. Example: `https://example-app.com/callback` - `state` (string, optional): Opaque client state returned to the redirect URI. Example: `state123` - `response_type` (string, optional): IndieAuth response type. Example: `code` - `scope` (string, optional): Requested or granted scope string. Example: `profile read create update` - `inkwell` (integer, optional): Set to `1` for Inkwell-specific authorization. Example: `1` Example request: ```sh curl -X GET "https://micro.blog/indieauth/auth?client_id=https%3A%2F%2Fexample-app.com%2F&redirect_uri=https%3A%2F%2Fexample-app.com%2Fcallback" ``` Response: - Status: 200 - Content-Type: `text/html` - Description: Returns the authorization screen. Example response: ```html
IndieAuth authorization screen ``` ### POST /indieauth/auth URL: `https://micro.blog/indieauth/auth` Verifies an IndieAuth authorization code for clients that only need identity information. Query parameters: - `code` (string, required): Authorization code. Example: `AUTHCODE` - `redirect_uri` (string, required): IndieAuth redirect URI. Example: `https://example-app.com/callback` - `client_id` (string, required): IndieAuth client ID URL. Example: `https://example-app.com/` Example request: ```sh curl -X POST "https://micro.blog/indieauth/auth?code=AUTHCODE&redirect_uri=https%3A%2F%2Fexample-app.com%2Fcallback&client_id=https%3A%2F%2Fexample-app.com%2F" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "me": "https://vincent.micro.blog/", "profile": { "name": "Vincent", "url": "https://vincent.micro.blog/", "photo": "https://avatars.micro.blog/avatars/2025/39/3008.jpg", "nickname": "vincent" } } ``` ### GET /indieauth/token URL: `https://micro.blog/indieauth/token` Introspects an IndieAuth bearer token and returns profile and scope information. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/indieauth/token" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "me": "https://vincent.micro.blog/", "client_id": "Example App", "scope": "profile read create update", "profile": { "name": "Vincent", "url": "https://vincent.micro.blog/", "photo": "https://avatars.micro.blog/avatars/2025/39/3008.jpg", "nickname": "vincent" } } ``` ### POST /indieauth/token URL: `https://micro.blog/indieauth/token` Exchanges an IndieAuth authorization code for profile information and, when requested, an access token. Query parameters: - `code` (string, required): Authorization code. Example: `AUTHCODE` - `redirect_uri` (string, required): IndieAuth redirect URI. Example: `https://example-app.com/callback` - `client_id` (string, required): IndieAuth client ID URL. Example: `https://example-app.com/` Example request: ```sh curl -X POST "https://micro.blog/indieauth/token?code=AUTHCODE&redirect_uri=https%3A%2F%2Fexample-app.com%2Fcallback&client_id=https%3A%2F%2Fexample-app.com%2F" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "scope": "profile read create update", "me": "https://vincent.micro.blog/", "profile": { "name": "Vincent", "url": "https://vincent.micro.blog/", "photo": "https://avatars.micro.blog/avatars/2025/39/3008.jpg", "nickname": "vincent" }, "token_type": "Bearer", "access_token": "EF7BB9BCAC1F6D561C93" } ``` ## Account URL: https://microblog.dev/api/account/ Endpoints for account preferences and account-level API settings. ### POST /account/feeds URL: `https://micro.blog/account/feeds` Adds a feed source to the account. Query parameters: - `url` (string, required): URL for the target resource. Example: `https://example.com/post` - `add_feed_option` (string, optional): Optional add mode, for example `import`. Example: `import` - `site_id` (integer, optional): Site identifier. Example: `123` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/account/feeds?url=https%3A%2F%2Fexample.com%2Fpost" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /account/info/domains URL: `https://micro.blog/account/info/domains` Returns hosted site and domain status information. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/account/info/domains" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json [ { "id": 789, "guid": "vincent", "hostname": "vincent.micro.blog", "cname": "www.example.com", "url": "https://vincent.micro.blog/", "status": "paid", "has_cname": true, "is_paid": true, "is_expired": false, "ssl_status": "ready", "created_at": "Apr 26, 2026" } ] ``` ### GET /account/info/feeds URL: `https://micro.blog/account/info/feeds` Returns account feed and cross-posting source information. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/account/info/feeds" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "rss_feeds": [ { "id": 123, "url": "https://vincent.example.com/feed.json", "twitter_username": "", "medium_username": "", "mastodon_username": "vincent", "mastodon_hostname": "mastodon.social", "tumblr_hostname": "", "flickr_username": "", "facebook_name": "", "facebook_page": "", "linkedin_name": "", "bluesky_handle": "vincent.example.com", "nostr_pubkey": "", "youtube_channel_title": "", "pixelfed_username": "", "pixelfed_hostname": "", "peertube_username": "", "peertube_hostname": "", "has_crosspost_mastodon": true, "has_crosspost_bluesky": true, "has_crosspost_any": true, "has_bot": false, "has_error": false, "refresh_error": "", "is_disabled_crossposting": false, "is_importer": false, "import_feed_hostname": "vincent.example.com", "import_blog_hostname": "" } ], "new_feed": { "id": 0, "url": "" } } ``` ### GET /account/settings URL: `https://micro.blog/account/settings` Returns account-level API settings for the authenticated user. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/account/settings" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns account settings. Example response: ```json { "timeline": 0 } ``` ### POST /account/settings URL: `https://micro.blog/account/settings` Updates account-level API settings for the authenticated user. Query parameters: - `timeline` (integer, required): Timeline mention setting. `0` includes all posts, `1` limits mentions, and `2` hides mentions. Example: `2` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/account/settings?timeline=2" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ## Posts URL: https://microblog.dev/api/posts/ Endpoints for timeline posts, user posts, replies, media, conversations, search, and post deletion. ### GET /posts/all URL: `https://micro.blog/posts/all` Retrieves the user's timeline feed. Returns posts in JSON Feed format with Micro.blog extensions. Supports pagination via query parameters. Query parameters: - `count` (integer, optional): Maximum number of items to return. Example: `150` - `since_id` (integer, optional): Only return posts newer than this post ID. Example: `1` - `before_id` (integer, optional): Only return posts older than this post ID. Example: `117` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/all" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed object containing an array of posts with Micro.blog extensions. Response properties: - `version` (string): JSON Feed version identifier. Example: `https://jsonfeed.org/version/1` - `title` (string): Title of the feed. Example: `Micro.blog - Timeline` - `home_page_url` (string): URL of the home page for this feed. Example: `https://micro.blog` - `feed_url` (string): URL of this feed. Example: `https://micro.blog/posts/all` - `_microblog` (object): Micro.blog-specific extensions to the JSON Feed format. Properties: - `about` (string): URL to API documentation. Example: `https://micro.blog/about/api` - `items` (array of object): Array of post items. Item properties: - `id` (string): Unique post identifier (64-bit). Example: `77494371` - `content_html` (string): HTML content of the post. Example: `Post content...
` - `summary` (string): Summary or excerpt of the post. - `url` (string): URL to the post. Example: `https://www.manton.org/2025/11/07/if-you-are-on-the.html` - `date_published` (string): ISO 8601 timestamp of when the post was published. Example: `2025-11-07T18:00:00+00:00` - `author` (object): Author information. Properties: - `name` (string): Author's display name. Example: `Manton Reece` - `url` (string): URL to author's profile or website. Example: `https://manton.org` - `avatar` (string): URL to author's avatar image. Example: `https://avatars.micro.blog/avatars/2025/22/3.jpg` - `_microblog` (object): Micro.blog-specific author fields. Properties: - `username` (string): Author's Micro.blog username. Example: `manton` - `_microblog` (object): Micro.blog-specific post fields. Properties: - `date_relative` (string): Human-readable relative date/time. Example: `19:00` - `date_timestamp` (integer): Unix timestamp of the post. Example: `1762538400` - `is_favorite` (boolean): Whether the post is favorited by the authenticated user. - `is_bookmark` (boolean): Whether the post is bookmarked by the authenticated user. - `is_deletable` (boolean): Whether the authenticated user can delete this post. - `is_conversation` (boolean): Whether this post is part of a conversation thread. - `is_linkpost` (boolean): Whether this post is a link post. - `is_mention` (boolean): Whether this post mentions the authenticated user. - `note` (string): Additional note or context for the post. - `syndication` (array of string): Array of syndication URLs where this post was shared. Example: `[https://example.com/syndication/url]` Example response: ```json { "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": "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.
\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, "note": "", "syndication": [ "https://example.com/syndication/url" ] } } ] } ``` ### GET /posts/all/by_id URL: `https://micro.blog/posts/all/by_id` Returns one timeline post by query ID. Query parameters: - `id` (integer, required): Resource identifier. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/all/by_id?id=12345" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a single timeline post object. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### GET /posts/conversation URL: `https://micro.blog/posts/conversation` Returns the conversation thread for a post, mention, favourite, or thread ID. Query parameters: - `id` (integer, required): Identifier for the resource. Example: `88924898` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/conversation?id=88924898" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/conversation", "items": [] } ``` ### GET /posts/links/search URL: `https://micro.blog/posts/links/search` Searches indexed links and returns JSON Feed. Query parameters: - `q` (string, required): Search query. Example: `search term` Example request: ```sh curl -X GET "https://micro.blog/posts/links/search?q=search+term" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### GET /posts/links/{prefix} URL: `https://micro.blog/posts/links/{prefix}` Returns indexed links matching a host/path prefix in JSON Feed format. Path parameters: - `prefix` (string, required): Hostname and optional path prefix. Example: `example.com/path` Example request: ```sh curl -X GET "https://micro.blog/posts/links/{prefix}" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### GET /posts/media URL: `https://micro.blog/posts/media` Retrieves media posts from the authenticated user timeline in JSON Feed format. Query parameters: - `count` (integer, optional): Maximum number of items to return. Example: `25` - `since_id` (integer, optional): Only return posts newer than this post ID. Example: `77479242` - `before_id` (integer, optional): Only return posts older than this post ID. Example: `9853826` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/media" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/media", "items": [] } ``` ### GET /posts/photos URL: `https://micro.blog/posts/photos` Retrieves photo posts from the authenticated user timeline in JSON Feed format. Query parameters: - `count` (integer, optional): Maximum number of items to return. Example: `25` - `since_id` (integer, optional): Only return posts newer than this post ID. Example: `77479242` - `before_id` (integer, optional): Only return posts older than this post ID. Example: `9853826` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/photos" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/photos", "items": [] } ``` ### GET /posts/replies URL: `https://micro.blog/posts/replies` Returns replies for the authenticated user. Query parameters: - `count` (integer, optional): Maximum number of items to return. Example: `25` - `q` (string, optional): Search query or Micropub query type. Example: `search term` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/replies" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/replies", "items": [] } ``` ### GET /posts/search URL: `https://micro.blog/posts/search` Searches posts visible to the authenticated user. Query parameters: - `q` (string, required): Search query or Micropub query type. Example: `vincent` - `count` (integer, optional): Maximum number of items to return. Example: `25` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/search?q=vincent" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/search", "items": [] } ``` ### GET /posts/timeline URL: `https://micro.blog/posts/timeline` Retrieves the authenticated user timeline in JSON Feed format. Query parameters: - `count` (integer, optional): count parameter. Example: `example` - `since_id` (string, optional): Only return posts newer than this post ID. Example: `77479242` - `before_id` (string, optional): Only return posts older than this post ID. Example: `9853826` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/timeline" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### GET /posts/timeline/{id} URL: `https://micro.blog/posts/timeline/{id}` Returns one timeline post by ID. Path parameters: - `id` (integer, required): Identifier for the resource. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/timeline/{id}?id=2" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/timeline/{id}", "items": [] } ``` ### DELETE /posts/{id} URL: `https://micro.blog/posts/{id}` Deletes one of the authenticated user's posts by ID. Path parameters: - `id` (integer, required): Identifier for the resource. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X DELETE "https://micro.blog/posts/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /posts/{username} URL: `https://micro.blog/posts/{username}` Returns a user profile and recent posts for the given username. Path parameters: - `username` (string, required): Micro.blog username. Example: `vincent` Query parameters: - `count` (integer, optional): Maximum number of items to return. Example: `0` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/{username}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/{username}", "items": [] } ``` ### GET /posts/{username}/photos URL: `https://micro.blog/posts/{username}/photos` Returns public photo posts for a user in JSON Feed format. Path parameters: - `username` (string, required): Micro.blog username. Example: `vincent` Query parameters: - `count` (integer, optional): count parameter. Example: `example` Example request: ```sh curl -X GET "https://micro.blog/posts/{username}/photos" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ## Posting and Micropub URL: https://microblog.dev/api/posting/ Endpoints for publishing, replying, uploading media, and querying Micropub resources. ### GET /micropub URL: `https://micro.blog/micropub` Handles Micropub configuration, source, category, contact, and syndication queries. Query parameters: - `q` (string, required): Search query or Micropub query type. Example: `source` - `mp-destination` (string, optional): Micropub destination site URL or hostname. Example: `vincent-test.micro.blog` - `mp-channel` (string, optional): Micropub source channel, for example `pages`. Example: `pages` - `filter` (string, optional): Text filter for Micropub source or contact queries. Example: `Vincent` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/micropub" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response for the requested resource. Example response: ```json { "media-endpoint": "https://micro.blog/micropub/media", "destination": [ { "uid": "https://vincent.micro.blog/", "name": "vincent.micro.blog", "microblog-audio": true, "microblog-default": true, "microblog-title": "Vincent's Blog" } ], "post-types": [ { "type": "note", "name": "Post", "properties": [ "content", "published", "post-status", "category" ] } ], "channels": [ { "uid": "default", "name": "Posts" } ], "syndicate-to": [] } ``` ### POST /micropub URL: `https://micro.blog/micropub` Creates, updates, or deletes content through Micropub. Query parameters: - `action` (string, optional): Micropub action, for example `delete`. Example: `delete` - `url` (string, optional): URL to look up or modify. Example: `http://gluon.micro.blog/2019/12/16/hello-world.html` - `h` (string, optional): Micropub object type. Use `entry` for posts. Example: `entry` - `content` (string, optional): Reply text. Example: `@vincent Thanks for the update.` - `name` (string, optional): Title or notebook name, depending on the endpoint. Example: `This is a title` - `photo` (string, optional): Photo URL for a Micropub post. Example: `https://gluon.micro.blog/uploads/2019/9931898b67.jpg` - `bookmark-of` (string, optional): URL being bookmarked. Example: `https://micro.blog/rom/21700756` - `mp-destination` (string, optional): Micropub destination site URL or hostname. Example: `https://example.micro.blog/` - `mp-channel` (string, optional): Micropub source channel, for example `pages`. Example: `pages` - `site_id` (string, optional): Site URL or identifier for the destination site. Example: `https://gluon-the-second.micro.blog/` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/micropub" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /micropub/media URL: `https://micro.blog/micropub/media` Returns Micropub media endpoint configuration or uploaded media. Query parameters: - `q` (string, required): Search query or Micropub query type. Example: `config` - `mp-destination` (string, optional): Micropub destination site URL or hostname. Example: `https://vincent.micro.blog/` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/micropub/media" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response for the requested resource. Example response: ```json { "items": [ { "url": "https://vincent.micro.blog/uploads/2026/photo.jpg", "published": "2026-04-26T12:00:00+00:00", "alt": "Photo description", "microblog-ai": false, "microblog-id": 12345, "sizes": { "large": "https://vincent.micro.blog/uploads/2026/photo.jpg" }, "cdn": { "large": "https://cdn.uploads.micro.blog/12345/photo.jpg" } } ] } ``` ### POST /micropub/media URL: `https://micro.blog/micropub/media` Uploads media or deletes an uploaded media file through the Micropub media endpoint. Query parameters: - `action` (string, optional): Micropub action, for example `delete`. Example: `delete` - `mp-destination` (string, optional): Micropub destination site URL or hostname. Example: `https://vincent.micro.blog/` - `url` (string, optional): URL to look up or modify. Example: `https://vincent.micro.blog/uploads/2023/dd2f2731d0.jpg` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` - `Content-Type` (string, required): Request content type. Example: `multipart/form-data` Body parameters: - `file` (string, optional): File upload field for media uploads. Example: `@/path/to/file.jpg` Example request: ```sh curl -X POST "https://micro.blog/micropub/media" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" \ --header "Content-Type: multipart/form-data" \ --form "file=@/path/to/file.jpg" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response for the requested resource. Example response: ```json { "url": "https://vincent.micro.blog/uploads/2026/photo.jpg", "poster": "" } ``` ### POST /micropub/media/append URL: `https://micro.blog/micropub/media/append` Appends a base64-encoded chunk to a large media upload. Micro.blog clients use this before marking the upload as finished. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` - `Content-Type` (string, required): Request content type. Example: `multipart/form-data` Body parameters: - `file_id` (integer, required): Client-generated upload identifier shared by all chunks for the same file. Example: `12345` - `file_name` (string, optional): Original file name. The Micro.blog app includes this with chunk requests. Example: `video.mov` - `file_type` (string, optional): MIME type for the uploaded file. Example: `video/quicktime` - `file_data` (string, required): Base64-encoded chunk data, optionally prefixed with a data URL header. Example: `data:;base64,AAAA` - `mp-destination` (string, optional): Micropub destination site URL or hostname. Example: `https://example.micro.blog/` Example request: ```sh curl -X POST "https://micro.blog/micropub/media/append" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" \ --form "file_id=12345" \ --form "file_name=video.mov" \ --form "file_type=video/quicktime" \ --form "file_data=data:;base64,AAAA" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### POST /micropub/media/finished URL: `https://micro.blog/micropub/media/finished` Marks a chunked media upload as finished and queues server-side processing. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` - `Content-Type` (string, required): Request content type. Example: `multipart/form-data` Body parameters: - `file_id` (integer, required): Client-generated upload identifier used for the appended chunks. Example: `12345` - `file_name` (string, required): Original file name. Example: `video.mov` - `mp-destination` (string, optional): Micropub destination site URL or hostname. Example: `https://example.micro.blog/` Example request: ```sh curl -X POST "https://micro.blog/micropub/media/finished" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" \ --form "file_id=12345" \ --form "file_name=video.mov" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /micropub/media/waiting URL: `https://micro.blog/micropub/media/waiting` Returns processing state and the final URL for a chunked media upload. Query parameters: - `file_id` (integer, required): Upload file identifier. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/micropub/media/waiting?file_id=12345" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns whether processing is still running and, when available, the uploaded media URL. Example response: ```json { "is_processing": false, "url": "https://vincent.micro.blog/uploads/2026/video.mp4" } ``` ### POST /posts/reply URL: `https://micro.blog/posts/reply` Creates a reply to a Micro.blog post or mention. Query parameters: - `id` (integer, required): Identifier for the resource. Example: `28150987` - `content` (string, required): Reply text. Example: `@vincent testing a reply with a [link](https://gluon.app)` - `text` (string, optional): Text content. Example: `Draft note text` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/posts/reply?id=28150987&content=%40vincent+testing+a+reply+with+a+%5Blink%5D%28https%3A%2F%2Fgluon.app%29" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ## Microsub URL: https://microblog.dev/api/microsub/ Microsub endpoints for channels, timelines, and follow actions. ### GET /microsub URL: `https://micro.blog/microsub` Handles Microsub channel and timeline queries. Query parameters: - `action` (string, required): Microsub action. Example: `timeline` - `channel` (string, optional): Microsub channel identifier. Example: `default` - `before` (string, optional): Microsub pagination cursor for older items. Example: `12345` - `after` (string, optional): Microsub pagination cursor for newer items. Example: `67890` Example request: ```sh curl -X GET "https://micro.blog/microsub?action=timeline" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "items": [ { "type": "entry", "published": "2026-04-26T12:00:00+00:00", "content": { "html": "Hello from Micro.blog.
" }, "url": "https://example.com/post", "author": { "type": "card", "name": "Vincent", "url": "https://vincent.micro.blog/", "photo": "https://avatars.micro.blog/avatars/2025/39/3008.jpg" }, "_id": "12345" } ], "paging": { "before": "12345" } } ``` ### POST /microsub URL: `https://micro.blog/microsub` Handles Microsub write actions such as follow. Query parameters: - `action` (string, required): Microsub action. Example: `timeline` - `channel` (string, optional): Microsub channel identifier. Example: `default` - `url` (string, optional): URL for the target resource. Example: `https://example.com/post` - `username` (string, optional): Micro.blog username. Example: `vincent` Example request: ```sh curl -X POST "https://micro.blog/microsub?action=timeline" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ## Discover URL: https://microblog.dev/api/discover/ Endpoints for curated Discover timelines and topic feeds. ### GET /posts/discover URL: `https://micro.blog/posts/discover` Returns the Discover timeline feed. Query parameters: - `before_id` (integer, optional): Only return posts older than this post ID. Example: `9853826` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/discover" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/discover", "items": [] } ``` ### GET /posts/discover/books URL: `https://micro.blog/posts/discover/books` Returns the Discover books feed in JSON Feed format. Example request: ```sh curl -X GET "https://micro.blog/posts/discover/books" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### GET /posts/discover/photos URL: `https://micro.blog/posts/discover/photos` Returns the Discover photos feed. Query parameters: - `before_id` (integer, optional): Only return posts older than this post ID. Example: `19321821` - `count` (integer, optional): Maximum number of items to return. Example: `60` - `since_id` (integer, optional): Only return posts newer than this post ID. Example: `19388108` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/discover/photos" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/discover/photos", "items": [] } ``` ### GET /posts/discover/slowreads URL: `https://micro.blog/posts/discover/slowreads` Returns the Discover slow reads feed in JSON Feed format. Query parameters: - `before_id` (string, optional): Only return items older than this ID. Example: `12345` Example request: ```sh curl -X GET "https://micro.blog/posts/discover/slowreads" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### GET /posts/discover/{topic} URL: `https://micro.blog/posts/discover/{topic}` Returns a Discover topic feed in JSON Feed format. Path parameters: - `topic` (string, required): topic parameter. Example: `example` Query parameters: - `before_id` (string, optional): Only return items older than this ID. Example: `12345` Example request: ```sh curl -X GET "https://micro.blog/posts/discover/{topic}" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ## Mentions URL: https://microblog.dev/api/mentions/ Endpoints for mentions and blocked mention feeds. ### GET /posts/mentions URL: `https://micro.blog/posts/mentions` Returns mentions for the authenticated user. Query parameters: - `since_id` (integer, optional): Only return posts newer than this post ID. Example: `10203852` - `before_id` (integer, optional): Only return posts older than this post ID. Example: `9853826` - `count` (integer, optional): Maximum number of items to return. Example: `5` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/mentions" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/mentions", "items": [] } ``` ### GET /posts/mentions/blocked URL: `https://micro.blog/posts/mentions/blocked` Returns blocked or hidden mentions for the authenticated user. Query parameters: - `since_id` (integer, optional): Only return posts newer than this post ID. Example: `10203852` - `before_id` (integer, optional): Only return posts older than this post ID. Example: `9853826` - `count` (integer, optional): Maximum number of items to return. Example: `5` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/mentions/blocked" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/mentions/blocked", "items": [] } ``` ### GET /posts/mentions/bluesky URL: `https://micro.blog/posts/mentions/bluesky` Returns Bluesky mentions in JSON Feed format. Query parameters: - `count` (integer, optional): count parameter. Example: `example` - `since_id` (string, optional): Only return posts newer than this post ID. Example: `77479242` - `before_id` (string, optional): Only return posts older than this post ID. Example: `9853826` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/mentions/bluesky" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### GET /posts/mentions/mastodon URL: `https://micro.blog/posts/mentions/mastodon` Returns Mastodon mentions in JSON Feed format. Query parameters: - `count` (integer, optional): count parameter. Example: `example` - `since_id` (string, optional): Only return posts newer than this post ID. Example: `77479242` - `before_id` (string, optional): Only return posts older than this post ID. Example: `9853826` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/mentions/mastodon" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### GET /posts/mentions/mb URL: `https://micro.blog/posts/mentions/mb` Returns Micro.blog mentions in JSON Feed format. Query parameters: - `count` (integer, optional): count parameter. Example: `example` - `since_id` (string, optional): Only return posts newer than this post ID. Example: `77479242` - `before_id` (string, optional): Only return posts older than this post ID. Example: `9853826` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/mentions/mb" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### POST /posts/mentions/{id} URL: `https://micro.blog/posts/mentions/{id}` Updates mention visibility metadata. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Query parameters: - `is_hidden_for_blog` (integer, optional): Whether a mention should be hidden from the blog. Example: `1` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/posts/mentions/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ## Bookmarks URL: https://microblog.dev/api/bookmarks/ Endpoints for bookmarks, bookmark tags, bookmark highlights, and reader web views. ### GET /posts/bookmarks URL: `https://micro.blog/posts/bookmarks` Returns the authenticated user's bookmarks in JSON Feed format. Query parameters: - `before_id` (integer, optional): Only return posts older than this post ID. Example: `15563191` - `tag` (string, optional): Bookmark tag name. Example: `life` - `q` (string, optional): Search query or Micropub query type. Example: `search term` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/bookmarks" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1", "title": "Micro.blog - Bookmarks", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/bookmarks", "_microblog": { "about": "https://micro.blog/about/api", "is_showing_summaries": true }, "items": [ { "id": "12345", "content_html": "Saved bookmark text.
", "summary": "Saved bookmark summary.", "url": "https://example.com/article", "date_published": "2026-04-26T12:00:00+00:00", "tags": "reading, reference", "author": { "name": "Vincent", "url": "https://vincent.micro.blog/", "avatar": "https://avatars.micro.blog/avatars/2026/123.jpg", "_microblog": { "username": "vincent" } }, "_microblog": { "date_relative": "12:00", "date_favorited": "2026-04-26T12:05:00+00:00", "date_timestamp": 1777204800, "links": [ { "id": 987, "url": "https://example.com/article", "archived_url": "https://micro.blog/archives/987" } ], "is_bookmark": true, "is_favorite": true, "is_deletable": false, "is_conversation": false } } ] } ``` ### POST /posts/bookmarks URL: `https://micro.blog/posts/bookmarks` Adds a timeline post to the authenticated user's bookmarks. Query parameters: - `id` (integer, required): Identifier for the resource. Example: `1760000` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/posts/bookmarks?id=1760000" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /posts/bookmarks/highlights URL: `https://micro.blog/posts/bookmarks/highlights` Returns saved bookmark highlights in JSON Feed format. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/bookmarks/highlights" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1", "title": "Micro.blog - Highlights", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/bookmarks/highlights", "_microblog": { "about": "https://micro.blog/about/api", "count": 1 }, "items": [ { "id": 456, "title": "Saved article title", "content_text": "Highlighted passage from the saved article.", "url": "https://example.com/article", "date_published": "2026-04-26T12:00:00+00:00" } ] } ``` ### DELETE /posts/bookmarks/highlights/{id} URL: `https://micro.blog/posts/bookmarks/highlights/{id}` Deletes a bookmark highlight. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X DELETE "https://micro.blog/posts/bookmarks/highlights/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /posts/bookmarks/tags URL: `https://micro.blog/posts/bookmarks/tags` Returns bookmark tag names for the authenticated user. Query parameters: - `recent` (boolean, optional): Set to `1` to return recent tags first. Example: `1` - `count` (integer, optional): Maximum number of items to return. Example: `10` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/bookmarks/tags" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an array of bookmark tag names. Example response: ```json [ "reading", "reference" ] ``` ### DELETE /posts/bookmarks/tags/{id} URL: `https://micro.blog/posts/bookmarks/tags/{id}` Deletes a bookmark tag and clears it from bookmarks. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X DELETE "https://micro.blog/posts/bookmarks/tags/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### DELETE /posts/bookmarks/{id} URL: `https://micro.blog/posts/bookmarks/{id}` Removes a bookmark by bookmark ID or original post ID. Path parameters: - `id` (integer, required): Identifier for the resource. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X DELETE "https://micro.blog/posts/bookmarks/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /posts/bookmarks/{id} URL: `https://micro.blog/posts/bookmarks/{id}` Returns a single bookmark by bookmark ID or original post ID. Path parameters: - `id` (integer, required): Identifier for the resource. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/bookmarks/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog - Bookmark", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/bookmarks/12345", "icon": "https://micro.blog/images/icons/favicon_256.png", "favicon": "https://micro.blog/images/icons/favicon_32.png", "_microblog": { "about": "https://micro.blog/about/api" }, "items": [ { "id": "12345", "content_html": "Saved bookmark text.
", "url": "https://example.com/article", "date_published": "2026-04-26T12:00:00+00:00", "tags": "reading, reference" } ] } ``` ### POST /posts/bookmarks/{id} URL: `https://micro.blog/posts/bookmarks/{id}` Updates tags for an existing bookmark. Path parameters: - `id` (integer, required): Identifier for the resource. Example: `12345` Query parameters: - `tags` (string, required): Comma-separated bookmark tags. Example: `html, robots, something` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/posts/bookmarks/{id}?tags=html%2C+robots%2C+something" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ## Blocking and Reporting URL: https://microblog.dev/api/blocking-reporting/ Endpoints for reporting users and managing muted users. ### POST /users/block URL: `https://micro.blog/users/block` Blocks and mutes a user. Query parameters: - `username` (string, required): Micro.blog username. Example: `vincent` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/users/block?username=vincent" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "id": 12345, "username": "vincent" } ``` ### GET /users/blocking URL: `https://micro.blog/users/blocking` Returns blocked users. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/users/blocking" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json [ { "id": 12345, "username": "vincent" } ] ``` ### DELETE /users/blocking/{id} URL: `https://micro.blog/users/blocking/{id}` Deletes a blocked user by ID. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X DELETE "https://micro.blog/users/blocking/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### POST /users/mute URL: `https://micro.blog/users/mute` Mutes a user or keyword for the authenticated user. Query parameters: - `username` (string, optional): Micro.blog username. Example: `gluon` - `keyword` (string, optional): Keyword to mute. Example: `spoiler` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/users/mute?username=gluon" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /users/muting URL: `https://micro.blog/users/muting` Returns muted users and keywords for the authenticated user. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/users/muting" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response for the requested resource. Example response: ```json [ { "id": 12345, "username": "gluon", "domain": "", "keyword": "spoiler", "is_hiding_other_replies": true } ] ``` ### DELETE /users/muting/{id} URL: `https://micro.blog/users/muting/{id}` Deletes a muted user or keyword by ID. Path parameters: - `id` (integer, required): Identifier for the resource. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X DELETE "https://micro.blog/users/muting/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### POST /users/muting/{id} URL: `https://micro.blog/users/muting/{id}` Updates a muted user or keyword setting. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Query parameters: - `is_hiding_other_replies` (integer, optional): Whether muted-user replies from other people should be hidden. Example: `1` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/users/muting/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### POST /users/report URL: `https://micro.blog/users/report` Reports a user for review. Query parameters: - `username` (string, required): Micro.blog username. Example: `vincent` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/users/report?username=vincent" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ## Users and Relationships URL: https://microblog.dev/api/users/ Endpoints for user search, following, relationship checks, discovery suggestions, and user logs. ### POST /users/follow URL: `https://micro.blog/users/follow` Follows a Micro.blog user or feed URL. Query parameters: - `username` (string, optional): Micro.blog username. Example: `vincent` - `feed_url` (string, optional): Feed URL. Example: `https://example.com/feed.json` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/users/follow" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /users/is_following URL: `https://micro.blog/users/is_following` Checks whether the authenticated user follows another user. Query parameters: - `username` (string, required): Micro.blog username. Example: `vincent` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/users/is_following?username=vincent" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "is_following": true, "is_you": false } ``` ### GET /users/discover/{username} URL: `https://micro.blog/users/discover/{username}` Returns suggested users based on a user's follows. Path parameters: - `username` (string, required): Micro.blog username. Example: `vincent` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/users/discover/{username}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an array of suggested users. Example response: ```json [ { "name": "Vincent", "url": "https://vincent.micro.blog/", "avatar": "https://avatars.micro.blog/avatars/2026/123.jpg", "username": "vincent", "is_following": true, "is_you": false } ] ``` ### GET /users/following/{username} URL: `https://micro.blog/users/following/{username}` Returns users followed by the given username. Path parameters: - `username` (string, required): Micro.blog username. Example: `vincent` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/users/following/{username}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an array of followed users. Example response: ```json [ { "name": "Vincent", "url": "https://vincent.micro.blog/", "avatar": "https://avatars.micro.blog/avatars/2026/123.jpg", "username": "vincent", "is_following": true, "is_you": false } ] ``` ### GET /users/search URL: `https://micro.blog/users/search` Searches Micro.blog users. Query parameters: - `q` (string, required): Search query or Micropub query type. Example: `Vincent` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/users/search?q=Vincent" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an array of matching users. Example response: ```json [ { "name": "Vincent", "url": "https://vincent.micro.blog/", "avatar": "https://avatars.micro.blog/avatars/2026/123.jpg", "username": "vincent", "bio": "Writing about Micro.blog and the web.", "is_following": true, "is_you": false } ] ``` ### GET /users/logs URL: `https://micro.blog/users/logs` Returns recent account log messages. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/users/logs" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json [ { "date": "2026-04-26T12:00:00+00:00", "message": "Publishing complete", "is_error": false } ] ``` ### GET /users/logs/errors URL: `https://micro.blog/users/logs/errors` Returns recent account error log messages. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/users/logs/errors" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json [ { "date": "2026-04-26T12:00:00+00:00", "message": "Could not refresh feed", "is_error": true } ] ``` ### POST /users/unfollow URL: `https://micro.blog/users/unfollow` Unfollows a Micro.blog user. Query parameters: - `username` (string, required): Micro.blog username. Example: `vincent` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/users/unfollow?username=vincent" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ## Profile URL: https://microblog.dev/api/profile/ Endpoints for profile-related metadata such as user pins. ### GET /users/pins/{username} URL: `https://micro.blog/users/pins/{username}` Returns profile pins for the given username. Path parameters: - `username` (string, required): Micro.blog username. Example: `vincent` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/users/pins/{username}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response for the requested resource. Example response: ```json [ { "title": "Welcome", "description": "Created your Micro.blog account.", "icon": "https://micro.blog/images/pins/welcome.png", "is_unlocked": true } ] ``` ## Markers URL: https://microblog.dev/api/markers/ Endpoints for reading and updating timeline marker positions. ### GET /posts/check URL: `https://micro.blog/posts/check` Checks for new timeline posts, publishing state, media processing state, and saved marker positions. Query parameters: - `since_id` (integer, optional): Only return posts newer than this post ID. Example: `77479242` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/check" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns marker and publishing state. Example response: ```json { "count": 0, "check_seconds": 20, "markers": {}, "is_publishing": false, "is_processing": false, "publishing_progress": 0, "publishing_status": "", "latest_url": "" } ``` ### POST /posts/markers URL: `https://micro.blog/posts/markers` Stores a marker position for a timeline channel. Query parameters: - `channel` (string, required): Marker channel name. Example: `timeline` - `id` (integer, required): Identifier for the resource. Example: `12345` - `date_marked` (string, required): ISO 8601 timestamp for the marker position. Example: `2026-04-26T12:00:00Z` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/posts/markers?channel=timeline&id=example&date_marked=2026-04-26T12%3A00%3A00Z" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ## Conversations URL: https://microblog.dev/api/conversations/ Endpoints for resolving and reading Micro.blog conversation threads. ### GET /conversation.js URL: `https://micro.blog/conversation.js` Looks up a conversation for a post URL and returns it in the requested format. Query parameters: - `url` (string, required): URL to look up or modify. Example: `https://vincentritter.com/2022/03/29/16-09-31` - `format` (string, optional): Response format. Example: `jsonfeed` Example request: ```sh curl -X GET "https://micro.blog/conversation.js?url=https%3A%2F%2Fvincentritter.com%2F2022%2F03%2F29%2F16-09-31&format=jsonfeed" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns conversation data in the requested format. Example response: ```json { "version": "https://jsonfeed.org/version/1", "title": "Conversation", "home_page_url": "https://micro.blog/vincent/12345", "feed_url": "https://micro.blog/conversation.js?url=https%3A%2F%2Fexample.com%2Fpost&format=jsonfeed", "items": [ { "id": "98765", "content_html": "@vincent Thanks!
", "url": "https://example.org/reply", "date_published": "2026-04-26T12: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" } } } ] } ``` ### GET /posts/conversation URL: `https://micro.blog/posts/conversation` Returns the conversation thread for a post, mention, favourite, or thread ID. Query parameters: - `id` (integer, required): Identifier for the resource. Example: `88924898` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/posts/conversation?id=88924898" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/posts/conversation", "items": [] } ``` ## Books and Bookshelves URL: https://microblog.dev/api/books/ Endpoints for book search, bookshelves, bookshelf assignments, and reading goals. ### GET /books/search URL: `https://micro.blog/books/search` Searches books for discovery and bookshelf workflows. Query parameters: - `q` (string, required): Search query or Micropub query type. Example: `Less is more` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/books/search?q=Less+is+more" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/books/search?q=Less+is+more", "_microblog": { "about": "https://micro.blog/about/api" }, "items": [ { "id": 321, "title": "Book title", "content_text": "Description text", "url": "https://micro.blog/books/9780143127796", "image": "https://example.com/cover.jpg", "date_published": "2026-04-26T12:00:00+00:00", "authors": [ { "name": "Author Name" } ], "_microblog": { "isbn": "9780143127796" } } ] } ``` ### POST /books URL: `https://micro.blog/books` Creates a book and assigns it to a bookshelf. Query parameters: - `title` (string, required): Title value. Example: `Book title` - `author` (string, optional): Author name. Example: `Author Name` - `isbn` (string, required): Book ISBN. Example: `9780143127796` - `bookshelf_id` (integer, required): Bookshelf identifier. Example: `654` - `cover_url` (string, optional): Cover image URL. Example: `https://example.com/cover.jpg` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/books?title=Book+title&isbn=9780143127796&bookshelf_id=654" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /books/bookshelves URL: `https://micro.blog/books/bookshelves` Returns bookshelves in JSON Feed format. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/books/bookshelves" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog - Bookshelves", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/books/bookshelves", "_microblog": { "about": "https://micro.blog/about/api" }, "items": [ { "id": 654, "title": "Currently reading", "content_text": "", "url": "https://micro.blog/account/bookshelves/654", "date_published": "2026-04-26T12:00:00+00:00", "_microblog": { "type": "reading", "books_count": 3 } } ] } ``` ### POST /books/bookshelves URL: `https://micro.blog/books/bookshelves` Creates a bookshelf. Query parameters: - `name` (string, required): Name value. Example: `Reading` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/books/bookshelves?name=Reading" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### POST /books/bookshelves/{bookshelf_id}/assign URL: `https://micro.blog/books/bookshelves/{bookshelf_id}/assign` Assigns an existing or resolved book to a bookshelf. Path parameters: - `bookshelf_id` (integer, required): Bookshelf identifier. Example: `654` Query parameters: - `book_id` (integer, optional): Book identifier. Example: `321` - `isbn` (string, optional): Book ISBN. Example: `9780143127796` - `title` (string, optional): Title value. Example: `Book title` - `author` (string, optional): Author name. Example: `Author Name` - `description` (string, optional): Description text. Example: `Description text` - `cover_url` (string, optional): Cover image URL. Example: `https://example.com/cover.jpg` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/books/bookshelves/{bookshelf_id}/assign" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### POST /books/bookshelves/{bookshelf_id}/cover/{book_id} URL: `https://micro.blog/books/bookshelves/{bookshelf_id}/cover/{book_id}` Updates a book cover URL. Path parameters: - `bookshelf_id` (integer, required): Bookshelf identifier. Example: `654` - `book_id` (integer, required): Book identifier. Example: `321` Query parameters: - `cover_url` (string, required): Cover image URL. Example: `https://example.com/cover.jpg` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/books/bookshelves/{bookshelf_id}/cover/{book_id}?cover_url=https%3A%2F%2Fexample.com%2Fcover.jpg" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### DELETE /books/bookshelves/{bookshelf_id}/remove/{book_id} URL: `https://micro.blog/books/bookshelves/{bookshelf_id}/remove/{book_id}` Removes a book from a bookshelf. Path parameters: - `bookshelf_id` (integer, required): Bookshelf identifier. Example: `654` - `book_id` (integer, required): Book identifier. Example: `321` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X DELETE "https://micro.blog/books/bookshelves/{bookshelf_id}/remove/{book_id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### POST /books/bookshelves/{bookshelf_id}/save/{book_id} URL: `https://micro.blog/books/bookshelves/{bookshelf_id}/save/{book_id}` Updates the finished date for a book on a bookshelf. Path parameters: - `bookshelf_id` (integer, required): Bookshelf identifier. Example: `654` - `book_id` (integer, required): Book identifier. Example: `321` Query parameters: - `date_finished` (string, required): Date the book was finished. Example: `2026-04-26` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/books/bookshelves/{bookshelf_id}/save/{book_id}?date_finished=2026-04-26" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /books/bookshelves/{id} URL: `https://micro.blog/books/bookshelves/{id}` Returns books in a bookshelf in JSON Feed format. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/books/bookshelves/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog - Currently reading", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/books/bookshelves/654", "_microblog": { "about": "https://micro.blog/about/api" }, "items": [ { "id": 321, "title": "Book title", "content_text": "Description text", "url": "https://micro.blog/books/9780143127796", "image": "https://example.com/cover.jpg", "date_published": "2026-04-26T12:00:00+00:00", "authors": [ { "name": "Author Name" } ], "_microblog": { "isbn": "9780143127796" } } ] } ``` ### POST /books/bookshelves/{id} URL: `https://micro.blog/books/bookshelves/{id}` Renames a bookshelf. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Query parameters: - `name` (string, required): Name value. Example: `Reading` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/books/bookshelves/{id}?name=Reading" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /books/goals URL: `https://micro.blog/books/goals` Returns reading goals in JSON Feed format. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/books/goals" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog - Goals", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/books/goals", "_microblog": { "about": "https://micro.blog/about/api" }, "items": [ { "id": 123, "title": "Reading 2026", "content_text": "6 of 24 books", "_microblog": { "goal_year": 2026, "goal_value": 24, "goal_progress": 6, "isbns": [ "9780143127796" ] } } ] } ``` ### GET /books/goals/{id} URL: `https://micro.blog/books/goals/{id}` Returns books for one reading goal in JSON Feed format. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/books/goals/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog - Reading 2026", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/books/goals/123", "_microblog": { "about": "https://micro.blog/about/api" }, "items": [ { "id": 321, "title": "Book title", "content_text": "", "url": "https://micro.blog/books/9780143127796", "image": "https://example.com/cover.jpg", "date_published": "2026-04-26T12:00:00+00:00", "authors": [ { "name": "Author Name" } ], "_microblog": { "isbn": "9780143127796" } } ] } ``` ### POST /books/goals/{id} URL: `https://micro.blog/books/goals/{id}` Updates a reading goal target or progress. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Query parameters: - `value` (integer, optional): Goal target value. Example: `24` - `progress` (integer, optional): Goal progress value. Example: `5` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/books/goals/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "id": 123, "name": "Reading goal", "year": 2026, "value": 24, "progress": 6 } ``` ### POST /books/openlibrary/signin URL: `https://micro.blog/books/openlibrary/signin` Signs in to Open Library and returns the session value used by book cover workflows. Query parameters: - `username` (string, required): Open Library username. Example: `openlibrary-user` - `password` (string, required): Open Library password. Example: `openlibrary-password` Example request: ```sh curl -X POST "https://micro.blog/books/openlibrary/signin?username=openlibrary-user&password=openlibrary-password" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns the Open Library session path when sign-in succeeds, or an empty string when no session is available. Example response: ```json { "session": "/people/openlibrary-user-ABCDEFGH123456789" } ``` ## Push Notifications URL: https://microblog.dev/api/push/ Endpoints for registering, unregistering, and inspecting push notification devices. Notes: - Push notifications require additional setup on the Micro.blog side for your app's push credentials. Email [help@micro.blog](mailto:help@micro.blog) before using these endpoints with a custom `app_name`. ### GET /users/push/info URL: `https://micro.blog/users/push/info` Returns registered push devices for the authenticated user and push environment. Query parameters: - `push_env` (string, required): Push environment, for example `production` or `sandbox`. Example: `production` - `app_name` (string, optional): Name of the app requesting access. Example: `Micro.blog for Android` - `device_token` (string, optional): Push notification device token. Example: `TEST` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/users/push/info?push_env=production" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response for the requested resource. Example response: ```json [ { "token": "DEVICE_TOKEN", "app_name": "Micro.blog for iOS", "push_env": "production", "created_at": "2026-04-26T12:00:00+00:00" } ] ``` ### POST /users/push/register URL: `https://micro.blog/users/push/register` Registers a device token for push notifications. Query parameters: - `device_token` (string, required): Push notification device token. Example: `TEST` - `push_env` (string, required): Push environment, for example `production` or `sandbox`. Example: `production` - `app_name` (string, optional): Name of the app requesting access. Example: `Micro.blog for Android` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/users/push/register?device_token=TEST&push_env=production" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 201 - Content-Type: `application/json` - Description: Returns registration status and device metadata. Already-registered devices return 200 with the same shape. Example response: ```json { "status": "success", "message": "Device registered", "device": { "token": "DEVICE_TOKEN", "app_name": "Micro.blog for Android", "push_env": "production", "created_at": "2026-04-26T12:00:00+00:00" } } ``` ### POST /users/push/unregister URL: `https://micro.blog/users/push/unregister` Unregisters a device token for push notifications. Query parameters: - `device_token` (string, required): Push notification device token. Example: `TEST` - `push_env` (string, required): Push environment, for example `production` or `sandbox`. Example: `production` - `app_name` (string, optional): Name of the app requesting access. Example: `Micro.blog for Android` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/users/push/unregister?device_token=TEST&push_env=production" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns unregister status. Example response: ```json { "status": "success", "message": "Device unregistered" } ``` ## Feeds and Reader URL: https://microblog.dev/api/feeds/ Feedbin-compatible reader endpoints, feed highlights, recap settings, public JSON feeds, and feed discovery helpers. ### GET /blogroll.org.json URL: `https://micro.blog/blogroll.org.json` Returns the public blogroll.org JSON feed. Example request: ```sh curl -X GET "https://micro.blog/blogroll.org.json" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### GET /feeds/highlights URL: `https://micro.blog/feeds/highlights` Returns reader highlights in JSON Feed format. Query parameters: - `limit` (integer, optional): Maximum number of items to return. Example: `25` - `offset` (integer, optional): Number of items to skip before returning results. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/feeds/highlights" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### GET /feeds/photos.json URL: `https://micro.blog/feeds/photos.json` Returns the public photos feed in JSON Feed format. Example request: ```sh curl -X GET "https://micro.blog/feeds/photos.json" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### POST /feeds/recap URL: `https://micro.blog/feeds/recap` Builds or queues an HTML recap for reader entries. Query parameters: - `reset` (integer, optional): Set to `1` to reset cached recap output. Example: `1` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Body parameters: - `ids` (array, required): Array of entry IDs to include in the recap. Example: `[123 456]` Example request: ```sh curl -X POST "https://micro.blog/feeds/recap" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 202 - Content-Type: `text/html` - Description: Returns cached recap HTML when ready, otherwise queues work and returns 202. Example response: ```htmlSummary HTML for the requested entries.
Entry HTML.
", "summary": "Entry summary.", "published": "2026-04-26T12:00:00.000000Z", "created_at": "2026-04-26T12:05:00.000000Z" } ] ``` ### GET /feeds/v2/entries/{id}.json URL: `https://micro.blog/feeds/v2/entries/{id}.json` Returns one Feedbin-compatible entry. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Query parameters: - `mode` (string, optional): Response mode. Use `extended` to include extended fields. Example: `extended` - `include_enclosure` (boolean, optional): Set to `true` to include enclosure data. Example: `true` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/feeds/v2/entries/{id}.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "id": 1001, "feed_id": 123, "title": "Example post", "url": "https://example.com/post", "extracted_content_url": null, "author": "Example Author", "content": "Entry HTML.
", "summary": "Entry summary.", "published": "2026-04-26T12:00:00.000000Z", "created_at": "2026-04-26T12:05:00.000000Z" } ``` ### GET /feeds/v2/feeds/{id}/entries.json URL: `https://micro.blog/feeds/v2/feeds/{id}/entries.json` Returns entries for a single feed source. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Query parameters: - `read` (string, optional): Filter by read state. Use `false` for unread and `true` for read. Example: `false` - `starred` (boolean, optional): Filter starred entries. Example: `true` - `since` (string, optional): ISO 8601 timestamp used to return newer records. Example: `2026-04-26T12:00:00Z` - `per_page` (integer, optional): Number of entries per page. Example: `25` - `page` (integer, optional): Page number. Example: `1` - `mode` (string, optional): Response mode. Use `extended` to include extended fields. Example: `extended` - `include_enclosure` (boolean, optional): Set to `true` to include enclosure data. Example: `true` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/feeds/v2/feeds/{id}/entries.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json [ { "id": 1001, "feed_id": 123, "title": "Example post", "url": "https://example.com/post", "extracted_content_url": null, "author": "Example Author", "content": "Entry HTML.
", "summary": "Entry summary.", "published": "2026-04-26T12:00:00.000000Z", "created_at": "2026-04-26T12:05:00.000000Z" } ] ``` ### GET /feeds/v2/icons.json URL: `https://micro.blog/feeds/v2/icons.json` Returns feed icon URLs for subscribed feeds. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/feeds/v2/icons.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json [ { "host": "example.com", "url": "https://example.com/favicon.png" } ] ``` ### DELETE /feeds/v2/starred_entries.json URL: `https://micro.blog/feeds/v2/starred_entries.json` Unstars entries. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Body parameters: - `starred_entries` (array, required): Array of entry IDs to star or unstar. Example: `[123 456]` Example request: ```sh curl -X DELETE "https://micro.blog/feeds/v2/starred_entries.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json [ 1001, 1002 ] ``` ### GET /feeds/v2/starred_entries.json URL: `https://micro.blog/feeds/v2/starred_entries.json` Returns starred entry IDs. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/feeds/v2/starred_entries.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json [ 1001, 1002 ] ``` ### POST /feeds/v2/starred_entries.json URL: `https://micro.blog/feeds/v2/starred_entries.json` Stars entries. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Body parameters: - `starred_entries` (array, required): Array of entry IDs to star or unstar. Example: `[123 456]` Example request: ```sh curl -X POST "https://micro.blog/feeds/v2/starred_entries.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json [ 1001, 1002 ] ``` ### GET /feeds/v2/subscriptions.json URL: `https://micro.blog/feeds/v2/subscriptions.json` Returns Feedbin-compatible subscriptions. Query parameters: - `since` (string, optional): ISO 8601 timestamp used to return newer records. Example: `2026-04-26T12:00:00Z` - `mode` (string, optional): Response mode. Use `extended` to include extended fields. Example: `extended` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/feeds/v2/subscriptions.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json [ { "id": 456, "created_at": "2026-04-26T12:00:00.000000Z", "feed_id": 123, "title": "Example Feed", "feed_url": "https://example.com/feed.json", "site_url": "https://example.com/" } ] ``` ### POST /feeds/v2/subscriptions.json URL: `https://micro.blog/feeds/v2/subscriptions.json` Creates a subscription from a feed URL. Query parameters: - `feed_url` (string, required): Feed URL. Example: `https://example.com/feed.json` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/feeds/v2/subscriptions.json?feed_url=https%3A%2F%2Fexample.com%2Ffeed.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "id": 456, "created_at": "2026-04-26T12:00:00.000000Z", "feed_id": 123, "title": "Example Feed", "feed_url": "https://example.com/feed.json", "site_url": "https://example.com/" } ``` ### DELETE /feeds/v2/subscriptions/{id}.json URL: `https://micro.blog/feeds/v2/subscriptions/{id}.json` Deletes a subscription. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X DELETE "https://micro.blog/feeds/v2/subscriptions/{id}.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 204 - Content-Type: `text/plain` - Description: Returns no content on success. Example response: ```text (empty response body) ``` ### GET /feeds/v2/subscriptions/{id}.json URL: `https://micro.blog/feeds/v2/subscriptions/{id}.json` Returns one Feedbin-compatible subscription. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Query parameters: - `mode` (string, optional): Response mode. Use `extended` to include extended fields. Example: `extended` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/feeds/v2/subscriptions/{id}.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "id": 456, "created_at": "2026-04-26T12:00:00.000000Z", "feed_id": 123, "title": "Example Feed", "feed_url": "https://example.com/feed.json", "site_url": "https://example.com/" } ``` ### PATCH /feeds/v2/subscriptions/{id}.json URL: `https://micro.blog/feeds/v2/subscriptions/{id}.json` Updates a subscription title. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Body parameters: - `title` (string, required): Title value. Example: `Book title` Example request: ```sh curl -X PATCH "https://micro.blog/feeds/v2/subscriptions/{id}.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" \ --data "title=Book title" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "id": 456, "created_at": "2026-04-26T12:00:00.000000Z", "feed_id": 123, "title": "Renamed Feed", "feed_url": "https://example.com/feed.json", "site_url": "https://example.com/" } ``` ### POST /feeds/v2/subscriptions/{id}/update.json URL: `https://micro.blog/feeds/v2/subscriptions/{id}/update.json` Queues a refresh for a subscription. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/feeds/v2/subscriptions/{id}/update.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "id": 456, "created_at": "2026-04-26T12:00:00.000000Z", "feed_id": 123, "title": "Example Feed", "feed_url": "https://example.com/feed.json", "site_url": "https://example.com/" } ``` ### DELETE /feeds/v2/unread_entries.json URL: `https://micro.blog/feeds/v2/unread_entries.json` Marks entries as read. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Body parameters: - `unread_entries` (array, required): Array of entry IDs to mark unread or read. Example: `[123 456]` Example request: ```sh curl -X DELETE "https://micro.blog/feeds/v2/unread_entries.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns the entry IDs that were marked read. Example response: ```json [ 1001, 1002 ] ``` ### GET /feeds/v2/unread_entries.json URL: `https://micro.blog/feeds/v2/unread_entries.json` Returns unread entry IDs. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/feeds/v2/unread_entries.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json [ 1001, 1002 ] ``` ### POST /feeds/v2/unread_entries.json URL: `https://micro.blog/feeds/v2/unread_entries.json` Marks entries as unread. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Body parameters: - `unread_entries` (array, required): Array of entry IDs to mark unread or read. Example: `[123 456]` Example request: ```sh curl -X POST "https://micro.blog/feeds/v2/unread_entries.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns the entry IDs that were marked unread. Example response: ```json [ 1001, 1002 ] ``` ### POST /feeds/v2/unread_entries/delete.json URL: `https://micro.blog/feeds/v2/unread_entries/delete.json` Marks entries as read using Feedbin-compatible POST semantics. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Body parameters: - `unread_entries` (array, required): Array of entry IDs to mark unread or read. Example: `[123 456]` Example request: ```sh curl -X POST "https://micro.blog/feeds/v2/unread_entries/delete.json" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json [ 1001, 1002 ] ``` ### GET /feeds/{entry_id}/highlights URL: `https://micro.blog/feeds/{entry_id}/highlights` Returns highlights for one reader entry in JSON Feed format. Path parameters: - `entry_id` (integer, required): Reader entry identifier. Example: `789` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/feeds/{entry_id}/highlights" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### POST /feeds/{entry_id}/highlights URL: `https://micro.blog/feeds/{entry_id}/highlights` Creates a highlight for a reader entry. Path parameters: - `entry_id` (integer, required): Reader entry identifier. Example: `789` Query parameters: - `text` (string, required): Text content. Example: `Highlighted text` - `start` (integer, optional): Selection start offset. Example: `10` - `end` (integer, optional): Selection end offset. Example: `40` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/feeds/{entry_id}/highlights?text=Highlighted+text" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON response. Example response: ```json { "id": 987, "count": 3 } ``` ### DELETE /feeds/{entry_id}/highlights/{highlight_id} URL: `https://micro.blog/feeds/{entry_id}/highlights/{highlight_id}` Deletes a reader highlight. Path parameters: - `entry_id` (integer, required): Reader entry identifier. Example: `789` - `highlight_id` (integer, required): Highlight identifier. Example: `987` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X DELETE "https://micro.blog/feeds/{entry_id}/highlights/{highlight_id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /feeds/{username}.json URL: `https://micro.blog/feeds/{username}.json` Returns a public user feed in JSON Feed format. Path parameters: - `username` (string, required): Micro.blog username. Example: `vincent` Query parameters: - `count` (integer, optional): count parameter. Example: `example` Example request: ```sh curl -X GET "https://micro.blog/feeds/{username}.json" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### GET /feeds/{username}/bookmarks/{readlater_queue}.json URL: `https://micro.blog/feeds/{username}/bookmarks/{readlater_queue}.json` Returns a private JSON Feed of bookmark and archived read-later links for a user queue. Path parameters: - `username` (string, required): Micro.blog username. Example: `vincent` - `readlater_queue` (string, required): Private read-later queue token for the user. Example: `QUEUE_TOKEN` Example request: ```sh curl -X GET "https://micro.blog/feeds/{username}/bookmarks/{readlater_queue}.json" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1", "items": [] } ``` ### GET /feeds/{username}/mentions.json URL: `https://micro.blog/feeds/{username}/mentions.json` Returns public mentions for a user in JSON Feed format. Path parameters: - `username` (string, required): Micro.blog username. Example: `vincent` Query parameters: - `count` (integer, optional): count parameter. Example: `example` Example request: ```sh curl -X GET "https://micro.blog/feeds/{username}/mentions.json" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ### GET /feeds/{username}/readlater/{readlater_queue}.json URL: `https://micro.blog/feeds/{username}/readlater/{readlater_queue}.json` Returns a private JSON Feed of read-later articles for a user queue. Path parameters: - `username` (string, required): Micro.blog username. Example: `vincent` - `readlater_queue` (string, required): Private read-later queue token for the user. Example: `QUEUE_TOKEN` Example request: ```sh curl -X GET "https://micro.blog/feeds/{username}/readlater/{readlater_queue}.json" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1", "items": [] } ``` ### GET /feeds/{username}/webmentions.json URL: `https://micro.blog/feeds/{username}/webmentions.json` Returns public webmentions for a user in JSON Feed format. Path parameters: - `username` (string, required): Micro.blog username. Example: `vincent` Example request: ```sh curl -X GET "https://micro.blog/feeds/{username}/webmentions.json" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "items": [] } ``` ## Notes URL: https://microblog.dev/api/notes/ Endpoints for notes and notebooks. ### POST /notes URL: `https://micro.blog/notes` Creates a note, or updates an existing note when `id` is provided. Query parameters: - `id` (integer, optional): Identifier for the resource. Example: `12345` - `text` (string, required): Text content. Example: `Draft note text` - `attached_post_id` (integer, optional): Post ID to attach to the note. Example: `77479242` - `attached_book_isbn` (string, optional): Book ISBN to attach to the note. Example: `9780143127796` - `notebook_id` (integer, optional): Notebook ID for the note. Example: `2` - `is_encrypted` (boolean, optional): Whether the note is encrypted. Example: `1` - `is_sharing` (boolean, optional): Set to share the note publicly. Example: `1` - `is_unsharing` (boolean, optional): Set to stop sharing a note. Example: `1` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/notes?text=Draft+note+text" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns the created or updated note. Example response: ```json { "id": 12345, "title": "", "content_text": "Draft note text", "content_html": "", "url": "https://micro.blog/notes/12345", "date_published": "2026-04-26T12:00:00+00:00", "date_modified": "2026-04-26T12:00:00+00:00", "_microblog": { "is_encrypted": true, "is_shared": false, "shared_url": "", "attached_book_isbn": "9780143127796", "attached_book_title": "Book title" } } ``` ### GET /notes/for_book URL: `https://micro.blog/notes/for_book` Returns notes attached to a book ISBN in JSON Feed format. Query parameters: - `isbn` (string, required): Book ISBN. Example: `9780143127796` - `count` (integer, optional): count parameter. Example: `example` - `offset` (integer, optional): Number of items to skip before returning results. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/notes/for_book?isbn=9780143127796" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog - Notes for Book", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/notes/for_book?isbn=9780143127796", "items": [ { "id": 12345, "title": "", "content_text": "Notes about this chapter.", "content_html": "", "url": "https://micro.blog/notes/12345", "date_published": "2026-04-26T12:00:00+00:00", "date_modified": "2026-04-26T12:30:00+00:00", "_microblog": { "is_encrypted": true, "is_shared": false, "shared_url": "", "attached_book_isbn": "9780143127796", "attached_book_title": "Book title" } } ] } ``` ### GET /notes/notebooks URL: `https://micro.blog/notes/notebooks` Returns notebooks for the authenticated user in JSON Feed format. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/notes/notebooks" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/notes/notebooks", "_microblog": { "about": "https://micro.blog/about/api" }, "items": [ { "id": 2, "title": "Reading", "content_text": "", "url": "https://micro.blog/notes/notebooks/2", "date_published": "2026-04-26T12:00:00+00:00", "_microblog": { "type": "reading", "colors": { "light": "#ffffff", "dark": "#111827" } } } ] } ``` ### POST /notes/notebooks URL: `https://micro.blog/notes/notebooks` Creates a notebook or updates an existing notebook when `id` is provided. Query parameters: - `name` (string, optional): Title or notebook name, depending on the endpoint. Example: `Test Notebook` - `id` (integer, optional): Identifier for the resource. Example: `33` - `color_light` (string, optional): Light-mode notebook colour. Example: `#ffffff` - `color_dark` (string, optional): Dark-mode notebook colour. Example: `#111827` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X POST "https://micro.blog/notes/notebooks" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns the created or updated notebook. Example response: ```json { "id": 33, "name": "Test Notebook", "colors": { "light": "#ffffff", "dark": "#111827" } } ``` ### DELETE /notes/notebooks/{id} URL: `https://micro.blog/notes/notebooks/{id}` Deletes a notebook and its notes. Path parameters: - `id` (integer, required): Resource identifier. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X DELETE "https://micro.blog/notes/notebooks/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /notes/notebooks/{id} URL: `https://micro.blog/notes/notebooks/{id}` Returns notes in a notebook in JSON Feed format. Path parameters: - `id` (integer, required): Identifier for the resource. Example: `12345` Query parameters: - `count` (integer, optional): Maximum number of items to return. Example: `60` - `offset` (integer, optional): Number of items to skip before returning results. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/notes/notebooks/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/notes/notebooks/{id}", "_microblog": { "about": "https://micro.blog/about/api", "notebook": { "id": 2, "name": "Reading", "colors": { "light": "#ffffff", "dark": "#111827" } } }, "items": [ { "id": 12345, "title": "", "content_text": "Notes about this chapter.", "content_html": "", "url": "https://micro.blog/notes/12345", "date_published": "2026-04-26T12:00:00+00:00", "date_modified": "2026-04-26T12:30:00+00:00", "_microblog": { "is_encrypted": true, "is_shared": false, "shared_url": "", "attached_book_isbn": "9780143127796", "attached_book_title": "Book title" } } ] } ``` ### DELETE /notes/{note_id} URL: `https://micro.blog/notes/{note_id}` Deletes a note by ID. Path parameters: - `note_id` (integer, required): Note identifier. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X DELETE "https://micro.blog/notes/{note_id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns an empty JSON object on success. Example response: ```json {} ``` ### GET /notes/{note_id} URL: `https://micro.blog/notes/{note_id}` Returns a single note by ID. Path parameters: - `note_id` (integer, required): Note identifier. Example: `12345` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/notes/{note_id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a single note object. Example response: ```json { "id": 12345, "title": "", "content_text": "Draft note text", "content_html": "", "url": "https://micro.blog/notes/12345", "date_published": "2026-04-26T12:00:00+00:00", "date_modified": "2026-04-26T12:30:00+00:00", "_microblog": { "is_encrypted": true, "is_shared": false, "shared_url": "", "attached_book_isbn": "9780143127796", "attached_book_title": "Book title" } } ``` ### GET /notes/{note_id}/versions URL: `https://micro.blog/notes/{note_id}/versions` Returns note versions in JSON Feed format. Path parameters: - `note_id` (string, required): note id parameter. Example: `example` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/notes/{note_id}/versions" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog - Versions", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/notes/12345/versions", "items": [ { "id": 987, "title": "", "content_text": "Earlier note text", "content_html": "", "url": "https://micro.blog/notes/12345", "date_published": "2026-04-26T11:30:00+00:00", "_microblog": { "is_encrypted": true, "is_shared": false, "shared_url": "" } } ] } ``` ## Movies URL: https://microblog.dev/api/movies/ Endpoints for movie and TV discovery, search, and posting helpers. ### GET /movies/discover URL: `https://micro.blog/movies/discover` Returns recent movie and TV activity in JSON Feed format. Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/movies/discover" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog - Discover Movies", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/movies/discover", "_microblog": { "about": "https://micro.blog/about/api" }, "items": [ { "id": "12345", "title": "Dune: Part Two", "content_text": "Paul Atreides unites with Chani and the Fremen.", "url": "https://www.themoviedb.org/movie/693134", "image": "https://image.tmdb.org/t/p/w500/example.jpg", "date_published": "2026-04-26T12:00:00+00:00", "authors": [ { "name": "Vincent", "url": "https://vincent.micro.blog/", "avatar": "https://avatars.micro.blog/avatars/2026/123.jpg", "_microblog": { "username": "vincent", "user_id": 123 } } ], "_microblog": { "tmdb_id": "693134", "tmdb_url": "https://www.themoviedb.org/movie/693134", "poster_url": "https://image.tmdb.org/t/p/w500/example.jpg", "username": "vincent", "user_id": 123, "user_avatar_url": "https://avatars.micro.blog/avatars/2026/123.jpg", "date_timestamp": 1777204800 } } ] } ``` ### GET /movies/discover/{id} URL: `https://micro.blog/movies/discover/{id}` Returns TV season posting helpers for a TMDB show. Path parameters: - `id` (integer, required): TMDB show identifier. Example: `1399` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/movies/discover/{id}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog - Discover Movies - Severance", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/movies/discover/95396", "_microblog": { "about": "https://micro.blog/about/api", "tmdb_id": "95396", "tmdb_url": "https://www.themoviedb.org/tv/95396", "movies_prefix": "Watched:", "movies_emoji_movie": "", "movies_emoji_tv": "", "title": "Severance", "overview": "Mark leads a team of office workers whose memories have been surgically divided.", "poster_url": "https://image.tmdb.org/t/p/w500/example.jpg", "number_of_seasons": 2, "number_of_episodes": 19, "type": "tv", "first_air_date": "2022-02-17", "post_text": "Watched: [Severance](https://www.themoviedb.org/tv/95396)" }, "items": [ { "id": "tv-95396-season-1", "title": "Season 1", "content_text": "The Macrodata Refinement team begins to question Lumon Industries.", "url": "https://www.themoviedb.org/tv/95396/season/1", "image": "https://micro.blog/photos/100x/https%3A%2F%2Fimage.tmdb.org%2Ft%2Fp%2Fw500%2Fexample.jpg", "_microblog": { "tmdb_id": "95396", "season_number": 1, "tmdb_url": "https://www.themoviedb.org/tv/95396/season/1", "post_text": "Watched: [Severance Season 1](https://www.themoviedb.org/tv/95396/season/1)", "movies_prefix": "Watched:", "movies_emoji_tv": "", "series_title": "Severance", "season_title": "Season 1", "overview": "The Macrodata Refinement team begins to question Lumon Industries.", "air_date": "2022-02-17", "episode_count": 9, "poster_url": "https://image.tmdb.org/t/p/w500/example.jpg" } } ] } ``` ### GET /movies/discover/{id}/seasons/{number} URL: `https://micro.blog/movies/discover/{id}/seasons/{number}` Returns TV episode posting helpers for a TMDB show season. Path parameters: - `id` (integer, required): TMDB show identifier. Example: `1399` - `number` (integer, required): Season number. Example: `1` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/movies/discover/{id}/seasons/{number}" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog - Discover Movies - Severance Season 1", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/movies/discover/95396/seasons/1", "_microblog": { "about": "https://micro.blog/about/api", "tmdb_id": "95396", "tmdb_url": "https://www.themoviedb.org/tv/95396/season/1", "season_number": "1", "movies_prefix": "Watched:", "movies_emoji_tv": "", "series_title": "Severance", "title": "Season 1", "overview": "The Macrodata Refinement team begins to question Lumon Industries.", "poster_url": "https://image.tmdb.org/t/p/w500/example.jpg", "episode_count": 9 }, "items": [ { "id": "tv-95396-season-1-episode-1", "title": "Severance S1E1: Good News About Hell", "content_text": "Mark is promoted to lead a team whose memories are divided between work and home.", "url": "https://www.themoviedb.org/tv/95396/season/1/episode/1", "image": "https://micro.blog/photos/100x/https%3A%2F%2Fimage.tmdb.org%2Ft%2Fp%2Fw500%2Fstill.jpg", "_microblog": { "tmdb_id": "95396", "season_number": "1", "episode_number": "1", "tmdb_url": "https://www.themoviedb.org/tv/95396/season/1/episode/1", "post_text": "Watched: [Severance S1E1, Good News About Hell](https://www.themoviedb.org/tv/95396/season/1/episode/1)", "movies_prefix": "Watched:", "movies_emoji_tv": "", "series_title": "Severance", "episode_title": "Good News About Hell", "overview": "Mark is promoted to lead a team whose memories are divided between work and home.", "still_url": "https://image.tmdb.org/t/p/w500/still.jpg", "large_still_url": "https://image.tmdb.org/t/p/w500/still.jpg", "runtime": 57, "air_date": "2022-02-17" } } ] } ``` ### GET /movies/search URL: `https://micro.blog/movies/search` Searches TMDB movies and TV shows. Query parameters: - `q` (string, required): Search query. Example: `search term` - `limit` (integer, optional): Maximum number of items to return. Example: `25` Header parameters: - `Authorization` (string, required): Bearer token for authentication. Format: `Bearer {token}`. Example: `Bearer EF7BB9BCAC1F6D561C93` Example request: ```sh curl -X GET "https://micro.blog/movies/search?q=search+term" \ --header "Authorization: Bearer EF7BB9BCAC1F6D561C93" ``` Response: - Status: 200 - Content-Type: `application/json` - Description: Returns a JSON Feed response. Example response: ```json { "version": "https://jsonfeed.org/version/1.1", "title": "Micro.blog - Movies Search", "home_page_url": "https://micro.blog", "feed_url": "https://micro.blog/movies/search", "_microblog": { "about": "https://micro.blog/about/api", "movies_prefix": "Watched:", "movies_emoji_movie": "", "movies_emoji_tv": "" }, "items": [ { "id": "movie-693134", "title": "Dune: Part Two", "content_text": "", "url": "https://www.themoviedb.org/movie/693134", "image": "https://image.tmdb.org/t/p/w500/example.jpg", "_microblog": { "tmdb_id": "693134", "type": "movie", "title": "Dune: Part Two", "tmdb_url": "https://www.themoviedb.org/movie/693134", "year": "2024", "director": "Denis Villeneuve", "poster_url": "https://image.tmdb.org/t/p/w500/example.jpg", "overview": "Paul Atreides unites with Chani and the Fremen.", "post_text": "Watched: [Dune: Part Two](https://www.themoviedb.org/movie/693134)", "movies_prefix": "Watched:", "movies_emoji_movie": "", "movies_emoji_tv": "" } } ] } ``` ## Status URL: https://microblog.dev/api/status/ Health check endpoint for Micro.blog. ### GET /status URL: `https://micro.blog/status` Runs service health checks and returns a status page with a smiley face. Example request: ```sh curl -X GET "https://micro.blog/status" ``` Response: - Status: 200 - Content-Type: `text/html` - Description: Returns an HTML status page with a smiley face after database, Redis, and queue health checks pass. Example response: ```html