Skip to main content
X API のすべてのオブジェクト — 投稿、ユーザー、リスト、DM、スペース — には固有の ID があります。これらの ID がどのように機能するかを理解することで、信頼性の高い連携を構築できます。

ID 形式

X ID は、「Snowflake」と呼ばれるシステムで生成される 64 ビット符号なし整数 です。各 ID は以下をエンコードします:
  • タイムスタンプ — オブジェクトが作成された時刻
  • ワーカー番号 — ID を生成したサーバー
  • シーケンス番号 — そのミリ秒内の順序
つまり、ID はおおよそ時間順になっています: 高い ID は一般的に新しいオブジェクトを表します。
ID は単一のオブジェクトタイプ内だけでなく、X 全体でグローバルに一意です。

文字列 vs 整数表現

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

// 代わりに文字列を使用
const id = "10765432100123456789";
console.log(id); // "10765432100123456789" — 正しい!

API バージョン

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

ID の取り扱い

ID の保存

ID は文字列または 64 ビット整数としてデータベースに保存します:
データベース推奨タイプ
PostgreSQLBIGINT または TEXT
MySQLBIGINT UNSIGNED または VARCHAR(20)
MongoDBString
SQLiteTEXT (SQLite の整数は最大 63 ビット)

ID の比較

時系列順に ID を比較する場合:
# Python - 64 ビット整数で安全
if int(id1) > int(id2):
    print("id1 is newer")

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

一般的な ID の種類

オブジェクトID の例備考
Post (Tweet)1234567890123456789Tweet ID とも呼ばれます
User2244994945古いアカウントは短い ID を持ちます
List1234567890
Space1YqGodQbNXDxv英数字、Snowflake 形式ではない
DM Event1234567890123456789

関連リソース

Data Dictionary

各オブジェクトタイプの ID フィールドを確認します。

Post Lookup

ID で投稿を取得します。