Repost Token

This token represents a repost (share) of another user’s content.

A repost allows a user to share someone else’s post with their own followers, optionally adding their own commentary. This is similar to “retweeting” in Twitter or “sharing” in other social platforms.

The token must contain a subject (sub) field pointing to the original action being reposted. REPOST uses sub — NOT p — because the reposted action is referenced without creating threading hierarchy (the same convention REACT and APRV follow). The reposter’s client always sets an explicit audience (aud): their own idTag when boosting to their own wall, or the target wall otherwise. For other constraints see the Action Tokens.

Content-Addressing

This token is content-addressed using SHA-256:

Subject Reference

The sub (subject) field references the original action being reposted:

  • Contains the original action’s action_id (a1~...)
  • Subject must exist and be verified
  • Creates an immutable, non-hierarchical link to the original content
  • Federation: remote instances can verify the complete chain

Database Key

The repost key_pattern is {type}:{subject}:{issuer}:{audience}. The audience is part of the identity, so the same user can independently boost a post to their own wall and repost it to a community — two distinct keys, two independently un-repostable rows.

Example:

  • Alice reposts Bob’s post to her wall → key REPOST:a1~post123:alice.example.com:alice.example.com
  • Alice reposts the same post again to her wall → same key, previous one is superseded
  • A REPOST:DEL with the same key removes the repost

Delivery: REPOST is a broadcast action that also delivers to the subject’s owner (deliver_to_subject_owner) so the original poster can count and list reposters, and bundles the reposted action itself (deliver_subject) so recipients get the original content rather than a dangling reference.

Types of Reposts

A repost can be a simple repost (no c field), a repost with commentary, or a quote repost (longer commentary). The token structure is identical in all cases – only the presence and length of the optional c field differs.

{
  "iss": "alice.example.com",
  "iat": 1738483200,
  "k": "20240101",
  "t": "REPOST",
  "sub": "a1~xyz789...",
  "aud": "alice.example.com",
  "c": "This is an excellent analysis!"
}

Omit the c field for a simple repost without commentary.

Fields

Field Required Description
iss The identity reposting the content
iat Timestamp when repost was created
k Key ID used to sign the token
t Token type (always “REPOST”, or “REPOST:DEL” to undo)
sub Subject: action ID of the original post being reposted
aud Audience: target wall (own idTag for a boost, community otherwise)
c Optional commentary on the repost (markdown)

Example

User @alice.example.com reposts @bob.example.com’s post with commentary:

Field Value
iss alice.example.com
iat 2024-04-13T00:01:10.000Z
k 20240101
t REPOST
sub a1~xyz789abc…
aud alice.example.com
c Great insights on distributed systems!

Visibility and Federation

Repost tokens are broadcast actions, meaning they are:

  • Sent to all followers of the reposter
  • Displayed in the reposter’s timeline/feed
  • Credit the original author
  • Link back to the original post

Federation Flow

When Alice reposts Bob’s post:

  1. Alice’s instance creates a REPOST token referencing Bob’s original POST token
  2. The REPOST is broadcast to Alice’s followers
  3. The original POST token is fetched/synchronized if not already available locally
  4. Followers see the repost in Alice’s timeline with proper attribution to Bob

Permission Checks

When creating a repost:

  1. Original post exists: Verify the subject action ID is valid
  2. Permission to view: Ensure the reposter can access the original post
  3. Repost allowed: Check if original author allows reposts (future feature)
  4. Audience restrictions: Honor any audience limitations on original post

Statistics Impact

Reposts affect the statistics of the original post:

  • Original post’s STAT token includes repost count
  • Reposts increase content visibility and reach
  • Original author can see who reposted their content

Undo/Delete Repost

To remove a repost, issue a REPOST:DEL token with the same key (same subject and audience). It supersedes the original repost, removing it from the reposter’s timeline and decrementing the original post’s repost count.

Comparison with Other Actions

Action Purpose Visibility
REPOST Share content with followers Broadcast to your followers
REACT Express opinion privately Only visible to post author/viewers
CMNT Add threaded discussion Attached to original post

See Also