API documentation

For API pricing click here

Xtwitt API is hosted at xtwitt.com.


Authentication

To access Xtwitt API, you must include your unique API key. You can obtain an API key by signing up with your email address. Please remember to keep your API key confidential.

Authentication with the API is handled through HTTP headers. All requests require an Authorization header containing your API key in the format key: YOUR_API_KEY, where YOUR_API_KEY is the key available on your account page.

For security, all requests must be sent over an encrypted HTTPS connection to protect your data during transmission.


Download Endpoint

Extract media from any supported URL with a single synchronous request. No polling required.

POST https://api.xtwitt.com/api/download

ParameterTypeDescription
urlstringThe URL to extract media from (JSON body)

Headers: Authorization: YOUR_API_KEY, Content-Type: application/json

import requests

headers = {
    "Authorization": "API_KEY",
    "Content-Type": "application/json"
}
r = requests.post(
    url="https://api.xtwitt.com/api/download",
    headers=headers,
    json={"url": "URL"}
)

if r.status_code == 200:
    data = r.json()
    for item in data.get("items", []):
        print(f"Type: {item['type']}, URL: {item['url']}")
else:
    print(f"Error: {r.status_code} - {r.text}")
const axios = require('axios');

async function download() {
    try {
        const response = await axios.post(
            'https://api.xtwitt.com/api/download',
            { url: "URL" },
            { headers: { "Authorization": "API_KEY", "Content-Type": "application/json" } }
        );

        for (const item of response.data.items) {
            console.log(`Type: ${item.type}, URL: ${item.url}`);
        }
    } catch (error) {
        console.error(`Error: ${error.response?.status} - ${error.response?.data}`);
    }
}

download();
<?php

$ch = curl_init("https://api.xtwitt.com/api/download");
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: API_KEY",
    "Content-Type: application/json"
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode(["url" => "URL"]));

$response = curl_exec($ch);
$statusCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);

if ($statusCode === 200) {
    $data = json_decode($response, true);
    foreach ($data['items'] as $item) {
        echo "Type: {$item['type']}, URL: {$item['url']}\n";
    }
} else {
    echo "Error: $statusCode - $response\n";
}

?>
curl -X POST "https://api.xtwitt.com/api/download" \
  -H "Authorization: API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "URL"}'
Response
{
    "success": true,
    "items": [
        {
            "url": "https://...",
            "type": "video",
            "thumbnail": "https://...",
            "mime_type": "video/mp4",
            "site": "tiktok",
            "title": "Video title"
        }
    ]
}

Conversion Endpoints

Convert media to different formats. Returns a binary file stream.

EndpointOutput FormatContent-Type
POST /api/convert/mp3MP3 audioaudio/mpeg
POST /api/convert/mp4MP4 videovideo/mp4
POST /api/convert/wavWAV audioaudio/wav
POST /api/convert/gifGIF imageimage/gif

All conversion endpoints are at https://api.xtwitt.com.

Request body (JSON):

ParameterTypeRequiredDescription
urlstringYesThe media URL to convert
options.start_timenumberNoStart time in seconds
options.end_timenumberNoEnd time in seconds
options.audio_qualitystringNoAudio bitrate (e.g. "128", "192", "320")
options.video_qualitystringNoVideo quality (e.g. "720", "1080")
options.h264booleanNoForce H.264 codec for MP4
options.subtitlesbooleanNoEmbed subtitles if available
Example: Convert to MP3
import requests

headers = {
    "Authorization": "API_KEY",
    "Content-Type": "application/json"
}

r = requests.post(
    url="https://api.xtwitt.com/api/convert/mp3",
    headers=headers,
    json={
        "url": "URL",
        "options": {
            "audio_quality": "192",
            "start_time": 10,
            "end_time": 45
        }
    },
    stream=True
)

if r.status_code == 200:
    with open("output.mp3", "wb") as f:
        for chunk in r.iter_content(chunk_size=8192):
            f.write(chunk)
    print("Downloaded output.mp3")
else:
    print(f"Error: {r.status_code} - {r.text}")
curl -X POST "https://api.xtwitt.com/api/convert/mp3" \
  -H "Authorization: API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "URL", "options": {"audio_quality": "192"}}' \
  --output output.mp3

Error Handling

All errors return a JSON response with an error field:

// 400 Bad Request
{"error": "Missing URL"}

// 401 Unauthorized
{"error": "Invalid API token"}

// 402 Payment Required
{"error": "Insufficient credits"}

API Privacy Policy Terms of Service Contact Us BlueSky Follow us on BlueSky

2026 Downloader LLC | Made by nadermx