Micropub q=source drops in-reply-to and bookmark-of

Hey @manton,

As you know, I’ve been building OutPost, a Micropub client and testing it against my test blog on Micro.blog. I ran into something I think is on the server side, and I wanted to flag it.

When I create a reply or a bookmark via Micropub, the properties go up with the post. Here’s what I’m sending for a reply:

{
	"type": ["h-entry"],
	"properties": {
		"content": ["This is the post content."],
		"in-reply-to": ["https://apple.com"]
	}
}

And for a bookmark:

{
	"type": ["h-entry"],
	"properties": {
		"content": ["This is the post content."],
		"bookmark-of": ["https://apple.com"]
	}
}

However, when viewing on the blog, both the reply and bookmark show up as a simple note post.

When I fetch the same post back with q=source, the properties I originally sent aren’t there. All I get is the content:

{
  "type": "h-entry",
  "properties": {
    "uid": [
      6049076
    ],
    "name": [
      ""
    ],
    "content": [
      "This is a reply to a URL."
    ],
    "summary": [
      ""
    ],
    "published": [
      "2026-10-17T20:34:41+00:00"
    ],
    "post-status": [
      "published"
    ],
    "url": [
      "https://jimmitchell-test.micro.blog/2026/10/17/133441/"
    ],
    "category": [],
    "syndication": [
      "..."
    ]
  }
}

{
  "type": "h-entry",
  "properties": {
    "uid": [
      6049077
    ],
    "name": [
      ""
    ],
    "content": [
      "This is a bookmark post."
    ],
    "summary": [
      ""
    ],
    "published": [
      "2026-10-17T20:37:00+00:00"
    ],
    "post-status": [
      "published"
    ],
    "url": [
      "https://jimmitchell-test.micro.blog/2026/10/17/this-is-a-bookmark-post/"
    ],
    "category": [],
    "syndication": [
      "..."
    ]
  }
}

Why it matters: Micropub doesn’t tell a client what kind of post something is. Clients work it out from the properties (Post Type Discovery). So once in-reply-to or bookmark-of is gone, every reply and bookmark comes back as a plain note in any Micropub editor, not just OutPost. And since an editor builds its update from q=source, editing one of these posts could quietly drop the reply or bookmark target for good.

The spec is pretty clear on this one. From §3.7.2:

If no properties are specified, then the response MUST include all properties, as well as a type property indicating the vocabulary of the post.

It also says servers that support updates MUST support the source query, which Micro.blog does.

It’s the same kind of thing as the photo issue you confirmed a while back, where photo doesn’t come back from q=source either. My guess is these values aren’t stored on the post once it’s published. I totally get that might be a bigger change than it sounds.

A couple of smaller things I noticed while I was in there, in case they’re useful:

  • type comes back as a string (“h-entry”) rather than an array ([“h-entry”]).
  • q=source&url=… seems to ignore url and return the whole feed, so the client has to pick the post out itself.

Neither one is blocking how OutPost works. I just figured you’d want to know.

Thanks, Manton. Appreciate all you do for the platform.

Good feedback, thanks! The reply and bookmark problems appear to be an issue with how Micro.blog handles the JSON flavor of Micropub… bookmark-of is supported at the root level of the JSON, or with form-encoded params, but not inside properties. This does seem like a mistake so I’ll get it fixed.

When that change is rolled out, though, note that Micro.blog routes replies and bookmarks differently than blog posts. They are distinct types of things in Micro.blog, so they aren’t included in q=source.

For q=source&url=, that should definitely work already. Some of the Micro.blog apps use that, and I just tested it with curl and got back only the single post.

A quick clarification… It turns out bookmark-of was only supported in the form-encoded version, not JSON at all. I’m working on a fix and will follow up when it’s available.

Hi @jimmitchell1 — I’ve finished some of these changes. bookmark-of and in-reply-to should work properly in the properties object now. Also, q=source includes in-reply-to fields.

What I said about bookmarks still applies. Micro.blog creates separate bookmarks, not posts. For replies, the behavior depends on what kind of reply it is. Your example of “replying” to apple.com will create a blog post, but if it’s a reply like “@username Hello.” then it’s treated as a reply object inside Micro.blog and stored separately.

Thanks so much for the quick reply and action @manton.

I’ll make some time to do testing this afternoon and follow up. I understand about the in-reply-to and bookmark-of properties - and kind of figured that’s what the case might be. I’ll be sure to make note of it in my docs for the app.

Thanks again, @manton. All are working as I would expect them to now. Appreciate the quick attention to it.