north API (0.56.1)

Download OpenAPI specification:

URL: https://north.rip License: LicenseRef-north-private

north をプログラムから操作するための API です

northの外部クライアント向けAPIです。IDは文字列、日時はUTC ISO8601です。

認証

外部アプリはnorth上で利用者が権限を確認して許可します。設定 › 開発者向け でアプリを登録し、Authorization Code + PKCE(S256)またはDevice Authorization Flowを使ってください。

個人スクリプトは同じ設定画面で、名前・権限・期限を持つ個人トークンを発行できます。最大10本、既定90日、上限365日。DMを含む場合は追加確認が必要で上限30日です。トークンは発行時だけ表示します。

既存の nth_live_ キー(READ / READ_WRITE)は既存の公開機能を維持します。DM・ブックマーク・編集・プロフィール更新等の新機能は追加されません。OAuthアクセストークンと個人トークンは nth_oat_ で始まり、各操作に記載したscopeをすべて必要とします。複数のsecurity項目はOR、1つのOAuth項目内のscopeはANDです。個人トークンにも同じscopeが適用されます。

外部資格は /2 と認証付きメディア配信に限定し、Web内部の /api へ直接持ち込めません。CookieやWeb/nativeのSession Bearerだけでは /2 を利用できません。管理・メール・パスワード・2FA・資格発行・アカウント削除は外部APIの対象外です。

OAuth

クライアントはpublic clientです。配布アプリにclient secretを埋め込まないでください。アクセストークンは1時間、更新トークンは発行から30日、許可作成から90日以内に更新できます。更新は毎回ローテーションし、使用済み更新トークンの再利用を検出すると、その許可全体を停止します。元のアクセストークンも更新時に失効します。同じアプリを再許可すると、そのユーザーの以前の許可を置き換えます。

コード認可の登録URLはHTTPS、または http://127.0.0.1 / http://[::1] のループバックのみ。登録文字列との完全一致で検査し、認可要求は10分、承認後のcodeは60秒、1回限りです。PKCEはS256のみ。stateを設定し、返った値をクライアント側で照合してください。

Device Flowのcodeは10分、intervalは5秒です。authorization_pending は待機、slow_down は以降の間隔を5秒延長し、access_denied / expired_token / invalid_grant は終了です。未認証OAuth要求はIPごと60回/分、device code発行はアプリごと30回/15分。コードを他人から入力するよう頼まれた場合は許可しないでください。

成功・失敗・再試行

/2 のJSON成功応答は { "data": ... }、失敗は { "errors": [{ "code": ..., "message": ... }], "request_id": ... }。code32=認証、34=対象なし、87=権限、88=回数、89=入力/競合、131=サーバー障害です。OAuthのprotocol応答だけはRFCに従い error / access_token 等を直下に返します。旧キーのアップロード応答は既存のフラット形式を維持し、OAuth/個人トークンはdataで包みます。

JSONのPOSTは任意の Idempotency-Key(1〜128文字の可視ASCII)に対応します。資格の許可×操作×パスごとに24時間保持し、同じbodyは同じ応答、異なるbodyは409。同時処理中は409とRetry-After:1です。書込み認証を先に検査するため、取消済み資格へ成功結果を再送しません。5xx後は重複を防ぐため未完了記録を24時間保持します。媒体アップロード/APPENDには適用しません。APPENDは順番に送ってください。中断・再起動時は新しいinitializeからやり直します。

未知の書込みフィールドは400です。GET /2/tweets/{id} のETagを PUT /2/tweets/{id}/edit のIf-Matchへ渡すと、変更済みなら412。同時編集の競合は409です。プロフィールはname/bio/location/website/avatarMediaId/headerMediaIdのみ変更でき、admin/verified/privacy等は拒否します。

プロフィール画像は設定時にサーバーで検査します。元画像は4096×4096相当以内、アイコン32MiB/30秒/1800フレーム以内、ヘッダー100MiB/180秒/10800フレーム以内です。解像度×フレーム数にも処理量上限(アイコン5億、ヘッダー60億画素)があります。アイコンは中央を正方形に切り抜いた256×256のWebPへ最適化し、表示用の上限は1MiB。ヘッダーの表示用は960×320、最大60fps、動画とポスターの合計16MiB以内。透明度がある動画はWebM、その他はMP4です。元ファイルを保持し、Webでの拡大時だけ原本を使います。ヘッダーは先にポスターを生成し、背景処理の完了後に表示用動画を使います。動画の生成待ちや失敗時はその静止画を表示します。既存画像の初回要求は従来画像を返す場合があります。上限を超える設定は400です。

権限とプライバシー

すべて本人の可視範囲と所有者の規則に従います。DMのGETは既読時刻とリクエスト閲覧時刻を変えません。既読は dm.receipts.write の明示操作です。参加前の本文・返信先・添付、非表示/削除済みの添付は取得できません。DM削除のscope=everyoneは送信者のみ、それ以外は本人の表示からだけ消します。

DMを読む許可は参加会話全体への許可です。会話限定grantは未提供です。取得後のアプリによる保存や転送をサーバーから取り消すことはできません。取消は次の要求/イベントで検査し、無通信のSSEも25秒以内のheartbeatで停止します。予約は元のgrantを記録し、取消・停止・送信制限を実行時に再検査してscheduleErrorに理由を残します。

OAuthでは本人だけに見える誕生日/誕生日公開設定を返さず、moderation.readを持たない資格には自分のblocking/muting/retweetsHiddenフラグも返しません。メール・パスワード・セッション・管理フラグを一般User DTOへ追加しません。

