Get Video Info
Extract comprehensive metadata from any supported video URL.
/v1/info
1 credit
Description
Extract comprehensive metadata from any supported video URL. This is the only synchronous endpoint — the response is returned immediately. Use it to probe URLs before downloading, display video details to users, or check available formats and qualities.
Request
Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| url | string | Yes | — | The source video URL to probe |
Code Examples
curl "https://videoconduit.com/v1/info?url=https://youtube.com/watch?v=dQw4w9WgXcQ" \
-H "Authorization: Bearer vc_your_api_key"import requests
response = requests.get(
"https://videoconduit.com/v1/info",
params={"url": "https://youtube.com/watch?v=dQw4w9WgXcQ"},
headers={"Authorization": "Bearer vc_your_api_key"},
)
data = response.json()
print(data["title"], data["duration"])const response = await fetch(
"https://videoconduit.com/v1/info?url=https://youtube.com/watch?v=dQw4w9WgXcQ",
{ headers: { "Authorization": "Bearer vc_your_api_key" } }
);
const data = await response.json();
console.log(data.title, data.duration);$client = new GuzzleHttp\Client();
$response = $client->get("https://videoconduit.com/v1/info", [
"query" => ["url" => "https://youtube.com/watch?v=dQw4w9WgXcQ"],
"headers" => ["Authorization" => "Bearer vc_your_api_key"],
]);
$data = json_decode($response->getBody(), true);
echo $data["title"];req, _ := http.NewRequest("GET",
"https://videoconduit.com/v1/info?url=https://youtube.com/watch?v=dQw4w9WgXcQ", nil)
req.Header.Set("Authorization", "Bearer vc_your_api_key")
resp, _ := http.DefaultClient.Do(req)
defer resp.Body.Close()
var data map[string]interface{}
json.NewDecoder(resp.Body).Decode(&data)require "net/http"
require "json"
uri = URI("https://videoconduit.com/v1/info?url=https://youtube.com/watch?v=dQw4w9WgXcQ")
req = Net::HTTP::Get.new(uri)
req["Authorization"] = "Bearer vc_your_api_key"
res = Net::HTTP.start(uri.hostname, uri.port, use_ssl: true) { |http| http.request(req) }
data = JSON.parse(res.body)
puts data["title"]Response
Response Schema
| Field | Type | Description |
|---|---|---|
| url | string | The source URL |
| title | string | Video title |
| description | string? | Video description |
| duration | number? | Duration in seconds |
| thumbnail | string? | Thumbnail image URL |
| upload_date | string? | ISO format upload date |
| view_count | integer? | View count |
| like_count | integer? | Like count |
| channel | string? | Channel/uploader name |
| channel_url | string? | Channel URL |
| tags | string[] | Tags |
| categories | string[] | Categories |
| subtitles | string[] | Available subtitle language codes |
| formats | FormatInfo[] | Available download formats |
FormatInfo Object
| Field | Type | Description |
|---|---|---|
| format_id | string | yt-dlp format identifier |
| ext | string | File extension (mp4, webm, etc.) |
| quality | string? | Quality label (1080p, 720p, etc.) |
| width | integer? | Video width in pixels |
| height | integer? | Video height in pixels |
| fps | number? | Frames per second |
| filesize | integer? | Estimated file size in bytes |
| vcodec | string? | Video codec |
| acodec | string? | Audio codec |
| audio_only | boolean | True if format has no video |
Example Response
{
"url": "https://youtube.com/watch?v=dQw4w9WgXcQ",
"title": "Rick Astley - Never Gonna Give You Up",
"description": "The official video for \u201cNever Gonna Give You Up\u201d by Rick Astley...",
"duration": 212.0,
"thumbnail": "https://i.ytimg.com/vi/dQw4w9WgXcQ/maxresdefault.jpg",
"upload_date": "2009-10-25T00:00:00Z",
"view_count": 1500000000,
"like_count": 16000000,
"channel": "Rick Astley",
"channel_url": "https://www.youtube.com/channel/UCuAXFkgsw1L7xaCfnd5JJOw",
"tags": ["rick astley", "never gonna give you up", "music video"],
"categories": ["Music"],
"subtitles": ["en", "es", "fr", "de", "ja", "pt"],
"formats": [
{
"format_id": "137",
"ext": "mp4",
"quality": "1080p",
"width": 1920,
"height": 1080,
"fps": 30.0,
"filesize": 25678901,
"vcodec": "avc1.640028",
"acodec": null,
"audio_only": false
},
{
"format_id": "136",
"ext": "mp4",
"quality": "720p",
"width": 1280,
"height": 720,
"fps": 30.0,
"filesize": 12345678,
"vcodec": "avc1.4d401f",
"acodec": null,
"audio_only": false
},
{
"format_id": "140",
"ext": "m4a",
"quality": null,
"width": null,
"height": null,
"fps": null,
"filesize": 3456789,
"vcodec": null,
"acodec": "mp4a.40.2",
"audio_only": true
}
]
}
Try It
{# Usage: {% include "docs/_playground.html" with endpoint_method="POST" endpoint_path="/v1/download" fields=playground_fields %} playground_fields is a list of dicts passed from the view: [ {"name": "url", "type": "text", "required": True, "placeholder": "https://youtube.com/watch?v=...", "label": "Video URL"}, {"name": "quality", "type": "select", "options": ["best", "1080p", "720p", "480p", "audio"], "default": "best", "label": "Quality"}, ] #}Try It
GET /v1/info
Notes
Broad Platform Support
This endpoint supports 1,000+ platforms via yt-dlp. If a URL is not supported, you'll receive a 404 error with details.
Choose Quality Before Downloading
Use the formats array to let users choose their preferred quality before calling /v1/download.