There are three ways to authenticate users. Fully working examples can be found in the examples directory.
This method is the simplest and allows you to use an application registered in your account to interact with the Mastodon API on your behalf.
- Create an application on Mastodon by navigating to: Preferences > Development > New Application
- Select the necessary scopes
Working example: examples/user-credentials/main.go
Public applications use application tokens and have limited access to the API, allowing access only to public data.
Learn more at: Mastodon docs
Working example: examples/public-application/main.go
This option allows you to create an application that can interact with the Mastodon API on behalf of a user. It registers the application and requests user authorization to obtain an access token.
Learn more at: Mastodon docs
Working example: examples/user-oauth-authorization/main.go
- GET /api/v1/accounts/:id
- GET /api/v1/accounts/verify_credentials
- PATCH /api/v1/accounts/update_credentials
- GET /api/v1/accounts/:id/followers
- GET /api/v1/accounts/:id/following
- GET /api/v1/accounts/:id/statuses
- POST /api/v1/accounts/:id/follow
- POST /api/v1/accounts/:id/unfollow
- GET /api/v1/accounts/:id/block
- GET /api/v1/accounts/:id/unblock
- GET /api/v1/accounts/:id/mute
- GET /api/v1/accounts/:id/unmute
- GET /api/v1/accounts/:id/lists
- GET /api/v1/accounts/relationships
- GET /api/v1/accounts/search
- GET /api/v1/apps/verify_credentials
- GET /api/v1/bookmarks
- POST /api/v1/apps
- GET /api/v1/blocks
- GET /api/v1/conversations
- DELETE /api/v1/conversations/:id
- POST /api/v1/conversations/:id/read
- GET /api/v1/favourites
- GET /api/v1/filters
- POST /api/v1/filters
- GET /api/v1/filters/:id
- PUT /api/v1/filters/:id
- DELETE /api/v1/filters/:id
- GET /api/v1/follow_requests
- POST /api/v1/follow_requests/:id/authorize
- POST /api/v1/follow_requests/:id/reject
- GET /api/v1/followed_tags
- POST /api/v1/follows
- GET /api/v1/instance
- GET /api/v1/instance/activity
- GET /api/v1/instance/peers
- GET /api/v1/lists
- GET /api/v1/lists/:id/accounts
- GET /api/v1/lists/:id
- POST /api/v1/lists
- PUT /api/v1/lists/:id
- DELETE /api/v1/lists/:id
- POST /api/v1/lists/:id/accounts
- DELETE /api/v1/lists/:id/accounts
- POST /api/v1/media
- GET /api/v1/mutes
- GET /api/v1/notifications
- GET /api/v1/notifications/:id
- POST /api/v1/notifications/:id/dismiss
- POST /api/v1/notifications/clear
- POST /api/v1/push/subscription
- GET /api/v1/push/subscription
- PUT /api/v1/push/subscription
- DELETE /api/v1/push/subscription
- GET /api/v1/reports
- POST /api/v1/reports
- GET /api/v2/search
- GET /api/v1/statuses/:id
- GET /api/v1/statuses/:id/context
- GET /api/v1/statuses/:id/card
- GET /api/v1/statuses/:id/history
- GET /api/v1/statuses/:id/reblogged_by
- GET /api/v1/statuses/:id/source
- GET /api/v1/statuses/:id/favourited_by
- POST /api/v1/statuses
- PUT /api/v1/statuses/:id
- DELETE /api/v1/statuses/:id
- POST /api/v1/statuses/:id/reblog
- POST /api/v1/statuses/:id/unreblog
- POST /api/v1/statuses/:id/favourite
- POST /api/v1/statuses/:id/unfavourite
- POST /api/v1/statuses/:id/bookmark
- POST /api/v1/statuses/:id/unbookmark
- GET /api/v1/timelines/home
- GET /api/v1/timelines/public
- GET /api/v1/timelines/tag/:hashtag
- GET /api/v1/timelines/list/:id
- GET /api/v1/streaming/user
- GET /api/v1/streaming/public
- GET /api/v1/streaming/hashtag?tag=:hashtag
- GET /api/v1/streaming/hashtag/local?tag=:hashtag
- GET /api/v1/streaming/list?list=:list_id
- GET /api/v1/streaming/direct
- GET /api/v1/endorsements
go install github.com/mattn/go-mastodon@latest
MIT
Yasuhiro Matsumoto (a.k.a. mattn)