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 v2 ID가 기본적으로 문자열로 반환됨 X API v1.1 id(정수)와 id_str(문자열) 모두 반환 — 항상 id_str 사용
ID 작업
ID 저장
데이터베이스에 ID를 문자열 또는 64비트 정수로 저장하세요:
데이터베이스 권장 유형 PostgreSQL BIGINT 또는 TEXTMySQL BIGINT UNSIGNED 또는 VARCHAR(20)MongoDB String SQLite TEXT (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라고도 함 User 2244994945오래된 계정은 더 짧은 ID를 가짐 List 1234567890Space 1YqGodQbNXDxv영숫자, Snowflake 형식 아님 DM Event 1234567890123456789
관련 리소스
Data Dictionary 각 객체 유형에 대한 ID 필드를 확인하세요.
Post Lookup ID로 게시물을 가져오세요.