메인 콘텐츠로 건너뛰기
매일 수만 명의 개발자가 X API에 요청을 보냅니다. 이러한 방대한 요청량을 관리하기 위해 수행할 수 있는 요청 수에 제한을 둡니다. 이 제한은 개발자 커뮤니티가 신뢰하는 안정적이고 확장 가능한 API를 제공하는 데 기여합니다. 허용되는 최대 요청 수는 시간 간격을 기준으로 하며, 일반적으로 특정 기간(윈도우) 동안 적용됩니다. 가장 일반적인 간격은 15분입니다. 예를 들어, 15분당 900건의 한도가 있는 엔드포인트는 임의의 15분 구간에 최대 900건의 요청을 허용합니다. 요청 한도는 인증 방식에 따라 달라집니다. 예를 들어 OAuth 1.0a 사용자 컨텍스트를 사용하는 경우, 각 사용자 집합의 액세스 토큰에 기간별 자체 한도가 적용됩니다. 반면 OAuth 2.0 베어러 토큰을 사용하는 경우, 앱에는 기간별로 별도의 한도가 적용됩니다. 이러한 한도를 초과하면 오류가 반환됩니다.

목차

X API v2 요청 한도

아래 표에는 각 X API 유료 요금제의 요청 한도가 정리되어 있습니다. 이 한도는 개발자 포털의 제품 섹션에서도 확인할 수 있습니다.
엔드포인트Pro 제한 Basic 제한 Free 제한
게시물
DELETE /2/tweets/:id15분당 50회 요청
사용자 기준
15분당 5회 요청
사용자 기준
24시간당 17회 요청
사용자 기준
24시간당 17회 요청
앱 기준
DELETE /2/users/:id/likes/:tweet_id15분당 50회 요청
사용자당
24시간당 100회 요청
사용자당
15분당 1회 요청
사용자당
DELETE /2/users/:id/retweets/:tweet_id15분당 50회 요청
사용자 기준
15분당 5회 요청
사용자 기준
15분당 1회 요청
사용자 기준
GET /2/tweets15분당 요청 900회
사용자 기준
15분당 요청 450회
앱 기준
15분당 요청 15회
사용자 기준
15분당 요청 15회
앱 기준
15분당 요청 1회
사용자 기준
15분당 요청 1회
앱 기준
GET /2/tweets/:id15분당 900회 요청
사용자 기준
15분당 450회 요청
앱 기준
15분당 15회 요청
사용자 기준
15분당 15회 요청
앱 기준
15분당 1회 요청
사용자 기준
15분당 1회 요청
앱 기준
GET /2/tweets/:id/liking_users15분당 75회 요청
사용자 기준
15분당 75회 요청
앱 기준
15분당 5회 요청
사용자 기준
15분당 25회 요청
앱 기준
15분당 1회 요청
사용자 기준
15분당 1회 요청
앱 기준
GET /2/tweets/:id/quote_tweets15분당 요청 75회
사용자 기준
15분당 요청 75회
앱 기준
15분당 요청 5회
사용자 기준
15분당 요청 5회
앱 기준
15분당 요청 1회
사용자 기준
15분당 요청 1회
앱 기준
GET /2/tweets/:id/retweeted_by15분당 75회 요청
사용자 기준
15분당 75회 요청
앱 기준
15분당 5회 요청
사용자 기준
15분당 5회 요청
앱 기준
15분당 1회 요청
사용자 기준
15분당 1회 요청
앱 기준
GET /2/tweets/counts/all15분당 300회 요청
앱 단위
GET /2/tweets/counts/recent300건 / 15분
앱 기준
5건 / 15분
앱 기준
1건 / 15분
앱 기준
GET /2/tweets/search/all초당 요청 1건
사용자별
초당 요청 1건
앱별
GET /2/tweets/search/recent15분당 요청 300회
사용자 기준
15분당 요청 450회
앱 기준
15분당 요청 60회
사용자 기준
15분당 요청 60회
앱 기준
15분당 요청 1회
사용자 기준
15분당 요청 1회
앱 기준
GET /2/tweets/search/stream15분당 50회 요청
앱 기준
GET /2/tweets/search/stream/rules15분당 450회 요청
앱 기준
GET /2/users/:id/liked_tweets15분 내 75회 요청
사용자 기준
15분 내 75회 요청
앱 기준
15분 내 5회 요청
사용자 기준
15분 내 5회 요청
앱 기준
15분 내 1회 요청
사용자 기준
15분 내 1회 요청
앱 기준
GET /2/users/:id/mentions15분당 300회 요청
사용자 기준
15분당 450회 요청
앱 기준
15분당 10회 요청
사용자 기준
15분당 15회 요청
앱 기준
15분당 1회 요청
사용자 기준
15분당 1회 요청
앱 기준
GET /2/users/:id/timelines/reverse_chronological15분당 180회 요청
사용자별
15분당 5회 요청
사용자별
15분당 1회 요청
사용자별
GET /2/users/:id/tweets15분당 900회 요청
사용자 기준
15분당 1500회 요청
앱 기준
15분당 5회 요청
사용자 기준
15분당 10회 요청
앱 기준
15분당 1회 요청
사용자 기준
15분당 1회 요청
앱 기준
GET /2/users/reposts_of_me15분당 75회 요청
사용자별
15분당 75회 요청
사용자별
15분당 1회 요청
사용자별
POST /2/tweets요청 100회 / 15분
사용자 기준
요청 10,000회 / 24시간
앱 기준
요청 100회 / 24시간
사용자 기준
요청 1,667회 / 24시간
앱 기준
요청 17회 / 24시간
사용자 기준
요청 17회 / 24시간
앱 기준
POST /2/tweets/search/stream/rules15분당 100회 요청
앱 기준
POST /2/users/:id/likes24시간 내 1,000회 요청
사용자 기준
24시간 내 200회 요청
사용자 기준
15분 내 1회 요청
사용자 기준
POST /2/users/:id/retweets15분당 50건 요청
사용자 기준
15분당 5건 요청
사용자 기준
15분당 1건 요청
사용자 기준
PUT /2/tweets/:tweet_id/hidden15분당 요청 50회
사용자 기준
15분당 요청 5회
사용자 기준
15분당 요청 1회
사용자 기준
사용자
DELETE /2/users/:source_user_id/following/:target_user_id15분당 요청 50회
사용자당
15분당 요청 5회
사용자당
15분당 요청 1회
사용자당
DELETE /2/users/:source_user_id/muting/:target_user_id15분당 요청 50회
사용자 기준
15분당 요청 5회
사용자 기준
15분당 요청 1회
사용자 기준
GET /2/users15분당 900회 요청
사용자 기준
15분당 300회 요청
앱 기준
24시간당 100회 요청
사용자 기준
24시간당 500회 요청
앱 기준
24시간당 1회 요청
사용자 기준
24시간당 1회 요청
앱 기준
GET /2/users/:id15분당 900건 요청
사용자 기준
15분당 300건 요청
앱 기준
24시간당 100건 요청
사용자 기준
24시간당 500건 요청
앱 기준
24시간당 1건 요청
사용자 기준
24시간당 1건 요청
앱 기준
GET /2/users/:id/blocking15건 요청 / 15분
사용자 기준
5건 요청 / 15분
사용자 기준
1건 요청 / 15분
사용자 기준
GET /2/users/:id/muting15회 요청 / 15분
사용자당
100회 요청 / 24시간
사용자당
1회 요청 / 24시간
사용자당
GET /2/users/by15분당 900건
사용자 기준
15분당 300건
앱 기준
24시간당 100건
사용자 기준
24시간당 500건
앱 기준
24시간당 1건
사용자 기준
24시간당 1건
앱 기준
GET /2/users/by/username/:username15분당 900회 요청
사용자별
15분당 300회 요청
앱별
24시간당 100회 요청
사용자별
24시간당 500회 요청
앱별
15분당 3회 요청
사용자별
15분당 3회 요청
앱별
GET /2/users/me15분당 75회 요청
사용자별
24시간당 250회 요청
사용자별
24시간당 25회 요청
사용자별
GET /2/users/search15분당 900회 요청
사용자 기준
15분당 300회 요청
앱 기준
POST /2/users/:id/following15분당 요청 50회
사용자 기준
15분당 요청 5회
사용자 기준
15분당 요청 1회
사용자 기준
POST /2/users/:id/muting15분당 요청 50회
사용자당
15분당 요청 5회
사용자당
15분당 요청 1회
사용자당
스페이스
GET /2/spaces300회 요청 / 15분
사용자 기준
300회 요청 / 15분
앱 기준
5회 요청 / 15분
사용자 기준
25회 요청 / 15분
앱 기준
1회 요청 / 15분
사용자 기준
1회 요청 / 15분
앱 기준
GET /2/spaces/:id15분당 300회 요청
사용자 기준
15분당 300회 요청
앱 기준
15분당 5회 요청
사용자 기준
15분당 25회 요청
앱 기준
15분당 1회 요청
사용자 기준
15분당 1회 요청
앱 기준
GET /2/spaces/:id/buyers15분당 300회 요청
사용자 기준
15분당 300회 요청
앱 기준
15분당 5회 요청
사용자 기준
15분당 25회 요청
앱 기준
15분당 1회 요청
사용자 기준
15분당 1회 요청
앱 기준
GET /2/spaces/:id/tweets15분당 300회 요청
사용자당
15분당 300회 요청
앱당
15분당 5회 요청
사용자당
15분당 25회 요청
앱당
15분당 1회 요청
사용자당
15분당 1회 요청
앱당
GET /2/spaces/by/creator_ids15분당 300회 요청
사용자 기준
초당 1회 요청
앱 기준
15분당 5회 요청
사용자 기준
초당 25회 요청
앱 기준
초당 1회 요청
사용자 기준
15분당 1회 요청
앱 기준
GET /2/spaces/search15분당 300건 요청
사용자 기준
15분당 300건 요청
앱 기준
15분당 5건 요청
사용자 기준
15분당 25건 요청
앱 기준
15분당 1건 요청
사용자 기준
15분당 1건 요청
앱 기준
다이렉트 메시지
DELETE /2/dm_events/:id24시간 내 1,500회 요청
사용자당
24시간 내 4,000회 요청
앱당
15분 내 200회 요청
사용자당
24시간 내 2,500회 요청
앱당
GET /2/dm_conversations/:dm_conversation_id/dm_events15회 요청 / 15분
사용자 기준
1회 요청 / 24시간
사용자 기준
GET /2/dm_conversations/with/:participant_id/dm_events15건 요청 / 15분
사용자당
1건 요청 / 24시간
사용자당
GET /2/dm_events15건 요청 / 15분
사용자별
1건 요청 / 24시간
사용자별
GET /2/dm_events/:id요청 15회 / 15분
사용자당
요청 5회 / 24시간
사용자당
POST /2/dm_conversations15건 요청 / 15분
사용자 기준
1440건 요청 / 24시간
앱 기준
1건 요청 / 24시간
사용자 기준
1건 요청 / 24시간
앱 기준
POST /2/dm_conversations/:dm_conversation_id/messages요청 15회 / 15분
사용자 기준
요청 1440회 / 24시간
앱 기준
요청 1회 / 24시간
사용자 기준
요청 1회 / 24시간
앱 기준
POST /2/dm_conversations/with/:participant_id/messages24시간당 1440회 요청
사용자 기준
24시간당 1440회 요청
앱 기준
24시간당 1회 요청
사용자 기준
24시간당 1회 요청
앱 기준
리스트
DELETE /2/lists/:id15분당 요청 300회
사용자 기준
15분당 요청 5회
사용자 기준
15분당 요청 1회
사용자 기준
DELETE /2/lists/:id/members/:user_id15분당 300회 요청
사용자 기준
15분당 5회 요청
사용자 기준
15분당 1회 요청
사용자 기준
DELETE /2/users/:id/followed_lists/:list_id15분당 요청 50회
사용자 기준
15분당 요청 5회
사용자 기준
15분당 요청 1회
사용자 기준
DELETE /2/users/:id/pinned_lists/:list_id15분당 요청 50회
사용자당
15분당 요청 5회
사용자당
15분당 요청 1회
사용자당
GET /2/lists/:id15분당 요청 75회
사용자 기준
15분당 요청 75회
앱 기준
15분당 요청 5회
사용자 기준
15분당 요청 5회
앱 기준
15분당 요청 1회
사용자 기준
15분당 요청 1회
앱 기준
GET /2/lists/:id/members15분당 900회 요청
사용자 기준
15분당 900회 요청
앱 기준
15분당 5회 요청
사용자 기준
15분당 25회 요청
앱 기준
15분당 1회 요청
사용자 기준
15분당 1회 요청
앱 기준
GET /2/lists/:id/tweets900회 요청 / 15분
사용자당
900회 요청 / 15분
앱당
5회 요청 / 15분
사용자당
25회 요청 / 15분
앱당
GET /2/users/:id/list_memberships15분당 75회 요청
사용자 기준
15분당 75회 요청
앱 기준
15분당 5회 요청
사용자 기준
15분당 25회 요청
앱 기준
15분당 1회 요청
사용자 기준
15분당 1회 요청
앱 기준
GET /2/users/:id/owned_lists15회 요청/15분
사용자 기준
15회 요청/15분
앱 기준
100회 요청/24시간
사용자 기준
500회 요청/24시간
앱 기준
1회 요청/24시간
사용자 기준
1회 요청/24시간
앱 기준
GET /2/users/:id/pinned_lists15회 요청/15분
사용자 기준
15회 요청/15분
앱 기준
100회 요청/24시간
사용자 기준
500회 요청/24시간
앱 기준
1회 요청/24시간
사용자 기준
1회 요청/24시간
앱 기준
POST /2/lists300건 요청 / 15분
사용자당
100건 요청 / 24시간
사용자당
1건 요청 / 24시간
사용자당
POST /2/lists/:id/members15분당 요청 300회
사용자 기준
15분당 요청 5회
사용자 기준
15분당 요청 1회
사용자 기준
POST /2/users/:id/followed_lists15분당 요청 50회
사용자당
15분당 요청 5회
사용자당
15분당 요청 1회
사용자당
POST /2/users/:id/pinned_lists15분당 요청 50회
사용자별
15분당 요청 5회
사용자별
15분당 요청 1회
사용자별
PUT /2/lists/:id15분당 300회 요청
사용자 기준
15분당 5회 요청
사용자 기준
15분당 1회 요청
사용자 기준
책갈피
DELETE /2/users/:id/bookmarks/:tweet_id15분당 50회 요청
사용자 기준
15분당 5회 요청
사용자 기준
15분당 1회 요청
사용자 기준
GET /2/users/:id/bookmarks15분당 요청 180회
사용자 기준
15분당 요청 10회
사용자 기준
15분당 요청 1회
사용자 기준
GET /2/users/:id/bookmarks/folders15분당 50회 요청
사용자 기준
15분당 50회 요청
앱 기준
15분당 5회 요청
사용자 기준
15분당 5회 요청
앱 기준
15분당 1회 요청
사용자 기준
15분당 1회 요청
앱 기준
GET /2/users/:id/bookmarks/folders/:folder_id15분당 50회 요청
사용자 기준
15분당 50회 요청
앱 기준
15분당 5회 요청
사용자 기준
15분당 5회 요청
앱 기준
15분당 1회 요청
사용자 기준
15분당 1회 요청
앱 기준
POST /2/users/:id/bookmarks15분당 요청 50회
사용자 기준
15분당 요청 5회
사용자 기준
15분당 요청 1회
사용자 기준
컴플라이언스
GET /2/compliance/jobs150건 요청 / 15분
앱 기준
5건 요청 / 15분
앱 기준
1건 요청 / 15분
앱 기준
GET /2/compliance/jobs/:job_id15분당 요청 150회
앱 단위
15분당 요청 5회
앱 단위
15분당 요청 1회
앱 단위
POST /2/compliance/jobs15분당 150회 요청
앱 기준
15분당 15회 요청
앱 기준
15분당 1회 요청
앱 기준
사용
GET /2/usage/tweets요청 50회 / 15분
앱 기준
요청 50회 / 15분
앱 기준
요청 1회 / 15분
앱 기준
동향
GET /2/trends/by/woeid/:id75회 요청/15분
앱당
15회 요청/15분
앱당
GET /2/users/personalized_trends15분당 요청 10회
사용자 기준
15분당 요청 200회
앱 기준
15분당 요청 1회
사용자 기준
15분당 요청 20회
앱 기준
15분당 요청 1회
사용자 기준
24시간당 요청 1회
앱 기준
커뮤니티
GET /2/communities/:id15분당 300회 요청
사용자 기준
15분당 300회 요청
앱 기준
15분당 1회 요청
사용자 기준
15분당 25회 요청
앱 기준
15분당 1회 요청
사용자 기준
15분당 1회 요청
앱 기준
GET /2/communities/search300회 요청/15분
사용자당
300회 요청/15분
앱당
1회 요청/15분
사용자당
25회 요청/15분
앱당
1회 요청/15분
사용자당
1회 요청/15분
앱당

