When an array parameter is mentioned, the Rails convention of specifying array parameters in query strings is meant.
For example, a ruby array like foo = [1, 2, 3]
can be encoded in the params as foo[]=1&foo[]=2&foo[]=3
.
Square brackets can be indexed but can also be empty.
When a file parameter is mentioned, a form-encoded upload is expected.
For most GET
operations that return arrays, the query parameters max_id
and since_id
can be used to specify the range of IDs to return.
API methods that return collections of items can return a Link
header containing URLs for the next
and prev
pages.
See the Link header RFC for more information.
If the request you make doesn't go through, Mastodon will usually respond with an Error.
GET /api/v1/accounts/:id
Returns an Account.
GET /api/v1/accounts/verify_credentials
Returns the authenticated user's Account.
GET /api/v1/accounts/:id/followers
Returns an array of Accounts.
GET /api/v1/accounts/:id/following
Returns an array of Accounts.
GET /api/v1/accounts/:id/statuses
Query parameters:
only_media
(optional): Only return statuses that have media attachmentsexclude_replies
(optional): Skip statuses that reply to other statuses
Returns an array of Statuses.
GET /api/v1/accounts/:id/follow
GET /api/v1/accounts/:id/unfollow
Returns the target Account.
GET /api/v1/accounts/:id/block
GET /api/v1/accounts/:id/unblock
Returns the target Account.
GET /api/v1/accounts/:id/mute
GET /api/v1/accounts/:id/unmute
Returns the target Account.
GET /api/v1/accounts/relationships
Query parameters:
id
(can be array): Account IDs
Returns an array of Relationships of the current user to a list of given accounts.
GET /api/v1/accounts/search
Query parameters:
q
: What to search forlimit
: Maximum number of matching accounts to return (default:40
)
Returns an array of matching Accounts.
Will lookup an account remotely if the search term is in the username@domain
format and not yet in the database.
POST /api/v1/apps
Form data:
client_name
: Name of your applicationredirect_uris
: Where the user should be redirected after authorization (for no redirect, useurn:ietf:wg:oauth:2.0:oob
)scopes
: This can be a space-separated list of the following items: "read", "write" and "follow" (see this page for details on what the scopes do)website
: (optional) URL to the homepage of your app
Creates a new OAuth app.
Returns id
, client_id
and client_secret
which can be used with OAuth authentication in your 3rd party app.
These values should be requested in the app itself from the API for each new app install + mastodon domain combo, and stored in the app for future requests.
GET /api/v1/blocks
Returns an array of Accounts blocked by the authenticated user.
GET /api/v1/favourites
Returns an array of Statuses favourited by the authenticated user.
GET /api/v1/follow_requests
Returns an array of Accounts which have requested to follow the authenticated user.
POST /api/v1/follow_requests/authorize
POST /api/v1/follow_requests/reject
Form data:
id
: The id of the account to authorize or reject
Returns an empty object.
POST /api/v1/follows
Form data:
uri
:username@domain
of the person you want to follow
Returns the local representation of the followed account, as an Account.
GET /api/v1/instance
Returns the current Instance. Does not require authentication.
POST /api/v1/media
Form data:
file
: Media to be uploaded
Returns an Attachment that can be used when creating a status.
GET /api/v1/mutes
Returns an array of Accounts muted by the authenticated user.
GET /api/v1/notifications
Returns a list of Notifications for the authenticated user.
GET /api/v1/notifications/:id
Returns the Notification.
POST /api/v1/notifications/clear
Deletes all notifications from the Mastodon server for the authenticated user. Returns an empty object.
GET /api/v1/reports
Returns a list of Reports made by the authenticated user.
POST /api/v1/reports
Form data:
account_id
: The ID of the account to reportstatus_ids
: The IDs of statuses to report (can be an array)comment
: A comment to associate with the report.
Returns the finished Report.
GET /api/v1/search
Form data:
q
: The search queryresolve
: Whether to resolve non-local accounts
Returns Results.
If q
is a URL, Mastodon will attempt to fetch the provided account or status.
Otherwise, it will do a local account and hashtag search.
GET /api/v1/statuses/:id
Returns a Status.
GET /api/v1/statuses/:id/context
Returns a Context.
GET /api/v1/statuses/:id/card
Returns a Card.
GET /api/v1/statuses/:id/reblogged_by
GET /api/v1/statuses/:id/favourited_by
Returns an array of Accounts.
POST /api/v1/statuses
Form data:
status
: The text of the statusin_reply_to_id
(optional): local ID of the status you want to reply tomedia_ids
(optional): array of media IDs to attach to the status (maximum 4)sensitive
(optional): set this to mark the media of the status as NSFWspoiler_text
(optional): text to be shown as a warning before the actual contentvisibility
(optional): either "direct", "private", "unlisted" or "public"
Returns the new Status.
DELETE /api/v1/statuses/:id
Returns an empty object.
POST /api/vi/statuses/:id/reblog
POST /api/vi/statuses/:id/unreblog
Returns the target Status.
POST /api/vi/statuses/:id/favourite
POST /api/vi/statuses/:id/unfavourite
Returns the target Status.
GET /api/v1/timelines/home
GET /api/v1/timelines/public
GET /api/v1/timelines/tag/:hashtag
Query parameters:
local
(optional; public and tag timelines only): Only return statuses originating from this instance
Returns an array of Statuses, most recent ones first.
Attribute | Description |
---|---|
id |
The ID of the account |
username |
The username of the account |
acct |
Equals username for local users, includes @domain for remote ones |
display_name |
The account's display name |
note |
Biography of user |
url |
URL of the user's profile page (can be remote) |
avatar |
URL to the avatar image |
header |
URL to the header image |
locked |
Boolean for when the account cannot be followed without waiting for approval first |
created_at |
The time the account was created |
followers_count |
The number of followers for the account |
following_count |
The number of accounts the given account is following |
statuses_count |
The number of statuses the account has made |
Attribute | Description |
---|---|
name |
Name of the app |
website |
Homepage URL of the app |
Attribute | Description |
---|---|
id |
ID of the attachment |
type |
One of: "image", "video", "gifv" |
url |
URL of the locally hosted version of the image |
remote_url |
For remote images, the remote URL of the original image |
preview_url |
URL of the preview image |
text_url |
Shorter URL for the image, for insertion into text (only present on local images) |
Attribute | Description |
---|---|
url |
The url associated with the card |
title |
The title of the card |
description |
The card description |
image |
The image associated with the card, if any |
Attribute | Description |
---|---|
ancestors |
The ancestors of the status in the conversation, as a list of Statuses |
descendants |
The descendants of the status in the conversation, as a list of Statuses |
Attribute | Description |
---|---|
error |
A textual description of the error |
Attribute | Description |
---|---|
uri |
URI of the current instance |
title |
The instance's title |
description |
A description for the instance |
email |
An email address which can be used to contact the instance administrator |
Attribute | Description |
---|---|
url |
URL of user's profile (can be remote) |
username |
The username of the account |
acct |
Equals username for local users, includes @domain for remote ones |
id |
Account ID |
Attribute | Description |
---|---|
id |
The notification ID |
type |
One of: "mention", "reblog", "favourite", "follow" |
created_at |
The time the notification was created |
account |
The Account sending the notification to the user |
status |
The Status associated with the notification, if applicible |
Attribute | Description |
---|---|
following |
Whether the user is currently following the account |
followed_by |
Whether the user is currently being followed by the account |
blocking |
Whether the user is currently blocking the account |
muting |
Whether the user is currently muting the account |
requested |
Whether the user has requested to follow the account |
Attribute | Description |
---|---|
id |
The ID of the report |
action_taken |
The action taken in response to the report |
Attribute | Description |
---|---|
accounts |
An array of matched Accounts |
statuses |
An array of matchhed Statuses |
hashtags |
An array of matched hashtags, as strings |
Attribute | Description |
---|---|
id |
The ID of the status |
uri |
A Fediverse-unique resource ID |
url |
URL to the status page (can be remote) |
account |
The Account which posted the status |
in_reply_to_id |
null or the ID of the status it replies to |
in_reply_to_account_id |
null or the ID of the account it replies to |
reblog |
null or the reblogged Status |
content |
Body of the status; this will contain HTML (remote HTML already sanitized) |
created_at |
The time the status was created |
reblogs_count |
The number of reblogs for the status |
favourites_count |
The number of favourites for the status |
reblogged |
Whether the authenticated user has reblogged the status |
favourited |
Whether the authenticated user has favourited the status |
sensitive |
Whether media attachments should be hidden by default |
spoiler_text |
If not empty, warning text that should be displayed before the actual content |
visibility |
One of: public , unlisted , private , direct |
media_attachments |
An array of Attachments |
mentions |
An array of Mentions |
tags |
An array of Tags |
application |
Application from which the status was posted |
Attribute | Description |
---|---|
name |
The hashtag, not including the preceding # |
url |
The URL of the hashtag |