openapi: 3.0.3
info:
title: Brightcove Analytics API Reference Access Tokens Ingest API
description: "Reference for the Brightcove Analytics API, used to retrieve analytics data for your accounts. To test API requests, you can use our API Testing Tools.\n\nFor additional in-depth guides to features of the API, see the **[general documentation](/analytics/index.html)**.\n\n **Base URL**: https://analytics.api.brightcove.com"
x-bc-access: public
version: 1.0.0
servers:
- url: https://analytics.api.brightcove.com
variables: {}
tags:
- name: Ingest
paths:
/v1/accounts/{{account_id}}/videos/{{video_id}}/ingest-requests:
post:
tags:
- Ingest
summary: Ingest Videos and Assets
description: Ingests a video, images, and/or text track (WebVTT files) and adds them to your media library. NOTE that before you ingest a new video, you must first make a Create Video request.
operationId: AccountsVideosIngestRequestsByAccountIdAndVideoIdPost
security:
- BC_OAuth2:
- video-cloud/video/all
- video-cloud/ingest-profiles/profile/read
- video-cloud/ingest-profiles/account/read
parameters:
- $ref: '#/components/parameters/account_id'
- $ref: '#/components/parameters/video_id'
- $ref: '#/components/parameters/Content-Type'
- $ref: '#/components/parameters/Authorization'
requestBody:
description: Uploads a video, images, and/or text track (WebVTT files) and adds them to your media library. NOTE that before you ingest a new video, you must first make a Create Video request.
content:
application/json:
schema:
$ref: '#/components/schemas/IngestMediaAssetbody'
required: true
responses:
'200':
description: '200'
content:
application/json:
schema:
description: '200'
$ref: '#/components/schemas/IngestMediaAssetResponse'
'400':
description: 'PROFILE: Unable to find profile by name
NOT_SUBMITTED: Unable to submit job, please try again later
NO_SUCH_VIDEO: Unable to find the referenced video
NO_SOURCE: Unable to find a source to use
CDN_CREDENTIALS: Unable to fetch CDN credentials
BAD_CALLBACKS: Callbacks were not in expected format
BAD_REQUEST: Unable to parse request body.'
'401':
description: 'UNAUTHORIZED: Authentication failed; check to make sure your client credentials were correct for the access token'
'403':
description: 'DYNAMIC_DELIVERY_NOT_ALLOWED: This account is not enabled for Dynamic Delivery, but a Dynamic Delivery profile was specified.
CONTEXT_AWARE_ENCODING_NOT_ALLOWED: This account is not enabled for Context Aware Encoding, but a Context Aware Encoding profile was specified.'
'404':
description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested'
'422':
description: '[One of the following:]
* MALFORMED_SOURCE_URL: source url is malformed.
* BAD_PROTOCOL_SOURCE_URL: source url uses a unsupported protocol.
* EXCEED_MAXIMUM_VTT_SOURCES: vtt sources exceed the maximum size.
* INVALID_VTT_KIND: vtt kind is invalid.
* CONSTRAINT_VIOLATION: capture-image is not allowed if an image
source is provided.
* UNPROCESSABLE_ENTITY: request data contains some unprocessable
entity.
* INPUT_SIZE_EXCEEDED: Unprocessable content.'
'429':
description: 'RATE_LIMIT_EXCEEDED: Dynamic Ingest job not created. Reduce the number of concurrent jobs for this account before trying again. This error has been logged'
'500':
description: '[One of the following:]
* SUBMISSION_FAILURE: Unable to submit job please try again later.
* INTERNAL_ERROR: Internal error, please try again later'
deprecated: false
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
/v1/accounts/{{account_id}}/videos/{{video_id}}/upload-urls/{source_name}:
get:
tags:
- Ingest
summary: Get Temporary S3 URLs to Upload Videos
description: Get temporary S3 URLs to upload source files for ingestion into Video Cloud. See Source File Upload for more information. NOTE that before you ingest a new video, you must first make a Create Video request.
operationId: AccountsVideosUploadUrlsSourceNameByAccountIdAndVideoIdGet
security:
- BC_OAuth2:
- video-cloud/upload-urls/read
parameters:
- $ref: '#/components/parameters/account_id'
- $ref: '#/components/parameters/video_id'
- $ref: '#/components/parameters/Content-Type'
- $ref: '#/components/parameters/Authorization'
- $ref: '#/components/parameters/source_name'
responses:
'200':
description: '200'
content:
application/json:
schema:
description: '200'
$ref: '#/components/schemas/GetS3UrlsResponse'
'401':
description: 'UNAUTHORIZED: Authentication failed; check to make sure your client credentials were correct for the access token'
'404':
description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested'
'429':
description: 'RATE_LIMIT_EXCEEDED: Dynamic Ingest job not created. Reduce the number of concurrent jobs for this account before trying again. This error has been logged'
'500':
description: 'INTERNAL_ERROR: Internal error, please try again later '
deprecated: false
x-operation-settings:
CollectParameters: false
AllowDynamicQueryParameters: false
AllowDynamicFormParameters: false
IsMultiContentStreaming: false
components:
schemas:
IngestMediaAssetbody.textTracks:
title: Ingest Media Asset Body.text_tracks
description: array of text_tracks objects - see [Ingesting WebVTT Files (Text Tracks)](/dynamic-ingest/ingest-guides/ingesting-webvtt-files-text-trackscaptions.html)
required:
- url
- srclang
type: object
properties:
url:
type: string
description: URL for a WebVTT file
srclang:
type: string
description: BCP 47 language code for the text tracks. Both two letter language codes like `es` (Spanish) and language+region codes like `es-MX` (Mexican Spanish) are valid
kind:
type: string
description: how the vtt file is meant to be used
default: captions
enum:
- captions
- subtitles
- chapters
- metadata
- transcripts
label:
type: string
description: user-readable title
default:
type: boolean
description: sets the default language for captions/subtitles
default: false
status:
type: string
description: The status of the text tracks - `published` or `draft` (use `draft` if you want the text tracks added but not yet available to users - `status` can be updated using the CMS API if you need to)
enum:
- published
- draft
default: null
embed_closed_caption:
type: boolean
description: whether to embed the text tracks in MP4 renditions as 608 embedded captions
default: false
example:
- url: https://support.brightcove.com/test-assets/captions/herons.vtt
srclang: en-US
kind: captions
label: EN
default: true
status: published
embed_closed_caption: true
IngestMediaAssetbody.transcripts.metadataOptimizer.translationRequest:
title: translation_request
type: object
description: 'Targets for metadata translation into non-primary language views. You only need **`languages`**: an array of BCP-47 locale codes (for example `es-ES`, `fr-FR`). Use with **`auto_translate`** and **`skip_review`** to generate primary-language metadata and translate into those views in one request.'
required:
- languages
properties:
languages:
type: array
items:
type: string
description: BCP-47 codes of secondary language views to translate metadata into
IngestMediaAssetbody.audioTracks:
title: Ingest Media Asset Body.audio_tracks
type: object
properties:
merge_with_existing:
type: boolean
description: whether to replace existing audio tracks or add the new ones
default: true
masters:
type: array
items:
$ref: '#/components/schemas/IngestMediaAssetbody.audioTracks.masters'
description: array of audio track objects **Dynamic Delivery only**
example:
merge_with_existing: true
masters:
- url: https://support.brightcove.com/test-assets/audio/celtic_lullaby.m4a
language: en
variant: alternate
- url: https://support.brightcove.com/test-assets/audio/audio1.m4a
language: en
variant: commentary
IngestMediaAssetResponse:
title: Ingest Media Asset Response
required:
- id
type: object
properties:
id:
type: string
description: job id for the request
example:
id: 1242d634-0447-45c0-a79d-2199df409b4f
IngestMediaAssetbody.image:
title: Ingest Media Asset Body.image
required:
- url
- variant
type: object
properties:
url:
type: string
description: URL for the image
language:
type: string
description: Language code for the image from the subtags in https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry (default can be set for the account by contacting Brightcove Support)
variant:
type: string
description: the type of image
enum:
- poster
- thumbnail
- portrait
- square
- wide
- ultra-wide
label:
type: string
enum:
- poster
- thumbnail
height:
type: number
description: pixel height of the image
width:
type: number
description: pixel width of the image
example:
media_type: image
language: es
format: jpg
label: poster
width: 1280
height: 720
IngestMediaAssetbody.transcripts.translationLanguage:
title: translation_languages item
type: object
required:
- srclang
properties:
srclang:
type: string
description: BCP-47 target language code for translated captions
label:
type: string
description: Optional display label
status:
type: string
description: Text track status for translated captions
enum:
- published
- draft
dubbing:
type: boolean
description: When true, generate dubbed audio after translated captions exist
disable_voice_cloning:
type: boolean
description: When true, use synthetic voice instead of voice cloning for dubbing
ai_transparency_label:
type: string
description: Optional AI transparency label for translated captions (text tracks) for this target language when supported.
ai_transparency_label_dubbing:
type: string
description: Optional AI transparency label for dubbed audio generated for this target language when dubbing is enabled and supported.
IngestMediaAssetbody.master:
title: Ingest Media Asset Body.master
type: object
description: Specification of master for media asset(s) to be ingested
example:
url: https://support.brightcove.com/test-assets/videos/Great_Blue_Heron.mp4
audio_tracks:
- language: en
variant: main
properties:
url:
type: string
description: URL for the video source; required except for re-transcoding where a digital master has been archived, or you are adding images or text tracks to an existing video
example: https://support.brightcove.com/test-assets/audio/celtic_lullaby.m4a
use_archived_master:
type: boolean
description: For retranscode requests, will use the archived master if set to true; if set to false, you must also include the url for the source video
default: false
late_binding_type:
type: string
description: The process of associating progressive MP4 renditions with a video after it has been ingested, Late binding allows you to add or modify MP4 renditions to a video without having to entirely retranscode the video (https://apis.support.brightcove.com/dynamic-ingest/ingest-guides/requesting-late-binding.html#use_cases)
audio_tracks:
type: array
description: Language code for the **muxed in** audio from the subtags in (https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry) (default can be set for the account by contacting Brightcove Support) **Dynamic Delivery only**
example:
- language: en
variant: main
items:
type: object
properties:
language:
type: string
description: Language code for the muxed in audio from the subtags in (https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry) (default can be set for the account by contacting Brightcove Support) **Dynamic Delivery only**
variant:
type: string
description: the type of audio track for the muxed in audio - generally `main` **Dynamic Delivery only**
enum:
- main
- alternate
- commentary
- dub
- descriptive
GetS3UrlsResponse:
title: Get S3 URLs Response
required:
- bucket
- object_key
- access_key_id
- secret_access_key
- session_token
- SignedUrl
- ApiRequestUrl
type: object
properties:
bucket:
type: string
description: the S3 bucket name
object_key:
type: string
description: the access key used for authenticating the upload request (used for multipart uploads)
access_key_id:
type: string
description: the access key used for authenticating the upload request (used for multipart uploads)
secret_access_key:
type: string
description: the secret access key used for authenticating the upload request (used for multipart uploads)
session_token:
type: string
description: the secret access key used for authenticating the upload request (used for multipart uploads)
SignedUrl:
type: string
description: this is a shorthand S3 url that you can PUT your source file(s) to if you have relatively small videos and are not implementing multipart upload
ApiRequestUrl:
type: string
description: this is the URL you will include in your Dynamic Ingest POST request for the Master url or url for the image/text_tracks assets
example:
bucket: ingestion-upload-production
object_key: 57838016001/67909129001/c7e6f28b-9057-4616-a7aa-66a0eb836236/greatblueheron.mp4
access_key_id: ASIA25ESRNXKNDUXGJ
secret_access_key: lV1OPGGND6UCVWuv8SUT4/ZS1S+L2Z6BczCpN
session_token: FQoGZXIvYXdzED0aDOnOYmTbUrX3yXd0myKMA3IZ9c7JcbytrkUohtpgI79977txHHgVME4YQKvdUQ895uQu9JEHqU8QXGu+2b9QUx6C2X34t5Jg9n0E0OMVPDJDHy3wj7rARVM7Uc1ha/W8ikYFErZdqrxAh/dEpNqcAM/ZZ682cCXjfzNBZLq55cD/nHDKxWBPJquq1w1mDoech83y1jE1Sb2PparQT7kjc6w/unnqcIfW6nX3bCUW6STOsvvDkxYuyPliQnI+PiuPq3TCuiVS1giRK0sc80/VPn4dJLFNA2xopUoY86zhM/PCUPp3/MtKaWVeTVhk3/lsPoNdBPUAOLdRVO+JtUyxW8x/4vZd1DrXtdByGXdt6pBoMmLm6jFOOMl6HGjhSjl8t8vwPckvr+6z/kSaqw/NzvXz7yAMF5OKkZsa1KUQN9+SSTwHhy6Zm9AZED4mBNXPxwnxJDaeFp51idwiyo3KGZT0TpZdKGm5xrUPcpmWnoOd/G8tKAERO8j7BhkOPP3zOpDrmGW6u3xXmLn3KWBzhjs07oLaluBQkZaUVijrjrbcBQ==
signed_url: https://ingestion-upload-production.s3.amazonaws.com/57838016001/67909129001/c7e6f28b-9057-4616-a7aa-66a0eb836236/greatblueheron.mp4?AWSAccessKeyId=AKIAJZKRHWBFMCPPA&Expires=1536088299&Signature=GD2g7CTz2wLFYnaw33KbocDiXmA%3D
api_request_url: https://ingestion-upload-production.s3.amazonaws.com/57838016001/67909129001/c7e6f28b-9057-4616-a7aa-66a0eb836236/greatblueheron.mp4
IngestMediaAssetbody.transcripts:
title: Ingest Media Asset Body.transcripts
description: 'Array of auto captions/transcripts to be generated — see [Requesting Auto Captions](/dynamic-ingest/ingest-guides/requesting-auto-captions.html); or transcript files to ingest — see [Ingesting Transcript Files](/dynamic-ingest/ingest-guides/ingesting-transcriptions.html).
Optional on each item: **`translation_languages`** (caption translation and optional dubbing via Universal Translator), **`metadata_optimizer`** (AI Metadata Optimizer at ingest), **`audio_descriptions`** (AI Audio Description in the same workflow), and optional auto-caption/transcript tuning fields (**`use_dictionary`**, **`max_chars_per_line`**, **`max_lines_per_cue`**, **`diarization_mode`**, **`enable_audio_tags`**, **`allow_multilanguage_caption`**, **`ai_transparency_label`**, **`polished_transcription`**) when supported. See [Ingesting Transcript Files — Caption translation](/dynamic-ingest/ingest-guides/ingesting-transcriptions.html#caption_translation), [AI metadata enhancement](/dynamic-ingest/ingest-guides/ingesting-transcriptions.html#ai_metadata_enhancement), and [Audio description at ingest](/dynamic-ingest/ingest-guides/ingesting-transcriptions.html#audio_description_api).
You can also create or list audio description jobs **outside** an ingest request with `POST|GET .../videos/{video_id}/ai/audio-descriptions` and `GET .../ai/audio-descriptions/jobs` — see [Audio Description — API access](https://studio.support.brightcove.com/ai-features/content-suite/audio-description.html#api).'
type: array
items:
type: object
properties:
autodetect:
type: boolean
description: "`true` to auto-detect language from audio source.\n`false` to use srclang specifying the audio language.\n\n**Note:**\n - If `autodetect` is set to `true`, `srclang` must **not** be present\n - If `autodetect` is set to `false`, and `srclang` is not present, the request will fail"
default:
type: boolean
description: If true, srclang should be ignored and we will get captions for main audio, and the language will be determined from audio.
default: false
input_audio_track:
type: object
description: Defines the audio to extract the captions. Composed by language and variant (both required).
properties:
language:
type: string
description: BCP-47 style language code for the text tracks (en-US, fr-FR, es-ES, etc.)
enum:
- af-ZA
- ar-AE
- ar-SA
- cy-GB
- da-DK
- de-CH
- de-DE
- en-AB
- en-AU
- en-GB
- en-IE
- en-IN
- en-NZ
- en-US
- en-WL
- en-ZA
- es-ES
- es-US
- fa-IR
- fr-CA
- fr-FR
- ga-IE
- gd-GB
- he-IL
- hi-IN
- id-ID
- it-IT
- ja-JP
- ko-KR
- ms-MY
- nl-NL
- pt-BR
- pt-PT
- ru-RU
- ta-IN
- te-IN
- th-TH
- tr-TR
- zh-CN
- zh-TW
variant:
type: string
description: Specifies the variant to use.
enum:
- main
- alternate
- dub
- commentary
- descriptive
kind:
type: string
description: The kind of output to generate - for auto captions requests, if `kind` is `transcripts`, both captions and a transcript will be generated. For ingestion requests (including a `url`) the transcript will be ingested.
default: captions
enum:
- captions
- transcripts
label:
type: string
description: user-readable title - defaults to the BCP-47 style language code
srclang:
type: string
description: BCP-47 style language code for the text tracks (en-US, fr-FR, es-ES, etc.)
enum:
- af-ZA
- ar-AE
- ar-SA
- cy-GB
- da-DK
- de-CH
- de-DE
- en-AB
- en-AU
- en-GB
- en-IE
- en-IN
- en-US
- en-WL
- es-ES
- es-US
- fa-IR
- fr-CA
- fr-FR
- ga-IE
- gd-GB
- he-IL
- hi-IN
- id-ID
- it-IT
- ja-JP
- ko-KR
- ms-MY
- nl-NL
- pt-BR
- pt-PT
- ru-RU
- ta-IN
- te-IN
- tr-TR
- zh-CN
status:
type: string
description: The status of the text tracks - `published` or `draft` (use `draft` if you want the text tracks added but not yet available to users - `status` can be updated using the CMS API if you need to)
enum:
- published
- draft
default: null
url:
type: string
description: The URL where a transcript file is located. Must be included in the `kind` is `transcripts`. Must not be included if the `kind` is `captions`.
use_dictionary:
type: boolean
description: When `true`, apply the account autocaption dictionary to generated captions/transcripts when supported.
max_chars_per_line:
type: integer
minimum: 25
maximum: 60
description: Maximum characters per caption line when provided (allowed range 25–60).
max_lines_per_cue:
type: integer
minimum: 1
maximum: 2
description: Maximum lines per caption cue when provided (1 or 2).
diarization_mode:
type: string
description: How speaker changes are represented in the text when supported.
enum:
- hyphen
- speaker_labels
- speaker_names
enable_audio_tags:
type: boolean
description: When `true`, include audio event tags in the output when supported.
allow_multilanguage_caption:
type: boolean
description: When `true`, allow multilanguage caption behavior for this entry when supported.
ai_transparency_label:
type: string
description: Optional label for AI-generated text tracks (AI transparency).
polished_transcription:
type: boolean
description: When `true`, request a polished transcript style when supported.
translation_languages:
type: array
description: Target languages for caption translation and optional dubbing after auto captions exist for this `transcriptions` entry. See [Ingesting Transcript Files](/dynamic-ingest/ingest-guides/ingesting-transcriptions.html#caption_translation).
items:
$ref: '#/components/schemas/IngestMediaAssetbody.transcripts.translationLanguage'
metadata_optimizer:
$ref: '#/components/schemas/IngestMediaAssetbody.transcripts.metadataOptimizer'
audio_descriptions:
$ref: '#/components/schemas/IngestMediaAssetbody.transcripts.audioDescriptionsSettings'
example:
- srclang: en-US
kind: transcripts
label: en-US
status: published
default: true
IngestMediaAssetbody.thumbnail:
title: Ingest Media Asset Body.thumbnail
required:
- url
type: object
properties:
url:
type: string
description: URL for the video thumbnail image
height:
type: number
description: pixel height of the image
width:
type: number
description: pixel width of the image
example:
url: https://support.brightcove.com/test-assets/images/celtic-lullaby-large.png
width: 160
height: 90
IngestMediaAssetbody:
title: Ingest Media Asset Body
type: object
properties:
master:
$ref: '#/components/schemas/IngestMediaAssetbody.master'
forensic_watermarking:
type: boolean
description: 'Whether forensic watermarks should be added to video renditions - if you set it to `true` the account must be enabled for forensic watermarking, or the field will be ignored - see **[Overview: Forensic Watermarking](/general/overview-forensic-watermarking.html) for more details**'
default: false
example: true
forensic_watermarking_stub_mode:
type: boolean
description: 'Whether **visible** forensic watermarks should be added to video renditions - if you set it to `true` the account must be enabled for forensic watermarking, and the `forensic_watermarking` field must also be set to `true` - see **[Overview: Forensic Watermarking](/general/overview-forensic-watermarking.html) for more details**
Visible watermarks should be used only for testing integrations, to ensure that forensic watermarks have been successfully added to the video (use a video at least 10 minutes long). Once verification is complete, they must be removed by submitting a new ingest request to retranscode the video - `forensic_watermarking_stub_mode` must be set to `false` on the retranscode request.'
default: false
example: true
profile:
type: string
description: ingest profile to use for transcoding; if absent, account default profile will be used
example: multi-platform-standard-static
priority:
type: string
description: "Priority queueing allows the user to add a `priority` flag to an ingest request. The allowable values for `priority` are `low` and `normal` . Any other value will cause the request to be rejected with a 422 error code. When the user doesn't specify any priority, the default value of `normal` is used. Priority queuing is available for Dynamic Delivery ingest only. Here is a brief description of how Priority Queueing changes how jobs are processed from the queue:\n\n1. If there are no queued jobs and there is capacity to run a job, then the job is run immediately. This applies to both low and normal priority jobs.\n2. If there is is no capacity for another job to run, the job is queued.\n3. If there are jobs in the queue, then any new jobs are also queued. This means that a new job can't start before queued jobs.\n4. When there is capacity to run another job and there are queued jobs, a job is taken from the queue:\n - If there are ANY normal priority jobs in the queue, the oldest normal priority job will be picked.\n - If there are NO normal priority jobs in the queue, then the oldest low priority job will be picked.\n5. Normal and Low priority jobs are treated the same for how many running jobs there can be. The total number of jobs processing, whatever their priority, is limited to 100 per account.\n6. There are separate quotas for how many normal and low priority jobs can be queued."
enum:
- low
- normal
text_tracks:
type: array
items:
$ref: '#/components/schemas/IngestMediaAssetbody.textTracks'
description: array of text_track maps
transcriptions:
type: array
items:
$ref: '#/components/schemas/IngestMediaAssetbody.transcripts'
description: array of auto captions to be generated
audio_tracks:
$ref: '#/components/schemas/IngestMediaAssetbody.audioTracks'
images:
type: array
items:
$ref: '#/components/schemas/IngestMediaAssetbody.image'
description: array of images (Dynamic Delivery Only)
poster:
$ref: '#/components/schemas/IngestMediaAssetbody.poster'
thumbnail:
$ref: '#/components/schemas/IngestMediaAssetbody.thumbnail'
capture-images:
type: boolean
description: whether poster and thumbnail should be captured during transcoding; defaults to `true` if the the profile has image renditions, `false` if it does not
capture-images-at:
type: number
minimum: 0
description: timestamp in seconds at which to capture the poster and thumbnail image; if the value exceeds the video duration the midpoint is used instead; defaults to the video midpoint when omitted; cannot be used when `capture-images` is `false`
example: 30.5
callbacks:
type: array
items:
type: string
description: array of URLs that notifications should be sent to
example:
- https://solutions.brightcove.com/bcls/di-api/di-callbacks.php
IngestMediaAssetbody.poster:
title: Ingest Media Asset Body.poster
required:
- url
type: object
properties:
url:
type: string
description: URL for the video poster image
height:
type: number
description: pixel height of the image
width:
type: number
description: pixel width of the image
example:
url: https://support.brightcove.com/test-assets/images/celtic-lullaby-large.png
width: 1400
height: 1400
IngestMediaAssetbody.transcripts.audioDescriptionsSettings:
title: audio_descriptions
type: object
description: Request AI audio description together with this `transcriptions` entry. Field meanings match `POST .../videos/{video_id}/ai/audio-descriptions` and [Audio Description](https://studio.support.brightcove.com/ai-features/content-suite/audio-description.html#api).
required:
- languages
properties:
languages:
type: array
items:
type: string
description: BCP-47 codes for languages to generate descriptive audio in (e.g. `en-US`, `es-ES`). At least one; one track per language. The video needs a text track and audio in each language (missing pieces may trigger autocaption or dubbing where supported).
ai_transparency_label:
type: string
description: Optional AI transparency label for generated audio description tracks when supported.
IngestMediaAssetbody.audioTracks.masters:
title: Ingest Media Asset Body.audio_tracks.masters
description: Additional audio tracks for the video - see [Implementing Multiple Audio Tracks Using the APIs](/dynamic-ingest/ingest-guides/implementing-multiple-audio-tracks-using-apis.html) for more information **Dynamic Delivery only**
type: object
properties:
url:
type: string
description: URL for the audio file **Dynamic Delivery only**
language:
type: string
description: Language code for the audio track from the subtags in https://www.iana.org/assignments/language-subtag-registry/language-subtag-registry (default can be set for the account by contacting Brightcove Support) **Dynamic Delivery only**
variant:
type: string
description: the type of audio track (default can be set for the account by contacting Brightcove Support) **Dynamic Delivery only**
enum:
- main
- alternate
- commentary
- dub
- descriptive
IngestMediaAssetbody.transcripts.metadataOptimizer:
title: metadata_optimizer
type: object
required:
- language
description: 'AI Metadata Optimizer options for the same ingest workflow. Same fields as `POST .../videos/{video_id}/ai/metadata-enhancement/{language}`, including optional **translation_request** (object with **`languages`** only). On ingest, include **translation_request** only when **skip_review** and **auto_translate** are both `true`, and use explicit caption **`srclang`** on the `transcriptions` item (not **`autodetect`**: `true`). See [Ingesting Transcript Files](/dynamic-ingest/ingest-guides/ingesting-transcriptions.html#ai_metadata_enhancement).'
properties:
language:
type: string
description: BCP-47 language code for generated metadata
translation_request:
$ref: '#/components/schemas/IngestMediaAssetbody.transcripts.metadataOptimizer.translationRequest'
fields_to_generate:
type: array
items:
type: string
enum:
- names
- long_descriptions
- short_descriptions
- tags
description: If omitted or empty, all four field types are generated
skip_review:
type: boolean
description: When true, first suggestion is applied automatically (see product docs for behavior)
auto_translate:
type: boolean
description: When true, after metadata is applied, eligible fields are translated into the secondary views listed in translation_request.languages. May be true only when skip_review is true. Requires translation_request with languages when used.
use_tag_architecture:
type: boolean
description: When true, enforce custom tag rules from the metadata-enhancement tags endpoint
references:
type: array
items:
type: string
description: Video IDs to use as style references
character_limits:
type: object
description: Map of field name (`names`, `long_descriptions`, `short_descriptions`, `tags`) to maximum length
additionalProperties:
type: integer
parameters:
account_id:
name: account_id
in: path
description: Video Cloud account ID.
required: true
style: simple
explode: false
schema:
type: string
Content-Type:
name: Content-Type
in: header
description: 'Content-Type: application/json'
required: true
style: simple
explode: false
schema:
type: string
video_id:
name: video_id
in: path
description: Video Cloud video ID; if this is a new video ingest, the ID will be the one returned by the Create Video request
required: true
style: simple
explode: false
schema:
type: number
Authorization:
name: Authorization
in: header
description: '''Authorization: Bearer access_token (see [Getting Access Tokens](/oauth/guides/getting-access-tokens.html))'''
required: true
style: simple
explode: false
schema:
type: string
source_name:
name: source_name
in: path
description: 'the video source filename - the name should not contain any URL-reserved characters such as ?, &, # or spaces'
required: true
style: simple
explode: false
schema:
type: string
securitySchemes:
BC_OAuth2:
type: oauth2
description: Brightcove OAuth API. See the [support documentation](/oauth/index.html) or [Getting Access Tokens](/oauth/code-samples/oauth-api-sample-get-access-token.html) to learn more
flows:
clientCredentials:
tokenUrl: https://oauth.brightcove.com/v4/access_token
scopes:
video-cloud/analytics/read: Read analytics data
video-cloud/video/read: Read video data
x-bc-implicit-head: true
x-bc-implicit-options: true
x-bc-upstream: https://backend_server