요청 한도와 인증 방법

요청 한도는 Developer 앱과 사용자 액세스 토큰 두 수준에서 설정됩니다:
  • OAuth 2.0 베어러 토큰: 앱 요청 한도 이 방법을 사용하면 Developer 앱을 대신해 일정 횟수의 요청을 보낼 수 있습니다. 이 인증 방법을 사용할 때 한도는 베어러 토큰로 수행한 요청에 따라 결정됩니다.
    • 예: 15분 간격당 450건의 한도가 있으면, 해당 기간 동안 앱을 대신해 450건의 요청을 보낼 수 있습니다.
  • OAuth 1.0a 사용자 컨텍스트: 사용자 요청 한도 이 방법을 사용하면 사용자 액세스 토큰으로 식별되는 X 사용자를 대신해 요청을 보낼 수 있습니다. 예를 들어 게시물의 비공개 지표를 조회하는 경우, 3-legged OAuth 플로우로 생성된 해당 사용자의 사용자 액세스 토큰으로 인증하세요.
    • 예: 사용자당 15분마다 900건의 한도가 있으면, 그 시간 동안 사용자당 최대 900건의 요청을 보낼 수 있습니다。

HTTP 헤더와 응답 코드

가장 최근 요청을 기준으로, 주어진 레이트 리밋 내에서 애플리케이션의 상태를 파악하려면 HTTP 헤더를 사용하세요.
  • x-rate-limit-limit: 해당 엔드포인트의 레이트 리밋 상한
  • x-rate-limit-remaining: 15분 창에서 남은 요청 수
  • x-rate-limit-reset: 레이트 리밋이 초기화되기까지 남은 시간(UTC epoch 초)

