개요
Enterprise
이는 관리형 액세스 레벨에서만 제공되는 엔터프라이즈 API입니다. 이 API를 사용하려면 먼저 엔터프라이즈 영업팀과 계정을 개설해야 합니다. 자세히 알아보기
Engagement API는 게시물 노출 수와 참여 지표에 대한 액세스를 제공합니다. 대부분의 지표와 엔드포인트는 OAuth 1.0a 사용자 컨텍스트로 인증해야 하지만, OAuth 2.0 베어러 토큰과 /totals 엔드포인트를 사용하면 공개 Favorite, Retweet, Reply, Video Views 지표에 액세스할 수 있습니다.
참고: 일부 X 웹 대시보드에 보고된 데이터와 Engagement API에 보고된 데이터 간에는 차이가 있을 수 있습니다. 이는 웹 대시보드가 일반적으로 선택한 기간 내에 발생한 참여 및/또는 노출만 표시하기 때문입니다. 예를 들어, 웹 대시보드는 달력상 한 달 동안의 게시물 참여만 표시할 수 있지만, Engagement API는 요청한 시간 범위 내라면 그 달을 넘어 발생한 참여도 표시할 수 있습니다. 이러한 경우에는 Engagement API를 신뢰할 수 있는 기준으로 간주해야 합니다.
요청 엔드포인트
현재 합계: [/totals]
- 요청은 원하는 게시물에 대해 노출수 합계 지표와 참여수 합계 지표를 반환합니다
- 다음 지표로 제한됩니다: Impressions, Engagements, Favorites, Replies, Retweets, Quote Tweets, Video Views
- OAuth 1.0a 사용자 컨텍스트를 사용하여 최근 90일 이내 생성된 게시물의 Impressions 및 Engagements 지표 조회를 지원합니다
- OAuth 2.0 베어러 토큰을 사용하여 모든 게시물에 대한 Favorites, Retweets, Quote Tweets, Replies, 및 Video Views 지표 조회를 지원합니다
- 결과는 요청 시점의 현재 노출수와 참여수 합계를 기준으로 합니다
- 다양한 @handle 전반에서 대시보드 보고를 구동하고 참여율을 계산하는 데 이상적입니다
- 요청당 최대 250개의 게시물에 대한 지표 요청을 지원합니다
지난 28시간: [/28hr]
- 요청은 노출수 총합 지표, 참여수 총합 지표, 그리고 지난 28시간 동안 발생한 개별 참여 지표의 세부 내역을 반환할 수 있습니다
- 데이터는 게시물 id별로, 그리고 집계된 시계열에서 일 단위 또는 시간 단위로 그룹화할 수 있습니다
- 최근 생성된 콘텐츠의 성과를 추적하는 데 이상적입니다
- 사용 가능한 모든 지표를 지원합니다
- 요청당 게시물 최대 25개의 지표 조회를 지원합니다
기록: [/historical]
- 요청은 최근 1년 동안의 노출 수, 참여 수, 그리고 개별 참여 지표의 세부 항목을 반환할 수 있으며, 기준은 게시물 생성 시간이 아니라 참여 시간입니다.
- 요청은 시작 날짜와 종료 날짜 매개변수를 지원하여 최대 4주 기간 내에서 특정 기간으로 범위를 좁힐 수 있는 유연성을 제공합니다.
- 게시물 참여 데이터는 과거 365일까지만 제공합니다.
- 데이터는 게시물 ID별로, 그리고 시계열 집계로서 일 단위 또는 시간 단위로 그룹화할 수 있습니다.
- 최근 성과를 과거 기준과 비교 평가하거나 @handle의 성과에 대한 역사적 관점을 구축하는 데 적합합니다.
- 사용 가능한 모든 지표를 지원합니다.
- 요청당 최대 25개의 게시물에 대한 지표 요청을 지원합니다.
사용 가능한 지표
| 지표 | 엔드포인트 가용성 | 사용자 컨텍스트 필요 | 설명 |
|---|---|---|---|
| impressions | All | Yes | 게시물이 조회된 횟수입니다. 이 지표는 지난 90일 이내에 게시된 게시물에 대해서만 사용할 수 있습니다. |
| engagements | All | Yes | 사용자가 게시물과 상호작용한 횟수입니다. 이 지표는 지난 90일 이내에 게시된 게시물에 대해서만 사용할 수 있습니다. |
| favorites | All | Yes - /28hrs & /Historical No - /totals | 게시물이 즐겨찾기에 추가된 횟수입니다. |
| retweets | All | Yes - /28hrs & /Historical No - /totals | 게시물이 리트윗된 횟수입니다. |
| quote_tweets | /totals | No - /totals | 게시물이 댓글과 함께 리트윗된(인용이라고도 함) 횟수입니다. |
| replies | All | Yes - /28hrs & /Historical No - /totals | 게시물에 답글이 달린 횟수입니다. |
| video_views | All | Yes - /28hrs & /Historical No - /totals | 해당 게시물의 동영상이 최소 2초 동안 50% 이상 표시된 횟수입니다. 동영상 조회수는 1800일 이하의 게시물에 대해서만 사용할 수 있습니다. 1800일보다 오래된 게시물에 대해 동영상 조회수를 요청하려고 하면 요청한 다른 지표가 포함된 별도의 객체와 함께 응답 내에 다음 객체가 표시됩니다: “unsupported_for_video_views_tweet_ids”: [“TWEET_ID”] 참고: X 소유 및 운영 플랫폼(모바일 앱 및 웹사이트)에 표시되는 동영상 조회수 지표와 /28hr 및 /historical 엔드포인트를 통해 받는 수치 사이에 차이가 있을 수 있습니다. _ X 사용자 인터페이스 및 /totals 엔드포인트에 표시되는 동영상 조회수는 해당 동영상이 게시된 모든 게시물에서 집계된 동영상 조회수를 표시합니다. 즉, UI에 표시되는 지표에는 동영상이 리트윗되거나 별도의 게시물로 재게시된 모든 인스턴스의 조회수가 합산되어 포함됩니다. 이 지표에는 GIF의 동영상 조회수가 포함되지 않습니다. _ /28hr 및 /historical 엔드포인트에서 제공하는 동영상 조회수에는 지표를 가져오는 특정 게시물에서 생성된 조회수만 포함됩니다. 이 지표에는 GIF의 동영상 조회수가 포함되지 않습니다. |
| media_views | /28hr /historical | Yes | 동영상, GIF 및 이미지에서 집계된 미디어의 모든 조회수(자동 재생 및 클릭)입니다. |
| media_engagements (이전 명칭: Media Clicks) | /28hr /historical | Yes | 게시물의 이미지 또는 동영상과 같은 미디어가 클릭된 횟수입니다. |
| url_clicks | /28hr /historical | Yes | 게시물의 URL이 클릭된 횟수입니다. |
| hashtag_clicks | /28hr /historical | Yes | 게시물의 해시태그가 클릭된 횟수입니다. |
| detail_expands | /28hr /historical | Yes | 게시물이 클릭되어 더 많은 세부 정보가 표시된 횟수입니다. |
| permalink_clicks | /28hr /historical | Yes | 게시물의 퍼머링크(이 게시물 전용 개별 웹 페이지)가 클릭된 횟수입니다. |
| app_install_attempts | /28hr /historical | Yes | 게시물에서 앱 설치 이벤트가 발생한 횟수입니다. |
| app_opens | /28hr /historical | Yes | 게시물에서 앱 열기 이벤트가 발생한 횟수입니다. |
| email_tweet | /28hr /historical | Yes | 게시물이 이메일을 통해 공유된 횟수입니다. |
| user_follows | /28hr /historical | Yes | 이 게시물에서 사용자(게시물 작성자)가 팔로우된 횟수입니다. |
| user_profile_clicks | /28hr /historical | Yes | 이 게시물에서 사용자(게시물 작성자)의 프로필이 클릭된 횟수입니다. |
참여 그룹화
- tweet.id
- engagement.type
/28hr 및 /historical은 시계열 지표를 제공할 수 있으므로 다음을 지원합니다:
- engagement.day
- engagement.hour
가이드
개발자 시작하기 가이드
소개
Engagement API는 무엇을 제공하나요?
- Engagement API는 3-legged OAuth를 통해 해당 계정이 귀하의 앱이 자신들을 대신해 메트릭 요청을 하도록 승인했다는 전제하에, 지난 90일 동안 특정 X 계정이 소유한 게시물의 노출수 및 참여 데이터를 제공합니다. 이 강력하면서도 구현이 쉬운 솔루션은 노출수와 URL 클릭, #해시태그 클릭 등 심층 참여 지표에 즉시 접근할 수 있게 해줍니다.
- Engagement API는 모든 게시물에 대해 즐겨찾기, 리트윗, 인용 리트윗, 답글, 동영상 조회수 등의 총합 집계 메트릭을 제공합니다. 이는 개별 게시물 또는 게시물 묶음의 기본 참여 데이터를 얻는 강력한 방법입니다.
- Engagement API는 15개 이상의 성과 메트릭으로 콘텐츠 성과를 효과적으로 측정할 수 있게 하여, 소셜 리스닝, 마케팅, 퍼블리싱 플랫폼에 X에서의 ROI 측정이라는 새로운 가치를 제공합니다.
- Engagement API는 요청/응답 방식의 API로, 앱 개발자가 게시물 ID, 원하는 메트릭, 기간을 포함해 요청을 보내면 API가 즉시 데이터를 반환합니다.
왜 통합해야 할까요? 예시 사용 사례
- 내 콘텐츠의 전체 도달 범위를 파악하여 얼마나 많은 사람이 확인했는지 알아봅니다. 동영상 조회수, 링크 클릭, 해시태그 클릭, 앱 설치 수를 확인합니다.
- 총합 및 시계열 기반 참여 지표를 생성합니다.
- 모든 공개 게시물에 대한 기본 참여 지표(좋아요, 리트윗, 인용 리트윗, 답글)를 파악합니다.
- 이러한 지표를 활용해 어떤 유형의 게시물이 효과적인지 판단하여 더 자주 게시하고 노출수와 참여를 더 많이 확보합니다.
- 내 게시물 중 하나가 좋아요 100개(또는 다른 임계값)에 도달할 때마다 마케팅 동작(예: 다른 소유 계정의 콘텐츠 리트윗)을 자동화합니다.
- A/B 테스트를 위한 도구로 캠페인 간 벤치마킹 및 비교를 수행합니다.
- 고객 지원 부서에서 어떤 유형의 콘텐츠가 반응을 이끄는지 분석하여 언제, 어떻게 응답할지 결정합니다.
- 내 플랫폼에서 게시된 콘텐츠의 분석을 표시합니다.
참여 API 통합
API 소개
- Post ID 배열
- 관심 있는 지표 유형 배열. 유형에는 ‘impressions’, ‘retweets’, ‘hashtag_clicks’, ‘user_follows’ 등이 포함됩니다.
- Engagement 그룹화. API 응답에서 참여 데이터를 어떻게 배열할지 지정하는 JSON 구조입니다.
- Totals - 게시물에 대한 총 참여 수를 제공합니다. 일부 지표는 모든 게시물에 대해 제공되며, 일부는 최근 90일에 대해서만 제공됩니다.
- 28 hour - 최근 28시간의 시계열 참여 지표를 제공합니다.
- Historical - 2014년 9월 1일 이후 게시된 게시물에 대해 최대 4주 연속의 시계열 참여 지표를 제공합니다.
API 액세스 받기
요청 만들기
1/ 오늘 우리는 X API 플랫폼의 미래에 대한 비전을 공유합니다— Twitter Dev (@TwitterDev) 2017년 4월 6일
당신의 게시물에 대한 게시물을 놓치지 마세요. 이제 iOS에서 댓글이 달린 리포스트를 한곳에서 모두 확인할 수 있습니다. pic.x.com/oanjZfzC6y — X (@X) 2020년 5월 12일첫 번째 단계는 JSON으로 API 요청을 구성하는 것입니다. 두 개의 게시물 id를 배열에 넣고, 관심 있는 참여 유형의 배열과, 응답에서 지표를 어떻게 정렬할지 나타내는 사용자 지정 “groupings” JSON 객체로 구성합니다. 우리의 요청은 다음과 같습니다:
- Content-Type: application/json
- Accept-Encoding: gzip
OAuth로 인증하기
Engagement API 엔드포인트 선택
- Totals - ‘owned’ 또는 ‘unowned’ 게시물의 선택된 지표 총합을 제공합니다. 일부 지표는 모든 게시물에 제공되며, 일부는 최근 90일 내 게시물에만 제공됩니다. 요청당 게시물 250개를 지원합니다.
- 28 day - 최근 28일간 ‘owned’ 게시물의 시계열 Engagement 지표를 제공합니다. 요청당 게시물 25개를 지원합니다.
- Historical - 2014년 9월 1일 이후 게시된 ‘owned’ 게시물에 대해 최대 연속 4주간의 시계열 Engagement 지표를 제공합니다. 요청당 게시물 25개를 지원합니다.
핵심 개념
노출수 및 참여 지표
소유된 X 콘텐츠와 비소유 X 콘텐츠
/totals 엔드포인트는 소유된 게시물과 비소유 게시물 모두에 대한 참여 데이터를 제공합니다. 비소유 게시물의 경우, 게시물 화면에서 공개적으로 확인할 수 있는 Favorite, Retweet, Reply와 같은 참여 지표를 요청할 수 있습니다. 이들 지표와 관련해 Engagement API가 제공하는 가치는 이러한 지표를 자동화된 방식으로 대규모로 조회할 수 있는 능력입니다. 소유된 게시물의 경우 /totals 엔드포인트는 Impression 및 총 Engagement 지표도 제공합니다.
/28hr 및 /historical 엔드포인트는 소유된 게시물에 대해서만 지표를 제공하며, 이는 해당 엔드포인트에 요청할 때 사용자 컨텍스트를 함께 전달해야 함을 의미합니다.
총계 및 시계열 참여 데이터
엔드포인트와 예시 사용 사례
/totals
- 특정 지표 유형(노출수, 참여수, 즐겨찾기, 리트윗, 인용 리트윗, 답글, 동영상 조회수)만 필요합니다.
- 내가 소유한 게시물뿐 아니라 모든 게시물에 대한 기본 참여 데이터를 조회할 수 있어야 합니다.
- 경쟁사 대비 성과를 비교하고 싶습니다.
- 내가 소유하지 않은 게시물을 포함하는 해시태그나 캠페인의 기본 참여 지표를 추적하고 싶습니다.
- 데이터를 일(day)이나 시간(hour) 단위로 나눌 필요는 없으며, 요청 시점의 현재 합계만 필요합니다.
- 보고서나 대시보드에 표시할 단일 지표가 필요하며, 데이터를 저장할 계획은 없습니다.
- 페이지 로드 시점에 데이터를 표시하고 싶으며, 요청하고 응답만 받으면 됩니다.
- 하루에 수십만에서 수백만 개의 게시물 데이터를 GET으로 조회할 수 있어야 합니다.
/28hr
- 17가지 모든 지표 유형에 대한 액세스가 필요합니다.
- 지난 28시간 내에 게시된 최신 게시물의 데이터를 표시하고 싶습니다.
- 하루에 한 번 실행되어 필요한 데이터를 가져오는 작업이 있으며, 지난 하루치 데이터만 가져오면 됩니다.
- 지표를 일(day) 또는 시간(hour) 단위로 분리해 제공받아야 합니다.
- 대시보드에서 시간(hour) 기준의 활동 시계열 분포를 표시하고 싶습니다.
- 하루에 수십만 개의 게시물에 대한 높은 수준의 액세스가 필요합니다.
- 스토리지 기능이 있어 하루에 한 번 데이터를 새로 고치고 누적 합계를 유지할 수 있습니다.
/historical
- 17가지 모든 지표 유형에 접근할 수 있어야 합니다.
- 2014년 9월까지 소급되는 게시물의 과거 데이터를 조회해야 합니다.
- 캠페인을 비교하는 상세한 과거 분석을 보여주고 싶습니다.
- 지표를 일 또는 시간 단위로 분리해야 합니다.
- Engagement API에 대한 높은 수준의 접근은 필요 없으며, 하루에 수백 또는 수천 개의 게시물 데이터만 조회하면 됩니다.
Engagement API 핵심 특성
- JSON 데이터를 제공하고 JSON 본문을 가진 POST 요청을 지원하는 RESTful API.
- 요청 유형: 클라이언트 앱은 다음과 같은 유형의 요청을 보낼 수 있습니다:
- 총 참여수 — /totals 엔드포인트에 대한 HTTP POST 요청
- 최근 28시간 참여수 — /28hr 엔드포인트에 대한 HTTP POST 요청
- 과거 참여수 — /historical 엔드포인트에 대한 HTTP POST 요청
- OAuth 인증:
- OAuth 1.0 User Context: 제공 가능한 모든 메트릭은 3-legged OAuth를 사용해 귀하의 앱을 승인한 사용자가 소유한 게시물에 대해 사용할 수 있습니다. 요청 시 해당 사용자의 액세스 토큰을 사용해야 합니다.
- OAuth 2.0 Bearer Token: 선택 메트릭(리트윗, 인용 게시물, 답글, 즐겨찾기, 동영상 조회수)은 모든 공개 게시물에 대해 제공됩니다.
- 요청 메타데이터 및 구조: 요청 데이터는 게시물 ID 배열, 참여 유형 배열, 그리고 참여 그룹화 구조로 구성된 JSON 객체입니다.
- 요청당 게시물 수:
- /totals 엔드포인트: 게시물 ID 250개
- /28hr 엔드포인트: 게시물 ID 25개
- /historical 엔드포인트: 게시물 ID 25개
- 참여 메트릭 제공 범위:
- /totals — 게시 시점부터의 메트릭 합계. 노출수와 참여수는 최근 90일 이내에 게시된 게시물에 대해 제공되며, 리트윗, 인용 게시물, 답글, 즐겨찾기, 동영상 조회수는 모든 게시물에 대해 제공됩니다.
- /28hr — 요청 시점 기준 지난 28시간.
- /historical — 2014년 9월 1일부터 시작하는 임의의 28일 기간.
- 메트릭 유형: 각 요청에는 Metric Types 배열이 포함됩니다. 가용성은 엔드포인트에 따라 다르며, /totals 엔드포인트를 요청하는 경우 게시물이 사용자 권한을 필요로 하는지에 따라 달라집니다.
- /totals 엔드포인트:
- 모든 게시물: 즐겨찾기, 리트윗, 인용 게시물, 답글, 동영상 조회수
- OAuth 1.0a 사용자 컨텍스트 필요: 노출수, 참여수, 즐겨찾기, 답글, 리트윗
- /28hr 및 /historical 엔드포인트(OAuth 1.0a 사용자 컨텍스트와 게시물 소유자의 액세스 토큰 필요): 노출수, 참여수, 즐겨찾기, 답글, 리트윗, URL 클릭수, 해시태그 클릭수, 상세보기 클릭, Permalink 클릭수, 미디어 클릭수, 앱 설치 시도, 앱 열기, 게시물 이메일, 동영상 조회수, 미디어 조회수
- /totals 엔드포인트:
- 참여 그룹화: 각 요청에는 Engagement Groupings 배열이 포함됩니다. 이러한 그룹화를 통해 반환되는 메트릭의 구성 방식을 사용자 지정할 수 있습니다. 요청당 최대 세 가지 그룹화를 포함할 수 있습니다. 메트릭은 다음 값으로 구성할 수 있습니다:
- 모든 엔드포인트: 게시물 ID, 참여 유형
- /28hr 및 /historical 엔드포인트: 다음 추가 그룹화를 지정하면 시계열을 제공합니다: 참여 일, 참여 시간
- 통합 기대사항: 귀하의 팀은 다음을 책임집니다.
- 요청에 포함된 게시물 ID에 대한 참여 메트릭을 반환하도록 Engagement API로 HTTP 요청을 전송할 수 있는 클라이언트 앱을 생성하고 유지 관리
- 제한 사항
- 동영상 조회수는 게시된 지 1800일 이하인 게시물에만 제공됩니다.
Engagement API로 인증하기
참고: API를 사용하기 전에 X가 귀하의 Developer 앱에 대해 Engagement API 액세스를 활성화해야 합니다. 이를 위해 인증에 사용할 App ID를 계정 매니저 또는 기술 지원 팀에 반드시 공유해 주십시오.Engagement API에는 두 가지 인증 방법이 있습니다: OAuth 1.0a 및 OAuth 2.0 Bearer Token. OAuth 2.0 Bearer Token(“application-only”라고도 함)을 사용하면 공개적으로 제공되는 참여 지표에 접근할 수 있습니다. 이 인증 방법은 /totals 엔드포인트에 요청을 보낼 때, 공개적으로 조회 가능한 모든 게시물에 대해 즐겨찾기(좋아요), 리트윗, 인용 트윗, 답글, 동영상 조회수의 총합을 가져오는 데 사용할 수 있습니다. OAuth 1.0a(“user context”라고도 함)을 사용하면 사용자를 대신해 요청을 보내고 해당 사용자에게 속한 비공개 참여 지표에 접근할 수 있습니다. 다음의 경우 이 인증 방법이 필요합니다:
- /28hr 엔드포인트 및 /historical 엔드포인트로 전송하는 모든 요청
- 다음 비공개 지표에 대한 접근: 노출수(Impressions), 참여수(Engagements), 미디어 조회수(Media Views), 미디어 참여수(Media Engagements), URL 클릭수(URL Clicks), 해시태그 클릭수(Hashtag Clicks), 상세 확장(Detail Expands), 퍼머링크 클릭수(Permalink Clicks), 앱 설치 시도(App Install Attempts), 앱 열기(App Opens), 이메일 게시물(Email Post), 사용자 팔로우(User Follows), 사용자 프로필 클릭수(User Profile Clicks)
403 Forbidden 오류를 반환합니다.
Engagement API는 보호된 게시물에 대한 참여 데이터를 가져오는 것을 허용하지 않습니다. 해당 게시물의 소유자를 대신해 인증하더라도 마찬가지입니다. 이를 시도하면 "Tweet ID(s) are unavailable" 메시지와 함께 400 Bad Request 오류가 반환됩니다.
자신의 X 계정(즉, Developer 앱을 소유한 계정)을 대신하여 요청을 보내는 경우, 개발자 포털에서 해당 Developer 앱의 “Keys and tokens” 탭을 통해 필요한 액세스 토큰을 직접 생성할 수 있습니다.
다른 사용자를 대신하여 요청하는 경우, 필요한 액세스 토큰을 얻기 위해 3-legged OAuth 플로우를 사용해야 합니다. 자세한 방법은 다음 문서를 참조하십시오: OAuth 1.0a: how to obtain a user’s access tokens.
추가 예제와 OAuth 1.0a를 사용한 인증 방법은 XDevelopers의 Engagement API용 샘플 Python 코드를 확인하십시오.
Engagement API의 최근 변경 사항
| Metric | Change |
| engagements | 전체 참여도에 포함되는 세부 지표를 Post 분석 대시보드와 일치하도록 업데이트했습니다. engagements는 “사람들이 이 게시물과 상호작용한 횟수”를 측정합니다. 동영상이나 GIF 등 미디어가 포함된 게시물의 경우 engagements 지표에는 더 이상 미디어 조회수가 포함되지 않습니다. 미디어 조회수는 이제 새로운 지표인 _media_views_에서 확인할 수 있습니다. |
| media_clicks* | 이 지표는 “media_engagements”라는 새로운 지표로 대체되었습니다. |
| video_views | 2018년 7월 6일부터 이 지표는 /totals 엔드포인트를 통해 ‘unowned’ 게시물에도 제공됩니다. 즉, 앱 전용 인증을 사용하면 모든 게시물의 동영상 조회수에 접근할 수 있습니다. 동영상 조회수는 1800일 이내의 항목에 대해서만 요청할 수 있습니다. 1800일보다 오래된 게시물의 동영상 조회수를 요청하면 다음과 같은 응답을 받게 됩니다: “unsupported_for_video_views_tweet_ids”: [“TWEET_ID”] 참고: video_views는 최소 2초 동안 동영상의 50%가 화면에 노출되어야 한다는 MRC 표준에 기반하므로 media_views와 다를 수 있습니다. 또한 X가 소유·운영하는 플랫폼(모바일 앱 및 웹사이트)에 표시되는 동영상 조회수와 /28hr 및 /historical 엔드포인트를 통해 받는 수치 사이에 불일치가 있을 수 있습니다. * X 사용자 인터페이스와 /totals 엔드포인트에서 제공되는 동영상 조회수는 해당 동영상이 게시된 모든 게시물을 합산한 집계값을 표시합니다. 즉, UI에 표시되는 지표에는 해당 동영상이 리트윗되거나 별도의 게시물로 재게시된 모든 경우의 조회수가 포함됩니다. * /28hr 및 /historical 엔드포인트에서 제공되는 동영상 조회수는 여러분이 지표를 조회하는 특정 게시물에서 발생한 조회수만 포함합니다. |
| media_views | 동영상, Vine, GIF, 이미지 전반에서 집계된 미디어 조회수(자동 재생 및 클릭)를 모두 포함합니다. 참고: 이미지가 포함된 게시물은 분석 대시보드에 media_views 지표가 표시되지 않지만, Engagement API에서는 반환됩니다. |
| media_engagements* | 동영상, Vine, GIF, 이미지 전반에서 미디어에 대한 클릭 수를 포함합니다. 이 지표는 _media_clicks_를 대체합니다. |
| quote_tweets | 2020년 7월 7일부터 이 지표는 /totals 엔드포인트를 통해 ‘unowned’ 게시물에도 제공됩니다. 즉, 앱 전용 인증을 사용하면 모든 게시물의 인용 게시물 수에 접근할 수 있습니다. |
지표 해석하기
노출수 및 참여 데이터
비디오 지표
- /totals 엔드포인트와 X 사용자 인터페이스에서 제공되는 비디오 조회수는 해당 비디오가 게시된 모든 게시물 전반의 조회수를 집계해 표시합니다. 즉, /totals로 제공되고 X UI에 표시되는 지표에는 해당 비디오가 다른 게시물에서 리트윗되거나 리포스트된 모든 경우의 조회수가 합산됩니다.
- /28hour 및 /historical Engagement API 엔드포인트에서 제공되는 비디오 조회수는 여러분이 지표를 조회하는 특정 게시물에서 발생한 조회수만 포함합니다.
Engagement API 그룹화
- tweet.id
- engagement.type
/28hr 및 /historical 엔드포인트는 시계열 지표를 제공할 수 있으므로 다음을 지원합니다:
- engagement.day
- engagement.hour
group_by 값의 순서를 바꾸면 원하는 결과 형식을 변경할 수 있습니다. group_by 값이 네 개인 그룹화는 다음 두 가지 형식 중 하나에서만 지원됩니다:
자주 묻는 질문
엔터프라이즈
Engagement API
Engagement API에는 어떻게 액세스할 수 있나요?
Engagement API에는 어떻게 액세스할 수 있나요?
Engagement API는 엔터프라이즈 구독을 통해 제공됩니다. 영업팀과 연락하려면 이 양식을 작성해 주세요.
'@handle' 기준으로 내 사용량은 어떻게 집계되나요?
'@handle' 기준으로 내 사용량은 어떻게 집계되나요?
계약에 Engagement API와 함께 사용할 수 있는 고유 핸들 수에 대한 한도가 포함된 경우, 내부 X 시스템은 Engagement API로 조회된 게시물을 소유한 인증된 사용자의 수를 집계합니다. 고객도 클라이언트 측에서 이 고유 수를 관리해야 합니다. 현재 Engagement API의 @handle 사용량을 확인할 수 있는 전용 사용량 API나 UI는 없습니다. 계약된 수보다 더 많은 @handle이 요청되더라도 시스템이 즉시 차단하지는 않습니다. 청구 월 말에 조회된 고유 @handle 수를 계약된 수와 비교하며, 계약 조건에 따라 초과 사용료가 청구됩니다.
Engagement API의 @handle 사용량을 확인할 수 있나요?
Engagement API의 @handle 사용량을 확인할 수 있나요?
현재 Engagement API의 @handle 사용량을 확인할 수 있는 전용 사용량 API나 UI는 없습니다. 계약된 수보다 더 많은 @handle이 요청되더라도 시스템이 즉시 차단하지는 않습니다. 청구 월 말에 조회된 고유 @handle 수를 계약된 수와 비교하며, 계약 조건에 따라 초과 사용료가 청구됩니다.페이로드에 반환되는
engagements 메타데이터 필드가 다양한 참여 지표 합계와 일치하지 않습니다. 왜 그런가요?이는 정상입니다. engagements 메타데이터 필드는 API가 반환하는 개별 참여 지표의 총합과 항상 일치하지 않을 수 있습니다. 페이로드에서 별도로 분리되어 제공되지 않는 추가 참여가 engagements 메타데이터 필드에 포함될 수 있기 때문입니다. 즉, 다양한 참여 지표의 합을 모두 더해도 페이로드의 engagements 메트릭 필드 값과 같지 않을 수 있습니다.engagements 메타데이터 필드는 게시물에서 발생한 모든 클릭이나 상호작용으로 이해하시면 됩니다.
페이로드 응답의 url_clicks 필드가 숫자를 반환하는데, 해당 게시물에는 URL이 없습니다. 어떻게 그럴 수 있나요?해시태그처럼 다른 페이지로 연결되는 요소가 포함된 게시물의 경우, 사용자가 이를 클릭하면 URL 클릭으로 집계될 수 있습니다.
특정 게시물의 참여 데이터를 받지 못하는 이유는 무엇인가요?
특정 게시물의 참여 데이터를 받지 못하는 이유는 무엇인가요?
특정 게시물의 참여 데이터를 가져오지 못하는 이유는 다음과 같을 수 있습니다:
- 제3자를 대신해 데이터를 가져오기 위해 사용하는 인증 토큰 기준으로, 요청한 게시물 ID가 제공 대상이 아닌 경우
- /totals 엔드포인트에 대해 요청한 게시물 ID가 90일 이내가 아니어서 노출수 또는 참여 지표를 반환할 수 없는 경우
- 요청한 게시물 ID가 더 이상 제공되지 않는 경우(대부분 삭제되었거나 다른 이유로 공개적으로 접근할 수 없음)
Engagement API의 레이트 리밋은 어떻게 처리하나요?
Engagement API의 레이트 리밋은 어떻게 처리하나요?
Engagement API에 요청을 보낼 때 응답 헤더에 포함된
x-per-minute-limit 및 x-per-minute-remaining 정보를 사용해 사용량을 모니터링할 수 있습니다.x-per-minute-limit은 할당량을, x-per-minute-remaining은 남은 호출 수를 알려줍니다.오류 문제 해결 가이드
인증에 문제가 있습니다
인증에 문제가 있습니다
Engagement API용 인증 지침을 반드시 확인하세요.
올바른 consumer key와 secret, 그리고 access token과 access token secret을 전달했지만 다음 오류가 반환됩니다. 어떻게 해야 하나요?
올바른 consumer key와 secret, 그리고 access token과 access token secret을 전달했지만 다음 오류가 반환됩니다. 어떻게 해야 하나요?
아직 원하는 정보를 못 찾으셨나요?
아직 답변을 받지 못한 질문이 있어요
아직 답변을 받지 못한 질문이 있어요
기술 지원팀으로 문의해 주세요. 신속하게 답변드리겠습니다.
API 참고 문서
POST insights/engagement
메서드
| 메서드 | 설명 |
|---|---|
| POST /insights/engagement/totals | 게시물 모음에 대한 총 노출수와 참여수를 조회합니다. |
| POST /insights/engagement/historical | 2014년 9월 1일까지 소급하여, 최대 4주 기간의 게시물 모음에 대한 노출수와 참여수를 조회합니다. |
| POST /insights/engagement/28hr | 지난 28시간 동안의 게시물 모음에 대한 노출수와 참여수를 조회합니다. |
인증
- 소유한 게시물로 제한되는 Impressions 및 Engagements 메트릭 유형을 얻기 위한 /totals에 대한 모든 요청
- /28hr에 대한 모든 요청
- /historical에 대한 모든 요청
- 모든 게시물에 대해 가져올 수 있는 Favorites, Replies, Retweets 또는 Video Views 메트릭 유형을 얻기 위한 /totals에 대한 모든 요청
POST /insights/engagement/totals
| 요청 메서드 | HTTP POST |
| URL | https://data-api.x.com/insights/engagement/totals |
| 콘텐츠 유형 | application/json |
| 압축 | Gzip. Gzip 압축을 사용하여 요청하려면 연결 요청에 Accept-Encoding 헤더를 전송하십시오. 헤더는 다음과 같아야 합니다: Accept-Encoding: gzip |
| POST 형식 | 요청은 게시물 ID 모음과 원하는 그룹화를 포함하는 JSON 객체를 본문으로 하는 POST 요청으로 전송할 수 있습니다. POST는 tweets, engagements, groupings 객체가 포함된 배열로 형식화됩니다. 각 요청에는 최대 250개의 게시물 ID가 포함될 수 있습니다. POST 본문 예시는 다음과 같습니다: { “tweet_ids”: [ “게시물 ID 1”, “게시물 ID 2”, “게시물 ID 3” ], “engagement_types”: [ “impressions”, “engagements”, “favorites”, “quote_tweets” ], “groupings”: { “그룹화 이름”: { “group_by”: [ “tweet.id”, “engagement.type” ] } } } |
| 게시물 ID | 참여 데이터를 쿼리할 게시물의 게시물 ID를 포함하는 배열입니다. 인증하는 @handle이 생성한 게시물에 대한 데이터만 요청할 수 있습니다. 요청당 최대 250개의 게시물이 포함될 수 있으며, 게시물 ID는 문자열로 표현되어야 합니다. |
| 참여 유형 | 쿼리할 참여 지표 유형을 포함하는 배열입니다. Totals 엔드포인트는 다음 참여 유형만 지원합니다: impressions, engagements, favorites, retweets, quote_tweets, replies, video_views. /totals 엔드포인트는 지난 90일 이내에 생성된 게시물에 대한 impressions 및 engagements와 모든 게시물에 대한 favorites, retweets, quote_tweets, replies, video_views를 검색하는 기능을 지원합니다. |
| 그룹화 | Engagement API의 결과는 필요에 가장 적합하도록 다양한 그룹으로 반환될 수 있습니다. 요청당 최대 3개의 그룹화를 포함할 수 있습니다. 각 그룹화에 대해 애플리케이션에서 이 그룹화 유형을 더 쉽게 참조할 수 있도록 사용자 정의 그룹화 이름을 정의할 수 있습니다. 그룹화 이름을 정의한 후 tweet.id 및/또는 engagement.type으로 그룹화하도록 선택할 수 있습니다. 그룹화는 순차적으로 적용되므로 group_by 값의 순서를 변경하여 원하는 결과 형식을 변경할 수 있습니다. 게시물 ID와 지표 유형별로 구분된 지표를 표시하는 그룹화 예시는 다음과 같습니다: “groupings”: { “내 그룹화 이름”: { “group_by”: [ “tweet.id”, “engagement.type” ] } } |
| POST 크기 제한 | 한 번에 최대 250개의 게시물 ID에 대해 요청할 수 있습니다. |
| 응답 형식 | JSON. 요청의 헤더는 응답에 대한 JSON 형식을 지정해야 합니다. |
| 속도 제한 | 액세스 수준에 따라 계약서에 명시된 대로 분당 속도 제한이 적용됩니다. |
| 요청 예시 (공개 지표) | curl —request POST —url https://data-api.x.com/insights/engagement/totals —header ‘accept-encoding: gzip’ —header ‘authorization: Bearer ’ —header ‘content-type: application/json’ —data ’{ “tweet_ids”: [ “1070059276213702656”,“1021817816134156288”,“1067094924124872705” ], “engagement_types”: [ “favorites”,“retweets”,“replies”,“quote_tweets”,“video_views” ], “groupings”: { “perTweetMetricsUnowned”: { “group_by”: [ “tweet.id”, “engagement.type” ] } } } —verbose —compressed |
| 요청 예시 | curl —request POST —url https://data-api.x.com/insights/engagement/totals —header ‘accept-encoding: gzip’ —header ‘authorization: OAuth oauth_consumer_key=“consumer-key-for-app”,oauth_nonce=“generated-nonce”,oauth_signature=“generated-signature”,oauth_signature_method=“HMAC-SHA1”, oauth_timestamp=“generated-timestamp”,oauth_token=“access-token-for-authed-user”, oauth_version=“1.0”’ —header ‘content-type: application/json’ —data ’{ “tweet_ids”: [ “1060976163948904448”,“1045709644067471360” ], “engagement_types”: [ “favorites”,“replies”,“retweets”,“video_views”,“impressions”,“engagements” ], “groupings”: { “perTweetMetricsOwned”: { “group_by”: [ “tweet.id”, “engagement.type” ] } } }’ —verbose —compressed |
| 응답 예시 (공개 지표) | { “perTweetMetricsUnowned”: { “1021817816134156288”: { “favorites”: “530”, “quote_tweets”: “79”, “replies”: “147”, “retweets”: “323”, “video_views”: “0” }, “1067094924124872705”: { “favorites”: “1360”, “quote_tweets”: “29”, “replies”: “56”, “retweets”: “178”, “video_views”: “5754512” }, “1070059276213702656”: { “favorites”: “69”, “quote_tweets”: “5”, “replies”: “7”, “retweets”: “26”, “video_views”: “0” } } } |
| 응답 예시 | { “perTweetMetricsOwned”: { “1045709644067471360”: { “engagements”: “2”, “favorites”: “0”, “impressions”: “47”, “replies”: “0”, “retweets”: “8”, “quote_tweets”: “5”, “video_views”: “0” }, “1060976163948904448”: { “engagements”: “4”, “favorites”: “0”, “impressions”: “148”, “replies”: “1”, “retweets”: “9”, “quote_tweets”: “2”, “video_views”: “0” } } } |
| 사용 불가능한 게시물 ID | 사용 불가능한 게시물 ID(예: 삭제된 게시물)가 포함된 쿼리의 경우, 사용 가능한 모든 게시물 ID에 대한 적절한 데이터가 반환되며, 사용 불가능한 게시물 ID는 unavailable_tweet_ids 배열에서 참조됩니다. 예시: { “start”: “2015-11-17T22:00:00Z”, “end”: “2015-11-19T02:00:00Z”, “unavailable_tweet_ids”: [ “323456789” ], “group1”: { “423456789”: { “favorites”: “67”, “replies”: “8”, “retweets”: “26”, “quote_tweets”: “2” } } } |
POST /insights/engagement/28hr
| 요청 메서드 | HTTP POST |
| URL | https://data-api.x.com/insights/engagement/28hr |
| 콘텐츠 유형 | application/json |
| 압축 | Gzip. Gzip 압축을 사용하여 요청하려면 연결 요청에 Accept-Encoding 헤더를 전송하십시오. 헤더는 다음과 같아야 합니다: Accept-Encoding: gzip |
| POST 형식 | 요청은 게시물 ID 모음과 원하는 그룹화를 포함하는 JSON 객체를 본문으로 하는 POST 요청으로 전송할 수 있습니다. POST는 tweets, engagements, groupings 객체가 포함된 배열로 형식화됩니다. 각 요청은 최대 25개의 게시물 ID를 가질 수 있습니다. POST 본문 예시는 다음과 같습니다: { “tweet_ids”: [ “Tweet ID 1”, “Tweet ID 2”, “Tweet ID 3” ], “engagement_types”: [ “impressions”, “engagements”, “url_clicks”, “detail_expands” ], “groupings”: { “grouping name”: { “group_by”: [ “tweet.id”, “engagement.type”, “engagement.hour” ] } } } |
| 게시물 ID | 참여 데이터를 쿼리할 게시물의 게시물 ID를 포함하는 배열입니다. 인증하는 @handle이 생성한 게시물에 대한 데이터만 요청할 수 있습니다. 28시간 엔드포인트는 요청당 최대 25개의 게시물을 지원하며, 게시물 ID는 문자열로 표현되어야 합니다. |
| 참여 유형 | 쿼리할 참여 지표 유형의 배열입니다. 28시간 엔드포인트의 경우 impressions, engagements 및 모든 개별 참여 유형이 지원되는 지표입니다. 지원되는 참여 지표의 전체 목록은 참여 데이터를 참조하십시오. |
| 그룹화 | 참여 API의 결과는 사용자의 요구에 가장 적합하도록 다양한 그룹으로 반환될 수 있습니다. 요청당 최대 3개의 그룹화를 포함할 수 있습니다. 각 그룹화에 대해 애플리케이션에서 이 그룹화 유형을 더 쉽게 참조할 수 있도록 사용자 정의 그룹화 이름을 정의할 수 있습니다. 그룹화 이름을 정의한 후 다음 값 중 하나 이상으로 그룹화하도록 선택할 수 있습니다: tweet.id engagement.type engagement.day engagement.hour 그룹화는 순차적으로 적용되므로 group_by 값의 순서를 변경하여 원하는 결과 형식을 변경할 수 있습니다. 게시물 ID, 지표 유형별로 구분된 지표를 표시하는 그룹화 예시는 다음과 같습니다: “groupings”: { “my grouping name”: { “group_by”: [ “tweet.id”, “engagement.type”, “engagement.day” ] } } 4개의 group_by 항목이 있는 그룹화는 다음 두 순서 중 하나를 사용하는 경우에만 유효합니다. 다음 중 하나가 아닌 단일 그룹화에 4개의 group_by 항목이 있는 요청은 오류를 반환합니다. 또한 요청당 4개의 group_by 항목이 있는 그룹화는 하나만 허용됩니다. “group_by”: [ “tweet.id”, “engagement.type”, “engagement.day”, “engagement.hour” ] “group_by”: [ “engagement.type”, “tweet.id”, “engagement.day”, “engagement.hour” ] |
| POST 크기 제한 | 한 번에 최대 25개의 게시물 ID에 대해 요청할 수 있습니다. |
| 응답 형식 | JSON. 요청의 헤더는 응답에 대해 JSON 형식을 지정해야 합니다. |
| 속도 제한 | 액세스 수준에 따라 계약에 명시된 대로 분당 속도 제한이 적용됩니다. |
| 요청 예시 | curl -X POST “https://data-api.x.com/insights/engagement/28hr” -H ‘Accept-Encoding: gzip’ -H ‘Authorization OAuth oauth_consumer_key=“consumer-key-for-app”,oauth_nonce=“generated-nonce”,oauth_signature=“generated-signature”,oauth_signature_method=“HMAC-SHA1”, oauth_timestamp=“generated-timestamp”,oauth_token=“access-token-for-authed-user”, oauth_version=“1.0”’ -d ’{ “tweet_ids”: [ “123456789” ], “engagement_types”: [ “impressions”, “engagements” ], “groupings”: { “hourly-time-series”: { “group_by”: [ “tweet.id”, “engagement.type”, “engagement.day”, “engagement.hour” ] } } }‘ |
| 응답 예시 | { “start”: “2015-09-14T17:00:00Z”, “end”: “2015-09-15T22:00:00Z”, “hourly-time-series”: { “123456789”: { “impressions”: { “2015-09-14”: { “17”: “551”, “18”: “412”, “19”: “371”, “20”: “280”, “21”: “100”, “22”: “19”, “23”: “6” }, “2015-09-15”: { “00”: “5”, “01”: “2”, “02”: “7”, “03”: “3”, “04”: “1”, “05”: “0”, “06”: “0”, “07”: “0”, “08”: “0”, “09”: “0”, “10”: “0”, “11”: “0”, “12”: “0”, “13”: “0”, “14”: “0”, “15”: “0”, “16”: “0”, “17”: “0”, “18”: “0”, “19”: “0”, “20”: “0”, “21”: “0” } }, “engagements”: { “2015-09-14”: { “17”: “0”, “18”: “0”, “19”: “0”, “20”: “0”, “21”: “0”, “22”: “0”, “23”: “0” }, “2015-09-15”: { “00”: “0”, “01”: “0”, “02”: “0”, “03”: “0”, “04”: “0”, “05”: “0”, “06”: “0”, “07”: “0”, “08”: “0”, “09”: “0”, “10”: “0”, “11”: “0”, “12”: “0”, “13”: “0”, “14”: “0”, “15”: “0”, “16”: “0”, “17”: “0”, “18”: “0”, “19”: “0”, “20”: “0”, “21”: “0” } } } } } |
| 사용 불가능한 게시물 ID | 사용 불가능한 게시물 ID(예: 삭제된 게시물)가 포함된 쿼리의 경우, 사용 가능한 모든 게시물 ID에 대한 적절한 데이터가 반환되며, 사용 불가능한 게시물 ID는 unavailable_tweet_ids 배열에서 참조됩니다. 예시: { “start”: “2015-11-17T22:00:00Z”, “end”: “2015-11-19T02:00:00Z”, “unavailable_tweet_ids”: [ “323456789” ], “group1”: { “423456789”: { “favorites”: “67”, “replies”: “8”, “retweets”: 26 } } } |
POST /insights/engagement/historical
| 요청 메서드 | HTTP POST |
| URL | https://data-api.x.com/insights/engagement/historical |
| 콘텐츠 타입 | application/json |
| 압축 | Gzip. Gzip 압축을 사용하여 요청하려면 연결 요청에 Accept-Encoding 헤더를 전송하십시오. 헤더는 다음과 같아야 합니다: Accept-Encoding: gzip |
| POST 형식 | 요청은 게시물 ID 모음과 원하는 그룹화를 포함하는 JSON 객체를 본문으로 하는 POST 요청으로 전송될 수 있습니다. POST는 tweets, engagements, groupings 객체가 포함된 배열로 형식화됩니다. 각 요청은 최대 25개의 게시물 ID를 가질 수 있습니다. 각 요청은 최대 4주 기간의 사용자 지정 시작 및 종료 날짜로 지정할 수 있습니다. { “tweet_ids”: [ “Tweet ID 1”, “Tweet ID 2”, “Tweet ID 3” ], “engagement_types”: [ “impressions”, “engagements”, “url_clicks”, “detail_expands” ], “groupings”: { “grouping name”: { “group_by”: [ “tweet.id”, “engagement.type”, “engagement.day” ] } } } |
| 시작 및 종료 날짜 | 요청의 일부로 start 및 end 값을 사용하여 사용자 지정 시작 및 종료 날짜를 지정할 수 있습니다. 기간이 4주를 초과하지 않는 시작 및 종료 날짜를 지정해야 합니다. 현재 가능한 가장 오래된 시작 날짜는 2014년 9월 1일입니다. 미래의 종료 날짜는 지원되지 않습니다. 시작 및 종료 날짜가 제공되지 않으면 API는 기본적으로 직전 4주로 설정됩니다. Engagement API에서 데이터를 반환할 수 있는 가장 낮은 세분성은 시간 단위입니다. 시간 경계에 정확히 맞지 않는 시작 또는 종료 값으로 요청하는 경우 요청은 가장 가까운 포괄적 시간으로 기본 설정됩니다. 예를 들어, “start”:“2015-07-01T12:24:00Z” 및 “end”:“2015-07-10T08:37:00Z”로 요청하면 “start”:“2015-07-01T12:00:00Z”,“end”:“2015-07-10T09:00:00Z”로 기본 설정됩니다. |
| 게시물 ID | 참여 데이터를 쿼리할 게시물의 게시물 ID를 포함하는 배열입니다. 인증하는 @handle이 생성한 게시물에 대한 데이터만 요청할 수 있습니다. 4주 기록 엔드포인트는 요청당 최대 25개의 게시물을 지원하며 게시물 ID는 문자열로 표현되어야 합니다. |
| 참여 유형 | 쿼리할 참여 지표 유형을 포함하는 배열입니다. 4주 기록 엔드포인트의 경우 impressions, engagements 및 모든 개별 참여 유형이 지원되는 지표입니다. 지원되는 참여 지표의 전체 목록은 참여 데이터를 참조하십시오. 참고: 현재 2015년 9월 15일 이전에 수행된 쿼리에 대해 0으로 표시되는 세 가지 지표가 있습니다: favorites, replies, retweets. |
| 그룹화 | Engagement API의 결과는 사용자의 요구에 가장 적합하도록 다양한 그룹으로 반환될 수 있습니다. 요청당 최대 3개의 그룹화를 포함할 수 있습니다. 각 그룹화에 대해 애플리케이션에서 이 그룹화 유형을 더 쉽게 참조할 수 있도록 사용자 지정 그룹화 이름을 정의할 수 있습니다. 그룹화 이름을 정의한 후 다음 값 중 하나 이상으로 그룹화하도록 선택할 수 있습니다: tweet.id engagement.type engagement.day engagement.hour 그룹화는 순차적으로 적용되므로 group_by 값의 순서를 변경하여 원하는 결과 형식을 변경할 수 있습니다. 게시물 ID, 지표 유형별로 구분된 지표를 표시하는 그룹화 예시는 다음과 같습니다: “groupings”: { “my grouping name”: { “group_by”: [ “tweet.id”, “engagement.type”, “engagement.day” ] } } 4개의 group_by 항목이 있는 그룹화는 다음 두 순서 중 하나를 사용하는 경우에만 유효합니다. 다음 중 하나가 아닌 단일 그룹화에 4개의 group_by 항목이 있는 요청은 오류를 반환합니다. 또한 요청당 4개의 group_by 항목이 있는 그룹화는 하나만 허용됩니다. “group_by”: [ “tweet.id”, “engagement.type”, “engagement.day”, “engagement.hour” ] “group_by”: [ “engagement.type”, “tweet.id”, “engagement.day”, “engagement.hour” ] |
| POST 크기 제한 | 한 번에 최대 25개의 게시물 ID에 대해 요청할 수 있습니다. |
| 응답 형식 | JSON. 요청의 헤더는 응답에 대한 JSON 형식을 지정해야 합니다. |
| 속도 제한 | 액세스 수준에 따라 계약에 명시된 대로 분당 속도 제한이 적용됩니다. |
| 요청 예시 | curl -XPOST “https://data-api.x.com/insights/engagement/historical” -H ‘Accept-Encoding: gzip’ -H ‘Authorization OAuth oauth_consumer_key=“consumer-key-for-app”,oauth_nonce=“generated-nonce”,oauth_signature=“generated-signature”,oauth_signature_method=“HMAC-SHA1”, oauth_timestamp=“generated-timestamp”,oauth_token=“access-token-for-authed-user”, oauth_version=“1.0”’ -d ’{ “start”: “2015-08-01”, “end”: “2015-08-15”, “tweet_ids”: [ “123456789”, “223456789”, “323456789” ], “engagement_types”: [ “impressions”, “engagements”, “url_clicks”, “detail_expands” ], “groupings”: { “types-by-tweet-id”: { “group_by”: [ “tweet.id”, “engagement.type” ] } } }‘ |
| 응답 예시 | { “start”: “2015-08-01T00:00:00Z”, “end”: “2015-08-15T00:00:00Z”, “types-by-tweet-id”: { “123456789”: { “impressions”: “0”, “engagements”: “0”, “url_clicks”: “0”, “detail_expands”: “0” }, “223456789”: { “impressions”: “788”, “engagements”: “134”, “url_clicks”: “30”, “detail_expands”: “1323” }, “323456789”: { “impressions”: “4”, “engagements”: “0”, “url_clicks”: “2”, “detail_expands”: “0” } } } |
| 사용 불가능한 게시물 ID | 사용 불가능한 게시물 ID(예: 삭제된 게시물)가 포함된 쿼리의 경우, 사용 가능한 모든 게시물 ID에 대한 적절한 데이터가 반환되며, 사용 불가능한 게시물 ID는 unavailable_tweet_ids 배열에 표시됩니다. 예시:{ “start”: “2015-11-17T22:00:00Z”, “end”: “2015-11-19T02:27:50Z”, “unavailable_tweet_ids”: [ “323456789” ], “group1”: { “423456789”: { “favorites”: “67”, “replies”: “8”, “retweets”: 26 } } } |
응답 코드
| 상태 | 텍스트 | 설명 |
|---|---|---|
| 200 | OK | 요청이 성공했습니다. |
| 400 | Bad Request | 일반적으로 요청에 유효하지 않은 JSON이 포함되어 있거나 JSON 페이로드를 전송하지 않은 경우 발생합니다. |
| 401 | Unauthorized | 잘못된 자격 증명으로 인해 HTTP 인증에 실패했습니다. OAuth 키와 토큰을 확인하세요. |
| 404 | Not Found | 요청이 전송된 URL에서 리소스를 찾을 수 없습니다. 잘못된 URL을 사용했을 가능성이 큽니다. |
| 429 | Too Many Requests | 앱이 API 요청 한도를 초과했습니다. |
| 500 | Internal Server Error | Gnip 측 오류가 발생했습니다. 지수 백오프 방식으로 다시 시도하세요. |
| 502 | Proxy Error | Gnip 측 오류가 발생했습니다. 지수 백오프 방식으로 다시 시도하세요. |
| 503 | Service Unavailable | Gnip 측 오류가 발생했습니다. 지수 백오프 방식으로 다시 시도하세요. |
오류 메시지
| Error Message | Description |
|---|---|
"errors":["Your account could not be authenticated. Reason: Access token not found"] | 요청의 인증 구성 요소에 오류가 있습니다. “Reason”에는 문제 해결에 도움이 되는 정보가 제공됩니다. 해결할 수 없는 경우 “Reason”을 포함한 전체 오류를 지원팀에 보내주시기 바랍니다. |
"errors":["1 Tweet ID(s) are unavailable"],"unavailable_tweet_ids": ["TWEET_IDS"] | 요청한 Tweet ID가 더 이상 제공되지 않습니다. 보통 삭제되었거나 다른 이유로 더 이상 공개적으로 이용할 수 없음을 의미합니다. |
"errors":["Impressions & engagements for tweets older than 90 days (*TIME_PERIOD*) are not supported"],"unsupported_for_impressions_engagements_tweet_ids":[*TWEET_IDS*] | /totals 엔드포인트에 대해 요청한 Tweet ID가 90일 이내가 아니므로, impressions 또는 engagements 지표를 반환할 수 없습니다. |
"errors":["Forbidden to access tweets: *TWEET_IDS*"] | 제3자를 대신해 데이터를 조회할 때 사용 중인 인증 토큰 기준으로, 요청한 Tweet ID에 대한 접근이 허용되지 않습니다. |