Mastodon
  • User guide
    • Basics
    • Decentralization
    • Privacy
    • Moderation
  • Administrator guide
    • Installation
    • Configuration
    • Post-installation steps
    • Scaling up
    • Optional features
    • Upgrading to a new release
    • Migrating servers
    • Troubleshooting
  • Development guide
    • Overview
    • ActivityPub compliance
  • API Overview
    • Guidelines
    • Libraries
    • Authentication
    • Permissions
    • Entities
    • Parameters
    • Streaming API
    • Web Push API
  • REST API
    • Accounts
    • Apps
    • Blocks
    • Custom emoji
    • Domain blocks
    • Endorsements
    • Favourites
    • Filters
    • Follow requests
    • Follow suggestions
    • Instances
    • Lists
    • Media attachments
    • Mutes
    • Notifications
    • Reports
    • Scheduled Statuses
    • Search
    • Statuses
    • Timelines

ActivityPub compliance

    • APIs
    • Restrictions
    • Activities
    • Extensions
      • Featured collection
      • Custom emojis
      • Focal points

APIs

  • Mastodon supports the server-to-server part of the ActivityPub spec.
  • It implements the HTTP signatures spec for authentication of inbox deliveries.
  • Mastodon also supports Linked Data Signatures for forwarded payloads.

Restrictions

  • All object IDs must use the https:// schema.
  • Servers must offer a WebFinger endpoint for turning usernames into actors.
  • Activities attributed to an actor must have an ID on the same host as the actor.

Activities

Supported activity Supported objects
Accept Follow
Add Note
Announce Object
Block Object
Create Note, Article, Image, Video, Page
Delete Object
Flag Object
Follow Object
Like Object
Move Object
Reject Follow
Remove Note
Undo Accept, Announce, Block, Follow, Like
Update Object

As far as the Create activity is concerned, only Note is a first-class citizen in Mastodon, because Mastodon is a microblogging engine. For other types of supported objects, Mastodon internally creates a toot representation, for example, an Article or Page becomes a toot with the name and url of the original object, as users are expected to navigate to the original URL to read the article with rich text formatting. For Image and Video objects, the name is likewise used to fill the content of the toot, with the original file attached to the toot.

The Flag activity allows reporting content on another server, and its object can be either one or more actors, or one or more objects attributed to various actors. The Add and Remove activities only work with featured collections. The Delete activity can be used to delete all local data of the sender when the object of it is the sender. The Update activity can only be used to update the profile of the sender. Likewise, the Move activity allows re-assigning followers from the sender (object) to another actor (target), but only if the other actor references the sender in the alsoKnownAs property.

Extensions

Featured collection

What is known in Mastodon as “pinned toots”, or statuses that are always featured at the top of people’s profiles, is implemented using an extra property featured on the actor object that points to a Collection of objects. Example:

{
  "@context": [
    "https://www.w3.org/ns/activitystreams",
        
    {
      "toot": "http://joinmastodon.org/ns#",
      "featured": {
        "@id": "toot:featured",
        "@type": "@id"
      }
    }
  ],

  "id": "https://example.com/@alice",
  "type": "Person",
  "featured": "https://example.com/@alice/collections/featured"
}

Custom emojis

Mastodon supports arbitrary emojis, that is, small images uploaded by admins and invokable via shortcodes. For this, an Emoji type is used. These emojis are listed in the tag property just like Mention and Hashtag objects, since they are entities that affect how the text is rendered. Example:

{
  "@context": [
    "https://www.w3.org/ns/activitystreams",
        
    {
      "toot": "http://joinmastodon.org/ns#",
      "Emoji": "toot:Emoji"
    }
  ],

  "id": "https://example.com/@alice/hello-world",
  "type": "Note",
  "content": "Hello world :Kappa:",
  "tag": [
    {
      "id": "https://example.com/emoji/123",
      "type": "Emoji",
      "name": ":Kappa:",
      "icon": {
        "type": "Image",
        "mediaType": "image/png",
        "url": "https://example.com/files/kappa.png"
      }
    }
  ]
}

Focal points

Mastodon supports setting a focal point on uploaded images, so that wherever that image is displayed, the focal point stays in view. This is implemented using an extra property focalPoint on the Image objects. The property is simply an array of two floating points between 0 and 1. Example:

{
  "@context": [
    "https://www.w3.org/ns/activitystreams",
        
    {
      "toot": "http://joinmastodon.org/ns#",
      "focalPoint": {
        "@container": "@list",
        "@id": "toot:focalPoint"
      }
    }
  ],

  "id": "https://example.com/@alice/hello-world",
  "type": "Note",
  "content": "A picture attached!",
  "attachment": [
    {
      "type": "Image",
      "mediaType": "image/png",
      "url": "https://example.com/files/cats.png",
      "focalPoint": [
        0.55,
        0.43
      ]
    }
  ]
}

Last updated January 15, 2019 · Improve this page

Merch

T-shirts and stickers

Join Mastodon · Find Twitter friends · Blog · · ·

View source · CC BY-SA 4.0 · Imprint