오류 응답

애플리케이션이 엔드포인트의 레이트 한도를 초과하면, API는 응답 본문에 다음 오류 메시지와 함께 HTTP 429 “Too Many Requests” 응답을 반환합니다:
{ "errors": [ { "code": 88, "message": "Rate limit exceeded" } ] }

요청 한도에서 복구하기

요청 한도를 초과하면 엔드포인트에서 429 ‘Too many requests’ 오류가 반환됩니다. 아래에 설명한 대로, 요청 한도 오류가 발생했을 때의 모범 사례는 한도가 언제 재설정되는지 알려주는 HTTP 헤더를 확인하고 그때까지 요청을 일시 중지하는 것입니다.
“too many requests” 또는 요청 한도 오류가 발생하면 요청 빈도를 낮춰야 합니다. 요청 한도 오류가 발생했을 때는 x-rate-limit-reset: HTTP 헤더를 확인하여 요청 한도가 언제 재설정되는지 확인할 수 있습니다

. 또 다른 일반적인 방식은 지수 백오프이며, 요청 간 간격을 처음에는 짧게(예: 몇 초) 시작해 재시도할 때마다 두 배로 늘립니다. 이는 요청이 성공하거나 요청 간의 합리적인 최대 간격(예: 몇 분)에 도달할 때까지 계속합니다.

