Skip to main content
Every comment, DM, review, and mention returned by the API has a stable, opaque id field. These IDs are designed to be stored and reused across calls.

Format

The 32-character payload encodes platform:platformID using a SocialAPI custom base-33 alphabet. It is reversible: given the ID, the API recovers the original platform and the platform’s native ID without a database lookup. The prefix tells you the interaction type: Examples:
  • sapi_cmt_GXRM4BNTW7KFYSD3HAEV6QJZ2CLP9U — a comment
  • sapi_rev_GXRM4BNTW7KFYSD3HAEV6QJZ2CLP9U — a review
  • sapi_dm_GXRM4BNTW7KFYSD3HAEV6QJZ2CLP9U — a DM
The payload alphabet uses A-Z and 1-9 (excluding 0, O, and 8) in a shuffled, non-standard order, so do not assume the payload is base64url or hex.

Why this matters

The prefix lets handlers route requests without a lookup. Each inbox endpoint accepts the appropriate prefix in its path parameter:
  • Comment routes (POST /v1/inbox/comments/:postId, POST /v1/inbox/comments/:postId/:commentId/hide, etc.) accept a platform post ID in :postId and a sapi_cmt_ interaction ID in :commentId.
  • Review routes (POST /v1/inbox/reviews/:id/reply) accept sapi_rev_ IDs in :id.
  • Conversation routes (POST /v1/inbox/conversations/:id/messages) accept sapi_dm_ thread IDs in :id.
REST routes do not enforce a prefix type check: passing a mismatched prefix ID (for example, a sapi_rev_ ID on a comment route) decodes silently and the raw platform ID is forwarded to the connector. MCP tools, by contrast, validate the prefix and return an error if the type does not match the operation.

Stability

IDs are deterministic. The same (type, platform, platform_id) tuple always produces the same SocialAPI ID, so you can safely store IDs in your own database and join against them across calls.

Using IDs

List comments on a connected account, then reply to one using the comment’s id:
Hide a comment:
Reply to a review:
See the Inbox guide for the full list of routes that take interaction IDs.