목차
- X API v2 요청 한도
- X API Enterprise 요청 한도
- 인증 방식별 요청 한도
- HTTP 헤더 및 응답 코드
- 요청 한도 초과에서 복구하기
- 요청 한도에 걸리지 않기 위한 팁
X API v2 요청 한도
| 엔드포인트 | Pro 제한 | Basic 제한 | Free 제한 |
|---|---|---|---|
| 게시물 | |||
| DELETE /2/tweets/:id | 15분당 50회 요청 사용자 기준 | 15분당 5회 요청 사용자 기준 | 24시간당 17회 요청 사용자 기준 24시간당 17회 요청 앱 기준 |
| DELETE /2/users/:id/likes/:tweet_id | 15분당 50회 요청 사용자당 | 24시간당 100회 요청 사용자당 | 15분당 1회 요청 사용자당 |
| DELETE /2/users/:id/retweets/:tweet_id | 15분당 50회 요청 사용자 기준 | 15분당 5회 요청 사용자 기준 | 15분당 1회 요청 사용자 기준 |
| GET /2/tweets | 15분당 요청 900회 사용자 기준 15분당 요청 450회 앱 기준 | 15분당 요청 15회 사용자 기준 15분당 요청 15회 앱 기준 | 15분당 요청 1회 사용자 기준 15분당 요청 1회 앱 기준 |
| GET /2/tweets/:id | 15분당 900회 요청 사용자 기준 15분당 450회 요청 앱 기준 | 15분당 15회 요청 사용자 기준 15분당 15회 요청 앱 기준 | 15분당 1회 요청 사용자 기준 15분당 1회 요청 앱 기준 |
| GET /2/tweets/:id/liking_users | 15분당 75회 요청 사용자 기준 15분당 75회 요청 앱 기준 | 15분당 5회 요청 사용자 기준 15분당 25회 요청 앱 기준 | 15분당 1회 요청 사용자 기준 15분당 1회 요청 앱 기준 |
| GET /2/tweets/:id/quote_tweets | 15분당 요청 75회 사용자 기준 15분당 요청 75회 앱 기준 | 15분당 요청 5회 사용자 기준 15분당 요청 5회 앱 기준 | 15분당 요청 1회 사용자 기준 15분당 요청 1회 앱 기준 |
| GET /2/tweets/:id/retweeted_by | 15분당 75회 요청 사용자 기준 15분당 75회 요청 앱 기준 | 15분당 5회 요청 사용자 기준 15분당 5회 요청 앱 기준 | 15분당 1회 요청 사용자 기준 15분당 1회 요청 앱 기준 |
| GET /2/tweets/counts/all | 15분당 300회 요청 앱 단위 | ||
| GET /2/tweets/counts/recent | 300건 / 15분 앱 기준 | 5건 / 15분 앱 기준 | 1건 / 15분 앱 기준 |
| GET /2/tweets/search/all | 초당 요청 1건 사용자별 초당 요청 1건 앱별 | ||
| GET /2/tweets/search/recent | 15분당 요청 300회 사용자 기준 15분당 요청 450회 앱 기준 | 15분당 요청 60회 사용자 기준 15분당 요청 60회 앱 기준 | 15분당 요청 1회 사용자 기준 15분당 요청 1회 앱 기준 |
| GET /2/tweets/search/stream | 15분당 50회 요청 앱 기준 | ||
| GET /2/tweets/search/stream/rules | 15분당 450회 요청 앱 기준 | ||
| GET /2/users/:id/liked_tweets | 15분 내 75회 요청 사용자 기준 15분 내 75회 요청 앱 기준 | 15분 내 5회 요청 사용자 기준 15분 내 5회 요청 앱 기준 | 15분 내 1회 요청 사용자 기준 15분 내 1회 요청 앱 기준 |
| GET /2/users/:id/mentions | 15분당 300회 요청 사용자 기준 15분당 450회 요청 앱 기준 | 15분당 10회 요청 사용자 기준 15분당 15회 요청 앱 기준 | 15분당 1회 요청 사용자 기준 15분당 1회 요청 앱 기준 |
| GET /2/users/:id/timelines/reverse_chronological | 15분당 180회 요청 사용자별 | 15분당 5회 요청 사용자별 | 15분당 1회 요청 사용자별 |
| GET /2/users/:id/tweets | 15분당 900회 요청 사용자 기준 15분당 1500회 요청 앱 기준 | 15분당 5회 요청 사용자 기준 15분당 10회 요청 앱 기준 | 15분당 1회 요청 사용자 기준 15분당 1회 요청 앱 기준 |
| GET /2/users/reposts_of_me | 15분당 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/rules | 15분당 100회 요청 앱 기준 | ||
| POST /2/users/:id/likes | 24시간 내 1,000회 요청 사용자 기준 | 24시간 내 200회 요청 사용자 기준 | 15분 내 1회 요청 사용자 기준 |
| POST /2/users/:id/retweets | 15분당 50건 요청 사용자 기준 | 15분당 5건 요청 사용자 기준 | 15분당 1건 요청 사용자 기준 |
| PUT /2/tweets/:tweet_id/hidden | 15분당 요청 50회 사용자 기준 | 15분당 요청 5회 사용자 기준 | 15분당 요청 1회 사용자 기준 |
| 사용자 | |||
| DELETE /2/users/:source_user_id/following/:target_user_id | 15분당 요청 50회 사용자당 | 15분당 요청 5회 사용자당 | 15분당 요청 1회 사용자당 |
| DELETE /2/users/:source_user_id/muting/:target_user_id | 15분당 요청 50회 사용자 기준 | 15분당 요청 5회 사용자 기준 | 15분당 요청 1회 사용자 기준 |
| GET /2/users | 15분당 900회 요청 사용자 기준 15분당 300회 요청 앱 기준 | 24시간당 100회 요청 사용자 기준 24시간당 500회 요청 앱 기준 | 24시간당 1회 요청 사용자 기준 24시간당 1회 요청 앱 기준 |
| GET /2/users/:id | 15분당 900건 요청 사용자 기준 15분당 300건 요청 앱 기준 | 24시간당 100건 요청 사용자 기준 24시간당 500건 요청 앱 기준 | 24시간당 1건 요청 사용자 기준 24시간당 1건 요청 앱 기준 |
| GET /2/users/:id/blocking | 15건 요청 / 15분 사용자 기준 | 5건 요청 / 15분 사용자 기준 | 1건 요청 / 15분 사용자 기준 |
| GET /2/users/:id/muting | 15회 요청 / 15분 사용자당 | 100회 요청 / 24시간 사용자당 | 1회 요청 / 24시간 사용자당 |
| GET /2/users/by | 15분당 900건 사용자 기준 15분당 300건 앱 기준 | 24시간당 100건 사용자 기준 24시간당 500건 앱 기준 | 24시간당 1건 사용자 기준 24시간당 1건 앱 기준 |
| GET /2/users/by/username/:username | 15분당 900회 요청 사용자별 15분당 300회 요청 앱별 | 24시간당 100회 요청 사용자별 24시간당 500회 요청 앱별 | 15분당 3회 요청 사용자별 15분당 3회 요청 앱별 |
| GET /2/users/me | 15분당 75회 요청 사용자별 | 24시간당 250회 요청 사용자별 | 24시간당 25회 요청 사용자별 |
| GET /2/users/search | 15분당 900회 요청 사용자 기준 15분당 300회 요청 앱 기준 | ||
| POST /2/users/:id/following | 15분당 요청 50회 사용자 기준 | 15분당 요청 5회 사용자 기준 | 15분당 요청 1회 사용자 기준 |
| POST /2/users/:id/muting | 15분당 요청 50회 사용자당 | 15분당 요청 5회 사용자당 | 15분당 요청 1회 사용자당 |
| 스페이스 | |||
| GET /2/spaces | 300회 요청 / 15분 사용자 기준 300회 요청 / 15분 앱 기준 | 5회 요청 / 15분 사용자 기준 25회 요청 / 15분 앱 기준 | 1회 요청 / 15분 사용자 기준 1회 요청 / 15분 앱 기준 |
| GET /2/spaces/:id | 15분당 300회 요청 사용자 기준 15분당 300회 요청 앱 기준 | 15분당 5회 요청 사용자 기준 15분당 25회 요청 앱 기준 | 15분당 1회 요청 사용자 기준 15분당 1회 요청 앱 기준 |
| GET /2/spaces/:id/buyers | 15분당 300회 요청 사용자 기준 15분당 300회 요청 앱 기준 | 15분당 5회 요청 사용자 기준 15분당 25회 요청 앱 기준 | 15분당 1회 요청 사용자 기준 15분당 1회 요청 앱 기준 |
| GET /2/spaces/:id/tweets | 15분당 300회 요청 사용자당 15분당 300회 요청 앱당 | 15분당 5회 요청 사용자당 15분당 25회 요청 앱당 | 15분당 1회 요청 사용자당 15분당 1회 요청 앱당 |
| GET /2/spaces/by/creator_ids | 15분당 300회 요청 사용자 기준 초당 1회 요청 앱 기준 | 15분당 5회 요청 사용자 기준 초당 25회 요청 앱 기준 | 초당 1회 요청 사용자 기준 15분당 1회 요청 앱 기준 |
| GET /2/spaces/search | 15분당 300건 요청 사용자 기준 15분당 300건 요청 앱 기준 | 15분당 5건 요청 사용자 기준 15분당 25건 요청 앱 기준 | 15분당 1건 요청 사용자 기준 15분당 1건 요청 앱 기준 |
| 다이렉트 메시지 | |||
| DELETE /2/dm_events/:id | 24시간 내 1,500회 요청 사용자당 24시간 내 4,000회 요청 앱당 | 15분 내 200회 요청 사용자당 24시간 내 2,500회 요청 앱당 | |
| GET /2/dm_conversations/:dm_conversation_id/dm_events | 15회 요청 / 15분 사용자 기준 | 1회 요청 / 24시간 사용자 기준 | |
| GET /2/dm_conversations/with/:participant_id/dm_events | 15건 요청 / 15분 사용자당 | 1건 요청 / 24시간 사용자당 | |
| GET /2/dm_events | 15건 요청 / 15분 사용자별 | 1건 요청 / 24시간 사용자별 | |
| GET /2/dm_events/:id | 요청 15회 / 15분 사용자당 | 요청 5회 / 24시간 사용자당 | |
| POST /2/dm_conversations | 15건 요청 / 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/messages | 24시간당 1440회 요청 사용자 기준 24시간당 1440회 요청 앱 기준 | 24시간당 1회 요청 사용자 기준 24시간당 1회 요청 앱 기준 | |
| 리스트 | |||
| DELETE /2/lists/:id | 15분당 요청 300회 사용자 기준 | 15분당 요청 5회 사용자 기준 | 15분당 요청 1회 사용자 기준 |
| DELETE /2/lists/:id/members/:user_id | 15분당 300회 요청 사용자 기준 | 15분당 5회 요청 사용자 기준 | 15분당 1회 요청 사용자 기준 |
| DELETE /2/users/:id/followed_lists/:list_id | 15분당 요청 50회 사용자 기준 | 15분당 요청 5회 사용자 기준 | 15분당 요청 1회 사용자 기준 |
| DELETE /2/users/:id/pinned_lists/:list_id | 15분당 요청 50회 사용자당 | 15분당 요청 5회 사용자당 | 15분당 요청 1회 사용자당 |
| GET /2/lists/:id | 15분당 요청 75회 사용자 기준 15분당 요청 75회 앱 기준 | 15분당 요청 5회 사용자 기준 15분당 요청 5회 앱 기준 | 15분당 요청 1회 사용자 기준 15분당 요청 1회 앱 기준 |
| GET /2/lists/:id/members | 15분당 900회 요청 사용자 기준 15분당 900회 요청 앱 기준 | 15분당 5회 요청 사용자 기준 15분당 25회 요청 앱 기준 | 15분당 1회 요청 사용자 기준 15분당 1회 요청 앱 기준 |
| GET /2/lists/:id/tweets | 900회 요청 / 15분 사용자당 900회 요청 / 15분 앱당 | 5회 요청 / 15분 사용자당 25회 요청 / 15분 앱당 | |
| GET /2/users/:id/list_memberships | 15분당 75회 요청 사용자 기준 15분당 75회 요청 앱 기준 | 15분당 5회 요청 사용자 기준 15분당 25회 요청 앱 기준 | 15분당 1회 요청 사용자 기준 15분당 1회 요청 앱 기준 |
| GET /2/users/:id/owned_lists | 15회 요청/15분 사용자 기준 15회 요청/15분 앱 기준 | 100회 요청/24시간 사용자 기준 500회 요청/24시간 앱 기준 | 1회 요청/24시간 사용자 기준 1회 요청/24시간 앱 기준 |
| GET /2/users/:id/pinned_lists | 15회 요청/15분 사용자 기준 15회 요청/15분 앱 기준 | 100회 요청/24시간 사용자 기준 500회 요청/24시간 앱 기준 | 1회 요청/24시간 사용자 기준 1회 요청/24시간 앱 기준 |
| POST /2/lists | 300건 요청 / 15분 사용자당 | 100건 요청 / 24시간 사용자당 | 1건 요청 / 24시간 사용자당 |
| POST /2/lists/:id/members | 15분당 요청 300회 사용자 기준 | 15분당 요청 5회 사용자 기준 | 15분당 요청 1회 사용자 기준 |
| POST /2/users/:id/followed_lists | 15분당 요청 50회 사용자당 | 15분당 요청 5회 사용자당 | 15분당 요청 1회 사용자당 |
| POST /2/users/:id/pinned_lists | 15분당 요청 50회 사용자별 | 15분당 요청 5회 사용자별 | 15분당 요청 1회 사용자별 |
| PUT /2/lists/:id | 15분당 300회 요청 사용자 기준 | 15분당 5회 요청 사용자 기준 | 15분당 1회 요청 사용자 기준 |
| 책갈피 | |||
| DELETE /2/users/:id/bookmarks/:tweet_id | 15분당 50회 요청 사용자 기준 | 15분당 5회 요청 사용자 기준 | 15분당 1회 요청 사용자 기준 |
| GET /2/users/:id/bookmarks | 15분당 요청 180회 사용자 기준 | 15분당 요청 10회 사용자 기준 | 15분당 요청 1회 사용자 기준 |
| GET /2/users/:id/bookmarks/folders | 15분당 50회 요청 사용자 기준 15분당 50회 요청 앱 기준 | 15분당 5회 요청 사용자 기준 15분당 5회 요청 앱 기준 | 15분당 1회 요청 사용자 기준 15분당 1회 요청 앱 기준 |
| GET /2/users/:id/bookmarks/folders/:folder_id | 15분당 50회 요청 사용자 기준 15분당 50회 요청 앱 기준 | 15분당 5회 요청 사용자 기준 15분당 5회 요청 앱 기준 | 15분당 1회 요청 사용자 기준 15분당 1회 요청 앱 기준 |
| POST /2/users/:id/bookmarks | 15분당 요청 50회 사용자 기준 | 15분당 요청 5회 사용자 기준 | 15분당 요청 1회 사용자 기준 |
| 컴플라이언스 | |||
| GET /2/compliance/jobs | 150건 요청 / 15분 앱 기준 | 5건 요청 / 15분 앱 기준 | 1건 요청 / 15분 앱 기준 |
| GET /2/compliance/jobs/:job_id | 15분당 요청 150회 앱 단위 | 15분당 요청 5회 앱 단위 | 15분당 요청 1회 앱 단위 |
| POST /2/compliance/jobs | 15분당 150회 요청 앱 기준 | 15분당 15회 요청 앱 기준 | 15분당 1회 요청 앱 기준 |
| 사용 | |||
| GET /2/usage/tweets | 요청 50회 / 15분 앱 기준 | 요청 50회 / 15분 앱 기준 | 요청 1회 / 15분 앱 기준 |
| 동향 | |||
| GET /2/trends/by/woeid/:id | 75회 요청/15분 앱당 | 15회 요청/15분 앱당 | |
| GET /2/users/personalized_trends | 15분당 요청 10회 사용자 기준 15분당 요청 200회 앱 기준 | 15분당 요청 1회 사용자 기준 15분당 요청 20회 앱 기준 | 15분당 요청 1회 사용자 기준 24시간당 요청 1회 앱 기준 |
| 커뮤니티 | |||
| GET /2/communities/:id | 15분당 300회 요청 사용자 기준 15분당 300회 요청 앱 기준 | 15분당 1회 요청 사용자 기준 15분당 25회 요청 앱 기준 | 15분당 1회 요청 사용자 기준 15분당 1회 요청 앱 기준 |
| GET /2/communities/search | 300회 요청/15분 사용자당 300회 요청/15분 앱당 | 1회 요청/15분 사용자당 25회 요청/15분 앱당 | 1회 요청/15분 사용자당 1회 요청/15분 앱당 |
요청 한도와 인증 방법
-
OAuth 2.0 베어러 토큰: 앱 요청 한도
이 방법을 사용하면 Developer 앱을 대신해 일정 횟수의 요청을 보낼 수 있습니다. 이 인증 방법을 사용할 때 한도는 베어러 토큰로 수행한 요청에 따라 결정됩니다.
- 예: 15분 간격당 450건의 한도가 있으면, 해당 기간 동안 앱을 대신해 450건의 요청을 보낼 수 있습니다.
-
OAuth 1.0a 사용자 컨텍스트: 사용자 요청 한도
이 방법을 사용하면 사용자 액세스 토큰으로 식별되는 X 사용자를 대신해 요청을 보낼 수 있습니다. 예를 들어 게시물의 비공개 지표를 조회하는 경우, 3-legged OAuth 플로우로 생성된 해당 사용자의 사용자 액세스 토큰으로 인증하세요.
- 예: 사용자당 15분마다 900건의 한도가 있으면, 그 시간 동안 사용자당 최대 900건의 요청을 보낼 수 있습니다。
HTTP 헤더와 응답 코드
x-rate-limit-limit: 해당 엔드포인트의 레이트 리밋 상한x-rate-limit-remaining: 15분 창에서 남은 요청 수x-rate-limit-reset: 레이트 리밋이 초기화되기까지 남은 시간(UTC epoch 초)
오류 응답
요청 한도에서 복구하기
“too many requests” 또는 요청 한도 오류가 발생하면 요청 빈도를 낮춰야 합니다. 요청 한도 오류가 발생했을 때는
x-rate-limit-reset: HTTP 헤더를 확인하여 요청 한도가 언제 재설정되는지 확인할 수 있습니다. 또 다른 일반적인 방식은 지수 백오프이며, 요청 간 간격을 처음에는 짧게(예: 몇 초) 시작해 재시도할 때마다 두 배로 늘립니다. 이는 요청이 성공하거나 요청 간의 합리적인 최대 간격(예: 몇 분)에 도달할 때까지 계속합니다.
이상적으로는 클라이언트 측에서 현재 적용 중인 요청 한도를 인지하고, 초과된 윈도우가 만료될 때까지 요청을 일시 중지할 수 있어야 합니다. 15분 한도를 초과한 경우, 재시도하기 전에 1~2분 정도 기다리는 것이 합리적입니다.
요청 수에 대한 이러한 한도 외에도 Standard Basic 액세스 수준은 최근 검색 및 필터링된 스트림 엔드포인트에서 월 최대 500,000개의 게시물을 제공합니다. 게시물 수에 대한 월간 한도를 초과한 경우, 앱이 알림을 표시하고 월별 등록일을 파악해 그날까지 요청을 보류하는 것이 더 합리적입니다.
속도 제한을 피하는 팁
캐싱
활성 사용자에 우선순위를 두세요
검색 결과에 맞춰 조정
차단 목록
- 애플리케이션이 차단된 이유라고 판단하는 내용을 설명해 주세요.
- 더 이상 요청 한도 적용을 받지 않는 경우, 문제를 어떻게 해결했는지 자세히 설명해 주세요.