이상적으로는 클라이언트 측에서 현재 적용 중인 요청 한도를 인지하고, 초과된 윈도우가 만료될 때까지 요청을 일시 중지할 수 있어야 합니다. 15분 한도를 초과한 경우, 재시도하기 전에 1~2분 정도 기다리는 것이 합리적입니다.

요청 수에 대한 이러한 한도 외에도 Standard Basic 액세스 수준은 최근 검색 및 필터링된 스트림 엔드포인트에서 월 최대 500,000개의 게시물을 제공합니다. 게시물 수에 대한 월간 한도를 초과한 경우, 앱이 알림을 표시하고 월별 등록일을 파악해 그날까지 요청을 보류하는 것이 더 합리적입니다.

속도 제한을 피하는 팁

아래 팁은 방어적으로 코드를 작성하고 속도 제한에 걸릴 가능성을 줄이는 데 도움이 됩니다. 제공하려는 일부 애플리케이션 기능은, 특히 결과의 최신성과 관련해서는, 속도 제한으로 인해 사실상 불가능할 수 있습니다. 애플리케이션의 목표가 실시간 정보 제공이라면 filtered 및 sampled 스트림 엔드포인트를 검토하세요.

캐싱

자주 사용할 것으로 예상된다면 API 응답을 저장하세요. 매 페이지 로드마다 API를 호출하기보다 응답을 로컬에 캐시하세요.

