- 블로그
- TwitterDown API 문서
TwitterDown API 문서
TwitterDownon 18 days ago
TwitterDown API 개발 문서
개요
TwitterDown API v1은 Twitter/X 링크에서 비디오 정보를 추출하기 위한 프로그래밍 방식의 액세스를 제공합니다. 이 API를 통해 개발자는 Twitter 비디오 분석 기능을 애플리케이션에 통합할 수 있습니다.
기본 URL
https://twitterdown.com/api/v1
인증
모든 API 요청은 API 키를 사용하여 인증해야 합니다. 각 요청의 Authorization
헤더에 API 키를 포함해야 합니다.
API 키 형식
Authorization: Bearer 당신의_API_키
API 키 획득
- TwitterDown에서 계정을 생성합니다.
- 프리미엄 구독을 구매합니다.
- 대시보드에서 API 키 섹션으로 이동합니다.
- 새로운 API 키를 생성합니다.
참고: API 접근은 프리미엄 사용자에게만 제공됩니다.
속도 제한
- 분당 요청 수: 60
- 시간당 요청 수: 1,000
- 일일 요청 수: 10,000
모든 응답에는 속도 제한 헤더가 포함됩니다:
X-RateLimit-Limit
: 현재 시간 창에 대한 요청 제한X-RateLimit-Remaining
: 현재 창에서 남은 요청 수X-RateLimit-Reset
: 속도 제한이 재설정될 Unix 타임스탬프
엔드포인트
1. 트위터 비디오 URL 분석
Twitter/X URL에서 비디오 정보를 추출합니다.
엔드포인트 주소: POST /twitter
요청
요청 헤더:
Content-Type: application/json
Authorization: Bearer 당신의_API_키
요청 본문:
{
"url": "https://x.com/username/status/1234567890123456789"
}
매개변수:
매개변수명 | 타입 | 필수 | 설명 |
---|---|---|---|
url |
string | 예 | 비디오를 포함하는 유효한 Twitter/X 트윗 URL |
응답
성공 응답 (200 OK):
{
"code": 0,
"message": "ok",
"data": {
"thumbnail": "https://pbs.twimg.com/amplify_video_thumb/1234567890123456789/img/ExampleThumbnail.jpg",
"videos": [
{
"resolution": "720p",
"quality": "HD",
"url": "https://video.twimg.com/amplify_video/1234567890123456789/vid/avc1/1280x720/ExampleVideoHD.mp4?tag=21"
},
{
"resolution": "360p",
"quality": "SD",
"url": "https://video.twimg.com/amplify_video/1234567890123456789/vid/avc1/640x360/ExampleVideoSD.mp4?tag=21"
},
{
"resolution": "270p",
"quality": "SD",
"url": "https://video.twimg.com/amplify_video/1234567890123456789/vid/avc1/480x270/ExampleVideoLow.mp4?tag=21"
}
],
"text": "이것은 비디오를 포함하는 트윗 내용의 예시입니다",
"username": "username",
"statusId": "1234567890123456789",
"processed_at": "2024-01-01T12:00:00.000Z"
}
}
응답 필드:
필드명 | 타입 | 설명 |
---|---|---|
code |
integer | 응답 코드 (0 = 성공, -1 = 오류) |
message |
string | 응답 메시지 |
data |
object | 응답 데이터 |
thumbnail |
string | 트윗 썸네일 URL (비어있을 수 있음) |
videos |
array | 사용 가능한 비디오 형식 배열 |
text |
string | 트윗 텍스트 내용 |
username |
string | 트위터 사용자명 |
statusId |
string | 트윗 상태 ID |
processed_at |
string | 처리된 시간의 ISO 8601 타임스탬프 |
비디오 객체 필드:
필드명 | 타입 | 설명 |
---|---|---|
resolution |
string | 비디오 해상도 (예: "720p", "360p") |
quality |
string | 비디오 품질 (예: "HD", "SD") |
url |
string | 비디오의 직접 다운로드 URL |
2. API 문서
API 문서 및 사용 정보를 가져옵니다.
엔드포인트 주소: GET /twitter
응답
엔드포인트 정보, 인증 요구 사항, 예시를 포함한 전체 API 문서가 JSON 형식으로 반환됩니다.
오류 처리
오류 응답 형식
{
"code": -1,
"message": "오류 설명"
}
HTTP 상태 코드
상태 코드 | 설명 |
---|---|
200 |
성공 |
400 |
잘못된 요청 - 유효하지 않은 매개변수 |
401 |
권한 없음 - API 키 누락 또는 유효하지 않음 |
403 |
금지됨 - 프리미엄 구독 필요 |
422 |
처리할 수 없는 엔티티 - URL을 분석할 수 없음 |
429 |
요청 과다 - 속도 제한 초과 |
500 |
내부 서버 오류 |
일반적인 오류 메시지
오류 메시지 | 원인 |
---|---|
Missing API key |
Authorization 헤더가 제공되지 않았습니다 |
Invalid API key |
API 키를 찾을 수 없거나 만료되었습니다 |
API access is only available for premium users |
API 접근은 프리미엄 사용자에게만 제공됩니다 |
URL parameter is required |
요청 본문에 URL이 필요합니다 |
Invalid Twitter/X URL format |
URL 형식이 잘못되었거나 지원되지 않습니다 |
No video found |
트윗에 비디오 콘텐츠가 없습니다 |
예시
cURL 예시
curl --location --request POST 'https://twitterdown.com/api/v1/twitter' \
--header 'Authorization: Bearer sk-1234567890abcdef123456789012345678' \
--header 'Content-Type: application/json' \
--data-raw '{
"url": "https://x.com/username/status/1234567890123456789"
}'
JavaScript 예시
const response = await fetch('https://twitterdown.com/api/v1/twitter', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer sk-1234567890abcdef123456789012345678'
},
body: JSON.stringify({
url: 'https://x.com/username/status/1234567890123456789'
})
});
const data = await response.json();
if (data.code === 0) {
console.log('비디오를 찾았습니다:', data.data.videos);
} else {
console.error('오류:', data.message);
}
Python 예시
import requests
url = "https://twitterdown.com/api/v1/twitter"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer sk-1234567890abcdef123456789012345678"
}
payload = {
"url": "https://x.com/username/status/1234567890123456789"
}
response = requests.post(url, headers=headers, json=payload)
data = response.json()
if data["code"] == 0:
print("비디오를 찾았습니다:", data["data"]["videos"])
else:
print("오류:", data["message"])
PHP 예시
<?php
$url = 'https://twitterdown.com/api/v1/twitter';
$headers = [
'Content-Type: application/json',
'Authorization: Bearer sk-1234567890abcdef123456789012345678'
];
$payload = json_encode([
'url' => 'https://x.com/username/status/1234567890123456789'
]);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
if ($data['code'] === 0) {
echo "비디오를 찾았습니다: " . print_r($data['data']['videos'], true);
} else {
echo "오류: " . $data['message'];
}
?>
모범 사례
URL 형식 지원
API는 다음 URL 형식을 지원합니다:
https://twitter.com/username/status/1234567890
https://x.com/username/status/1234567890
https://mobile.twitter.com/username/status/1234567890
오류 처리
응답에서 code
필드를 항상 확인하십시오:
code: 0
은 성공을 의미합니다code: -1
은 오류를 의미합니다
API 오류를 우아하게 처리할 수 있도록 애플리케이션에 적절한 오류 처리를 구현하십시오.
속도 제한
응답의 속도 제한 헤더를 모니터링하고, 제한에 근접할 경우 백오프 전략을 구현하십시오.
보안
- API 키를 안전하게 보호하고 클라이언트 측 코드에 노출하지 마십시오.
- 환경 변수를 사용하여 API 키를 저장하십시오.
- API 키를 주기적으로 변경하십시오.
- 사용하지 않는 API 키를 삭제하십시오.
지원
API 지원 및 문의 사항:
- 이메일: support@twitterdown.com
- 문서: https://twitterdown.com/docs
- 상태 페이지: https://status.twitterdown.com
변경 로그
버전 1.0.0 (2025년 5월 27일)
- 최초 API 릴리스
- 트위터/X 비디오 분석
- 프리미엄 사용자 인증
- 속도 제한 구현
최종 업데이트: 2025년 5월 27일