메인 콘텐츠로 건너뛰기
POST /2/media/upload 엔드포인트를 사용할 때 이해해야 할 중요한 개념이 몇 가지 있습니다. OAuth로 미디어를 업로드하는 작업은 다소 까다로울 수 있으므로, 유의할 점과 이 엔드포인트 사용 방법을 보여주는 작동 예제를 아래에 정리했습니다.

유의 사항

  • 게시물에는 사진 최대 4장, 애니메이션 GIF 1개 또는 동영상 1개를 첨부할 수 있습니다.
  • 전달되는 이미지는 원시 이진 데이터이거나 base64로 인코딩된 이진 데이터여야 하며, 적절한 Content-Type이 설정되어 있다면(확실하지 않은 경우: application/octet-stream) 추가적인 인코딩이나 이스케이프는 필요하지 않습니다.
  • base64로 인코딩된 이미지를 게시할 때는 메시지의 이미지 파트에 “Content-Transfer-Encoding: base64”를 설정해야 합니다.
  • 멀티파트 메시지의 경계(boundary)는 독립된 줄에 위치해야 하며, CRLF로 끝나야 합니다.
  • 이 엔드포인트로 POST하는 동작 예시는 xurl로 테스트해 보실 것을 권장합니다. 또한 제공되는 X Libraries도 참고하세요.
  • 긴 정수를 정확히 표현할 수 없는 JavaScript 및 기타 언어에서는 API 응답에 제공되는 media_id_string을 사용하세요.

미디어 카테고리

Media Category 매개변수는 업로드할 미디어 파일의 사용 사례를 정의하며, 미디어 업로드에 적용되는 파일 크기 제한 또는 기타 제약에 영향을 줄 수 있습니다. 미디어를 사용할 때 문제가 발생하지 않도록 올바른 미디어 카테고리를 사용하는 것이 중요합니다. 이는 업로드 플로우에서 INIT 요청에 포함되어 전달되는 선택적 값입니다. 미디어 카테고리가 지정되지 않은 경우 업로드된 미디어는 콘텐츠 유형에 따라 게시물용 미디어(tweet_image, tweet_video, 또는 tweet_gif)로 간주됩니다. 가장 일반적인 미디어 카테고리는 다음과 같습니다:
  • tweet_image
  • tweet_video
  • tweet_gif
  • dm_image
  • dm_video
  • dm_gif
  • tweet_image
Ads API 파트너인 경우 프로모션 비디오에 권장되는 미디어 카테고리에 대한 자세한 내용은 이 문서를 참조하세요.

이미지 사양 및 권장사항

이미지 파일은 다음 모든 기준을 충족해야 합니다:
  • 지원되는 이미지 미디어 유형: JPG, PNG, GIF, WEBP
  • 이미지 크기: <= 5 MB
  • 애니메이션 GIF 크기: <= 15 MB
위의 파일 크기 제한은 미디어 업로드 엔드포인트에서 적용됩니다. 또한 media_id와 함께 게시물 생성(또는 유사한) 엔드포인트를 호출할 때 적용되는 제품 엔터티별 파일 크기 제한이 별도로 있습니다. 파일 크기 제한 및 기타 제약은 media_category 매개변수에 따라 달라질 수 있습니다.

애니메이션 GIF 권장 사항

파일 크기 제한을 충족하더라도 게시물 생성 중 GIF 업로드가 실패할 수 있습니다. 성공률을 높이려면 다음 제한 사항을 준수하세요.
  • 해상도: <= 1280x1080 (width x height)
  • 프레임 수: <= 350
  • 픽셀 수: <= 300 million (width * height * num_frames)
  • 파일 크기: <= 15Mb
더 큰 GIF를 처리하려면 media_category 매개변수와 함께 chunked upload 엔드포인트를 사용하세요. 이렇게 하면 서버가 GIF 파일을 비동기적으로 처리할 수 있으며, 대용량 파일 처리에 필수입니다. 애니메이션 GIF가 포함된 게시물에서 비동기 업로드를 활성화하려면 media_category=tweet_gif를 전달하세요.

동영상 사양 및 권장 사항

미디어 업로드에는 비동기 경로(Async Path)를 사용하세요.
  • 비디오 코덱: H264 High Profile
  • 프레임 레이트: 30 FPS, 60 FPS
  • 비디오 해상도: 1280x720(가로), 720x1280(세로), 720x720(정사각형). 구독자는 1080p 동영상을 업로드해 1080p로 재생할 수 있습니다. 비구독자는 720p 동영상을 업로드해 720p로 재생할 수 있습니다.
  • 최소 비디오 비트레이트: 5,000 kbps
  • 최소 오디오 비트레이트: 128 kbps
  • 오디오 코덱: AAC LC
  • 화면비: 16:9(가로/세로), 1:1(정사각형)

고급

  • 프레임 레이트: 60 FPS 이하여야 합니다
  • 해상도(가로×세로): 32x32 이상 1280x1024 이하여야 합니다
  • 파일 크기: 512 MB를 초과할 수 없습니다
  • 재생 길이: 0.5초 이상 140초 이하여야 합니다
  • 가로세로비: 1:3 이상 3:1 이하여야 합니다
  • 픽셀 가로세로비: 1:1이어야 합니다
  • 픽셀 포맷: YUV 4:2:0만 지원됩니다
  • 오디오는 Low Complexity 프로파일의 AAC이어야 합니다. (High-Efficiency AAC는 지원되지 않습니다)
  • 오디오는 모노 또는 스테레오여야 하며, 5.1 이상은 불가합니다
  • open GOP를 사용하면 안 됩니다
  • progressive scan을 사용해야 합니다

추가 정보

아래 표의 각 행은 업로드 권장 사항이며, 필수 요건은 아닙니다. 모든 업로드는 여러 플랫폼에서 최적화되도록 처리됩니다.
방향너비높이비디오 비트레이트오디오 비트레이트
가로12807202048K128K
가로640360768K64K
가로320180256K64K
세로72012802048K128K
세로360640768K64K
세로180320256K64K
정사각형7207202048K128K
정사각형480480768K64K
정사각형240240256K32K
미디어 업로드 예시는 청크 단위 미디어 업로드 문서를 참조하세요.

문제 해결

Media API 관련 문제가 있을 경우, 답변을 찾기 위해 개발자 포럼의 Media API 카테고리를 확인해 보세요.