Skip to content

Latest commit

 

History

History
1104 lines (721 loc) · 52.9 KB

API.md

File metadata and controls

1104 lines (721 loc) · 52.9 KB

API overview

Contents


Available libraries

There are several libraries to interact with the Mastodon API. The list of libraries can be found on the Libraries page.


Notes

Parameter types

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] should be encoded in the params as foo[]=1&foo[]=2&foo[]=3, with empty square brackets.

When sending binary data, such as files, Mastodon expects clients to use the multipart/form-data MIME type. This applies to media attachments, account avatars and account headers.

Selecting ranges

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.

Errors

If the request you make doesn't go through, Mastodon will usually respond with an Error.


Methods

Accounts

Fetching an account:

GET /api/v1/accounts/:id

Returns an Account.

Getting the current user:

GET /api/v1/accounts/verify_credentials

Returns the authenticated user's Account with an extra attribute source which contains these keys:

Attribute Description
privacy Selected preference: Default privacy of new toots
sensitive Selected preference: Mark media as sensitive by default?
note Plain-text version of the account's note
fields Array of profile metadata, each element has 'name' and 'value'

Updating the current user:

PATCH /api/v1/accounts/update_credentials

Form data:

Field Description Optional
display_name The name to display in the user's profile yes
note A new biography for the user yes
avatar An avatar for the user (encoded using multipart/form-data) yes
header A header image for the user (encoded using multipart/form-data) yes
locked Manually approve followers? yes
source (2.4 or later) extra source attribute from verify_credentials yes
fields_attributes[0][name] (2.4 or later) Label of profile metadata field. yes
fields_attributes[0][value] (2.4 or later) Value of profile metadata field. yes

Note: [0]…[3] is allowed in parameter name of fields_attributes. [] is not allowed.

Returns the authenticated user's Account.

Getting an account's followers:

GET /api/v1/accounts/:id/followers

Query parameters:

Field Description Optional
max_id Get a list of followers with ID less than this value yes
since_id Get a list of followers with ID greater than this value yes
limit Maximum number of followers to get (Default 40, Max 80) yes

Note: max_id and since_id for next and previous pages are provided in the Link header. It is not possible to use the id of the returned objects to construct your own URLs, because the results are sorted by an internal key.

Returns an array of Accounts.

Getting who account is following:

GET /api/v1/accounts/:id/following

Query parameters:

Field Description Optional
max_id Get a list of followings with ID less than this value yes
since_id Get a list of followings with ID greater than this value yes
limit Maximum number of followings to get (Default 40, Max 80) yes

Note: max_id and since_id for next and previous pages are provided in the Link header. It is not possible to use the id of the returned objects to construct your own URLs, because the results are sorted by an internal key.

Returns an array of Accounts.

Getting an account's statuses:

GET /api/v1/accounts/:id/statuses

Query parameters:

Field Description Optional
only_media Only return statuses that have media attachments yes
pinned Only return statuses that have been pinned yes
exclude_replies Skip statuses that reply to other statuses yes
max_id Get a list of statuses with ID less than this value yes
since_id Get a list of statuses with ID greater than this value yes
limit Maximum number of statuses to get (Default 20, Max 40) yes

Note: max_id and since_id for next and previous pages are provided in the Link header. However, it is possible to use the id of the returned objects to construct your own URLs.

Returns an array of Statuses.

Following an account:

POST /api/v1/accounts/:id/follow
Field Description Optional
reblogs Determines whether the followed account's reblogs will show up in the home timeline yes

Returns the target account's Relationship.

Unfollowing an account:

POST /api/v1/accounts/:id/unfollow

Returns the target account's Relationship.

Blocking/unblocking an account:

POST /api/v1/accounts/:id/block
POST /api/v1/accounts/:id/unblock

Returns the target account's Relationship.

Muting/unmuting an account:

POST /api/v1/accounts/:id/mute

Form data:
Field Description Optional
notifications Determines whether the mute will mute notifications or not. Default(true) yes

Returns the target account's Relationship.

POST /api/v1/accounts/:id/unmute

Returns the target account's Relationship.

Endorsing/unendorsing an account:

POST /api/v1/accounts/:id/pin
POST /api/v1/accounts/:id/unpin

Returns the target account's Relationship.

Getting an account's relationships:

GET /api/v1/accounts/relationships

Query parameters:

Field Description Optional
id Account IDs (can be an array) no

