Skip to main content
X API의 모든 객체 — 게시물, 사용자, 리스트, DM, spaces — 에는 고유 ID가 있습니다. 이러한 ID가 어떻게 작동하는지 이해하면 안정적인 통합을 구축할 수 있습니다.

ID 형식

X ID는 “Snowflake”라는 시스템을 사용해 생성된 64비트 부호 없는 정수입니다. 각 ID는 다음을 인코딩합니다:
  • 타임스탬프 — 객체가 언제 생성되었는지
  • 워커 번호 — 어떤 서버가 ID를 생성했는지
  • 시퀀스 번호 — 해당 밀리초 내 순서
이는 ID가 대략 시간순으로 정렬됨을 의미합니다: 더 높은 ID는 일반적으로 더 새로운 객체를 나타냅니다.
ID는 단일 객체 유형 내에서만이 아니라 X 전체에서 전역적으로 고유합니다.

문자열 vs. 정수 표현

코드에서는 항상 문자열 ID를 사용하세요. 일부 프로그래밍 언어(예: JavaScript)는 64비트 정수를 정확하게 표현할 수 없습니다.
JavaScript에서 정수는 53비트로 제한됩니다. 이로 인해 큰 ID에서 정밀도가 손실됩니다:
// This loses precision!
const id = 10765432100123456789;
console.log(id.toString()); // "10765432100123458000" — wrong!

// 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)
MongoDBString
SQLiteTEXT (SQLite 정수는 최대 63비트)

ID 비교

시간순으로 ID를 비교할 때:
# Python - safe for 64-bit integers
if int(id1) > int(id2):
    print("id1 is newer")

# JavaScript - compare as strings (lexicographically works for same-length IDs)
# Or use 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로 게시물을 가져오세요.