Skip to content

mattn/go-mastodon

Folders and files

NameName
Last commit message
Last commit date

Latest commit

7315f12 · Jan 17, 2025
May 4, 2024
Apr 17, 2024
May 6, 2024
Oct 25, 2024
Apr 17, 2017
May 4, 2024
Apr 27, 2017
Oct 25, 2024
May 4, 2024
Jan 17, 2025
Nov 14, 2022
Nov 16, 2022
Jan 16, 2025
Jan 16, 2025
May 6, 2024
May 1, 2022
May 1, 2022
Oct 25, 2024
Oct 25, 2024
Jun 21, 2019
Oct 25, 2024
Oct 25, 2024
May 4, 2024
Jan 17, 2025
Dec 28, 2022
Dec 28, 2022
May 12, 2019
Nov 16, 2022
Oct 25, 2024
Oct 25, 2024
Jan 17, 2025
Nov 16, 2022
Nov 14, 2022
Nov 4, 2021
Oct 25, 2024
Oct 25, 2024
Apr 17, 2024
Jan 17, 2025
Oct 24, 2024
May 4, 2024
May 4, 2024
May 4, 2024
Apr 17, 2024
Apr 17, 2024
Jan 29, 2018

Repository files navigation

go-mastodon

Build Status Codecov Go Reference Go Report Card

Usage

There are three ways to authenticate users. Fully working examples can be found in the examples directory.

User Credentials

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 Application

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

Application with Client Credentials (OAuth)

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

Status of implementations

  • 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

Installation

go install github.com/mattn/go-mastodon@latest

License

MIT

Author

Yasuhiro Matsumoto (a.k.a. mattn)