VideoGen · Schema
FileInfo
Metadata for a generated file. Obtain ids from tool results or `GET /v1/files`.
CompanyArtificial IntelligenceVideoAutomationPlatform
Properties
| Name | Type | Description |
|---|---|---|
| fileId | string | File id (e.g. `vg_file_...`). |
| type | object | File type. Null when the file is still being processed and the type has not yet been determined. |
| scope | string | File scope. - `GLOBAL`: user-uploaded or standalone generated files that persist indefinitely. - `PROJECT`: project-specific files (e.g. text-to-speech clips in a generated project). - `EXPORT`: proje |
| displayName | string | Display name for the file. |
| description | stringnull | |
| durationSeconds | numbernull | Duration in seconds for video and audio files. Null for images. |
| transcript | object | Timed transcript for video and audio files, when available, as a `Transcript` object with timed `words`. Null for images or when no transcript has been generated. For plain transcript text, use `trans |
| transcriptText | stringnull | Plain transcript text for video and audio files, when available. Null for images or when no transcript has been generated. |
| downloadUrl | stringnull | Private signed URL for the highest-quality downloadable rendition, provided at the top level for convenience. Valid for 7 days from when it was signed. `null` when the rendition is still processing or |
| downloadUrlExpiresAt | integernull | Seconds since epoch (Unix timestamp) when `downloadUrl` expires. `null` when `downloadUrl` is null. |
| thumbnailUrl | stringnull | Private signed URL for the thumbnail rendition, provided at the top level for convenience. Valid for 7 days from when it was signed. `null` for file types that have no thumbnail (e.g. audio) or when i |
| thumbnailUrlExpiresAt | integernull | Seconds since epoch (Unix timestamp) when `thumbnailUrl` expires. `null` when `thumbnailUrl` is null. |
| thumbnailSource | object | Thumbnail image source. Populated after hydration. |
| previewSource | object | Preview rendition source (720p for video, resized for images). Populated after hydration. |
| downloadSource | object | Highest-quality downloadable rendition. Populated after hydration. |
| hlsSource | object | Private HLS streaming source. Populated for video and audio files once streaming renditions are ready. Uses a signed token; treat like other signed sources. |
| isPublicPreviewEnabled | boolean | Whether public preview is enabled for this file. When true, `staticPublicPreviewSource` is populated for all file types. For video and audio, `publicHlsUrl` and `publicPlaybackId` are also populated o |
| staticPublicPreviewSource | object | Permanent public URL for the file's highest-quality rendition. Populated when `isPublicPreviewEnabled` is true. Does not expire (`expiresAt` is null). Use for direct links to images, downloads, or any |
| publicHlsUrl | stringnull | Public HLS streaming URL for video and audio. Only present when `isPublicPreviewEnabled` is true and embed streaming is ready. Prefer `publicPlaybackId` with `@videogen/player` for embeds. |
| publicPlaybackId | stringnull | Encoded public playback id (e.g. `vg_play_...`) for video and audio embeds. Pass this to `@videogen/player` or `@videogen/player-react`. Only present when `isPublicPreviewEnabled` is true and embed st |
| sourceToolType | string | Tool type that generated this file (e.g. `GENERATE_IMAGE`, `TEXT_TO_SPEECH`). Only present when the file was created by a tool execution. |
| sourceToolExecutionId | string | Execution id of the tool call that generated this file (e.g. `vg_tool_...`). Only present when the file was created by a tool execution. |
| fileAnalysisMetadata | object | Background analysis state for the file (used to populate `description`, `transcript`, `durationSeconds`, and the search embedding). Omitted when the file was returned via a path that does not check an |
JSON Schema
{
"$schema": "https://json-schema.org/draft/2020-12/schema",
"$id": "https://raw.githubusercontent.com/api-evangelist/videogen-io/main/json-schema/videogen-io-file-info-schema.json",
"title": "FileInfo",
"description": "Metadata for a generated file. Obtain ids from tool results or `GET /v1/files`.",
"x-generated": "2026-10-02",
"x-method": "derived",
"x-generator": "derive-json-schema.py",
"x-source": "openapi/videogen-io-openapi.json#/components/schemas/FileInfo",
"type": "object",
"required": [
"fileId",
"scope"
],
"properties": {
"fileId": {
"type": "string",
"description": "File id (e.g. `vg_file_...`)."
},
"type": {
"description": "File type. Null when the file is still being processed and the type has not yet been determined.",
"anyOf": [
{
"$ref": "#/$defs/FileType"
},
{
"type": "null"
}
]
},
"scope": {
"type": "string",
"enum": [
"GLOBAL",
"PROJECT",
"EXPORT",
"TEMPORARY",
"ENTITY"
],
"description": "File scope.\n\n- `GLOBAL`: user-uploaded or standalone generated files that persist indefinitely.\n- `PROJECT`: project-specific files (e.g. text-to-speech clips in a generated project).\n- `EXPORT`: project exports.\n- `TEMPORARY`: short-lived files guaranteed to be available for 24 hours, after which they may be archived at any time. Not analyzed (no description, transcript, or embedding).\n- `ENTITY`: files attached to a reusable entity (e.g. a voice sample for an actor), shared across your team.\n"
},
"displayName": {
"type": "string",
"description": "Display name for the file."
},
"description": {
"type": [
"string",
"null"
]
},
"durationSeconds": {
"type": [
"number",
"null"
],
"description": "Duration in seconds for video and audio files. Null for images."
},
"transcript": {
"description": "Timed transcript for video and audio files, when available, as a `Transcript` object with timed `words`. Null for images or when no transcript has been generated. For plain transcript text, use `transcriptText`.",
"anyOf": [
{
"$ref": "#/$defs/Transcript"
},
{
"type": "null"
}
]
},
"transcriptText": {
"type": [
"string",
"null"
],
"description": "Plain transcript text for video and audio files, when available. Null for images or when no transcript has been generated."
},
"downloadUrl": {
"type": [
"string",
"null"
],
"format": "uri",
"description": "Private signed URL for the highest-quality downloadable rendition, provided at the top level for convenience. Valid for 7 days from when it was signed. `null` when the rendition is still processing or the URL has not been signed yet. See `downloadUrlExpiresAt` for the exact expiry and `downloadSource` for the full rendition metadata; call `POST /v1/files/{fileId}/hydrate` to refresh it."
},
"downloadUrlExpiresAt": {
"type": [
"integer",
"null"
],
"description": "Seconds since epoch (Unix timestamp) when `downloadUrl` expires. `null` when `downloadUrl` is null."
},
"thumbnailUrl": {
"type": [
"string",
"null"
],
"format": "uri",
"description": "Private signed URL for the thumbnail rendition, provided at the top level for convenience. Valid for 7 days from when it was signed. `null` for file types that have no thumbnail (e.g. audio) or when it has not been signed yet. See `thumbnailSource` for the full rendition metadata."
},
"thumbnailUrlExpiresAt": {
"type": [
"integer",
"null"
],
"description": "Seconds since epoch (Unix timestamp) when `thumbnailUrl` expires. `null` when `thumbnailUrl` is null."
},
"thumbnailSource": {
"description": "Thumbnail image source. Populated after hydration.",
"anyOf": [
{
"$ref": "#/$defs/FileSource"
},
{
"type": "null"
}
]
},
"previewSource": {
"description": "Preview rendition source (720p for video, resized for images). Populated after hydration.",
"anyOf": [
{
"$ref": "#/$defs/FileSource"
},
{
"type": "null"
}
]
},
"downloadSource": {
"description": "Highest-quality downloadable rendition. Populated after hydration.",
"anyOf": [
{
"$ref": "#/$defs/FileSource"
},
{
"type": "null"
}
]
},
"hlsSource": {
"description": "Private HLS streaming source. Populated for video and audio files once streaming renditions are ready. Uses a signed token; treat like other signed sources.",
"anyOf": [
{
"$ref": "#/$defs/FileSource"
},
{
"type": "null"
}
]
},
"isPublicPreviewEnabled": {
"type": "boolean",
"description": "Whether public preview is enabled for this file. When true, `staticPublicPreviewSource` is populated for all file types. For video and audio, `publicHlsUrl` and `publicPlaybackId` are also populated once embed streaming is ready."
},
"staticPublicPreviewSource": {
"description": "Permanent public URL for the file's highest-quality rendition. Populated when `isPublicPreviewEnabled` is true. Does not expire (`expiresAt` is null). Use for direct links to images, downloads, or any file type. For embedded video or audio players, prefer `publicPlaybackId`.",
"anyOf": [
{
"$ref": "#/$defs/FileSource"
},
{
"type": "null"
}
]
},
"publicHlsUrl": {
"type": [
"string",
"null"
],
"description": "Public HLS streaming URL for video and audio. Only present when `isPublicPreviewEnabled` is true and embed streaming is ready. Prefer `publicPlaybackId` with `@videogen/player` for embeds."
},
"publicPlaybackId": {
"type": [
"string",
"null"
],
"description": "Encoded public playback id (e.g. `vg_play_...`) for video and audio embeds. Pass this to `@videogen/player` or `@videogen/player-react`. Only present when `isPublicPreviewEnabled` is true and embed streaming is ready. For a permanent direct file URL (any type), use `staticPublicPreviewSource` instead."
},
"sourceToolType": {
"type": "string",
"description": "Tool type that generated this file (e.g. `GENERATE_IMAGE`, `TEXT_TO_SPEECH`). Only present when the file was created by a tool execution."
},
"sourceToolExecutionId": {
"type": "string",
"description": "Execution id of the tool call that generated this file (e.g. `vg_tool_...`). Only present when the file was created by a tool execution."
},
"fileAnalysisMetadata": {
"description": "Background analysis state for the file (used to populate `description`, `transcript`, `durationSeconds`, and the search embedding). Omitted when the file was returned via a path that does not check analysis progress (e.g. tool-result inline files and webhook payloads).",
"$ref": "#/$defs/FileAnalysisMetadata"
}
},
"$defs": {
"FileAnalysisMetadata": {
"type": "object",
"description": "Background analysis state for a file. Background analysis populates `description`, `transcript`, `durationSeconds`, and the search embedding after a file is uploaded or generated; this object lets you render a progress indicator while it runs (and skip rendering once it's done).\n",
"required": [
"analysisLoadingState",
"analysisProgressPercentage"
],
"properties": {
"analysisLoadingState": {
"type": "string",
"enum": [
"UNATTEMPTED",
"LOADING",
"FULFILLED",
"REJECTED"
],
"description": "Coarse-grained analysis state.\n\n- `UNATTEMPTED`: analysis has not started yet.\n- `LOADING`: analysis is in progress.\n- `FULFILLED`: analysis completed successfully. `description`, `transcript`, and `durationSeconds` are now populated where applicable for the file's type.\n- `REJECTED`: analysis failed permanently and will not be retried.\n"
},
"analysisProgressPercentage": {
"type": "number",
"description": "Progress in `[0, 100]`. Always `100` when `analysisLoadingState` is `FULFILLED`. Otherwise the most recent in-flight progress reported by the analysis task (or `0` if no progress has been reported yet)."
},
"analysisAttemptIndex": {
"type": "integer",
"description": "Zero-based index of the current analysis task attempt. Only present while analysis is still loading (`UNATTEMPTED` or `LOADING`); omitted once analysis reaches a terminal state."
}
}
},
"FileSource": {
"type": "object",
"description": "A rendition source for a file (e.g. thumbnail, preview, download). Contains a signed URL and metadata.",
"required": [
"status"
],
"properties": {
"status": {
"type": "string",
"enum": [
"pending",
"ready",
"failed",
"skipped"
],
"description": "`pending`: asset is still processing or has not been hydrated yet. `ready`: signed URL is available. `failed`: rendition generation failed. `skipped`: rendition does not apply to this file type (e.g. thumbnail for audio)."
},
"url": {
"type": [
"string",
"null"
],
"description": "Signed URL. Present when status is `ready` and file has been recently hydrated. If missing, call the hydrate endpoint."
},
"expiresAt": {
"type": [
"integer",
"null"
],
"description": "Seconds since epoch (Unix timestamp) when the signed URL expires."
},
"width": {
"type": [
"integer",
"null"
],
"description": "Rendition width in pixels, when known."
},
"height": {
"type": [
"integer",
"null"
],
"description": "Rendition height in pixels, when known."
},
"fileBytes": {
"type": [
"integer",
"null"
],
"description": "File size in bytes, when known."
}
}
},
"FileType": {
"type": "string",
"enum": [
"IMAGE",
"VIDEO",
"AUDIO",
"PDF",
"SLIDESHOW",
"TEXT",
"LOTTIE"
],
"description": "File type. `TEXT` covers plain-text and editor-interchange documents; `LOTTIE` is a JSON animation."
},
"Transcript": {
"type": "object",
"required": [
"words"
],
"description": "A transcript of an audio file, as timed words in order.",
"properties": {
"languageCode": {
"type": [
"string",
"null"
],
"description": "Optional BCP-47 language code of the spoken audio (e.g. `en`, `es`). Used to tag the transcript's language; omit if unknown."
},
"words": {
"type": "array",
"items": {
"$ref": "#/$defs/TranscriptWord"
},
"description": "The transcript words, sorted by `startSeconds` and non-overlapping. Must contain at least one word."
}
}
},
"TranscriptWord": {
"type": "object",
"required": [
"startSeconds",
"endSeconds",
"word"
],
"description": "A single timed word of a transcript.",
"properties": {
"startSeconds": {
"type": "number",
"minimum": 0,
"description": "Start time of the word in seconds from the beginning of the audio."
},
"endSeconds": {
"type": "number",
"description": "End time of the word in seconds from the beginning of the audio. Must be greater than `startSeconds`."
},
"word": {
"type": "string",
"description": "The spoken word, used verbatim for narration timing and captions."
}
}
}
}
}
Work with this as data
Every JSON Schema here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for schemas
4 MCP tools reach this
find_json_schemasBrowse and filter every JSON Schema in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This JSON Schema
curl "https://apis.io/api/v1/json-schemas/videogen-io-file-info"
All schemas
curl "https://apis.io/api/v1/json-schemas?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.