Documentation
TwitterDown API v1
Use a single POST /twitter endpoint to resolve Twitter/X video assets. Responses are JSON-first and include explicit rate-limit headers.
Overview
TwitterDown API gives developers programmatic access to Twitter/X video extraction for automation, media archiving, content workflows, and internal tooling.
- Base URL: https://twitterdown.com/api/v1
- Authentication: Bearer token (API key)
- Response format: application/json
Authentication
Every request must include a valid API key in the Authorization header. Keys are tied to your account and can be revoked at any time from the dashboard.
Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxx
API Key
- Sign in to TwitterDown and activate an API-enabled plan.
- Open Dashboard > API Keys.
- Create a key with a label that matches your app or environment.
API keys are only shown once. Store them in a proper secret manager before leaving the page.
Core endpoints
POST /twitter
POST /twitter resolves a public tweet URL and returns thumbnails, video variants, text, username, and status identifiers.
POST https://twitterdown.com/api/v1/twitter
Content-Type: application/json
Authorization: Bearer sk-xxxx
{
"url": "https://x.com/username/status/1234567890123456789"
}Successful response (200):
{
"code": 0,
"message": "ok",
"data": {
"thumbnail": "https://pbs.twimg.com/...jpg",
"videos": [
{ "resolution": "720p", "quality": "HD", "url": "https://video.twimg.com/..." },
{ "resolution": "360p", "quality": "SD", "url": "https://video.twimg.com/..." }
],
"text": "Tweet text",
"username": "username",
"statusId": "1234567890123456789",
"processed_at": "2024-01-01T12:00:00.000Z"
}
}GET /twitter
Returns endpoint metadata for integrations, SDK bootstrapping, or operational health checks.
Rate limits
- 60 requests / minute
- 1,000 requests / hour
- 10,000 requests / day
Read X-RateLimit-Limit, X-RateLimit-Remaining, and X-RateLimit-Reset on every response. When you exceed quota, the API returns HTTP 429 with Retry-After.
Error handling
All failures return JSON with a numeric code and a human-readable message.
{
"code": -1,
"message": "Readable error message"
}| Status | Meaning |
|---|---|
| 400 | Missing or malformed request payload |
| 401 | Missing or invalid API key |
| 403 | Plan does not allow the requested operation |
| 422 | Tweet URL could not be resolved |
| 429 | Rate limit exceeded |
| 500 | Unexpected server-side failure |
Examples
Use the snippets below as a starting point for backend integrations, automation scripts, or internal developer tooling.
JavaScript (fetch)
const res = await fetch("https://twitterdown.com/api/v1/twitter", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": "Bearer sk-xxxx"
},
body: JSON.stringify({ url })
});
const data = await res.json();Python (requests)
resp = requests.post(
"https://twitterdown.com/api/v1/twitter",
headers={
"Authorization": "Bearer sk-xxxx",
"Content-Type": "application/json",
},
json={"url": tweet_url},
)
print(resp.json())Need more implementation ideas? Browse API guides in the blog for integration patterns, launch notes, and workflow examples.
API
Next steps
Move from reference docs to a live request, or create an API key and wire the endpoint into your application.
