Documentation / API Reference / Get an Asset output
Get an Asset output Retrieve one output belonging to the specified Asset and authenticated Project. Delivery URLs follow the output resource retention and expiry rules.
GET
/assets/{assetId} /outputs/{outputId}
Authorization Authorization
header
string
required
Enter the project access token with the Bearer prefix, e.g. "Bearer project_access_token"
Path Parameters OutputId identifies an output owned by this Asset.
Responses 200 400 401 403 404 429 500
application/json caption static_rendition thumbnail transcript
An Asset-owned caption output and its canonical resource details.
Show caption properties
AssetId identifies the owning Asset.
Details contains the canonical typed output resource, including its available delivery fields.
Show details properties
Unique Asset output ID, prefixed with aop_.
Caption processing status.
Available options:
preparingreadyfailedexpired
created_at
string
date-time
Time this caption output was requested.
Reason caption processing failed.
Show error properties
Machine-readable processing error code.
Description of the processing failure.
Processing stage that failed.
Available options:
ingestanalysisencodingpackaginguploadvalidationcleanup
Primary language of this subtitle track, such as en or fr. Omitted when no speech was detected or processing has not finished.
Subtitle media playlist path in Storage. Available when speech was detected.
Combined subtitle playlist and WebVTT size in bytes. Available when ready.
Required range: x >= 0
ID of the caption track translated to create this track. Omitted for speech transcription.
TranscriptId identifies the original-language transcript used to generate this caption. Omitted for translated captions.
WebVTT subtitle segment path in Storage. Available when speech was detected.
Id identifies the Asset output, prefixed with aop_. The type field identifies the output kind.
Status specifies the output processing state. Expired means temporary output files are no longer available.
Available options:
preparingreadyfailedexpired
type
"caption"
string
required
Type identifies the output kind.
An Asset-owned static rendition output and its canonical resource details.
Show static_rendition properties
AssetId identifies the owning Asset.
Details contains the canonical typed output resource, including its available delivery fields.
Show details properties
container
"mp4"
string
required
created_at
string
date-time
required
When the rendition was created.
Unique Asset output ID, prefixed with aop_.
MP4 path in Storage. Recreating the same resolution reuses this path and overwrites any retained file.
requested_resolution
string
required
Requested resolution selector.
Available options:
highest240p360p480p540p720p1080p1440p2160p
Selected output resolution. May be smaller than 240p for small sources. Use width and height for pixel dimensions.
Processing status of this MP4, independent of streaming outputs.
Available options:
preparingreadyfailedexpired
Storage containing this rendition, inherited from its Asset.
updated_at
string
date-time
required
When the rendition was last updated.
video_codec
"h264"
string
required
Measured audio bitrate in bits per second. Omitted until known or when there is no audio.
Required range: x >= 0
Measured audio codec. Omitted until known or when there is no audio.
Measured audio sample rate in Hz. Omitted until known or when there is no audio.
Required range: x >= 0
Unsigned MP4 CDN URL. Available when ready and unexpired and Storage has a CDN URL.
Output duration in seconds. Omitted until ready.
Required range: x >= 0
Show error properties
Machine-readable processing error code.
Description of the processing failure.
Processing stage that failed.
Available options:
ingestanalysisencodingpackaginguploadvalidationcleanup
Progress specifies the current processing stage and encoding percentage. Omitted after processing ends.
Show progress properties
Stage specifies the current preparation activity. Finalization and streaming publication can overlap encoding; finalizing is shown once encoding has completed.
Available options:
queuedstartingencodingfinalizinguploading
Percent specifies the percentage of the video encoded so far. Present only during encoding when video duration is known. It may decrease if processing restarts. It does not estimate total preparation time.
Required range: 0 <= x <= 100
When the MP4 became available.
File size in bytes. Omitted until ready.
Required range: x >= 0
Signed MP4 download URL, available when ready and unexpired. Valid for up to ten minutes. Retrieve the output to refresh it. Independent of preview_enabled.
Measured video bitrate in bits per second. Omitted until ready.
Required range: x >= 0
Measured video frame rate in frames per second. Omitted until known.
Required range: x >= 0
Id identifies the Asset output, prefixed with aop_. The type field identifies the output kind.
Status specifies the output processing state. Expired means temporary output files are no longer available.
Available options:
preparingreadyfailedexpired
type
"static_rendition"
string
required
Type identifies the output kind.
An Asset-owned thumbnail output and its canonical resource details.
Show thumbnail properties
AssetId identifies the owning Asset.
Details contains the canonical typed output resource, including its available delivery fields.
Show details properties
AssetId identifies the owning Asset for Workflow outputs, or null for standalone requests.
created_at
string
date-time
required
CreatedAt records when the request was accepted.
Files contains all published images or sheets and the WebVTT index. Empty while preparing.
Show files properties
Kind identifies an individual image, sprite sheet, or WebVTT index.
Available options:
imagespritevtt
Path specifies the file relative to storage_prefix.
Size specifies the measured encoded file size in bytes.
Required range: x >= 1
CdnUrl provides delivery through the configured CDN. Omitted without a CDN or after expiry.
Height specifies the measured image or complete sprite canvas height. Omitted for WebVTT.
Required range: x >= 1
Url provides temporary authorized delivery. Omitted after expiry or when unavailable.
Width specifies the measured image or complete sprite canvas width. Omitted for WebVTT.
Required range: x >= 1
Id identifies this thumbnail request. Standalone requests use thm_ IDs; Asset-owned outputs use aop_ IDs.
Metadata contains the accepted string metadata.
Samples contains published thumbnails ordered by timestamp. Empty while preparing. A ready resource may contain fewer samples than requested.
Show samples properties
Height specifies this image or tile height in pixels.
Required range: x >= 1
Path identifies the image or sprite sheet in files.
Timestamp specifies the measured Source-relative presentation time of the selected frame in seconds. Compatible cached inputs use millisecond timestamps, which can select a neighboring frame compared with the original Source.
Required range: x >= 0
Width specifies this image or tile width in pixels.
Required range: x >= 1
Crop specifies the tile origin in its sprite sheet. Omitted for individual images; width and height give the tile dimensions.
Show crop properties
X specifies the left edge in pixels.
Required range: x >= 0
Y specifies the top edge in pixels.
Required range: x >= 0
Settings contains the accepted sampling and output settings.
Option 1 Option 2
Show Option 1 properties
Format specifies the image encoding.
Available options:
jpegwebp
Output specifies individual images or automatically arranged sprite sheets.
Available options:
imagessprites
Range contains the accepted sampling boundaries.
Show range properties
End specifies the exclusive upper bound in seconds.
Start specifies the inclusive lower bound in seconds.
Required range: x >= 0
Size specifies the accepted maximum image or tile edge in pixels.
Required range: 64 <= x <= 1920
timestamps
number[]
required
Timestamps specifies 1 to 100 Source-relative target times in seconds. Every time must be within the selected range. Repeated targets produce separate outputs.
Count specifies 1 to 100 thumbnails at the middle of equal sections of the selected range.
Required range: 1 <= x <= 100
Show Option 2 properties
Count specifies 1 to 100 thumbnails at the middle of equal sections of the selected range.
Required range: 1 <= x <= 100
Format specifies the image encoding.
Available options:
jpegwebp
Output specifies individual images or automatically arranged sprite sheets.
Available options:
imagessprites
Range contains the accepted sampling boundaries.
Show range properties
End specifies the exclusive upper bound in seconds.
Start specifies the inclusive lower bound in seconds.
Required range: x >= 0
Size specifies the accepted maximum image or tile edge in pixels.
Required range: 64 <= x <= 1920
Timestamps specifies 1 to 100 Source-relative target times in seconds. Every time must be within the selected range. Repeated targets produce separate outputs.
SourceId identifies the input Source, or null if it has been deleted.
Status is ready only after processing and publication finish. Temporary outputs become expired after their retention period.
Available options:
preparingreadyfailedexpired
StorageId identifies the accepted output Storage.
storage_path
object
required
StoragePath specifies the accepted filename template relative to the Storage base_prefix, or null when Chunkify generated the file names.
storage_prefix
string
required
StoragePrefix specifies the complete output folder saved at creation. File and sample paths are relative to this folder.
updated_at
string
date-time
required
UpdatedAt records the last lifecycle update.
created_by_token_id
string
CreatedByTokenId specifies the Project token used to create the resource. It remains set after the token is revoked.
Omitted for dashboard requests, MCP OAuth connections, Workflow actions, and unknown creators.
Examples:
tok_2G6MJiNz71bHQGNzGwKx5cJwPFS
CreatedByUserId specifies the team member who created the resource.
Omitted for Workflow actions, unknown creators, and deleted accounts.
Examples:
u_2G6MJiNz71bHQGNzGwKx5cJwPFS
CreatedVia specifies how the resource was created: api for API requests, dashboard for the Chunkify dashboard, mcp for MCP clients, and workflow for Workflow actions.
Omitted when the creator is unknown.
Available options:
apidashboardmcpworkflow
DeleteAt specifies when this standalone request is deleted: three days after its temporary output expires, otherwise when the team's data retention period ends, counted from when the request was accepted, and no sooner than three days after it finished. It does not delete files in customer-owned Storage. Omitted while preparing and for Asset-owned thumbnails, which follow their Asset.
Error explains a failed request. Omitted otherwise.
Show error properties
Code identifies the processing failure.
Message explains the processing failure.
expires_at
string
date-time
ExpiresAt specifies when temporary output files expire. Omitted for customer output Storage.
ReadyAt records when the complete available set was published. Omitted before publication.
Id identifies the Asset output, prefixed with aop_. The type field identifies the output kind.
Status specifies the output processing state. Expired means temporary output files are no longer available.
Available options:
preparingreadyfailedexpired
type
"thumbnail"
string
required
Type identifies the output kind.
An Asset-owned transcript output and its content.
Show transcript properties
AssetId identifies the owning Asset.
Show details properties
Id identifies the Asset output, prefixed with aop_.
Status specifies the output processing state. Expired means temporary output files are no longer available.
Available options:
preparingreadyfailedexpired
Content contains the complete text and timed segments. Included when ready; omitted while preparing, failed or expired.
Show content properties
Segments contains timed passages in chronological order. Individual word timestamps are not included.
Show segments properties
End specifies the passage end time in seconds.
Required range: x >= 0
Start specifies the passage start time in seconds.
Required range: x >= 0
Text contains the recognized passage, including punctuation.
Text contains the complete recognized speech in the original language.
Show error properties
Machine-readable processing error code.
Description of the processing failure.
Processing stage that failed.
Available options:
ingestanalysisencodingpackaginguploadvalidationcleanup
LanguageCode identifies the detected primary language, such as en. Omitted before recognition or when no speech is detected.
Id identifies the Asset output, prefixed with aop_.
Status specifies the output processing state. Expired means temporary output files are no longer available.
Available options:
preparingreadyfailedexpired
type
"transcript"
string
required
Type identifies the output kind.
status
"success"
string
required
Status is success for a successful request.
Get an Asset output
application/json Show error properties
Code is the HTTP status code
Message is a human-readable error description
Examples:
Invalid request parameters
type
"ValidationError"
string
required
Type indicates the error category
Available options:
ValidationError
status
"error"
string
required
Status indicates the response status "error"
Validation error
application/json Error response details
Show error properties
Code is the HTTP status code
Message is a human-readable error description
Examples:
Authentication error: invalid token or subscription inactive
type
"AuthenticationError"
string
required
Type indicates the error category
Available options:
AuthenticationError
status
"error"
string
required
Status indicates the response status "error"
Authentication error
application/json Error response details
Show error properties
Code is the HTTP status code
Message is a human-readable error description
Examples:
Unauthorized to perform this action
type
"ForbiddenError"
string
required
Type indicates the error category
Available options:
ForbiddenError
status
"error"
string
required
Status indicates the response status "error"
Forbidden error
application/json Error response details
Show error properties
Code is the HTTP status code
Message is a human-readable error description
Examples:
Ressource not found
type
"NotFoundError"
string
required
Type indicates the error category
Available options:
NotFoundError
status
"error"
string
required
Status indicates the response status "error"
NotFound error
application/json Error response details
Show error properties
Code is the HTTP status code
Message is a human-readable error description
Examples:
Rate limit exceeded
type
"TooManyRequestsError"
string
required
Type indicates the error category
Available options:
TooManyRequestsError
status
"error"
string
required
Status indicates the response status "error"
TooManyRequests error
application/json Show error properties
Examples:
Internal server error
type
"UnexpectedError"
string
required
status
"error"
string
required
Unexpected error
# Get an Asset output
> Retrieve one output belonging to the specified Asset and authenticated Project. Delivery URLs follow the output resource retention and expiry rules.
```json
{
"path": "/assets/{assetId}/outputs/{outputId}",
"method": "get",
"schema": {
"description": "Retrieve one output belonging to the specified Asset and authenticated Project. Delivery URLs follow the output resource retention and expiry rules.",
"operationId": "getAssetOutput",
"parameters": [
{
"description": "ID of the Asset.",
"in": "path",
"name": "assetId",
"required": true,
"schema": {
"type": "string"
}
},
{
"description": "OutputId identifies an output owned by this Asset.",
"in": "path",
"name": "outputId",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetOutputResponse",
"examples": [
{
"data": {
"asset_id": "ast_example",
"details": {
"id": "aop_example",
"language_code": "fr",
"status": "ready",
"vtt_path": "videos/ast_example/captions/fr/subtitles.vtt"
},
"id": "aop_example",
"status": "ready",
"type": "caption"
},
"status": "success"
}
]
}
}
},
"description": "Get an Asset output"
},
"400": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseErrorValidation"
}
}
},
"description": "Validation error"
},
"401": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseErrorAuthentication"
}
}
},
"description": "Authentication error"
},
"403": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseErrorForbidden"
}
}
},
"description": "Forbidden error"
},
"404": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseErrorNotFound"
}
}
},
"description": "NotFound error"
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseErrorTooManyRequests"
}
}
},
"description": "TooManyRequests error"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseErrorUnexpected"
}
}
},
"description": "Unexpected error"
}
},
"security": [
{
"ProjectAccessToken": []
}
],
"summary": "Get an Asset output",
"tags": [
"Assets"
],
"x-codeSamples": [
{
"lang": "typescript",
"source": "import Chunkify from '@chunkify/chunkify';\n\nconst client = new Chunkify({\n projectAccessToken: 'My Project Access Token',\n});\n\nconst output = await client.assets.outputs.retrieve(\n 'aop_example',\n {\n asset_id: 'ast_example',\n },\n);\n\nconsole.log(output);"
},
{
"lang": "python",
"source": "from chunkify import Chunkify\n\nclient = Chunkify(\n project_access_token=\"My Project Access Token\",\n)\noutput = client.assets.outputs.retrieve(\n \"aop_example\",\n asset_id=\"ast_example\",\n)\nprint(output)"
},
{
"lang": "php",
"source": "\u003c?php\n\nuse Chunkify\\Client;\n\n$client = new Client(\n projectAccessToken: 'My Project Access Token',\n);\n\n$output = $client-\u003eassets-\u003eoutputs-\u003eretrieve(\n 'aop_example',\n assetID: 'ast_example',\n);\n\nvar_dump($output);"
},
{
"lang": "golang",
"source": "package main\n\nimport (\n\t\"context\"\n\t\"fmt\"\n\n\t\"github.com/chunkifydev/chunkify-go\"\n\t\"github.com/chunkifydev/chunkify-go/option\"\n)\n\nfunc main() {\n\tclient := chunkify.NewClient(\n\t\toption.WithProjectAccessToken(\"My Project Access Token\"),\n\t)\n\toutput, err := client.Assets.Outputs.Get(\n\t\tcontext.TODO(),\n\t\t\"aop_example\",\n\t\tchunkify.AssetOutputGetParams{\n\t\t\tAssetID: \"ast_example\",\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err.Error())\n\t}\n\tfmt.Printf(\"%+v\\n\", output)\n}\n"
}
]
}
}
```
```json #/components/schemas/ResponseErrorTooManyRequests
{
"description": "Error response",
"properties": {
"error": {
"description": "Error response details",
"properties": {
"code": {
"const": 429,
"description": "Code is the HTTP status code",
"examples": [
429
],
"type": "integer"
},
"message": {
"description": "Message is a human-readable error description",
"examples": [
"Rate limit exceeded"
],
"type": "string"
},
"type": {
"const": "TooManyRequestsError",
"description": "Type indicates the error category",
"enum": [
"TooManyRequestsError"
],
"type": "string"
}
},
"required": [
"type",
"code",
"message"
],
"type": "object"
},
"status": {
"const": "error",
"description": "Status indicates the response status \"error\"",
"type": "string"
}
},
"required": [
"status",
"error"
],
"type": "object"
}
```
```json #/components/schemas/ResponseErrorUnexpected
{
"description": "Unexpected preview processing or storage failure.",
"properties": {
"error": {
"properties": {
"code": {
"const": 500,
"type": "integer"
},
"message": {
"examples": [
"Internal server error"
],
"type": "string"
},
"type": {
"const": "UnexpectedError",
"type": "string"
}
},
"required": [
"type",
"code",
"message"
],
"type": "object"
},
"status": {
"const": "error",
"type": "string"
}
},
"required": [
"status",
"error"
],
"type": "object"
}
```
```json #/components/schemas/AssetOutputResponse
{
"description": "One Asset output.",
"properties": {
"data": {
"$ref": "#/components/schemas/AssetOutput"
},
"status": {
"const": "success",
"description": "Status is success for a successful request.",
"type": "string"
}
},
"required": [
"status",
"data"
],
"type": "object"
}
```
```json #/components/schemas/AssetOutput
{
"description": "A resource produced for an Asset, requested directly or by a Workflow. Its type selects the details schema. Output state is independent of Asset playback readiness.",
"discriminator": {
"mapping": {
"caption": "#/components/schemas/AssetCaptionOutput",
"static_rendition": "#/components/schemas/AssetStaticRenditionOutput",
"thumbnail": "#/components/schemas/AssetThumbnailOutput",
"transcript": "#/components/schemas/AssetTranscriptOutput"
},
"propertyName": "type"
},
"oneOf": [
{
"$ref": "#/components/schemas/AssetCaptionOutput"
},
{
"$ref": "#/components/schemas/AssetStaticRenditionOutput"
},
{
"$ref": "#/components/schemas/AssetThumbnailOutput"
},
{
"$ref": "#/components/schemas/AssetTranscriptOutput"
}
],
"x-go-unknown-variant": "AssetUnknownOutput"
}
```
```json #/components/schemas/AssetCaptionOutput
{
"description": "An Asset-owned caption output and its canonical resource details.",
"properties": {
"asset_id": {
"description": "AssetId identifies the owning Asset.",
"type": "string"
},
"details": {
"$ref": "#/components/schemas/AssetCaption",
"description": "Details contains the canonical typed output resource, including its available delivery fields."
},
"id": {
"description": "Id identifies the Asset output, prefixed with aop_. The type field identifies the output kind.",
"type": "string"
},
"status": {
"$ref": "#/components/schemas/AssetOutputStatus"
},
"type": {
"const": "caption",
"description": "Type identifies the output kind.",
"type": "string"
}
},
"required": [
"id",
"asset_id",
"type",
"status",
"details"
],
"type": "object"
}
```
```json #/components/schemas/AssetOutputStatus
{
"description": "Status specifies the output processing state. Expired means temporary output files are no longer available.",
"enum": [
"preparing",
"ready",
"failed",
"expired"
],
"type": "string"
}
```
```json #/components/schemas/AssetCaption
{
"properties": {
"created_at": {
"description": "Time this caption output was requested.",
"format": "date-time",
"type": "string"
},
"error": {
"$ref": "#/components/schemas/AssetError",
"description": "Reason caption processing failed."
},
"id": {
"description": "Unique Asset output ID, prefixed with aop_.",
"type": "string"
},
"language_code": {
"description": "Primary language of this subtitle track, such as en or fr. Omitted when no speech was detected or processing has not finished.",
"type": "string"
},
"playlist_path": {
"description": "Subtitle media playlist path in Storage. Available when speech was detected.",
"type": "string"
},
"size": {
"description": "Combined subtitle playlist and WebVTT size in bytes. Available when ready.",
"minimum": 0,
"type": "integer"
},
"source_caption_id": {
"description": "ID of the caption track translated to create this track. Omitted for speech transcription.",
"type": "string"
},
"status": {
"description": "Caption processing status.",
"enum": [
"preparing",
"ready",
"failed",
"expired"
],
"type": "string"
},
"transcript_id": {
"description": "TranscriptId identifies the original-language transcript used to generate this caption. Omitted for translated captions.",
"type": "string"
},
"vtt_path": {
"description": "WebVTT subtitle segment path in Storage. Available when speech was detected.",
"type": "string"
}
},
"required": [
"id",
"status"
],
"type": "object"
}
```
```json #/components/schemas/AssetError
{
"properties": {
"code": {
"description": "Machine-readable processing error code.",
"type": "string"
},
"message": {
"description": "Description of the processing failure.",
"type": "string"
},
"stage": {
"description": "Processing stage that failed.",
"enum": [
"ingest",
"analysis",
"encoding",
"packaging",
"upload",
"validation",
"cleanup"
],
"type": "string"
}
},
"required": [
"stage",
"code",
"message"
],
"type": "object"
}
```
```json #/components/schemas/AssetStaticRenditionOutput
{
"description": "An Asset-owned static rendition output and its canonical resource details.",
"properties": {
"asset_id": {
"description": "AssetId identifies the owning Asset.",
"type": "string"
},
"details": {
"$ref": "#/components/schemas/AssetStaticRendition",
"description": "Details contains the canonical typed output resource, including its available delivery fields."
},
"id": {
"description": "Id identifies the Asset output, prefixed with aop_. The type field identifies the output kind.",
"type": "string"
},
"status": {
"$ref": "#/components/schemas/AssetOutputStatus"
},
"type": {
"const": "static_rendition",
"description": "Type identifies the output kind.",
"type": "string"
}
},
"required": [
"id",
"asset_id",
"type",
"status",
"details"
],
"type": "object"
}
```
```json #/components/schemas/AssetStaticRendition
{
"properties": {
"asset_id": {
"description": "Parent Asset ID.",
"type": "string"
},
"audio_bitrate": {
"description": "Measured audio bitrate in bits per second. Omitted until known or when there is no audio.",
"minimum": 0,
"type": "integer"
},
"audio_codec": {
"description": "Measured audio codec. Omitted until known or when there is no audio.",
"type": "string"
},
"audio_samplerate": {
"description": "Measured audio sample rate in Hz. Omitted until known or when there is no audio.",
"minimum": 0,
"type": "integer"
},
"cdn_url": {
"description": "Unsigned MP4 CDN URL. Available when ready and unexpired and Storage has a CDN URL.",
"format": "uri",
"type": "string"
},
"container": {
"const": "mp4",
"description": "Media container.",
"type": "string"
},
"created_at": {
"description": "When the rendition was created.",
"format": "date-time",
"type": "string"
},
"duration": {
"description": "Output duration in seconds. Omitted until ready.",
"minimum": 0,
"type": "number"
},
"error": {
"$ref": "#/components/schemas/AssetError"
},
"height": {
"description": "Output height in pixels.",
"minimum": 0,
"type": "integer"
},
"id": {
"description": "Unique Asset output ID, prefixed with aop_.",
"type": "string"
},
"path": {
"description": "MP4 path in Storage. Recreating the same resolution reuses this path and overwrites any retained file.",
"type": "string"
},
"progress": {
"$ref": "#/components/schemas/AssetRenditionProgress",
"description": "Progress specifies the current processing stage and encoding percentage. Omitted after processing ends."
},
"ready_at": {
"description": "When the MP4 became available.",
"format": "date-time",
"type": "string"
},
"requested_resolution": {
"description": "Requested resolution selector.",
"enum": [
"highest",
"240p",
"360p",
"480p",
"540p",
"720p",
"1080p",
"1440p",
"2160p"
],
"type": "string"
},
"resolution": {
"description": "Selected output resolution. May be smaller than 240p for small sources. Use width and height for pixel dimensions.",
"type": "string"
},
"size": {
"description": "File size in bytes. Omitted until ready.",
"minimum": 0,
"type": "integer"
},
"status": {
"description": "Processing status of this MP4, independent of streaming outputs.",
"enum": [
"preparing",
"ready",
"failed",
"expired"
],
"type": "string"
},
"storage_id": {
"description": "Storage containing this rendition, inherited from its Asset.",
"type": "string"
},
"updated_at": {
"description": "When the rendition was last updated.",
"format": "date-time",
"type": "string"
},
"url": {
"description": "Signed MP4 download URL, available when ready and unexpired. Valid for up to ten minutes. Retrieve the output to refresh it. Independent of preview_enabled.",
"format": "uri",
"type": "string"
},
"video_bitrate": {
"description": "Measured video bitrate in bits per second. Omitted until ready.",
"minimum": 0,
"type": "integer"
},
"video_codec": {
"const": "h264",
"description": "Video codec.",
"type": "string"
},
"video_framerate": {
"description": "Measured video frame rate in frames per second. Omitted until known.",
"minimum": 0,
"type": "number"
},
"width": {
"description": "Output width in pixels.",
"minimum": 0,
"type": "integer"
}
},
"required": [
"id",
"asset_id",
"storage_id",
"status",
"requested_resolution",
"resolution",
"width",
"height",
"video_codec",
"container",
"path",
"created_at",
"updated_at"
],
"type": "object"
}
```
```json #/components/schemas/AssetError
{
"properties": {
"code": {
"description": "Machine-readable processing error code.",
"type": "string"
},
"message": {
"description": "Description of the processing failure.",
"type": "string"
},
"stage": {
"description": "Processing stage that failed.",
"enum": [
"ingest",
"analysis",
"encoding",
"packaging",
"upload",
"validation",
"cleanup"
],
"type": "string"
}
},
"required": [
"stage",
"code",
"message"
],
"type": "object"
}
```
```json #/components/schemas/AssetRenditionProgress
{
"description": "Current rendition preparation progress. Encoding progress measures processed video duration, not elapsed time or playback availability.",
"properties": {
"percent": {
"description": "Percent specifies the percentage of the video encoded so far. Present only during encoding when video duration is known. It may decrease if processing restarts. It does not estimate total preparation time.",
"maximum": 100,
"minimum": 0,
"type": "number"
},
"stage": {
"description": "Stage specifies the current preparation activity. Finalization and streaming publication can overlap encoding; finalizing is shown once encoding has completed.",
"enum": [
"queued",
"starting",
"encoding",
"finalizing",
"uploading"
],
"type": "string"
}
},
"required": [
"stage"
],
"type": "object"
}
```
```json #/components/schemas/AssetOutputStatus
{
"description": "Status specifies the output processing state. Expired means temporary output files are no longer available.",
"enum": [
"preparing",
"ready",
"failed",
"expired"
],
"type": "string"
}
```
```json #/components/schemas/AssetThumbnailOutput
{
"description": "An Asset-owned thumbnail output and its canonical resource details.",
"properties": {
"asset_id": {
"description": "AssetId identifies the owning Asset.",
"type": "string"
},
"details": {
"$ref": "#/components/schemas/Thumbnail",
"description": "Details contains the canonical typed output resource, including its available delivery fields."
},
"id": {
"description": "Id identifies the Asset output, prefixed with aop_. The type field identifies the output kind.",
"type": "string"
},
"status": {
"$ref": "#/components/schemas/AssetOutputStatus"
},
"type": {
"const": "thumbnail",
"description": "Type identifies the output kind.",
"type": "string"
}
},
"required": [
"id",
"asset_id",
"type",
"status",
"details"
],
"type": "object"
}
```
```json #/components/schemas/Thumbnail
{
"description": "One thumbnail generation request. At least one sample and its companion files must be published before the resource is ready.",
"properties": {
"asset_id": {
"description": "AssetId identifies the owning Asset for Workflow outputs, or null for standalone requests.",
"type": [
"string",
"null"
]
},
"created_at": {
"description": "CreatedAt records when the request was accepted.",
"format": "date-time",
"type": "string"
},
"created_by_token_id": {
"description": "CreatedByTokenId specifies the Project token used to create the resource. It remains set after the token is revoked.\nOmitted for dashboard requests, MCP OAuth connections, Workflow actions, and unknown creators.",
"examples": [
"tok_2G6MJiNz71bHQGNzGwKx5cJwPFS"
],
"type": "string"
},
"created_by_user_id": {
"description": "CreatedByUserId specifies the team member who created the resource.\nOmitted for Workflow actions, unknown creators, and deleted accounts.",
"examples": [
"u_2G6MJiNz71bHQGNzGwKx5cJwPFS"
],
"type": "string"
},
"created_via": {
"$ref": "#/components/schemas/CreatedVia"
},
"delete_at": {
"description": "DeleteAt specifies when this standalone request is deleted: three days after its temporary output expires, otherwise when the team's data retention period ends, counted from when the request was accepted, and no sooner than three days after it finished. It does not delete files in customer-owned Storage. Omitted while preparing and for Asset-owned thumbnails, which follow their Asset.",
"format": "date-time",
"type": "string"
},
"error": {
"$ref": "#/components/schemas/ThumbnailError",
"description": "Error explains a failed request. Omitted otherwise."
},
"expires_at": {
"description": "ExpiresAt specifies when temporary output files expire. Omitted for customer output Storage.",
"format": "date-time",
"type": "string"
},
"files": {
"description": "Files contains all published images or sheets and the WebVTT index. Empty while preparing.",
"items": {
"$ref": "#/components/schemas/ThumbnailFile"
},
"type": "array"
},
"id": {
"description": "Id identifies this thumbnail request. Standalone requests use thm_ IDs; Asset-owned outputs use aop_ IDs.",
"examples": [
"thm_example"
],
"type": "string"
},
"metadata": {
"additionalProperties": {
"type": "string"
},
"description": "Metadata contains the accepted string metadata.",
"type": "object"
},
"ready_at": {
"description": "ReadyAt records when the complete available set was published. Omitted before publication.",
"format": "date-time",
"type": "string"
},
"samples": {
"description": "Samples contains published thumbnails ordered by timestamp. Empty while preparing. A ready resource may contain fewer samples than requested.",
"items": {
"$ref": "#/components/schemas/ThumbnailSample"
},
"type": "array"
},
"settings": {
"$ref": "#/components/schemas/ThumbnailSettings",
"description": "Settings contains the accepted sampling and output settings."
},
"source_id": {
"description": "SourceId identifies the input Source, or null if it has been deleted.",
"type": [
"string",
"null"
]
},
"status": {
"$ref": "#/components/schemas/ThumbnailStatus",
"description": "Status reports processing or output expiry."
},
"storage_id": {
"description": "StorageId identifies the accepted output Storage.",
"type": "string"
},
"storage_path": {
"description": "StoragePath specifies the accepted filename template relative to the Storage base_prefix, or null when Chunkify generated the file names.",
"type": [
"string",
"null"
]
},
"storage_prefix": {
"description": "StoragePrefix specifies the complete output folder saved at creation. File and sample paths are relative to this folder.",
"type": "string"
},
"updated_at": {
"description": "UpdatedAt records the last lifecycle update.",
"format": "date-time",
"type": "string"
}
},
"required": [
"id",
"source_id",
"asset_id",
"storage_id",
"storage_prefix",
"storage_path",
"settings",
"status",
"metadata",
"samples",
"files",
"created_at",
"updated_at"
],
"type": "object"
}
```
```json #/components/schemas/ThumbnailSettings
{
"description": "Accepted sampling and output settings, with defaults resolved.",
"oneOf": [
{
"required": [
"timestamps"
]
},
{
"required": [
"count"
]
}
],
"properties": {
"count": {
"description": "Count specifies 1 to 100 thumbnails at the middle of equal sections of the selected range.",
"maximum": 100,
"minimum": 1,
"type": "integer"
},
"format": {
"$ref": "#/components/schemas/ThumbnailFormat",
"description": "Format specifies the accepted image encoding."
},
"output": {
"$ref": "#/components/schemas/ThumbnailOutput",
"description": "Output specifies the accepted output mode."
},
"range": {
"$ref": "#/components/schemas/ThumbnailRange",
"description": "Range contains the accepted sampling boundaries."
},
"size": {
"description": "Size specifies the accepted maximum image or tile edge in pixels.",
"maximum": 1920,
"minimum": 64,
"type": "integer"
},
"timestamps": {
"description": "Timestamps specifies 1 to 100 Source-relative target times in seconds. Every time must be within the selected range. Repeated targets produce separate outputs.",
"items": {
"description": "A target time in seconds.",
"minimum": 0,
"type": "number"
},
"maxItems": 100,
"minItems": 1,
"type": "array"
}
},
"required": [
"range",
"output",
"format",
"size"
],
"type": "object"
}
```
```json #/components/schemas/ThumbnailFormat
{
"description": "Format specifies the image encoding.",
"enum": [
"jpeg",
"webp"
],
"type": "string"
}
```
```json #/components/schemas/ThumbnailOutput
{
"description": "Output specifies individual images or automatically arranged sprite sheets.",
"enum": [
"images",
"sprites"
],
"type": "string"
}
```
```json #/components/schemas/ThumbnailRange
{
"description": "The resolved Source-relative sampling range.",
"properties": {
"end": {
"description": "End specifies the exclusive upper bound in seconds.",
"exclusiveMinimum": 0,
"type": "number"
},
"start": {
"description": "Start specifies the inclusive lower bound in seconds.",
"minimum": 0,
"type": "number"
}
},
"required": [
"start",
"end"
],
"type": "object"
}
```
```json #/components/schemas/ThumbnailStatus
{
"description": "Status is ready only after processing and publication finish. Temporary outputs become expired after their retention period.",
"enum": [
"preparing",
"ready",
"failed",
"expired"
],
"type": "string"
}
```
```json #/components/schemas/CreatedVia
{
"description": "CreatedVia specifies how the resource was created: api for API requests, dashboard for the Chunkify dashboard, mcp for MCP clients, and workflow for Workflow actions.\nOmitted when the creator is unknown.",
"enum": [
"api",
"dashboard",
"mcp",
"workflow"
],
"examples": [
"api"
],
"type": "string"
}
```
```json #/components/schemas/ThumbnailError
{
"description": "A customer-facing processing failure.",
"properties": {
"code": {
"description": "Code identifies the processing failure.",
"type": "string"
},
"message": {
"description": "Message explains the processing failure.",
"type": "string"
}
},
"required": [
"code",
"message"
],
"type": "object"
}
```
```json #/components/schemas/ThumbnailFile
{
"description": "One published image, sprite sheet, or WebVTT file.",
"properties": {
"cdn_url": {
"description": "CdnUrl provides delivery through the configured CDN. Omitted without a CDN or after expiry.",
"type": "string"
},
"height": {
"description": "Height specifies the measured image or complete sprite canvas height. Omitted for WebVTT.",
"minimum": 1,
"type": "integer"
},
"kind": {
"description": "Kind identifies an individual image, sprite sheet, or WebVTT index.",
"enum": [
"image",
"sprite",
"vtt"
],
"type": "string"
},
"path": {
"description": "Path specifies the file relative to storage_prefix.",
"type": "string"
},
"size": {
"description": "Size specifies the measured encoded file size in bytes.",
"minimum": 1,
"type": "integer"
},
"url": {
"description": "Url provides temporary authorized delivery. Omitted after expiry or when unavailable.",
"type": "string"
},
"width": {
"description": "Width specifies the measured image or complete sprite canvas width. Omitted for WebVTT.",
"minimum": 1,
"type": "integer"
}
},
"required": [
"path",
"kind",
"size"
],
"type": "object"
}
```
```json #/components/schemas/ThumbnailSample
{
"description": "One successfully published requested sample. Repeated samples remain separate entries.",
"properties": {
"crop": {
"$ref": "#/components/schemas/ThumbnailCrop",
"description": "Crop specifies the tile origin in its sprite sheet. Omitted for individual images; width and height give the tile dimensions."
},
"height": {
"description": "Height specifies this image or tile height in pixels.",
"minimum": 1,
"type": "integer"
},
"path": {
"description": "Path identifies the image or sprite sheet in files.",
"type": "string"
},
"timestamp": {
"description": "Timestamp specifies the measured Source-relative presentation time of the selected frame in seconds. Compatible cached inputs use millisecond timestamps, which can select a neighboring frame compared with the original Source.",
"minimum": 0,
"type": "number"
},
"width": {
"description": "Width specifies this image or tile width in pixels.",
"minimum": 1,
"type": "integer"
}
},
"required": [
"timestamp",
"path",
"width",
"height"
],
"type": "object"
}
```
```json #/components/schemas/ThumbnailCrop
{
"description": "The image rectangle within a sprite sheet.",
"properties": {
"x": {
"description": "X specifies the left edge in pixels.",
"minimum": 0,
"type": "integer"
},
"y": {
"description": "Y specifies the top edge in pixels.",
"minimum": 0,
"type": "integer"
}
},
"required": [
"x",
"y"
],
"type": "object"
}
```
```json #/components/schemas/AssetOutputStatus
{
"description": "Status specifies the output processing state. Expired means temporary output files are no longer available.",
"enum": [
"preparing",
"ready",
"failed",
"expired"
],
"type": "string"
}
```
```json #/components/schemas/AssetTranscriptOutput
{
"description": "An Asset-owned transcript output and its content.",
"properties": {
"asset_id": {
"description": "AssetId identifies the owning Asset.",
"type": "string"
},
"details": {
"$ref": "#/components/schemas/AssetTranscript"
},
"id": {
"description": "Id identifies the Asset output, prefixed with aop_.",
"type": "string"
},
"status": {
"$ref": "#/components/schemas/AssetOutputStatus"
},
"type": {
"const": "transcript",
"description": "Type identifies the output kind.",
"type": "string"
}
},
"required": [
"id",
"asset_id",
"type",
"status",
"details"
],
"type": "object"
}
```
```json #/components/schemas/AssetTranscript
{
"description": "An original-language transcript. Content is included in ready output responses and lifecycle event snapshots. Transcripts have no download or CDN URL.",
"properties": {
"content": {
"$ref": "#/components/schemas/AssetTranscriptContent",
"description": "Content contains the complete text and timed segments. Included when ready; omitted while preparing, failed or expired."
},
"error": {
"$ref": "#/components/schemas/AssetError"
},
"id": {
"description": "Id identifies the Asset output, prefixed with aop_.",
"type": "string"
},
"language_code": {
"description": "LanguageCode identifies the detected primary language, such as en. Omitted before recognition or when no speech is detected.",
"type": "string"
},
"status": {
"$ref": "#/components/schemas/AssetOutputStatus"
}
},
"required": [
"id",
"status"
],
"type": "object"
}
```
```json #/components/schemas/AssetTranscriptContent
{
"description": "The complete transcript and its timed passages. An audio track without speech produces empty text and an empty segments array.",
"properties": {
"segments": {
"description": "Segments contains timed passages in chronological order. Individual word timestamps are not included.",
"items": {
"$ref": "#/components/schemas/AssetTranscriptSegment"
},
"type": "array"
},
"text": {
"description": "Text contains the complete recognized speech in the original language.",
"type": "string"
}
},
"required": [
"text",
"segments"
],
"type": "object"
}
```
```json #/components/schemas/AssetTranscriptSegment
{
"description": "A timed passage of recognized speech. Times are seconds from the start of the Asset.",
"properties": {
"end": {
"description": "End specifies the passage end time in seconds.",
"minimum": 0,
"type": "number"
},
"start": {
"description": "Start specifies the passage start time in seconds.",
"minimum": 0,
"type": "number"
},
"text": {
"description": "Text contains the recognized passage, including punctuation.",
"type": "string"
}
},
"required": [
"start",
"end",
"text"
],
"type": "object"
}
```
```json #/components/schemas/AssetError
{
"properties": {
"code": {
"description": "Machine-readable processing error code.",
"type": "string"
},
"message": {
"description": "Description of the processing failure.",
"type": "string"
},
"stage": {
"description": "Processing stage that failed.",
"enum": [
"ingest",
"analysis",
"encoding",
"packaging",
"upload",
"validation",
"cleanup"
],
"type": "string"
}
},
"required": [
"stage",
"code",
"message"
],
"type": "object"
}
```
```json #/components/schemas/AssetOutputStatus
{
"description": "Status specifies the output processing state. Expired means temporary output files are no longer available.",
"enum": [
"preparing",
"ready",
"failed",
"expired"
],
"type": "string"
}
```
```json #/components/schemas/AssetOutputStatus
{
"description": "Status specifies the output processing state. Expired means temporary output files are no longer available.",
"enum": [
"preparing",
"ready",
"failed",
"expired"
],
"type": "string"
}
```
```json #/components/schemas/ResponseErrorValidation
{
"properties": {
"error": {
"properties": {
"code": {
"const": 400,
"description": "Code is the HTTP status code",
"examples": [
400
],
"type": "integer"
},
"message": {
"description": "Message is a human-readable error description",
"examples": [
"Invalid request parameters"
],
"type": "string"
},
"type": {
"const": "ValidationError",
"description": "Type indicates the error category",
"enum": [
"ValidationError"
],
"type": "string"
}
},
"required": [
"type",
"code",
"message"
],
"type": "object"
},
"status": {
"const": "error",
"description": "Status indicates the response status \"error\"",
"type": "string"
}
},
"required": [
"status",
"error"
]
}
```
```json #/components/schemas/ResponseErrorAuthentication
{
"description": "Error response",
"properties": {
"error": {
"description": "Error response details",
"properties": {
"code": {
"const": 401,
"description": "Code is the HTTP status code",
"examples": [
401
],
"type": "integer"
},
"message": {
"description": "Message is a human-readable error description",
"examples": [
"Authentication error: invalid token or subscription inactive"
],
"type": "string"
},
"type": {
"const": "AuthenticationError",
"description": "Type indicates the error category",
"enum": [
"AuthenticationError"
],
"type": "string"
}
},
"required": [
"type",
"code",
"message"
],
"type": "object"
},
"status": {
"const": "error",
"description": "Status indicates the response status \"error\"",
"type": "string"
}
},
"required": [
"status",
"error"
],
"type": "object"
}
```
```json #/components/schemas/ResponseErrorForbidden
{
"properties": {
"error": {
"description": "Error response details",
"properties": {
"code": {
"const": 403,
"description": "Code is the HTTP status code",
"examples": [
403
],
"type": "integer"
},
"message": {
"description": "Message is a human-readable error description",
"examples": [
"Unauthorized to perform this action"
],
"type": "string"
},
"type": {
"const": "ForbiddenError",
"description": "Type indicates the error category",
"enum": [
"ForbiddenError"
],
"type": "string"
}
},
"required": [
"type",
"code",
"message"
],
"type": "object"
},
"status": {
"const": "error",
"description": "Status indicates the response status \"error\"",
"type": "string"
}
},
"required": [
"status",
"error"
]
}
```
```json #/components/schemas/ResponseErrorNotFound
{
"description": "Error response",
"properties": {
"error": {
"description": "Error response details",
"properties": {
"code": {
"const": 404,
"description": "Code is the HTTP status code",
"examples": [
404
],
"type": "integer"
},
"message": {
"description": "Message is a human-readable error description",
"examples": [
"Ressource not found"
],
"type": "string"
},
"type": {
"const": "NotFoundError",
"description": "Type indicates the error category",
"enum": [
"NotFoundError"
],
"type": "string"
}
},
"required": [
"type",
"code",
"message"
],
"type": "object"
},
"status": {
"const": "error",
"description": "Status indicates the response status \"error\"",
"type": "string"
}
},
"required": [
"status",
"error"
],
"type": "object"
}
```