Skip to main content

Verified against AS2 Core & Vocabulary (W3C REC 2017), the published AS2 JSON-LD context, ActivityPub REC, Mastodon v4.7.3 source (context_helper.rb, account.rb, json_ld_helper.rb), Mastodon block_service.rb, Lemmy fixtures on 2026-10-15.

Activity Types

The Activity Vocabulary defines 28 activity types: Accept, Add, Announce, Arrive, Block, Create, Delete, Dislike, Flag, Follow, Ignore, Invite, Join, Leave, Like, Listen, Move, Offer, Question, Reject, Read, Remove, TentativeReject, TentativeAccept, Travel, Undo, Update and View. The grouping below is editorial — AS2 itself does not categorise them. Side effects (what a server must do) come from ActivityPub §6–7, not from AS2.

Activity Categories​

ACTIVITY TYPE CATEGORIESContentCreate, Update, DeleteRelationshipFollow, Accept, Reject,Block, IgnoreReactionLike, Dislike, AnnounceCollectionAdd, Remove, MoveOffer & ReportOffer, Invite, FlagNegationUndoMost common: Create, Follow, Like, Announce, UndoEach category serves a specific purpose in federated social networking

Content Activities​

Create​

Indicates a new object has been created.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Create",
"id": "https://example.com/activities/create/1",
"actor": "https://example.com/users/alice",
"object": {
"type": "Note",
"id": "https://example.com/notes/1",
"content": "Hello, world!"
},
"published": "2024-01-15T10:00:00Z",
"to": ["https://www.w3.org/ns/activitystreams#Public"],
"cc": ["https://example.com/users/alice/followers"]
}

Usage: Creating posts, articles, images, or any new content.

Update​

Indicates an existing object has been modified. Between servers, the object is a complete replacement, not a patch, so send the whole object; the receiver must check the Update is authorised, at minimum that the Update and its object share an origin (AP §7.3).

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Update",
"id": "https://example.com/activities/update/1",
"actor": "https://example.com/users/alice",
"object": {
"type": "Note",
"id": "https://example.com/notes/1",
"attributedTo": "https://example.com/users/alice",
"content": "Hello, world! (edited)",
"published": "2024-01-15T10:00:00Z",
"updated": "2024-01-15T12:00:00Z",
"to": ["https://www.w3.org/ns/activitystreams#Public"],
"cc": ["https://example.com/users/alice/followers"]
},
"published": "2024-01-15T12:00:00Z",
"to": ["https://www.w3.org/ns/activitystreams#Public"],
"cc": ["https://example.com/users/alice/followers"]
}

Usage: Editing posts, updating profiles, modifying settings.

Delete​

Indicates an object has been deleted.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Delete",
"id": "https://example.com/activities/delete/1",
"actor": "https://example.com/users/alice",
"object": "https://example.com/notes/1",
"published": "2024-01-15T14:00:00Z"
}

Result: The origin server MAY replace the object with a Tombstone; requests for it then get 410 Gone with the Tombstone, or 404 Not Found if no Tombstone is kept (AP §6.4). See Deletion.

Relationship Activities​

Follow​

Indicates the actor wants to receive updates from the object.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Follow",
"id": "https://example.com/activities/follow/1",
"actor": "https://example.com/users/alice",
"object": "https://example.com/users/bob"
}

Response: The followed actor replies with Accept or Reject (AP §7.5); until then the follow is pending.

Accept​

Indicates approval of another activity.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Accept",
"id": "https://example.com/activities/accept/1",
"actor": "https://example.com/users/bob",
"object": {
"type": "Follow",
"id": "https://example.com/activities/follow/1",
"actor": "https://example.com/users/alice",
"object": "https://example.com/users/bob"
}
}

Usage: Accepting follows, event invitations, friend requests.

Reject​

Indicates disapproval of another activity.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Reject",
"id": "https://example.com/activities/reject/1",
"actor": "https://example.com/users/bob",
"object": {
"type": "Follow",
"id": "https://example.com/activities/follow/1",
"actor": "https://example.com/users/alice",
"object": "https://example.com/users/bob"
}
}

Usage: Rejecting follow requests, declining invitations.

Block​

Indicates the actor is blocking the object.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Block",
"id": "https://example.com/activities/block/1",
"actor": "https://example.com/users/alice",
"object": "https://example.com/users/spammer"
}

Note: ActivityPub says servers SHOULD NOT deliver a Block to its object (AP §6.9), but Mastodon does deliver it to the blocked account's inbox (block_service.rb) so the remote server can hide content. Expect to receive Blocks.

Ignore​

Indicates the actor is ignoring the object. Mastodon does not federate mutes, so in practice Ignore is rarely sent.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Ignore",
"id": "https://example.com/activities/ignore/1",
"actor": "https://example.com/users/alice",
"object": "https://example.com/users/annoying"
}

Usage: Muting users without blocking them.

Reaction Activities​

Like​

Indicates the actor likes or approves of the object.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Like",
"id": "https://example.com/activities/like/1",
"actor": "https://example.com/users/alice",
"object": "https://example.com/notes/123"
}

Usage: Liking posts, favoriting content.

Dislike​

Indicates the actor dislikes or disapproves of the object.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Dislike",
"id": "https://example.com/activities/dislike/1",
"actor": "https://example.com/users/alice",
"object": "https://example.com/notes/456"
}

Note: Not widely used in Mastodon, but supported by Lemmy and others.

