All releases
Fix

Social API — one actor parameter, body-less deletes, uniform pagination (action needed)

A one-time consistency pass across the Social API: the acting actor is now `actor_id` everywhere, DELETEs take it as a query parameter, every list returns the same `{ data, pagination }` envelope, and the batch view endpoint moved to `/posts/impressions`. Old parameter names still work for one release but are deprecated — update your integration.

We batched every breaking Social API change into a single migration so you absorb it once. All the old shapes keep working for one release and are marked deprecated in the spec — migrate before the next major.

  • One actor parameter. Whoever is acting is now actor_id on every route — a query parameter on reads, a top-level field on writes. The old names (viewer_actor_id, requester_id, src_actor_id, sender_id, caller_actor_id) are accepted as deprecated aliases for one release.
  • Body-less deletes. Un-bookmark, un-repost, delete a list or list member, and leave / remove-from / delete-message in a conversation now take ?actor_id= instead of a JSON body — so they work through every proxy and SDK. The request body is deprecated.
  • Uniform pagination. Every list now returns { data, pagination }. Workspace communities and muted terms gained real cursor pagination (limit + cursor); search, suggestions and the story tray carry a pagination field for shape-consistency. A short page never means “end of list” — always follow pagination.has_more.
  • Impressions endpoint. The batch view-count call moved from POST /posts/views to POST /posts/impressions (old path kept as a deprecated alias) and now requires the social.view permission — a read-only key can no longer inflate view counts.

The Social API reference and the @productcraft/social SDK are updated to match.