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