Application
ActivityStreams §4.1"type": "Application"
Application represents an entire application or software system acting as an ActivityPub actor. Used for server-level actors – the Mastodon instance actor, for example, is an Application type. The instance actor signs HTTP requests on behalf of the server itself (for server-to-server operations that are not tied to a specific user, like fetching remote actor documents).
Details
Application actors represent the software application itself rather than a user. The key use case is the instance actor pattern.
Mastodon instance actor: Every Mastodon server has an Application actor at /actor (e.g., https://mastodon.social/actor). This actor: - Signs HTTP GET requests when fetching remote actor documents or notes - Represents the server in block/defederation announcements - Signs delivery receipts Why instance actors matter: When server A fetches a post from server B, it signs the request with the instance actor's key. Server B can verify the request came from a known federated server (not a random bot scraping content). This is important for servers that block certain domains – they can reject requests signed by blocked instance actors.
Other Application uses: - OAuth application registration in ActivityPub C2S workflows - Service accounts for platform-level actions (global announcements, system messages) - The 'relay' in ActivityPub relay systems
Relationship to Service: Application is for software systems; Service is for specific bots/functions. The distinction is subtle and both are used interchangeably by some implementations.
Required Fields
| @context | "https://www.w3.org/ns/activitystreams" |
| type | "Application" |
| id | Permanent HTTPS URL (typically /actor on the instance) |
| inbox | HTTPS inbox endpoint |
| publicKey | RSA public key for HTTP Signature verification of server-level requests |
Common Optional Fields
| name | Application/server name |
| url | Server homepage |
| summary | Server description |
Examples
// GET https://mastodon.social/actor
{
"@context": "https://www.w3.org/ns/activitystreams",
"type": "Application",
"id": "https://mastodon.social/actor",
"name": "mastodon.social",
"url": "https://mastodon.social",
"inbox": "https://mastodon.social/inbox",
"publicKey": {
"id": "https://mastodon.social/actor#main-key",
"owner": "https://mastodon.social/actor",
"publicKeyPem": "-----BEGIN PUBLIC KEY-----\n..."
}
}