Announce​

Indicates the actor is sharing/boosting the object.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Announce",
"id": "https://example.com/activities/announce/1",
"actor": "https://example.com/users/alice",
"object": "https://example.com/notes/789",
"published": "2024-01-15T10:00:00Z",
"to": ["https://www.w3.org/ns/activitystreams#Public"],
"cc": [
"https://example.com/users/alice/followers",
"https://example.com/users/bob"
]
}

Usage: Retweets, boosts, shares.

Collection Activities​

Add​

Indicates the actor has added the object to the target collection.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Add",
"id": "https://example.com/activities/add/1",
"actor": "https://example.com/users/alice",
"object": "https://example.com/notes/123",
"target": "https://example.com/users/alice/collections/favorites"
}

Usage: Adding to collections, bookmarks, playlists.

Remove​

Indicates the actor has removed the object from the target collection.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Remove",
"id": "https://example.com/activities/remove/1",
"actor": "https://example.com/users/alice",
"object": "https://example.com/notes/123",
"target": "https://example.com/users/alice/collections/favorites"
}

Move​

Indicates the actor is moving the object to a new location.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Move",
"id": "https://old.example/activities/move/1",
"actor": "https://old.example/users/alice",
"object": "https://old.example/users/alice",
"target": "https://new.example/users/alice"
}

Usage: Account migration between servers. Mastodon sends Move from the old account with target set to the new one, and the new account must list the old one in alsoKnownAs. See Account Migration for FEP-7628.

Notification Activities​

Flag​

Indicates the actor is reporting the object.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Flag",
"id": "https://example.com/activities/flag/1",
"actor": "https://example.com/actor",
"object": [
"https://other.example/users/badactor",
"https://other.example/notes/offensive"
],
"content": "This user is posting spam"
}

Usage: Reporting users or content to moderators.

Offer​

Indicates the actor is offering the object to the target.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Offer",
"id": "https://example.com/activities/offer/1",
"actor": "https://example.com/users/alice",
"object": {
"type": "Event",
"name": "Birthday Party"
},
"target": "https://example.com/users/bob"
}

Invite​

Indicates the actor is inviting the target to the object.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Invite",
"id": "https://example.com/activities/invite/1",
"actor": "https://example.com/users/alice",
"object": {
"type": "Event",
"name": "Birthday Party"
},
"target": "https://example.com/users/bob"
}

Negation Activity​

Undo​

Reverses a previous activity.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Undo",
"id": "https://example.com/activities/undo/1",
"actor": "https://example.com/users/alice",
"object": {
"type": "Follow",
"id": "https://example.com/activities/follow/1",
"actor": "https://example.com/users/alice",
"object": "https://example.com/users/bob"
}
}

Usage: Unfollowing, unliking, unboosting.

Less Common Activities​

TentativeAccept (extends Accept), TentativeReject (extends Reject) and Travel (an IntransitiveActivity with origin/target) are also defined but rarely seen in the fediverse.

Arrive​

Indicates the actor has arrived at a location (IntransitiveActivity).

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Arrive",
"actor": "https://example.com/users/alice",
"location": {
"type": "Place",
"name": "San Francisco"
}
}

Leave​

Indicates the actor has left a location or group.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Leave",
"actor": "https://example.com/users/alice",
"object": {
"type": "Group",
"id": "https://example.com/groups/photography",
"name": "Photography Club"
}
}

Join​

Indicates the actor has joined a group.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Join",
"actor": "https://example.com/users/alice",
"object": {
"type": "Group",
"id": "https://example.com/groups/photography"
}
}

Read​

Indicates the actor has read the object.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Read",
"actor": "https://example.com/users/alice",
"object": "https://example.com/articles/1"
}

View​

Indicates the actor has viewed the object.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "View",
"actor": "https://example.com/users/alice",
"object": "https://example.com/videos/1"
}

Listen​

Indicates the actor has listened to the object.

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Listen",
"actor": "https://example.com/users/alice",
"object": "https://example.com/audio/podcast-episode-1"
}

Question (IntransitiveActivity)​

Represents a poll or question. Question is an IntransitiveActivity, so it has no object: the options go in oneOf (single choice) or anyOf (multiple choice), and a Question MUST NOT have both (AS2 Vocab).

{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Question",
"id": "https://example.com/polls/1",
"attributedTo": "https://example.com/users/alice",
"content": "What's your favorite color?",
"oneOf": [
{ "type": "Note", "name": "Red" },
{ "type": "Note", "name": "Blue" },
{ "type": "Note", "name": "Green" }
],
"endTime": "2024-01-16T10:00:00Z"
}

Options:

  • oneOf: Single-choice (radio buttons)
  • anyOf: Multiple-choice (checkboxes)

Activity Quick Reference​

ActivityActor does whatTo/with objectNotes
CreatecreatescontentNew content
UpdatemodifiescontentEdit existing
DeleteremovescontentPermanent removal
Followsubscribes toactorRequest updates
AcceptapprovesactivityConfirm action
RejectdeniesactivityDeny action
BlockblocksactorPrevent interaction
LikeapprovescontentPositive reaction
AnnouncesharescontentBoost/retweet
UndoreversesactivityCancel previous
Addadds object tocollectionBookmark, etc
Removeremoves object fromcollectionUnbookmark
Flagreportscontent/actorModeration
MoverelocatesactorMigration

Next Steps​