Returns an array of Relationships of the current user to a list of given accounts.

Searching for accounts:

GET /api/v1/accounts/search

Query parameters:

Field Description Optional
q What to search for no
limit Maximum number of matching accounts to return (default: 40) yes
following Limit the search to following (boolean, default false) yes

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.

Apps

Registering an application:

POST /api/v1/apps

Form data:

Field Description Optional
client_name Name of your application no
redirect_uris Where the user should be redirected after authorization (for no redirect, use urn:ietf:wg:oauth:2.0:oob) no
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) no
website URL to the homepage of your app yes

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.

Blocks

Fetching a user's blocks:

GET /api/v1/blocks

Query parameters:

Field Description Optional
max_id Get a list of blocks with ID less than this value yes
since_id Get a list of blocks with ID greater than this value yes
limit Maximum number of blocks to get (Default 40, Max 80) yes

Note: max_id and since_id for next and previous pages are provided in the Link header. It is not possible to use the id of the returned objects to construct your own URLs, because the results are sorted by an internal key.

Returns an array of Accounts blocked by the authenticated user.

Domain blocks

Fetching a user's blocked domains:

GET /api/v1/domain_blocks

Query parameters:

Field Description Optional
max_id Get a list of blocks with ID less than this value yes
since_id Get a list of blocks with ID greater than this value yes
limit Maximum number of blocks to get (Default 40, Max 80) yes

Note: max_id and since_id for next and previous pages are provided in the Link header. It is not possible to use the id of the returned objects to construct your own URLs, because the results are sorted by an internal key.

Returns an array of strings.

Blocking a domain

POST /api/v1/domain_blocks

Parameters:

Field Description Optional
domain Domain to block no

Returns an empty object.

Unblocking a domain

DELETE /api/v1/domain_blocks

Parameters:

Field Description Optional
domain Domain to unblock no

Returns an empty object.

Endorsements

Fetching a user's endorsed accounts

GET /api/v1/endorsements

Returns an array of Accounts endorsed by the authenticated user.

Note: max_id and since_id for next and previous pages are provided in the Link header. However, it is possible to use the id of the returned objects to construct your own URLs.

Favourites

Fetching a user's favourites:

GET /api/v1/favourites

Query parameters:

Field Description Optional
max_id Get a list of favourites with ID less than this value yes
since_id Get a list of favourites with ID greater than this value yes
limit Maximum number of favourites to get (Default 20, Max 40) yes

Note: max_id and since_id for next and previous pages are provided in the Link header. It is not possible to use the id of the returned objects to construct your own URLs, because the results are sorted by an internal key.

Returns an array of Statuses favourited by the authenticated user.

Filters

Fetching a list of filters:

GET /api/v1/filters

Note: This API does not provide pagenation.

Returns an array of Filters.

Creating a filter.

POST /api/v1/filters
Field Description Optional
phrase String that contains keyword or phrase. no
context Array of strings that means filtering context. Each string is one of 'home', 'notifications', 'public', 'thread'. At least one context must be specified. no.
irreversible Boolean that indicates irreversible filtering on server side. yes
whole_word Boolean that indicates word match. yes
expires_in Number that indicates seconds. Filter will be expire in seconds after API processed. Null or blank string means "don't change". Default is unlimited. yes

Returns a Filter.

Notes:

  • The public context refers to both the local and the federated timelines; the home context refers to the home timeline. The thread context happens when looking at a status in context. No context applies when looking at the statuses of an account.
  • Clients must do their own filtering based on these filters. The server will apply "irreversible" filters for home and notifications context. Anything else is still up to the client to filter!
  • Expired filters are not deleted by the server. They should no longer be applied but they are still stored by the server. It is up to clients to delete these filters eventually.

Get a filter.

GET /api/v1/filters/:id

Returns a Filter.

Update a filter.

PUT /api/v1/filters/:id

The parameter is same with 'POST /api/v1/filters'.

Note: Currently there is noway to remove expires from existing filter.

Returns a Filter.

Delete a filter.

DELETE /api/v1/filters/:id

Returns a empty object.

Follow Requests

Fetching a list of follow requests:

GET /api/v1/follow_requests

Query parameters:

Field Description Optional
max_id Get a list of follow requests with ID less than this value yes
since_id Get a list of follow requests with ID greater than this value yes
limit Maximum number of requests to get (Default 40, Max 80) yes

