メインコンテンツへスキップ
X API のあらゆるオブジェクト (投稿、ユーザー、リスト、DM、スペース) には一意の ID が割り当てられています。これらの ID の仕組みを理解することで、信頼性の高い統合を構築できます。

ID の形式

X の ID は、「Snowflake」と呼ばれるシステムで生成される 64 ビット符号なし整数 です。各 ID には次の情報がエンコードされています。
  • Timestamp — オブジェクトが作成された時刻
  • Worker number — どのサーバーがその ID を生成したか
  • Sequence number — そのミリ秒内での順序
そのため、ID はおおよそ時間順になっており、より大きな ID は一般的に新しいオブジェクトを表します。
ID は、単一のオブジェクト type 内だけでなく、X 全体でグローバルに一意です。

文字列表現と整数表現

コード内では常に文字列のidを使用してください。 一部のプログラミング言語 (JavaScript など) は 64 ビット整数を正確に表現できません。
JavaScript では、整数は 53 ビットに制限されています。このため、大きな id では精度が失われます。
// This loses precision!
const id = 10765432100123456789;
console.log(id.toString()); // "10765432100123458000" — 誤り!

// Use strings instead
const id = "10765432100123456789";
console.log(id); // "10765432100123456789" — correct!

API バージョン

バージョンID 形式
X API v2ID はデフォルトで文字列として返されます
X API v1.1id (整数) と id_str (文字列) の両方を返します — 常に id_str を使用してください

ID の扱い方

id の保存

データベースでは id を文字列または 64 ビット整数として保存することを推奨します:
データベース推奨される型
PostgreSQLBIGINT または TEXT
MySQLBIGINT UNSIGNED または VARCHAR(20)
MongoDB文字列
SQLiteTEXT (SQLite の整数は最大 63 ビットです)

id の比較

時系列順に並べる目的で id を比較する場合:
# Python - safe for 64-bit integers
if int(id1) > int(id2):
    print("id1 is newer")

# JavaScript - 文字列として比較(同じ長さのIDに対して辞書順で機能)
# またはBigIntを使用
if (BigInt(id1) > BigInt(id2)) {
    console.log("id1 is newer");
}

一般的な ID の種類

オブジェクトID の例注記
ポスト (ツイート)1234567890123456789Tweet ID とも呼ばれます
ユーザー2244994945古いアカウントの ID はより短くなります
リスト1234567890
スペース1YqGodQbNXDxv英数字で構成されており、Snowflake 形式ではありません
DM イベント1234567890123456789

Data Dictionary

各オブジェクトの種類ごとの ID フィールドを確認できます。

ポスト検索

ID を指定して投稿を取得します。