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
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
| Activity | Actor does what | To/with object | Notes |
|---|---|---|---|
| Create | creates | content | New content |
| Update | modifies | content | Edit existing |
| Delete | removes | content | Permanent removal |
| Follow | subscribes to | actor | Request updates |
| Accept | approves | activity | Confirm action |
| Reject | denies | activity | Deny action |
| Block | blocks | actor | Prevent interaction |
| Like | approves | content | Positive reaction |
| Announce | shares | content | Boost/retweet |
| Undo | reverses | activity | Cancel previous |
| Add | adds object to | collection | Bookmark, etc |
| Remove | removes object from | collection | Unbookmark |
| Flag | reports | content/actor | Moderation |
| Move | relocates | actor | Migration |
Next Steps
- Object Types - Content types
- Actor Types - Actor types
- Properties - All properties