ページと通知

OAuthのnextCursorはユーザー・grant・scope・パス・クエリへ署名で結び付けた30分のカーソルです。同じパス/クエリ/許可でそのままcursorへ渡してください。旧キーは従来のカーソルを維持します。おすすめ/会話の順位は変動するため、完全な順位スナップショットを保証しません。会話の祖先は最大50、直接返信ページは10、返信の木は最大60ノードでtruncatedを返します。

通知SSEは一覧と同じ公開範囲・通知フィルターに従います。通知本文/DM本文はイベントに含みません。Last-Event-IDによる履歴再送は提供しないため、切断後はRESTで再取得してください。

制限

OAuthの制限枠は時間経過に応じて補充されます。トークンを更新しても残量はリセットされません。通常の読取はgrant 900/15分、ユーザーの外部読取合計3600/15分、アプリ30000/15分。検索/会話/返信はgrant180/15分、ユーザー720/15分。一般書込みとメディア操作はgrant100/15分、ユーザー100/15分、アプリ3000/15分。APPENDは別枠でgrant/ユーザー1024/15分。DMの読取と書込みは別bucketで、書込みはgrant/ユーザー100/時、アプリ3000/時です。

業務上の送信枠はWeb・native・旧キー・OAuthをアカウントで合算します。投稿50/分・100/15分・1000/日、DM20/分・100/時・500/日、新規DM会話5/日、相手ごとのDM5/分、いいね/リポストの付け外し合計300/時、フォローの付け外し100/時。これらもtoken bucketの容量/補充期間であり、日付の切替でリセットしません。失敗した試行も枠を消費する場合があります。

SSE同時接続は1ユーザー5、1資格2、1アプリ500。アップロードHTTP同時実行はユーザー4、資格2、アプリ50。分割の進行中セッションはユーザー4、サービス全体50。メディアは1ユーザー24時間の入力容量1GiBを予約し、削除/失敗/中断しても枠を戻しません。保存容量と入力転送量は別です。

x-rate-limit-limit/remaining/resetは同じ制約の値を返し、OAuthのresetは完全補充の見込みUNIX秒です。x-north-rate-limit-scopeでgrant/user/appを区別します。429はRetry-Afterとlimit_scope、一時的なサービス障害は503とRetry-After:5を返します。旧キーの経路別固定窓は従来仕様を維持します。IPの入口制限も別に存在します。

メディア

アップロードにX-North-Media-Purposeを指定します(posts=既定、profile、draft、dm)。全用途にmedia.write、加えてprofile.write/drafts.write/dm.writeが必要です。用途はinitialize時に固定し、finalize時に変更できません。同じ所有者でもdm用途を公開投稿へ流用できません。プロフィール/リスト画像はprofile、下書き/予約/送信待ちはdraftです。既存Webからアップロードしたposts用途画像を外部アプリが他用途へ転用することも拒否します。

返る /media/... の相対URLはAPIホストを基準に解決できます。非公開/DM/下書きの配信にもBearerが必要で、所有者、参加時刻、削除・非表示の状態に応じてアクセスを制限します。URLにトークンを含めないでください。非公開画像は共有キャッシュへ保存させません。

運用監査はユーザー/アプリ/操作/対象ID/結果/時刻だけを90日保存します。DM本文、Bearer、Cookie、認可codeを監査に保存しません。

Posts

ポストの作成、取得、削除、検索

複数のポストをまとめて取得する

ID をカンマ区切りで指定して、最大100件のポストを一度に取得します。

応答の並びは、指定した ID の順です。 取得できないポスト(削除済み、非公開、ブロック、ミュート)は結果から除かれるため、 指定した件数より少なく返ることがあります。

OAuth/個人トークンの必要権限: posts.read。

Authorizations:
bearerAuthoauth2
query Parameters
ids
required
string
Example: ids=2094961113505468189,2094959194493944012

ポストの ID をカンマで区切って指定します(100件まで)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

ポストを投稿する

本文、メディア、返信先、引用先を指定して投稿します。 本文とメディアはどちらか一方だけでも投稿できます。

投稿されたポストには、キーを発行するときに登録したアプリ名が投稿元として記録され、 ポストの詳細画面に表示されます。

OAuth/個人トークンの必要権限: posts.write。

Authorizations:
bearerAuthoauth2
header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Request Body schema: application/json
required
text
string
Default: ""

本文です。全角を2、半角を1として数え、280 まで投稿できます。

object
object

返信するときに指定します

quote_tweet_id
string

引用するポストの ID

object

OAuth/個人トークンのposts.writeでのみ作成できます。旧キーは403です。

Responses

Request samples