Note: max_id and since_id for next and previous pages are provided in the Link header. It is not possible to use the id of the returned objects to construct your own URLs, because the results are sorted by an internal key.

Returns an array of Accounts which have requested to follow the authenticated user.

Authorizing or rejecting follow requests:

POST /api/v1/follow_requests/:id/authorize
POST /api/v1/follow_requests/:id/reject

Returns an empty object.

Follow Suggestions

Fetching a list of follow suggestions:

GET /api/v1/suggestions

Query parameters:

Field Description Optional

Note: This API does not provide pagenation.

Returns an array of Accounts which is suggested.

Delete a user from follow suggestions:

DELETE /api/v1/suggestions/:account_id

Returns an empty object.

Follows

Following a remote user:

POST /api/v1/follows

Form data:

Field Description Optional
uri username@domain of the person you want to follow no

Returns the local representation of the followed account, as an Account.

Instances

Getting current instance information:

GET /api/v1/instance

Returns the current Instance.

Does not require authentication.

Custom Emojis

Getting current instance's custom emojis:

GET /api/v1/custom_emojis

Returns a list of Emoji

Does not require authentication.

Lists

Retrieving lists

GET /api/v1/lists

Returns at most 50 Lists without pagination.

Retrieving lists by membership

GET /api/v1/accounts/:id/lists

Returns at most 50 Lists without pagination.

Retrieving accounts in a list

GET /api/v1/lists/:id/accounts

Returns Accounts in the list. If you specify limit=0 in the query, all accounts will be returned without pagination. Otherwise, standard account pagination rules apply.

Retrieving a list

GET /api/v1/lists/:id

Returns the specified List.

Creating and updating a list

POST /api/v1/lists
PUT /api/v1/lists/:id

Form data:

Field Description Optional
title The title of the list no

Returns a new or updated List.

Deleting a list

DELETE /api/v1/lists/:id

Returns an empty object.

Adding/removing accounts to/from a list

POST /api/v1/lists/:id/accounts
DELETE /api/v1/lists/:id/accounts

Form data:

Field Description Optional
account_ids Array of account IDs no

Note: Only accounts already followed by the authenticated user can be added to a list.

Returns an empty object.

Media

Uploading a media attachment:

POST /api/v1/media

Form data:

Field Description Optional
file Media to be uploaded (encoded using multipart/form-data) no
description A plain-text description of the media, for accessibility (max 420 chars) yes
focus Focal point: Two floating points, comma-delimited yes

Returns an Attachment that can be used when creating a status.

Updating a media attachment:

PUT /api/v1/media/:id

Form data:

Field Description Optional
description A plain-text description of the media, for accessibility (max 420 chars) yes
focus Focal point: Two floating points, comma-delimited yes

Can only be done before the media is attached to a status. Returns an Attachment that can be used when creating a status.

Focal points

Server-side preview images are never cropped, to support a variety of apps and user interfaces. Therefore, the cropping must be done by those apps. To crop intelligently, focal points can be used to ensure a certain section of the image is always within the cropped viewport. See this for how to let users select focal point coordinates.

Mutes

Fetching a user's mutes:

GET /api/v1/mutes

Query parameters:

Field Description Optional
max_id Get a list of mutes with ID less than this value yes
since_id Get a list of mutes with ID greater than this value yes
limit Maximum number of mutes to get (Default 40, Max 80) yes

Note: max_id and since_id for next and previous pages are provided in the Link header. It is not possible to use the id of the returned objects to construct your own URLs, because the results are sorted by an internal key.

Returns an array of Accounts muted by the authenticated user.

Notifications

Fetching a user's notifications:

GET /api/v1/notifications

Query parameters:

Field Description Optional
max_id Get a list of notifications with ID less than this value yes
since_id Get a list of notifications with ID greater than this value yes
limit Maximum number of notifications to get (Default 15, Max 30) yes
exclude_types Array of notifications to exclude (Allowed values: "follow", "favourite", "reblog", "mention") yes

Note: max_id and since_id for next and previous pages are provided in the Link header. However, it is possible to use the id of the returned objects to construct your own URLs.

Returns a list of Notifications for the authenticated user.

Getting a single notification:

GET /api/v1/notifications/:id

Returns the Notification.

Clearing notifications:

POST /api/v1/notifications/clear

Deletes all notifications from the Mastodon server for the authenticated user. Returns an empty object.

Dismissing a single notification:

