Back to Changelog
v2026.07.30

Tenant-aware post filtering, safer reconnects, and tighter token security

Today's release rounds out multi-tenant post management, makes reconnecting an account behave the way you'd expect, and closes a gap that could expose stored auth tokens:

  • Filter posts by tenant: GET /v1/posts now accepts a tenant_id (or tenantId) filter, matching what GET /v1/social-accounts already supported. Multi-tenant apps no longer need to fetch every tenant's accounts and filter posts client-side - the API does it for you, returning each matching post with its full list of connected accounts.
  • Filtered post pages are now complete: Filtering posts by social_account_id could previously return a short page (e.g. 3 posts for limit=50) even when more results existed, because the filter was applied after pagination. Paged, filtered results are now always full and correct.
  • Accurate pagination totals: pagination.total now reflects the real number of matching posts instead of just the number returned on the current page, so you can reliably tell how many results exist across all pages. The previous page-length value is still available as pagination.count.
  • Encoded account IDs now filter correctly: Filtering posts by social_account_id using the encoded IDs returned elsewhere in the API previously matched the wrong account under the hood. Both encoded and numeric IDs now work as expected, and invalid IDs return a clear error.
  • Reconnecting an account no longer creates duplicates: Reconnecting the same social account - even after its underlying platform identifier changed (a recreated page, a re-registered handle, etc.) - now updates the existing connected account instead of creating a duplicate with stale credentials. Reconnecting under a different tenant still creates a separate account, as intended.
  • Bluesky reconnect no longer fails on repeat connect: Connecting a Bluesky account you'd already connected previously returned a conflict error; it now succeeds and updates the existing connection.
  • Auth tokens are no longer exposed in API responses: Stored credentials (OAuth tokens, Bluesky session tokens, app passwords, and similar secrets) could previously appear in responses from fetching a single post, the MCP get_post tool, and the web accounts page. These fields are now stripped from every response by default; the existing opt-in includeTokens parameter on the accounts list endpoint is unaffected.
  • Automatic rich text in Bluesky posts: Links, mentions, and hashtags in Bluesky post text are now automatically detected and turned into proper rich-text links, including resolving mentions to the correct account.
  • More reliable Bluesky account connection: The connection flow now keeps your session alive for longer during setup and no longer clears your session on recoverable errors, so a retry doesn't force you to start over.