Get Video Info

Extract comprehensive metadata from any supported video URL.

GET /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
Response

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.

This site uses only essential cookies required for the service to function (session authentication and security). We do not use analytics, tracking, or advertising cookies. Learn more