「Mastodon API 制限」でググってもピンポイントの情報がなかったので自分のググラビリティとして。
Mastodon API のリクエスト/アクセス制限
分散型 SNS の Mastodon には Web API(RESTful API)にアクセス/リクエストできる頻度に制限があります。
アクセストークンを必要としない API へのアクセスは IP アドレスを制限対象としているため、気づかないうちに制限されている可能性があります。特に、同一ネットワーク内(例えば社内)からのアクセスの場合は、そのグローバル IP アドレスが対象となるからです。
Mastodon の API を利用したアプリを作る時は、そのリミット(限界)に触れていないか注意を払う必要があります。
現在のアクセス制限のリミット残の確認
制限レートの情報は応答ヘッダーで返されます。
ヘッダ | 説明 |
---|---|
X-RateLimit-Limit |
期間ごとに許可されるリクエストの数 |
X-RateLimit-Remaining |
実行できるリクエストの残数 |
X-RateLimit-Reset |
制限レートがリセットされるタイムスタンプ |
QiitaのSNS「Qiitadon(β)」の例
$ curl -s --head https://qiitadon.com/api/v1/instance | grep ratelimit
x-ratelimit-limit: 7500
x-ratelimit-remaining: 7495
x-ratelimit-reset: 2020-09-08T13:25:00.019685Z
API のメソッドによって異なる制限レートがあるため、複数の制限による影響を受ける可能性があります。ヘッダーは、そのうち最も制限が近いものに関する情報を返します。
API メソッド毎のアクセスの制限レート
API のエンドポイント | 制限対象 | 対象期間 | 期間内の 最大回数 |
目安 | 制限タイプ |
---|---|---|---|---|---|
*/api/* |
アカウント情報 (アクセストークンあり) |
5分 | 300 | 1 回/秒 | アカウント毎 |
*/api/* |
一般アクセス (アクセストークンなし) |
5分 | 300 | 1 回/秒 | IP 毎 |
POST /api/v1/accounts |
アプリのサインアップ | 30分 | 5 | 6 分/回 | IP 毎 |
POST /api/v1/media |
メディアのアップロード | 30分 | 30 | 1 回/分 | アカウント毎 |
DELETE /api/v1/statuses/:id |
トゥートの削除 | 30分 | 30 | 1 回/分 | アカウント毎 |
POST /api/v1/statuses/:id/unreblog |
ブーストの削除 | 30分 | 30 | 1 回/分 | アカウント毎 |
参考文献
- 出典: Rate limits | REST API @ Mastodon 公式
- ソースコードの制限箇所
- /config/initializers/rack_attack.rb | v3.2.0 | Tootsuite @ Mastodon 公式 @ GitHub