활성 사용자에 우선순위를 두세요

사이트가 다수의 X 사용자를 추적한다면(예: 현재 상태 조회 또는 X 사용 통계 수집), 최근에 사이트에 로그인한 사용자에 대해서만 데이터를 요청하는 것을 고려하세요.

검색 결과에 맞춰 조정

애플리케이션이 다수의 검색어를 모니터링하는 경우, 결과가 없는 검색어는 결과가 있는 검색어보다 더 드물게 조회하세요. 백오프 전략을 사용하면 인기 있는 쿼리는 최신 상태로 유지하면서 거의 변하지 않는 쿼리에 대한 불필요한 요청을 줄일 수 있습니다. 또는 filtered stream 엔드포인트를 사용해 검색 쿼리로 필터링하는 방법을 고려하세요.

차단 목록

애플리케이션이 요청 한도를 남용하면 차단 대상이 됩니다. 차단된 앱은 X API로부터 응답을 받을 수 없습니다. 본인 또는 애플리케이션이 차단되었는데 실수라고 생각되면, Platform Support forms로 지원을 요청할 수 있습니다. 다음 정보를 포함해 주세요:
  1. 애플리케이션이 차단된 이유라고 판단하는 내용을 설명해 주세요.
  2. 더 이상 요청 한도 적용을 받지 않는 경우, 문제를 어떻게 해결했는지 자세히 설명해 주세요.