Content type
application/json
Example
{
  • "text": "はじめてのポスト"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

ポストを検索する

q には north の検索窓と同じ書き方を使えます。 from:ユーザー名 や #ハッシュタグ などの絞り込みも指定できます。

センシティブな内容は既定で結果に入りません。 ポストに内容の警告が付いているもの、および投稿者が 「自分のメディアをセンシティブとして扱う」を有効にしているアカウントの ポストは除きます(north の検索画面と同じ扱いです)。 /2/tweets/counts の件数も同じ条件で数えます。

OAuth/個人トークンの必要権限: posts.read。

Authorizations:
bearerAuthoauth2
query Parameters
q
required
string
Example: q=north

検索する語句

tab
string
Default: "latest"
Enum: "latest" "top"

latest は新しい順、top は話題順です。省略すると latest になります。

cursor
string

前の応答の nextCursor を指定すると、続きを取得できます。省略すると先頭から取得します。読み取れない値を指定すると400を返します。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

検索に一致するポストの件数を取得する

ポストの中身は返さず、件数だけを返します。 検索と同じ条件で数えるため、GET /2/tweets/search の結果と一致します。

期間ごとに区切って数える機能はありません。

センシティブな内容は既定で数に入りません(/2/tweets/search と同じ条件)。

OAuth/個人トークンの必要権限: posts.read。

Authorizations:
bearerAuthoauth2
query Parameters
q
required
string

検索する語句

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

ポストを1件取得する

非公開アカウントのポストは、承認されたフォロワーと本人だけが取得できます。

ミュートまたはブロックしている相手のポストには hiddenReason が付きます。 本文は返るので、伏せて表示するか、そのまま表示するかを選べます。

OAuth/個人トークンの必要権限: posts.read。

Authorizations:
bearerAuthoauth2
path Parameters
id
required
string^[0-9]+$
Example: 2094961113505468189

ポストの ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

ポストを削除する

自分のポストだけ削除できます。他の人のポストを指定すると 403 が返ります。

OAuth/個人トークンの必要権限: posts.delete。

Authorizations:
bearerAuthoauth2
path Parameters
id
required
string^[0-9]+$
Example: 2094961113505468189

ポストの ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

このポストを引用しているポストを取得する

引用元のポストを取得できない場合は 404 が返ります。

OAuth/個人トークンの必要権限: posts.read。

Authorizations:
bearerAuthoauth2
path Parameters
id
required
string^[0-9]+$
Example: 2094961113505468189

ポストの ID

query Parameters
cursor
string

前の応答の nextCursor を指定すると、続きを取得できます。省略すると先頭から取得します。読み取れない値を指定すると400を返します。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/tweets/{id}/conversation

OAuth/個人トークンの必要権限: posts.read。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/tweets/{id}/replies

OAuth/個人トークンの必要権限: posts.read。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/tweets/{id}/edit-history

OAuth/個人トークンの必要権限: posts.read。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/tweets/{id}/likes

OAuth/個人トークンの必要権限: posts.read。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/tweets/{id}/retweets

OAuth/個人トークンの必要権限: posts.read。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

PUT /2/tweets/{id}/edit

OAuth/個人トークンの必要権限: posts.edit。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

header Parameters
If-Match
string

GET /2/tweets/{id}が返したETag。古い場合412。

Request Body schema: application/json
required
text
string
mediaIds
Array of strings <= 4 items

Responses

Request samples

Content type
application/json
{
  • "text": "string",
  • "mediaIds": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/tweets/{id}/poll/vote

OAuth/個人トークンの必要権限: polls.vote。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Request Body schema: application/json
required
optionId
required
string

Responses

Request samples

Content type
application/json
{
  • "optionId": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/tweets/thread

OAuth/個人トークンの必要権限: posts.write。 旧キーでは利用できません。

Authorizations:
oauth2
header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Request Body schema: application/json
required
required
Array of objects (ThreadItemInput) [ 1 .. 25 ] items

Responses

Request samples

Content type
application/json
{
  • "items": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

Timelines

タイムラインの取得

自分のタイムラインを取得する

省略時は、フォローしているアカウントと自分のポストを新しい順に返します。 ranked=1 を付けると、おすすめの並びになります。

誰もフォローしていない場合、新しい順では自分のポストだけが返ります。 おすすめはフォロー関係を使わないため、この場合でもポストが返ります。

OAuth/個人トークンの必要権限: posts.read。

Authorizations:
bearerAuthoauth2
query Parameters
ranked
string
Default: "0"
Enum: "0" "1"

1 を指定するとおすすめの並びになります

cursor
string

前の応答の nextCursor を指定すると、続きを取得できます。省略すると先頭から取得します。読み取れない値を指定すると400を返します。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Reactions

いいねとリポスト

いいねする

応答には、操作後の状態といいねの数が入ります。 すでにいいねしているポストに送っても成功し、数は変わりません。

OAuth/個人トークンの必要権限: reactions.write。

Authorizations:
bearerAuthoauth2
path Parameters
id
required
string^[0-9]+$
Example: 2094961113505468189

ポストの ID

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

いいねを取り消す

OAuth/個人トークンの必要権限: reactions.write。

Authorizations:
bearerAuthoauth2
path Parameters
id
required
string^[0-9]+$
Example: 2094961113505468189

ポストの ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

リポストする

OAuth/個人トークンの必要権限: reactions.write。

Authorizations:
bearerAuthoauth2
path Parameters
id
required
string^[0-9]+$
Example: 2094961113505468189

ポストの ID

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

リポストを取り消す

OAuth/個人トークンの必要権限: reactions.write。

Authorizations:
bearerAuthoauth2
path Parameters
id
required
string^[0-9]+$
Example: 2094961113505468189

ポストの ID

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Users

アカウントの取得

複数のアカウントをまとめて取得する

ユーザー名をカンマ区切りで指定して、最大100件のアカウントを一度に取得します。 先頭の @ は付けても付けなくても構いません。

応答の並びは、指定した順です。存在しないアカウントは結果から除かれます。

OAuth/個人トークンの必要権限: users.read。

Authorizations:
bearerAuthoauth2
query Parameters
handles
required
string
Example: handles=northtest,tester

ユーザー名をカンマで区切って指定します(100件まで)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

キーの持ち主のアカウントを取得する

OAuth/個人トークンの必要権限: users.read。

Authorizations:
bearerAuthoauth2

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

PATCH /2/users/me

OAuth/個人トークンの必要権限: profile.write。 旧キーでは利用できません。

Authorizations:
oauth2
Request Body schema: application/json
required
name
string <= 50 characters
bio
string or null <= 160 characters
location
string or null <= 30 characters
website
string or null <= 100 characters
avatarMediaId
string or null
headerMediaId
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "bio": "string",
  • "location": "string",
  • "website": "string",
  • "avatarMediaId": "string",
  • "headerMediaId": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

アカウントを取得する

非公開アカウントでも、プロフィール自体は取得できます。 ポストとフォロー・フォロワーの一覧だけが取得できません。

OAuth/個人トークンの必要権限: users.read。

Authorizations:
bearerAuthoauth2
path Parameters
handle
required
string
Example: northtest

ユーザー名(先頭の @ は含めません)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

アカウントのポストを取得する

返信は入りません。 north のプロフィールの「ポスト」タブと同じで、 他の人への返信を除いた自分のポストとリポストだけを返します。 返信も含めて読みたいときは GET /2/users/{handle}/mentions や 個々のポストの会話を使ってください。 非公開アカウントのポストを取得できない場合は、空の一覧が返ります。 アカウント自体は存在するため 404 にはなりません。

OAuth/個人トークンの必要権限: posts.read。

Authorizations:
bearerAuthoauth2
path Parameters
handle
required
string
Example: northtest

ユーザー名(先頭の @ は含めません)

query Parameters
cursor
string

前の応答の nextCursor を指定すると、続きを取得できます。省略すると先頭から取得します。読み取れない値を指定すると400を返します。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

アカウント宛てのポストを取得する

本文に @ユーザー名 を含む公開のポストを新しい順に返します。 大文字と小文字は区別しません。リポストは含みません。

通知とは別のものです。通知は本人だけが読めますが、こちらは誰でも取得できます。

OAuth/個人トークンの必要権限: posts.read。

Authorizations:
bearerAuthoauth2
path Parameters
handle
required
string
Example: northtest

ユーザー名(先頭の @ は含めません)

query Parameters
cursor
string

前の応答の nextCursor を指定すると、続きを取得できます。省略すると先頭から取得します。読み取れない値を指定すると400を返します。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

アカウントがいいねしたポストを取得する

非公開アカウントのポストは、いいねの一覧にも含まれません。

OAuth/個人トークンの必要権限: posts.read。

Authorizations:
bearerAuthoauth2
path Parameters
handle
required
string
Example: northtest

ユーザー名(先頭の @ は含めません)

query Parameters
cursor
string

前の応答の nextCursor を指定すると、続きを取得できます。省略すると先頭から取得します。読み取れない値を指定すると400を返します。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

フォロワーを取得する

非公開アカウントのフォロワーは、承認されたフォロワーと本人だけが取得できます。 取得できない場合は空の一覧が返ります。

OAuth/個人トークンの必要権限: users.read。

Authorizations:
bearerAuthoauth2
path Parameters
handle
required
string
Example: northtest

ユーザー名(先頭の @ は含めません)

query Parameters
cursor
string

前の応答の nextCursor を指定すると、続きを取得できます。省略すると先頭から取得します。読み取れない値を指定すると400を返します。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

フォロー中のアカウントを取得する

OAuth/個人トークンの必要権限: users.read。

Authorizations:
bearerAuthoauth2
path Parameters
handle
required
string
Example: northtest

ユーザー名(先頭の @ は含めません)

query Parameters
cursor
string

前の応答の nextCursor を指定すると、続きを取得できます。省略すると先頭から取得します。読み取れない値を指定すると400を返します。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/users/me/blocked

OAuth/個人トークンの必要権限: moderation.read。 旧キーでは利用できません。

Authorizations:
oauth2
query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/users/{handle}/account-notifications

OAuth/個人トークンの必要権限: notifications.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
handle
required
string

対象の文字列IDまたはハンドル

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/users/{handle}/account-notifications

OAuth/個人トークンの必要権限: notifications.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
handle
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Relations

フォロー、ブロック、ミュート

フォローする

相手が非公開アカウントの場合はフォローリクエストになり、 承認されるまでフォローは成立しません。

どちらかがブロックしている場合は 403 が返ります。

OAuth/個人トークンの必要権限: follows.write。

Authorizations:
bearerAuthoauth2
path Parameters
handle
required
string
Example: northtest

ユーザー名(先頭の @ は含めません)

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

フォローを解除する

OAuth/個人トークンの必要権限: follows.write。

Authorizations:
bearerAuthoauth2
path Parameters
handle
required
string
Example: northtest

ユーザー名(先頭の @ は含めません)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

ブロックする

ブロックすると、双方のフォローが解除されます。

OAuth/個人トークンの必要権限: moderation.write。

Authorizations:
bearerAuthoauth2
path Parameters
handle
required
string
Example: northtest

ユーザー名(先頭の @ は含めません)

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

ブロックを解除する

OAuth/個人トークンの必要権限: moderation.write。

Authorizations:
bearerAuthoauth2
path Parameters
handle
required
string
Example: northtest

ユーザー名(先頭の @ は含めません)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

ミュートする

ミュートしてもフォローは解除されません。 相手のポストがタイムラインと通知から除かれます。

引用や会話の中に含まれるポストには hiddenReason が付いた状態で返ります。

OAuth/個人トークンの必要権限: moderation.write。

Authorizations:
bearerAuthoauth2
path Parameters
handle
required
string
Example: northtest

ユーザー名(先頭の @ は含めません)

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

ミュートを解除する

OAuth/個人トークンの必要権限: moderation.write。

Authorizations:
bearerAuthoauth2
path Parameters
handle
required
string
Example: northtest

ユーザー名(先頭の @ は含めません)

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/users/me/muted

OAuth/個人トークンの必要権限: moderation.read。 旧キーでは利用できません。

Authorizations:
oauth2
query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/follow-requests

OAuth/個人トークンの必要権限: users.read。 旧キーでは利用できません。

Authorizations:
oauth2
query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/follow-requests/{handle}

OAuth/個人トークンの必要権限: follows.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
handle
required
string

対象の文字列IDまたはハンドル

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/follow-requests/{handle}

OAuth/個人トークンの必要権限: follows.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
handle
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/muted-keywords

OAuth/個人トークンの必要権限: moderation.read。 旧キーでは利用できません。

Authorizations:
oauth2
query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Request Body schema: application/json
required
word
required
string [ 1 .. 100 ] characters
home
boolean
notifications
boolean
fromAnyone
boolean
duration
string
Enum: "forever" "24h" "7d" "30d"

Responses

Request samples

Content type
application/json
{
  • "word": "string",
  • "home": true,
  • "notifications": true,
  • "fromAnyone": true,
  • "duration": "forever"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/muted-keywords

OAuth/個人トークンの必要権限: moderation.write。 旧キーでは利用できません。

Authorizations:
oauth2
header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Request Body schema: application/json
required
word
required
string [ 1 .. 100 ] characters
home
boolean
notifications
boolean
fromAnyone
boolean
duration
string
Enum: "forever" "24h" "7d" "30d"

Responses

Request samples

Content type
application/json
{
  • "word": "string",
  • "home": true,
  • "notifications": true,
  • "fromAnyone": true,
  • "duration": "forever"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/muted-keywords/{id}

OAuth/個人トークンの必要権限: moderation.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Media

画像・GIF・動画のアップロード

メディアをアップロードする

multipart/form-data で1件ずつ送ります。 応答の id を POST /2/tweets の media.media_ids に指定してください。

100MB を超えるファイルは分割アップロードを使ってください。

アップロードしたまま、どのポストにも添付しなかったメディアは自動的に削除されます。

OAuth/個人トークンの必要権限: media.write。

Authorizations:
bearerAuthoauth2
header Parameters
X-North-Media-Purpose
string
Default: posts
Enum: "posts" "profile" "draft" "dm"

initialize/upload時の用途。全用途にmedia.write、私的用途は追加の権限が必要です。

Request Body schema: multipart/form-data
required
file
required
string <binary>

画像、GIF、動画

Responses

Response samples

Content type
application/json
Example
{
  • "id": "string",
  • "kind": "PHOTO",
  • "status": "PENDING",
  • "url": "string",
  • "thumbnailUrl": "string",
  • "width": 0,
  • "height": 0,
  • "durationMs": 0,
  • "altText": "string",
  • "sensitive": true,
  • "warning": "NUDITY"
}

分割アップロードを開始する

100MB を超えるファイルをアップロードするときに使います。

全体の大きさをここで申告するため、24時間の容量の上限を超える場合は 1片も送る前に 429 が返ります。

応答の chunkSize に従ってファイルを分割し、append に順番に送ってください。

OAuth/個人トークンの必要権限: media.write。

Authorizations:
bearerAuthoauth2
header Parameters
X-North-Media-Purpose
string
Default: posts
Enum: "posts" "profile" "draft" "dm"

initialize/upload時の用途。全用途にmedia.write、私的用途は追加の権限が必要です。

Request Body schema: application/json
required
size
required
integer

ファイル全体のバイト数

mimetype
required
string

Responses

Request samples

Content type
application/json
{
  • "size": 0,
  • "mimetype": "video/mp4"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

分割したファイルを送る

本文にファイルの一部をそのまま入れて送ります。先頭から順番に送ってください。

OAuth/個人トークンの必要権限: media.write。

Authorizations:
bearerAuthoauth2
path Parameters
id
required
string

分割アップロードの開始時に返された uploadId

header Parameters
X-North-Media-Purpose
string
Default: posts
Enum: "posts" "profile" "draft" "dm"

initialize/upload時の用途。全用途にmedia.write、私的用途は追加の権限が必要です。

Request Body schema: application/octet-stream
required
string <binary>

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

分割アップロードを完了する

すべての片を送ってから呼び出します。

動画はここから変換が始まるため、すぐには使えません。 status が READY になる前にポストへ添付すると 409 が返ります。

OAuth/個人トークンの必要権限: media.write。

Authorizations:
bearerAuthoauth2
path Parameters
id
required
string

分割アップロードの開始時に返された uploadId

header Parameters
X-North-Media-Purpose
string
Default: posts
Enum: "posts" "profile" "draft" "dm"

initialize/upload時の用途。全用途にmedia.write、私的用途は追加の権限が必要です。

Responses

Response samples

Content type
application/json
Example
{
  • "id": "string",
  • "kind": "PHOTO",
  • "status": "PENDING",
  • "url": "string",
  • "thumbnailUrl": "string",
  • "width": 0,
  • "height": 0,
  • "durationMs": 0,
  • "altText": "string",
  • "sensitive": true,
  • "warning": "NUDITY"
}

代替テキストを設定する

画像の内容を説明する文章を設定します。 自分がアップロードしたメディアにだけ設定できます。 ポストに添付したあとでも変更できます。

OAuth/個人トークンの必要権限: media.write。

Authorizations:
bearerAuthoauth2
path Parameters
id
required
string^[0-9]+$

メディアの ID

Request Body schema: application/json
required
required
object

Responses

Request samples

Content type
application/json
{
  • "alt_text": {
    }
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/media/{id}

OAuth/個人トークンの必要権限: media.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/media/{id}

OAuth/個人トークンの必要権限: media.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

PUT /2/media/{id}/warning

OAuth/個人トークンの必要権限: media.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Request Body schema: application/json
required
warning
required
string or null
Enum: "NUDITY" "VIOLENCE" "SENSITIVE" null

Responses

Request samples

Content type
application/json
{
  • "warning": "NUDITY"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/media/upload/{id}

OAuth/個人トークンの必要権限: media.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Notifications

自分宛ての通知

自分の通知を取得する

鍵の持ち主あての通知を新しい順に返します。他人の通知は取得できません。

同じ種類の通知はまとめられます(actorCount が人数、groupCount がまとめた件数)。 groupCount が 2 以上の行は複数のポストを覆うため、tweet は入りません。

画面の通知欄と同じ絞り込みが掛かります。ミュート・ブロックした相手のものと、 つながっていない非公開アカウントからの返信・メンション・引用は含まれません。

OAuth/個人トークンの必要権限: notifications.read。

Authorizations:
bearerAuthoauth2
query Parameters
cursor
string

前の応答の nextCursor を指定すると、続きを取得できます。省略すると先頭から取得します。読み取れない値を指定すると400を返します。

tab
string
Default: "all"
Enum: "all" "verified" "mentions"

all はすべて、verified は認証済みアカウントから、 mentions は自分宛ての返信とメンションだけを返します。 省略すると all です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

自分宛ての新着を受け取り続ける

自分宛ての通知を Server-Sent Events(SSE)で受け取ります。 Authorization: Bearer … を付けて接続してください。

event: notification
data: {"id":"…","kind":"LIKE","tweetId":"…","createdAt":"…"}

kind は FOLLOW REPLY MENTION QUOTE LIKE RETWEET POST です。 イベントに本文は含まれません。通知を受け取ったら GET /2/notifications で一覧を取得してください。

25秒ごとに heartbeat を送り、再接続の待機時間は5秒です。 過去のイベントは再送しません。Last-Event-ID による再開には対応していません。 再接続後は通知一覧を取得してください。

同時接続は1ユーザー5接続、1資格2接続、1アプリ500接続までです。 資格の失効はイベント送信時と heartbeat で検査します。 OAuth/個人トークンには notifications.read が必要です。

Authorizations:
bearerAuthoauth2

Responses

Response samples

Content type
application/json
{
  • "errors": [
    ]
}

未読の通知の数を取得する

一覧より軽いので、様子を見るだけならこちらを使ってください。

ベル通知(フォロー中のアカウントの新しいポスト)は、何件あってもまとめて 1 と数えます。

OAuth/個人トークンの必要権限: notifications.read。

Authorizations:
bearerAuthoauth2

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

通知を既読にする

未読の通知を既読にします。通知の詳細フィルターで隠れているものは既読にしません。 読み取りと書き込みの権限が必要です。読み取りのみのキーでは 403 を返します。

OAuth/個人トークンの必要権限: notifications.write。

Authorizations:
bearerAuthoauth2
header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

OAuth

Device codeを発行する

application/x-www-form-urlencoded、またはapplication/jsonを受け付けます。応答はOAuthのフラット形式。Cache-Control:no-store。

Request Body schema:
required
client_id
required
string
scope
required
string

Responses

Request samples

Content type
No sample

Response samples

Content type
application/json
{}

認可code/Device codeを交換、または更新する

application/x-www-form-urlencoded、またはapplication/jsonを受け付けます。応答はOAuthのフラット形式。Cache-Control:no-store。

Request Body schema:
required
client_id
required
string
grant_type
required
string
Enum: "authorization_code" "urn:ietf:params:oauth:grant-type:device_code" "refresh_token"
code
string
code_verifier
string [ 43 .. 128 ] characters
redirect_uri
string
device_code
string
refresh_token
string

Responses

Request samples

Content type
No sample

Response samples

Content type
application/json
{
  • "access_token": "string",
  • "refresh_token": "string",
  • "token_type": "Bearer",
  • "expires_in": 3600,
  • "scope": "string"
}

このアプリの許可全体を取り消す

application/x-www-form-urlencoded、またはapplication/jsonを受け付けます。応答はOAuthのフラット形式。Cache-Control:no-store。

Request Body schema:
required
client_id
required
string
token
required
string

Responses

Request samples

Content type
No sample

Response samples

Content type
application/json
{ }

PKCEの認可要求をnorthの同意画面へ送る

認証ホストからnorthの同意画面へ302で移動します。redirect_uriは登録したURLと完全一致、S256のみ。stateを使用しクライアント側で検査してください。

query Parameters
client_id
required
string
response_type
required
string
Value: "code"
redirect_uri
required
string <uri>
scope
required
string
state
string <= 1024 characters
code_challenge
required
string = 43 characters
code_challenge_method
required
string
Value: "S256"

Responses

Response samples

Content type
application/json
{
  • "error": "string"
}

Bookmarks

GET /2/bookmarks

OAuth/個人トークンの必要権限: bookmarks.read。 旧キーでは利用できません。

Authorizations:
oauth2
query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/bookmarks

OAuth/個人トークンの必要権限: bookmarks.write。 旧キーでは利用できません。

Authorizations:
oauth2

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/tweets/{id}/bookmark

OAuth/個人トークンの必要権限: bookmarks.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/tweets/{id}/bookmark

OAuth/個人トークンの必要権限: bookmarks.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/bookmark-folders

OAuth/個人トークンの必要権限: bookmarks.read。 旧キーでは利用できません。

Authorizations:
oauth2
query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/bookmark-folders

OAuth/個人トークンの必要権限: bookmarks.write。 旧キーでは利用できません。

Authorizations:
oauth2
header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Request Body schema: application/json
required
name
required
string [ 1 .. 25 ] characters

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

PATCH /2/bookmark-folders/{id}

OAuth/個人トークンの必要権限: bookmarks.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Request Body schema: application/json
required
name
required
string [ 1 .. 25 ] characters

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/bookmark-folders/{id}

OAuth/個人トークンの必要権限: bookmarks.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/bookmark-folders/{id}/bookmarks

OAuth/個人トークンの必要権限: bookmarks.read。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/tweets/{id}/bookmark-folders

OAuth/個人トークンの必要権限: bookmarks.read。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

PUT /2/bookmark-folders/{folderId}/tweets/{tweetId}

OAuth/個人トークンの必要権限: bookmarks.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
folderId
required
string

対象の文字列IDまたはハンドル

tweetId
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/bookmark-folders/{folderId}/tweets/{tweetId}

OAuth/個人トークンの必要権限: bookmarks.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
folderId
required
string

対象の文字列IDまたはハンドル

tweetId
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Lists

GET /2/lists

OAuth/個人トークンの必要権限: lists.read。 旧キーでは利用できません。

Authorizations:
oauth2
query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/lists

OAuth/個人トークンの必要権限: lists.write。 旧キーでは利用できません。

Authorizations:
oauth2
header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Request Body schema: application/json
required
name
required
string [ 1 .. 25 ] characters
description
string or null <= 100 characters
private
boolean
bannerMediaId
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "private": true,
  • "bannerMediaId": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/lists/memberships

OAuth/個人トークンの必要権限: lists.read。 旧キーでは利用できません。

Authorizations:
oauth2
query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

handle
required
string

参加状態を調べるアカウント。返るのは自分の所有リストのみ。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/lists/{id}

OAuth/個人トークンの必要権限: lists.read。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

PATCH /2/lists/{id}

OAuth/個人トークンの必要権限: lists.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Request Body schema: application/json
required
name
string [ 1 .. 25 ] characters
description
string or null <= 100 characters
private
boolean
bannerMediaId
string or null

Responses

Request samples

Content type
application/json
{
  • "name": "string",
  • "description": "string",
  • "private": true,
  • "bannerMediaId": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/lists/{id}

OAuth/個人トークンの必要権限: lists.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/lists/{id}/members

OAuth/個人トークンの必要権限: lists.read。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/lists/{id}/timeline

OAuth/個人トークンの必要権限: lists.read。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/lists/{id}/members/{handle}

OAuth/個人トークンの必要権限: lists.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

handle
required
string

対象の文字列IDまたはハンドル

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/lists/{id}/members/{handle}

OAuth/個人トークンの必要権限: lists.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

handle
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/lists/{id}/follow

OAuth/個人トークンの必要権限: lists.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/lists/{id}/follow

OAuth/個人トークンの必要権限: lists.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/lists/{id}/pin

OAuth/個人トークンの必要権限: lists.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/lists/{id}/pin

OAuth/個人トークンの必要権限: lists.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Drafts

GET /2/drafts

OAuth/個人トークンの必要権限: drafts.read。 旧キーでは利用できません。

Authorizations:
oauth2
query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/drafts

OAuth/個人トークンの必要権限: drafts.write。 旧キーでは利用できません。

Authorizations:
oauth2
header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Request Body schema: application/json
required
required
Array of objects (DraftItemInput) [ 1 .. 25 ] items
quotedId
string or null
inReplyToId
string or null

Responses

Request samples

Content type
application/json
{
  • "items": [
    ],
  • "quotedId": "string",
  • "inReplyToId": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/drafts

OAuth/個人トークンの必要権限: drafts.write。 旧キーでは利用できません。

Authorizations:
oauth2
Request Body schema: application/json
required
ids
required
Array of strings [ 1 .. 200 ] items

Responses

Request samples

Content type
application/json
{
  • "ids": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

PATCH /2/drafts/{id}

OAuth/個人トークンの必要権限: drafts.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Request Body schema: application/json
required
required
Array of objects (DraftItemInput) [ 1 .. 25 ] items
quotedId
string or null
inReplyToId
string or null

Responses

Request samples

Content type
application/json
{
  • "items": [
    ],
  • "quotedId": "string",
  • "inReplyToId": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/scheduled-posts

OAuth/個人トークンの必要権限: drafts.read。 旧キーでは利用できません。

Authorizations:
oauth2
query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/scheduled-posts

OAuth/個人トークンの必要権限: posts.schedule, posts.write。 旧キーでは利用できません。

Authorizations:
oauth2
header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Request Body schema: application/json
required
required
object (DraftItemInput)
scheduledAt
required
string <date-time>
quotedId
string or null
inReplyToId
string or null
fromDraftId
string or null

Responses

Request samples

Content type
application/json
{
  • "item": {
    },
  • "scheduledAt": "2019-08-24T14:15:22Z",
  • "quotedId": "string",
  • "inReplyToId": "string",
  • "fromDraftId": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/scheduled-posts

OAuth/個人トークンの必要権限: posts.schedule, posts.write。 旧キーでは利用できません。

Authorizations:
oauth2
Request Body schema: application/json
required
ids
required
Array of strings [ 1 .. 200 ] items

Responses

Request samples

Content type
application/json
{
  • "ids": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

PATCH /2/scheduled-posts/{id}

OAuth/個人トークンの必要権限: posts.schedule, posts.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Request Body schema: application/json
required
required
object (DraftItemInput)
scheduledAt
required
string <date-time>
quotedId
string or null
inReplyToId
string or null
fromDraftId
string or null

Responses

Request samples

Content type
application/json
{
  • "item": {
    },
  • "scheduledAt": "2019-08-24T14:15:22Z",
  • "quotedId": "string",
  • "inReplyToId": "string",
  • "fromDraftId": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/pending-posts

OAuth/個人トークンの必要権限: drafts.read。 旧キーでは利用できません。 Webの「送信を取り消す」設定が対象の投稿種別で有効である必要があります。

Authorizations:
oauth2
query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/pending-posts

OAuth/個人トークンの必要権限: drafts.write, posts.write。 旧キーでは利用できません。 Webの「送信を取り消す」設定が対象の投稿種別で有効である必要があります。

Authorizations:
oauth2
header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Request Body schema: application/json
required
required
object (DraftItemInput)
inReplyToId
string or null
fromDraftId
string or null

Responses

Request samples

Content type
application/json
{
  • "item": {
    },
  • "inReplyToId": "string",
  • "fromDraftId": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/pending-posts/{id}/send

OAuth/個人トークンの必要権限: drafts.write, posts.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/pending-posts/{id}/undo

OAuth/個人トークンの必要権限: drafts.write。 旧キーでは利用できません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

DM

GET /2/dm/conversations

OAuth/個人トークンの必要権限: dm.read。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

requests
string
Enum: "true" "false"

trueで未承認リクエスト一覧

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/dm/conversations

OAuth/個人トークンの必要権限: dm.conversations.write。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Request Body schema: application/json
required
handle
string [ 1 .. 15 ] characters
handles
Array of strings [ 1 .. 19 ] items [ items <= 15 characters ]

Responses

Request samples

Content type
application/json
{
  • "handle": "string",
  • "handles": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

PATCH /2/dm/conversations/{id}

OAuth/個人トークンの必要権限: dm.conversations.write。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Request Body schema: application/json
required
name
required
string [ 1 .. 50 ] characters

Responses

Request samples

Content type
application/json
{
  • "name": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/dm/conversations/{id}/members

OAuth/個人トークンの必要権限: dm.conversations.write。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Request Body schema: application/json
required
handles
required
Array of strings [ 1 .. 19 ] items [ items <= 15 characters ]

Responses

Request samples

Content type
application/json
{
  • "handles": [
    ]
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/dm/conversations/{id}/members/me

OAuth/個人トークンの必要権限: dm.conversations.write。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/dm/conversations/{id}/messages

OAuth/個人トークンの必要権限: dm.read。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/dm/conversations/{id}/messages

OAuth/個人トークンの必要権限: dm.write。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Request Body schema: application/json
required
text
string <= 10000 characters
mediaIds
Array of strings <= 1 items
replyToId
string or null

Responses

Request samples

Content type
application/json
{
  • "text": "string",
  • "mediaIds": [
    ],
  • "replyToId": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

PATCH /2/dm/conversations/{id}/messages/{messageId}

OAuth/個人トークンの必要権限: dm.write。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

messageId
required
string

対象の文字列IDまたはハンドル

Request Body schema: application/json
required
text
required
string [ 1 .. 10000 ] characters

Responses

Request samples

Content type
application/json
{
  • "text": "string"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/dm/conversations/{id}/messages/{messageId}

OAuth/個人トークンの必要権限: dm.delete。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

messageId
required
string

対象の文字列IDまたはハンドル

query Parameters
scope
string
Enum: "self" "everyone"

省略/selfは自分から非表示、everyoneは自分の送信内容を全員から削除

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

PUT /2/dm/conversations/{id}/messages/{messageId}/reaction

OAuth/個人トークンの必要権限: dm.write。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

messageId
required
string

対象の文字列IDまたはハンドル

Request Body schema: application/json
required
emoji
required
string
Enum: "😂" "😲" "😢" "❤️" "🔥" "👍" "👎"

Responses

Request samples

Content type
application/json
{
  • "emoji": "😂"
}

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/dm/conversations/{id}/messages/{messageId}/reaction

OAuth/個人トークンの必要権限: dm.write。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

messageId
required
string

対象の文字列IDまたはハンドル

query Parameters
scope
string
Enum: "self" "everyone"

省略/selfは自分から非表示、everyoneは自分の送信内容を全員から削除

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/dm/conversations/{id}/read

OAuth/個人トークンの必要権限: dm.receipts.write。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

POST /2/dm/conversations/{id}/accept

OAuth/個人トークンの必要権限: dm.requests.write。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

header Parameters
Idempotency-Key
string [ 1 .. 128 ] characters

同じ操作の再試行用。24時間保持。

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

DELETE /2/dm/conversations/{id}/request

OAuth/個人トークンの必要権限: dm.requests.write。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
path Parameters
id
required
string

対象の文字列IDまたはハンドル

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/dm/unread-count

OAuth/個人トークンの必要権限: dm.read。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

GET /2/dm/recipients

OAuth/個人トークンの必要権限: dm.read。 旧キーでは利用できません。 本人の参加・参加開始時刻・受信/ブロック条件を検査します。GETは既読化しません。

Authorizations:
oauth2
query Parameters
cursor
string

同じ操作が返したnextCursor。OAuthは30分・許可/クエリに束縛されます。nextCursorのない一覧は指定不要です。

q
string

相手の検索文字列

Responses

Response samples

Content type
application/json
{
  • "data": {
    }
}

Trends