Returns the full properties of a video (status, playback URLs, technical metadata, folder, subtitles, audios) by internal video_id.
| Time | Status | User Agent | |
|---|---|---|---|
Retrieving recent requests… | |||
GET /videos/{video_id}
{video_id}Returns the full properties of a specific video, identified by its internal video_id. Includes playback URLs, conversion status, technical metadata (resolution, length, storage), folder placement, and any attached audio/subtitle tracks.
AuthorizationRequires a valid Panda API token sent in the
Authorizationheader (no Bearer prefix).
HTTP Method & Path
GET /videos/{video_id}
Base URL: https://api-v2.pandavideo.com.br
Authentication Requirements
| Security Scheme | Header | Note |
|---|---|---|
| API Key | Authorization | Panda API token (without Bearer prefix) |
Parameters
| Name | In | Type | Required | Description |
|---|---|---|---|---|
Authorization | header | string | Yes | Panda API token (without Bearer prefix) |
Path Parameters
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
video_id | string (uuid) | Yes | Internal ID of the video to retrieve. | uuid |
Response
Success Response (200)
{
"id": "11111111-2222-3333-4444-555555555555",
"title": "My video",
"description": "Sample description",
"status": "CONVERTED",
"video_external_id": "9988aabb-ccdd-eeff-1122-334455667788",
"created_at": "2026-05-29T14:36:39.000Z",
"updated_at": "2026-05-29T20:15:41.000Z",
"converted_at": "2026-05-29T14:40:00.000Z",
"user_id": "aaaaaaaa-bbbb-cccc-dddd-eeeeeeeeeeee",
"folder_id": null,
"library_id": "ffffffff-1111-2222-3333-444444444444",
"pullzone_name": "vz-163a34ba-25b",
"storage_size": 12345678,
"length": 120,
"width": 1920,
"height": 1080,
"compression_mode": "balanced",
"video_player": "https://player.pandavideo.com.br/embed/?v=9988aabb-ccdd-eeff-1122-334455667788",
"video_hls": "https://b-vz-xxx.b-cdn.net/.../playlist.m3u8",
"thumbnail": "https://b-vz-xxx.b-cdn.net/.../thumbnail.jpg",
"preview": "https://b-vz-xxx.b-cdn.net/.../preview.webp",
"playback": ["240p", "360p", "480p", "720p", "1080p"],
"playable": true,
"backup": true,
"video_offline_enabled": false,
"original_lang": "pt",
"subtitles": [
{ "srclang": "en", "translation": true }
],
"audios": [
{ "id": "audio-uuid", "language": "en", "type": "dubbing", "status": "READY" }
],
"config": {
"thumb": "9988aabb-.../video/2050634750-...-d_1920x1080",
"ai": {
"abstract": true,
"mindmap": true,
"questions": true,
"pdf_generated": true,
"resources": [
{ "type": "abstract", "srclang": "en", "pdf_url": "https://.../abstract.en.pdf" },
{ "type": "abstract", "srclang": "pt-BR", "is_legacy": true, "pdf_url": "https://.../abstract.pdf" },
{ "type": "questions", "srclang": "pt-BR", "is_legacy": true },
{ "type": "mindmap", "srclang": "pt-BR", "is_legacy": true }
]
}
}
}Response Schema
| Field | Type | Description |
|---|---|---|
id | string (uuid) | Internal ID of the video. |
title | string | Video title. |
description | string | Video description. |
status | string | Conversion status. Enum: DRAFT, CONVERTING, CONVERTED, FAILED, BLOCKED, DELETING. |
video_external_id | string (uuid) | Public external ID (used in player URLs and webhooks). |
created_at | string | ISO 8601 timestamp of creation. |
updated_at | string | ISO 8601 timestamp of last update. |
converted_at | string | null | ISO 8601 timestamp when conversion finished, null while still converting. |
user_id | string (uuid) | Owner user ID. |
folder_id | string | null | Folder the video lives in, or null for root folder. |
library_id | string (uuid) | Library ID. |
storage_size | integer | Size in bytes of the stored asset. |
length | integer | Video duration in seconds. |
width / height | integer | Native video resolution in pixels. |
compression_mode | string | null | Compression profile the video was encoded with. Enum: size, balanced, quality (default balanced). null for videos encoded before this setting existed. |
video_player | string | Embeddable player URL. |
video_hls | string | HLS playback URL. |
thumbnail | string | Thumbnail image URL. |
preview | string | Hover-preview asset URL (animated webp). |
playback | array of string | Enabled playback qualities (e.g., "360p", "720p", "1080p"). |
playable | boolean | true when the video is ready to play. |
backup | boolean | true when a backup copy exists. |
video_offline_enabled | boolean | Whether secure offline viewing is enabled for the Panda app. |
original_lang | string | ISO language code of the original audio track. |
subtitles | array | Subtitle tracks. Each has srclang and flags transcription/translation. |
audios | array | Additional audio tracks (dubbings, alternate languages) with id, language, type, status. |
pullzone_name | string | Pullzone of the video library. Needed to build the URL of the public config and AI resource files. |
config | object | Player and content configuration attached to the video (custom thumbnail, AI resources, and other player settings). |
config.ai | object | AI resources of the video — eBook (abstract), Mind Map (mindmap) or Quiz (questions). Absent until the video gets its first AI resource; once it exists, the object stays (with resources: []) even after every resource is deleted. |
config.ai.allow_download | object | Download permission per resource, e.g. { "abstract": true, "questions": false }. Set through the set_download action. |
config.ai.abstract / config.ai.mindmap / config.ai.questions | boolean | Flags of the previous model: whether that resource exists for the video, in any language. |
config.ai.pdf_generated | boolean | true when at least one PDF (eBook or Mind Map) has been generated. |
config.ai.resources | array | Manifest of AI resources. One entry per resource per language. This is the entry point for reading AI content — see below. |
AI resources — config.ai.resources[]
config.ai.resources[]Each entry describes one resource in one language:
| Field | When it appears | Content |
|---|---|---|
type | always | abstract (eBook), mindmap (Mind Map) or questions (Quiz). |
srclang | always | Language of that resource, e.g. en, pt-BR. |
is_legacy | only for previous-model content | true. The content is read from the path without a language suffix. |
is_created | only for resources created by hand | true. The resource came from the create action instead of AI generation, and is read from the normal language-suffixed path. |
pdf_url | eBook and Mind Map only | URL of the PDF. A Quiz never has one. |
Read the manifest, don't guess the pathTo fetch AI content, read
config.ai.resources[]first and request only the languages listed there. For each entry, the content lives at:https://config.tv.pandavideo.com.br/{pullzone_name}/{video_external_id}-ai.{srclang}.jsonEntries flagged
is_legacy: trueare read at{video_external_id}-ai.json, without the language suffix. Full field reference in Get Mind Map, eBook or Quiz.
pdf_urlis only hereThe PDF URL is returned by this endpoint and is not written into the public config file. That is deliberate: inside the public file it would be a direct download link, bypassing the per-resource download permission (see AI Package Actions).
The file name follows the origin of the resource: v2 content uses
abstract.{lang}.pdf, legacy content usesabstract.pdf, with no suffix.
TipIf you only have the external_id (public ID used in player URLs), append
?external_idto the path:GET /videos/{external_id}?external_id.
Error Responses
- 400 Bad Request — Invalid
video_idformat. - 401 Unauthorized — Missing or invalid API token.
- 404 Not Found — Video not found.
- 500 Internal Server Error — Server-side error.
Example Usage
cURL
curl -X GET \
'https://api-v2.pandavideo.com.br/videos/<video_id>' \
-H 'Authorization: your_api_token_here' \
-H 'Accept: application/json'Recipes
The Recipes section provides a collection of code examples and sample implementations to help you understand and use the API effectively.