POST /api/v1/notifications/dismiss

Form data:

Field Description Optional
id Notification ID no

Deletes a single notification from the Mastodon server for the authenticated user. Returns an empty object.

Adding push subscription

POST /api/v1/push/subscription

Form data:

Field Description Optional
subscription[endpoint] Endpoint URL that called when notification is happen. no
subscription[keys][p256dh] User agent public key. Base64 encoded string of public key of ECDH key that using 'prime256v1' curve. no
subscription[keys][auth] Auth secret. Base64 encoded string of 16 bytes random data. no
data[alerts][follow] Boolean of whether you want to receive follow notification event. ?
data[alerts][favourite] Boolean of whether you want to receive favourite notification event. ?
data[alerts][reblog] Boolean of whether you want to receive reblog notification event. ?
data[alerts][mention] Boolean of whether you want to receive mention notification event. ?

Returns the Push Subscription.

Each access token can have one push subscription. If you post new subscription. the old subscription is deleted.

The endpoint URL is called when notification event is happen, and its payload is encrypted according to The Web Push Protocol. see also:

Get current push subscription status

GET /api/v1/push/subscription

Returns the Push Subscription.

Updating push subscription

PUT /api/v1/push/subscription

Returns the Push Subscription.

This API updates 'data' part of push subscription. If you want to change 'subscription', you have to use 'POST /api/v1/push/subscription'.

Removing push subscription

DELETE /api/v1/push/subscription

This API removes push subscription that bind to access token.

Reports

Fetching a user's reports:

GET /api/v1/reports

Returns a list of Reports made by the authenticated user. (This method is not entirely implemented and contains no useful information at this point)

Reporting a user:

POST /api/v1/reports

Form data:

Field Description Optional
account_id The ID of the account to report no
status_ids The IDs of statuses to report (can be an array) no
comment A comment to associate with the report (up to 1000 characters) no

Returns the finished Report.

Search

Searching for content:

GET /api/v1/search

Form data:

Field Description Optional
q The search query no
resolve Whether to resolve non-local accounts (default: don't resolve) yes

Returns Results.

If q is a URL, Mastodon will attempt to fetch the provided account or status. Otherwise, it will search for local accounts and hashtags, and if your instance allows it it will search for toots you've written, boosted, favourited or were mentioned in.

GET /api/v2/search

Same as above, but returns Results with Tag objects in the hashtag attribute.

Statuses

Fetching a status:

GET /api/v1/statuses/:id

Returns a Status.

Does not require authentication.

Getting status context:

GET /api/v1/statuses/:id/context

Returns a Context.

Does not require authentication.

Getting a card associated with a status:

GET /api/v1/statuses/:id/card

Returns a Card.

Does not require authentication.

Getting who reblogged/favourited a status:

GET /api/v1/statuses/:id/reblogged_by
GET /api/v1/statuses/:id/favourited_by

Query parameters:

Field Description Optional
max_id Get a list of reblogged/favourited with ID less than this value yes
since_id Get a list of reblogged/favourited with ID greater than this value yes
limit Maximum number of reblogged/favourited to get (Default 40, Max 80) yes

Note: max_id and since_id for next and previous pages are provided in the Link header. It is not possible to use the id of the returned objects to construct your own URLs, because the results are sorted by an internal key.

Returns an array of Accounts.

Does not require authentication.

Posting a new status:

POST /api/v1/statuses

Form data:

Field Description Optional
status The text of the status no
in_reply_to_id local ID of the status you want to reply to yes
media_ids Array of media IDs to attach to the status (maximum 4) yes
sensitive Set this to mark the media of the status as NSFW yes
spoiler_text Text to be shown as a warning before the actual content yes
visibility Either "direct", "private", "unlisted" or "public" yes
language ISO 639-2 language code of the toot, to skip automatic detection yes

Returns the new Status.

Note: In order to prevent duplicate statuses, this endpoint accepts an Idempotency-Key header, which should be set to a unique string for each new status. In the event of a network error, a request can be retried with the same Idempotency-Key. Only one status will be created regardless of how many requests with the same Idempotency-Key did go through.

See https://stripe.com/blog/idempotency for more on idempotency and idempotency keys.

Deleting a status:

DELETE /api/v1/statuses/:id

Returns an empty object.

Reblogging/unreblogging a status:

POST /api/v1/statuses/:id/reblog
POST /api/v1/statuses/:id/unreblog

Reblog: Returns the reblog Status.

Unreblog: Returns the target Status.

Favouriting/unfavouriting a status:

POST /api/v1/statuses/:id/favourite
POST /api/v1/statuses/:id/unfavourite

Returns the target Status.

Pinning/unpinning a status:

POST /api/v1/statuses/:id/pin
POST /api/v1/statuses/:id/unpin

Returns the target Status.

Muting/unmuting a conversation of a status

POST /api/v1/statuses/:id/mute
POST /api/v1/statuses/:id/unmute

Only makes sense for statuses featured inside notifications directed at the user. Muting a status will prevent replies to it, favourites and replies of it from appearing in the user's notifications.

Returns the target Status.

Timelines

Retrieving a timeline:

GET /api/v1/timelines/home
GET /api/v1/timelines/public
GET /api/v1/timelines/tag/:hashtag
GET /api/v1/timelines/list/:list_id
GET /api/v1/timelines/direct

Query parameters:

Field Description Optional
local Only return statuses originating from this instance (public and tag timelines only) yes
only_media Only return statuses that have media attachments (public and tag timelines only) yes
max_id Get a list of statuses with ID less than this value yes
since_id Get a list of statuses with ID greater than this value yes
limit Maximum number of statuses on the requested timeline to get (Default 20, Max 40) yes

Note: max_id and since_id for next and previous pages are provided in the Link header. However, it is possible to use the id of the returned objects to construct your own URLs.

Returns an array of Statuses, most recent ones first.

Public and tag timelines do not require authentication.


Entities

Note: Some attributes in the entity payload can have null value and are marked as nullable on the tables below. Attributes that are not nullable are guaranteed to return a valid value.

Account

Attribute Description Nullable
id The ID of the account no
username The username of the account no
acct Equals username for local users, includes @domain for remote ones no
display_name The account's display name no
locked Boolean for when the account cannot be followed without waiting for approval first no
created_at The time the account was created no
followers_count The number of followers for the account no
following_count The number of accounts the given account is following no
statuses_count The number of statuses the account has made no
note Biography of user no
url URL of the user's profile page (can be remote) no
avatar URL to the avatar image no
avatar_static URL to the avatar static image (gif) no
header URL to the header image no
header_static URL to the header static image (gif) no
emojis Array of Emoji in account username and note no
moved If the owner decided to switch accounts, new account is in this attribute yes
fields Array of profile metadata field, each element has 'name' and 'value' yes
bot Boolean to indicate that the account performs automated actions yes

Application

Attribute Description Nullable
name Name of the app no
website Homepage URL of the app yes

Attachment

Attribute Description Nullable
id ID of the attachment no
type One of: "image", "video", "gifv", "unknown" no
url URL of the locally hosted version of the image no
remote_url For remote images, the remote URL of the original image yes
preview_url URL of the preview image no
text_url Shorter URL for the image, for insertion into text (only present on local images) yes
meta See attachment metadata below yes
description A description of the image for the visually impaired (maximum 420 characters), or null if none provided yes

Attachment metadata:

May contain small and original (referring to the preview and the original file). Images may contain width, height, size, aspect, while videos (including GIFV) may contain width, height, frame_rate, duration and bitrate. There may be another top-level object, focus with the coordinates x and y. These coordinates can be used for smart thumbnail cropping, see this for reference.

Note: When the type is "unknown", it is likely only remote_url is available and local url is missing

Card

Attribute Description Nullable
url The url associated with the card no
title The title of the card no
description The card description no
image The image associated with the card, if any yes
type "link", "photo", "video", or "rich" no
author_name OEmbed data yes
author_url OEmbed data yes
provider_name OEmbed data yes
provider_url OEmbed data yes
html OEmbed data yes
width OEmbed data yes
height OEmbed data yes

Context

Attribute Description Nullable
ancestors The ancestors of the status in the conversation, as a list of Statuses no
descendants The descendants of the status in the conversation, as a list of Statuses no

Emoji

Attribute Description Nullable
shortcode The shortcode of the emoji no
static_url URL to the emoji static image no
url URL to the emoji image no
visible_in_picker Boolean that indicates if the emoji is visible in picker no

Error

The most important part of an error response is the HTTP status code. Standard semantics are followed. The body of an error is a JSON object with this structure:

Attribute Description Nullable
error A textual description of the error no

Filter

Attribute Description Nullable
id ID of the filter no
phrase Keyword or phrase no
context Array of strings that indicate filter context. each string is ont of 'home', 'notifications', 'public', 'thread' no
expires_at String such as "2018-07-06T00:59:13.161Z" that indicates when this filter is expired. yes
irreversible Boolean that indicates irreversible server side filtering. no
whole_word Boolean that indicates word match. no

If whole_word is true , client app should do:

  • Define 'Word constituent character' for your app. In official implementation, it's [A-Za-z0-9_] for JavaScript, it's [[:word:]] for Ruby. In Ruby case it's POSIX character class (Letter | Mark | Decimal_Number | Connector_Punctuation).
  • If the phrase starts with word character, and if the previous character before matched range is word character, its matched range should treat to not match.
  • If the phrase ends with word character, and if the next character after matched range is word character, its matched range should treat to not match.

Please check app/javascript/mastodon/selectors/index.js and app/lib/feed_manager.rb for more details. Most case client apps are compared to WebUI(JS), they should obey to JS implementation.

Instance

Attribute Description Nullable
uri URI of the current instance no
title The instance's title no
description A description for the instance no
email An email address which can be used to contact the instance administrator no
version The Mastodon version used by instance. no
urls streaming_api no
languages Array of ISO 6391 language codes the instance has chosen to advertise no
contact_account Account of the admin or another contact person no

List

Attribute Description Nullable
id ID of the list no
title Title of the list no

Mention

Attribute Description Nullable
url URL of user's profile (can be remote) no
username The username of the account no
acct Equals username for local users, includes @domain for remote ones no
id Account ID no

Notification

Attribute Description Nullable
id The notification ID no
type One of: "mention", "reblog", "favourite", "follow" no
created_at The time the notification was created no
account The Account sending the notification to the user no
status The Status associated with the notification, if applicable yes

Push Subscription

Attribute Description Nullable
id The push subscription ID no
endpoint The endpoint URL no
server_key The server public key for signature verification. (not for decoding) no
alerts Map of 'notification event type' and 'push is requested or not' ?

Relationship

Attribute Description Nullable
id Target account id no
following Whether the user is currently following the account no
followed_by Whether the user is currently being followed by the account no
blocking Whether the user is currently blocking the account no
muting Whether the user is currently muting the account no
muting_notifications Whether the user is also muting notifications no
requested Whether the user has requested to follow the account no
domain_blocking Whether the user is currently blocking the accounts's domain no
showing_reblogs Whether the user's reblogs will show up in the home timeline no
endorsed Whether the user is currently endorsing the account no

Report

Attribute Description Nullable
id The ID of the report no
action_taken The action taken in response to the report no

Results

Attribute Description Nullable
accounts An array of matched Accounts no
statuses An array of matched Statuses no
hashtags An array of matched hashtags, as strings no

Status

Attribute Description Nullable
id The ID of the status no
uri A Fediverse-unique resource ID no
url URL to the status page (can be remote) yes
account The Account which posted the status no
in_reply_to_id null or the ID of the status it replies to yes
in_reply_to_account_id null or the ID of the account it replies to yes
reblog null or the reblogged Status yes
content Body of the status; this will contain HTML (remote HTML already sanitized) no
created_at The time the status was created no
emojis An array of Emoji no
replies_count The number of replies for the status no
reblogs_count The number of reblogs for the status no
favourites_count The number of favourites for the status no
reblogged Whether the authenticated user has reblogged the status yes
favourited Whether the authenticated user has favourited the status yes
muted Whether the authenticated user has muted the conversation this status from yes
sensitive Whether media attachments should be hidden by default no
spoiler_text If not empty, warning text that should be displayed before the actual content no
visibility One of: public, unlisted, private, direct no
media_attachments An array of Attachments no
mentions An array of Mentions no
tags An array of Tags no
application Application from which the status was posted yes
language The detected language for the status, if detected yes
pinned Whether this is the pinned status for the account that posted it yes

NOTE: When spoiler_text is present, sensitive is true

NOTE: in_reply_to_id and in_reply_to_account_id are null if the status that is replied to is unknown

Tag

Attribute Description Nullable
name The hashtag, not including the preceding # no
url The URL of the hashtag no
history Array of daily usage history. Not included in statuses yes

NOTE: Each object in history has the following structure: day (UNIX timestamp), uses (total statuses using that hashtag during that day), and accounts (total unique accounts using that hashtag during that day). Last 7 days.