Documentation / API Reference / Create an Asset output
Create an Asset output Create one caption, static rendition or additional thumbnail output. The accepted output processes asynchronously and is returned in the same envelope as output reads.
POST
/assets/{assetId} /outputs
Authorization Authorization
header
string
required
Enter the project access token with the Bearer prefix, e.g. "Bearer project_access_token"
Path Parameters AssetId identifies the Asset that owns the output within the authenticated Project.
Body application/json
caption static_rendition thumbnail transcript
Create an Asset-owned caption output.
Params specifies the settings for this output type.
Show params properties
LanguageCode specifies the target language for a translated caption. Supply source_caption_id with this field. Omit both fields to transcribe the Asset audio with automatic language detection.
Available options:
enfresdeitptnljakozharhirutrplsv
SourceCaptionId specifies the caption on this Asset to translate. Supply language_code with this field. Omit both fields to generate original captions.
type
"caption"
string
required
Type specifies the output kind to create.
Create an Asset-owned static rendition output.
Params specifies the settings for this output type.
Show params properties
H.264 MP4 resolution. highest selects the largest supported output without upscaling. Hobby supports up to 1080p; other plans support up to 2160p. Independent of the streaming resolution limits.
Available options:
highest240p360p480p540p720p1080p1440p2160p
type
"static_rendition"
string
required
Type specifies the output kind to create.
Create an Asset-owned thumbnail output.
Params specifies the settings for this output type.
Option 1 Option 2
Show Option 1 properties
timestamps
number[]
required
Timestamps specifies 1 to 100 Source-relative target times in seconds. Every timestamp must be within the selected range, including its start and excluding its end. 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
format
default: "jpeg"
string
Format specifies the image encoding.
Available options:
jpegwebp
Metadata attaches string values to this request. The serialized object may contain at most 2048 bytes.
output
default: "images"
string
Output specifies individual images or automatically arranged sprite sheets.
Available options:
imagessprites
Range limits sampling to part of the Source. Defaults to the whole Source duration.
Show range properties
End specifies the exclusive upper bound in seconds. Defaults to the Source duration.
Start specifies the inclusive lower bound in seconds. Defaults to zero.
Required range: x >= 0
Size specifies the maximum image or tile edge in pixels, from 64 to 1920. Defaults to 320. Odd sizes are supported. Preserves display aspect ratio without cropping or upscaling.
Required range: 64 <= x <= 1920
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
default: "jpeg"
string
Format specifies the image encoding.
Available options:
jpegwebp
Metadata attaches string values to this request. The serialized object may contain at most 2048 bytes.
output
default: "images"
string
Output specifies individual images or automatically arranged sprite sheets.
Available options:
imagessprites
Range limits sampling to part of the Source. Defaults to the whole Source duration.
Show range properties
End specifies the exclusive upper bound in seconds. Defaults to the Source duration.
Start specifies the inclusive lower bound in seconds. Defaults to zero.
Required range: x >= 0
Size specifies the maximum image or tile edge in pixels, from 64 to 1920. Defaults to 320. Odd sizes are supported. Preserves display aspect ratio without cropping or upscaling.
Required range: 64 <= x <= 1920
Timestamps specifies 1 to 100 Source-relative target times in seconds. Every timestamp must be within the selected range, including its start and excluding its end. Repeated targets produce separate outputs.
type
"thumbnail"
string
required
Type specifies the output kind to create.
Create or reuse the original-language transcript for an Asset. Caption generation shares this transcript and its speech-recognition charge.
type
"transcript"
string
required
Type specifies the output kind.
Responses 202 400 401 403 404 409 429 500 503
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.
Output accepted for processing
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:
source_unavailable: the original video is no longer accessible
type
"ConflictError"
string
required
Type indicates the error category
Available options:
ConflictError
status
"error"
string
required
Status indicates the response status "error"
The Asset or input cannot accept this output, the output already exists, or the source caption is not ready for translation.
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
application/json Error response details
Show error properties
Code is the HTTP status code
Message is a human-readable error description
Examples:
The service is temporarily unavailable; retry the request
type
"ServiceUnavailableError"
string
required
Type indicates the error category
Available options:
ServiceUnavailableError
status
"error"
string
required
Status indicates the response status "error"
ServiceUnavailable error
# Create an Asset output
> Create one caption, static rendition or additional thumbnail output. The accepted output processes asynchronously and is returned in the same envelope as output reads.
```json
{
"path": "/assets/{assetId}/outputs",
"method": "post",
"schema": {
"description": "Create one caption, static rendition or additional thumbnail output. The accepted output processes asynchronously and is returned in the same envelope as output reads.",
"operationId": "createAssetOutput",
"parameters": [
{
"description": "AssetId identifies the Asset that owns the output within the authenticated Project.",
"in": "path",
"name": "assetId",
"required": true,
"schema": {
"type": "string"
}
}
],
"requestBody": {
"content": {
"application/json": {
"examples": {
"caption": {
"value": {
"params": {},
"type": "caption"
}
},
"caption_translation": {
"value": {
"params": {
"language_code": "fr",
"source_caption_id": "aop_example"
},
"type": "caption"
}
},
"static_rendition": {
"value": {
"params": {
"resolution": "1080p"
},
"type": "static_rendition"
}
},
"thumbnail": {
"value": {
"params": {
"count": 10,
"output": "sprites"
},
"type": "thumbnail"
}
}
},
"schema": {
"$ref": "#/components/schemas/AssetOutputCreateParams"
}
}
},
"required": true
},
"responses": {
"202": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AssetOutputResponse",
"examples": [
{
"data": {
"asset_id": "ast_example",
"details": {
"id": "aop_example",
"status": "preparing"
},
"id": "aop_example",
"status": "preparing",
"type": "caption"
},
"status": "success"
}
]
}
}
},
"description": "Output accepted for processing"
},
"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"
},
"409": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseErrorConflict"
}
}
},
"description": "The Asset or input cannot accept this output, the output already exists, or the source caption is not ready for translation."
},
"429": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseErrorTooManyRequests"
}
}
},
"description": "TooManyRequests error"
},
"500": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseErrorUnexpected"
}
}
},
"description": "Unexpected error"
},
"503": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResponseErrorServiceUnavailable"
}
}
},
"description": "ServiceUnavailable error"
}
},
"security": [
{
"ProjectAccessToken": []
}
],
"summary": "Create 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.create(\n 'ast_example',\n {\n type: 'static_rendition',\n params: {\n resolution: '1080p',\n },\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.create(\n \"ast_example\",\n type=\"static_rendition\",\n params={\n \"resolution\": \"1080p\",\n },\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-\u003ecreate(\n 'ast_example',\n type: 'static_rendition',\n params: [\n 'resolution' =\u003e '1080p',\n ],\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.New(\n\t\tcontext.TODO(),\n\t\t\"ast_example\",\n\t\tchunkify.AssetOutputNewParams{\n\t\t\tOfStaticRendition: \u0026chunkify.AssetOutputNewParamsStaticRendition{\n\t\t\t\tParams: chunkify.AssetStaticRenditionCreateParams{\n\t\t\t\t\tResolution: chunkify.AssetStaticRenditionCreateParamsResolution1080p,\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t)\n\tif err != nil {\n\t\tpanic(err)\n\t}\n\tfmt.Println(output)\n}\n"
}
]
}
}
```
```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/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/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/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/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/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/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/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/ResponseErrorConflict
{
"description": "Error response",
"properties": {
"error": {
"description": "Error response details",
"properties": {
"code": {
"const": 409,
"description": "Code is the HTTP status code",
"examples": [
409
],
"type": "integer"
},
"message": {
"description": "Message is a human-readable error description",
"examples": [
"source_unavailable: the original video is no longer accessible"
],
"type": "string"
},
"type": {
"const": "ConflictError",
"description": "Type indicates the error category",
"enum": [
"ConflictError"
],
"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/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/ResponseErrorServiceUnavailable
{
"properties": {
"error": {
"description": "Error response details",
"properties": {
"code": {
"const": 503,
"description": "Code is the HTTP status code",
"examples": [
503
],
"type": "integer"
},
"message": {
"description": "Message is a human-readable error description",
"examples": [
"The service is temporarily unavailable; retry the request"
],
"type": "string"
},
"type": {
"const": "ServiceUnavailableError",
"description": "Type indicates the error category",
"enum": [
"ServiceUnavailableError"
],
"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/AssetOutputCreateParams
{
"description": "Create one output for an Asset. Type selects its required, strictly validated parameters.",
"discriminator": {
"mapping": {
"caption": "#/components/schemas/AssetCaptionOutputCreateParams",
"static_rendition": "#/components/schemas/AssetStaticRenditionOutputCreateParams",
"thumbnail": "#/components/schemas/AssetThumbnailOutputCreateParams",
"transcript": "#/components/schemas/AssetTranscriptOutputCreateParams"
},
"propertyName": "type"
},
"oneOf": [
{
"$ref": "#/components/schemas/AssetCaptionOutputCreateParams"
},
{
"$ref": "#/components/schemas/AssetStaticRenditionOutputCreateParams"
},
{
"$ref": "#/components/schemas/AssetThumbnailOutputCreateParams"
},
{
"$ref": "#/components/schemas/AssetTranscriptOutputCreateParams"
}
]
}
```
```json #/components/schemas/AssetThumbnailOutputCreateParams
{
"additionalProperties": false,
"description": "Create an Asset-owned thumbnail output.",
"properties": {
"params": {
"$ref": "#/components/schemas/AssetThumbnailCreateParams",
"description": "Params specifies the settings for this output type."
},
"type": {
"const": "thumbnail",
"description": "Type specifies the output kind to create.",
"type": "string"
}
},
"required": [
"type",
"params"
],
"type": "object",
"x-reject-null-fields": [
"type",
"params"
],
"x-reject-unknown-fields": true
}
```
```json #/components/schemas/AssetThumbnailCreateParams
{
"additionalProperties": false,
"description": "Generate additional thumbnails from a ready Asset using its retained input, folder and Storage. Specify exactly one of timestamps or count. Each layout, format and size combination can be requested once.",
"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",
"default": "jpeg",
"description": "Format selects JPEG or WebP. Defaults to JPEG."
},
"metadata": {
"additionalProperties": {
"type": "string"
},
"description": "Metadata attaches string values to this request. The serialized object may contain at most 2048 bytes.",
"type": "object",
"x-maxJSONBytes": 2048
},
"output": {
"$ref": "#/components/schemas/ThumbnailOutput",
"default": "images",
"description": "Output selects images or sprites. Defaults to images."
},
"range": {
"$ref": "#/components/schemas/ThumbnailRangeParams",
"description": "Range limits sampling to part of the Source. Defaults to the whole Source duration."
},
"size": {
"default": 320,
"description": "Size specifies the maximum image or tile edge in pixels, from 64 to 1920. Defaults to 320. Odd sizes are supported. Preserves display aspect ratio without cropping or upscaling.",
"maximum": 1920,
"minimum": 64,
"type": "integer"
},
"timestamps": {
"description": "Timestamps specifies 1 to 100 Source-relative target times in seconds. Every timestamp must be within the selected range, including its start and excluding its end. Repeated targets produce separate outputs.",
"items": {
"description": "A target time in seconds.",
"minimum": 0,
"type": "number"
},
"maxItems": 100,
"minItems": 1,
"type": "array"
}
},
"type": "object",
"x-reject-null-fields": [
"timestamps",
"count",
"range",
"output",
"format",
"size",
"metadata"
],
"x-reject-unknown-fields": true
}
```
```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/ThumbnailRangeParams
{
"additionalProperties": false,
"description": "Optional Source-relative sampling boundaries.",
"properties": {
"end": {
"description": "End specifies the exclusive upper bound in seconds. Defaults to the Source duration.",
"exclusiveMinimum": 0,
"type": "number"
},
"start": {
"description": "Start specifies the inclusive lower bound in seconds. Defaults to zero.",
"minimum": 0,
"type": "number"
}
},
"type": "object",
"x-reject-null-fields": [
"start",
"end"
],
"x-reject-unknown-fields": true
}
```
```json #/components/schemas/AssetTranscriptOutputCreateParams
{
"additionalProperties": false,
"description": "Create or reuse the original-language transcript for an Asset. Caption generation shares this transcript and its speech-recognition charge.",
"properties": {
"params": {
"$ref": "#/components/schemas/AssetTranscriptOutputParams"
},
"type": {
"const": "transcript",
"description": "Type specifies the output kind.",
"type": "string"
}
},
"required": [
"type",
"params"
],
"type": "object",
"x-reject-null-fields": [
"type",
"params"
],
"x-reject-unknown-fields": true
}
```
```json #/components/schemas/AssetTranscriptOutputParams
{
"additionalProperties": false,
"description": "Parameters for an original-language transcript. Pass an empty object; the spoken language is detected automatically.",
"properties": {},
"type": "object",
"x-go-required-presence": true,
"x-reject-unknown-fields": true
}
```
```json #/components/schemas/AssetCaptionOutputCreateParams
{
"additionalProperties": false,
"description": "Create an Asset-owned caption output.",
"properties": {
"params": {
"$ref": "#/components/schemas/AssetCaptionOutputParams",
"description": "Params specifies the settings for this output type."
},
"type": {
"const": "caption",
"description": "Type specifies the output kind to create.",
"type": "string"
}
},
"required": [
"type",
"params"
],
"type": "object",
"x-reject-null-fields": [
"type",
"params"
],
"x-reject-unknown-fields": true
}
```
```json #/components/schemas/AssetCaptionOutputParams
{
"additionalProperties": false,
"dependentRequired": {
"language_code": [
"source_caption_id"
],
"source_caption_id": [
"language_code"
]
},
"description": "Parameters for original captions or a translation of an existing caption on this Asset.",
"properties": {
"language_code": {
"description": "LanguageCode specifies the target language for a translated caption. Supply source_caption_id with this field. Omit both fields to transcribe the Asset audio with automatic language detection.",
"enum": [
"en",
"fr",
"es",
"de",
"it",
"pt",
"nl",
"ja",
"ko",
"zh",
"ar",
"hi",
"ru",
"tr",
"pl",
"sv"
],
"type": "string"
},
"source_caption_id": {
"description": "SourceCaptionId specifies the caption on this Asset to translate. Supply language_code with this field. Omit both fields to generate original captions.",
"minLength": 1,
"type": "string"
}
},
"type": "object",
"x-go-required-presence": true,
"x-reject-null-fields": [
"source_caption_id",
"language_code"
],
"x-reject-unknown-fields": true
}
```
```json #/components/schemas/AssetStaticRenditionOutputCreateParams
{
"additionalProperties": false,
"description": "Create an Asset-owned static rendition output.",
"properties": {
"params": {
"$ref": "#/components/schemas/AssetStaticRenditionCreateParams",
"description": "Params specifies the settings for this output type."
},
"type": {
"const": "static_rendition",
"description": "Type specifies the output kind to create.",
"type": "string"
}
},
"required": [
"type",
"params"
],
"type": "object",
"x-reject-null-fields": [
"type",
"params"
],
"x-reject-unknown-fields": true
}
```
```json #/components/schemas/AssetStaticRenditionCreateParams
{
"additionalProperties": false,
"description": "Parameters for an independently processed H.264 MP4 rendition.",
"properties": {
"resolution": {
"description": "H.264 MP4 resolution. highest selects the largest supported output without upscaling. Hobby supports up to 1080p; other plans support up to 2160p. Independent of the streaming resolution limits.",
"enum": [
"highest",
"240p",
"360p",
"480p",
"540p",
"720p",
"1080p",
"1440p",
"2160p"
],
"type": "string"
}
},
"required": [
"resolution"
],
"type": "object",
"x-reject-null-fields": [
"resolution"
],
"x-reject-unknown-fields": true
}
```
```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/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"
}
```
```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"
}
```