Skip to main content

Brightcove

Brightcove is an enterprise video cloud platform for hosting, managing, publishing, and analyzing video content. Its CMS, Dynamic Ingest, Player Management, Live, and Analytics APIs let you automate the full video lifecycle — from upload and transcoding through playback and engagement reporting.

Brightcove icon

Power end-to-end data operations for your Brightcove API with Nexla. Our bi-directional Brightcove connector is purpose-built for Brightcove, making it simple to ingest data, sync it across systems, and deliver it anywhere — all with no coding required. Nexla turns API-sourced data into ready-to-use, reusable data products and makes it easy to send data to Brightcove or any other destination. With comprehensive monitoring, lineage tracking, and access controls, Nexla keeps your Brightcove workflows fast, secure, and fully governed.

Features

Type: API

SourceDestination

  • Seamless API Integration: Connect to any endpoint as source or destination without coding, with automatic data product creation
  • Visual Composition & Chaining: Build complex integrations using visual templates, chain API calls, and compose workflows with data validation and filtering
  • API Proxy: Expose curated slices of your data securely with a secure and customizable API proxy that validates and transforms data on the fly
  • Request optimization with intelligent batching, retry, and caching to minimize API calls and costs

Prerequisites

The Brightcove APIs (CMS, Dynamic Ingest, Player Management, Live, and Analytics) use OAuth 2.0 client credentials for machine-to-machine authentication. Brightcove issues a short-lived access token (5-minute TTL) in exchange for a registered Client ID and Client Secret scoped to the specific operations your integration needs.

Before creating a Nexla credential, gather the following from your Brightcove Video Cloud account:

  • Account ID — the numeric identifier for your Video Cloud account.

  • Client ID — issued when you register an API Authentication client in Brightcove Studio.

  • Client Secret — issued alongside the Client ID and shown only once at creation.

Locate Your Brightcove Account ID

Your Account ID is required because every Brightcove API endpoint is scoped to a specific account.

  1. Sign in to Brightcove Studio.

  2. Click your account name (or avatar) in the upper-right corner of the Studio header. Your numeric Account ID is displayed in the account information panel.

  3. Alternatively, navigate to Admin > Account Information. The Account ID is listed near the top of the page.

  4. Copy the Account ID and store it for use in the Nexla credential.

    If your organization has multiple Brightcove accounts (for example, separate publisher accounts), confirm that you copy the ID of the specific account whose videos, playlists, or analytics you want Nexla to access.

Register an API Authentication Client

Brightcove uses a self-service API Authentication page in Studio to register OAuth 2.0 clients and assign the scopes they are allowed to call.

  1. In Brightcove Studio, navigate to Admin > API Authentication. This page is available only to users with administrator privileges on the account.

  2. Click the Register New Application button to open the registration form.

  3. Enter a descriptive Name for the application (for example, Nexla Integration) so the client is easy to identify later in the audit log.

  4. Under Select the type of account, choose the account (or accounts) this client should be allowed to access. Select the same Account ID you copied above.

  5. Under Select the operations this application will be authorized to perform, enable the API products and operations that match your integration needs. The Nexla Brightcove connector ships endpoint templates for the following products, so enable the corresponding scopes:

    • CMS API — Video Read/Write, Playlist Read/Write, Folder Read/Write, Label Read, Custom Fields Read, Assets Read.

    • Dynamic Ingest API — Ingest Read/Write (only required if you plan to trigger Dynamic Ingest jobs from Nexla).

    • Analytics API — Analytics Read.

    • Player Management API — Player Read.

    • Live API — Live Read (only required if you plan to read Brightcove Live job data).

    Brightcove follows the principle of least privilege — only enable the scopes your integration actually needs. You can edit the client later to add or remove scopes without re-issuing credentials.

  6. Click Save. Brightcove generates and displays the new Client ID and Client Secret on the confirmation page.

  7. Copy both values immediately and store them in a secure secret manager. The Client Secret is shown only once — if it is lost, you must rotate the credential by editing the client and generating a new secret.

For complete information about the API Authentication flow and the full scope catalog, see the Brightcove OAuth API Overview and the Managing API Authentication Credentials guide.

Important

The Client Secret grants programmatic access to your Brightcove account at the scope level configured on the client. Treat it like a password — store it in a secret manager, never commit it to source control, and rotate it immediately if you suspect it has been exposed.

Authenticate

Create a credential in Nexla

  1. After selecting the data source/destination type, click the Add Credential tile to open the Add New Credential overlay.

  2. Enter a name for the credential in the Credential Name field and a short, meaningful description in the Credential Description field.

  3. Enter the Client ID issued by Brightcove in the Client ID field. This value is found in Admin > API Authentication in Brightcove Studio.

  4. Enter the Client Secret issued alongside the Client ID in the Client Secret field. This value is shown only once at client creation and cannot be retrieved later — if it has been lost, generate a new secret in Brightcove Studio.

  5. Enter your numeric Brightcove Video Cloud Account ID in the Account ID field. Nexla substitutes this value into the account path of every Brightcove API call (for example, https://cms.api.brightcove.com/v1/accounts/{account_id}/videos).

    Nexla exchanges the Client ID and Client Secret for a short-lived access token by calling https://oauth.brightcove.com/v4/access_token. Tokens expire after approximately 5 minutes, and Nexla automatically refreshes them — no additional configuration is required.

  6. Click the Save button at the bottom of the overlay to save the configured credential. Nexla validates the credential by issuing a test request to the Brightcove CMS API with the configured Account ID. The newly added credential will now appear in a tile on the Authenticate screen during data source/destination creation.

Use as a data source

To create a new data flow, navigate to the Integrate section, and click the New Data Flow button. Then, select the desired flow type from the list, and click the Create button. Select the Brightcove connector tile from the list of available connectors, then select the credential that will be used to connect to the Brightcove instance, and click Next; or, create a new Brightcove credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Brightcove endpoints. Select the endpoint from which this source will fetch data from the Endpoint pulldown menu. Available endpoint templates are listed in the expandable boxes below. Click on an endpoint to see more information about it and how to configure your data source for this endpoint.

Get Videos

This endpoint lists every video in the configured Brightcove account along with its full metadata — title, description, tags, state, scheduled dates, custom fields, and reference IDs. Use it to build a catalog of your video library in a warehouse, drive content discovery, or feed downstream analytics.

  • Enter the earliest updated_at date to include in the Start Date field, in ISO 8601 format (for example, 2024-01-01T00:00:00Z). The default is {'{now-30}'}, which fetches videos updated in the last 30 days — ideal for incremental sync.
  • The endpoint uses Brightcove's updated_at range query, sorted descending, with offset-based pagination (limit=100 per page). Nexla automatically advances the offset until every matching video has been returned.

Brightcove's CMS API caps the maximum offset at 10,000. For very large libraries, narrow the Start Date window or use the Search Videos endpoint with a tighter query.

Get Video by ID

This endpoint retrieves the full metadata for a single video by its Brightcove video ID. Use it to enrich an existing dataset of video IDs with the latest details, or to validate a video's state before pushing it downstream.

  • Enter the Brightcove video ID in the Video ID field. This is required. Video IDs can be obtained from the Get Videos or Search Videos endpoints, or from upstream Nexla data flows.

This endpoint returns a single video object (not an array). The path to data is set to the response root, so the video is treated as the record.

Get Video Sources

This endpoint returns the rendition sources (HLS, MP4, DASH) for a single video, including the playable src URLs and encoding details (bitrate, codec, container, resolution). Use it to feed external CDNs, generate download manifests, or audit available playback variants.

  • Enter the Brightcove video ID in the Video ID field. This is required.
  • The endpoint returns one record per rendition source. The path to data is set to $[*], so each source becomes its own Nexset record.

Get Video Images

This endpoint returns the poster and thumbnail image assets associated with a video, including the public URLs, sizes, and asset IDs. Use it to sync video artwork to a CMS or DAM, or to populate downstream content rendering systems.

  • Enter the Brightcove video ID in the Video ID field. This is required.

Get Video Count

This endpoint returns the total count of videos in the account, optionally filtered by a search query. Use it for capacity reporting, sync validation (compare against your warehouse row count), or to populate dashboard tiles.

  • This endpoint requires no additional configuration. It returns a single record with a numeric count field.

Search Videos

This endpoint runs a Brightcove CMS search using the platform's query language — filter by tags, name, custom fields, reference ID, state, schedule, or date ranges. Use it when Get Videos is too broad and you need a precisely targeted slice of the library.

  • Enter the Brightcove search query in the Search Query field. This is required. Examples include +tags:featured (videos tagged "featured"), +name:tutorial (videos whose name contains "tutorial"), and updated_at:[2024-01-01..2024-12-31] (videos updated within a date range). Operators (+, -, :) follow Brightcove's CMS search syntax.
  • Select the field used to sort results from the Sort Field menu. The default is -updated_at (newest first). Available options include sort by update time, creation time, name (alphabetical), and total plays.

For the complete Brightcove search syntax including supported operators and field names, see the CMS API video search reference.

Get Playlists

This endpoint lists every playlist in the account, including both manual playlists (a fixed list of video IDs) and smart playlists (driven by a saved search). The response includes the playlist metadata — name, description, type, reference ID, and the underlying search query for smart playlists.

  • This endpoint requires no additional configuration. It returns one record per playlist, paginated automatically at 100 per page.

Get Videos in Playlist

This endpoint returns every video that belongs to a specific playlist — resolving smart-playlist queries on the server side so you get the same list of videos that the Brightcove player would render.

  • Enter the Brightcove playlist ID in the Playlist ID field. This is required. Playlist IDs can be obtained from the Get Playlists endpoint.

Get Folders

This endpoint lists every folder in the account. Folders are the Studio-level organizational containers used to group video assets (separate from playlists, which are playback-focused). Use this endpoint to mirror your Studio folder structure into a downstream system.

  • This endpoint requires no additional configuration. It returns one record per folder.

Get Videos in Folder

This endpoint returns all videos organized under a specific folder. Use it when downstream consumers need to be aware of Studio folder placement — for example, when separate teams own different folders of content.

  • Enter the Brightcove folder ID in the Folder ID field. This is required. Folder IDs can be obtained from the Get Folders endpoint.

Get Labels

This endpoint lists every label defined for the account. Labels are hierarchical tags used in Studio for content organization and for driving smart-playlist queries. Use this endpoint to sync the label taxonomy into a downstream system.

  • This endpoint requires no additional configuration. It returns the full label taxonomy as an array of strings.

Get Custom Fields

This endpoint lists every custom metadata field defined for the account, including the internal name, display name, data type (string, enum), required flag, and the allowed values for enumerated fields. Use it to drive schema generation downstream or to validate transform mappings.

  • This endpoint requires no additional configuration. The path to data is set to $.custom_fields[*] so each custom field becomes its own record.

Get Video Renditions

This endpoint returns every transcoded rendition for a video, along with the encoding details — codec, container, bitrate, frame size, audio configuration, and storage location. Use it for QA reporting on transcode quality or to audit which renditions exist for a given title.

  • Enter the Brightcove video ID in the Video ID field. This is required.

Get Digital Masters

This endpoint returns information about the digital master — the original, high-quality source asset that Brightcove uses to generate playback renditions. Use it for archival reporting or to verify which titles have a retained master.

  • Enter the Brightcove video ID in the Video ID field. This is required.

Digital master retention is an account-level setting in Brightcove. If your account is not configured to retain masters, this endpoint returns a 404 for videos that have no archived source.

Get Analytics Report

This endpoint queries the Brightcove Analytics API for engagement and delivery metrics across one or more dimensions — video, player, country, device type, OS, browser, date, or social platform. Use it to power viewership dashboards, content performance reporting, or audience segmentation.

  • Select one or more dimensions to group the report by from the Dimensions field. Multiple values are comma-separated (for example, video,country). The default is video. Available dimensions include Video, Player, Country, Device Type, Device OS, Browser Type, Date, Date + Hour, Region, City, Source Type, Search Terms, and Social Platform.
  • Enter the report start date in the From Date field, in yyyy-MM-dd format. The default is {'{now-30}'} (30 days ago).
  • Enter the report end date in the To Date field, in yyyy-MM-dd format. The default is {'{now}'} (today).
  • Enter the metrics to return in the Fields field as a comma-separated list (for example, video_view,video_impression,play_rate,engagement_score). The default includes the four most commonly used metrics. For the complete metric catalog, see the Brightcove Analytics fields reference.

Brightcove Analytics data has a 24-hour processing latency — metrics for the current day will not be fully accurate until the next day. For real-time live stream metrics, use the Get Live Analytics endpoint instead.

Get Video Engagement

This endpoint returns the 100-point engagement curve for a specific video — showing what percentage of viewers were still watching at each 1% point of playback. Use it to identify drop-off points, optimize content length, or compare engagement across titles.

  • Enter the Brightcove video ID in the Video ID field. This is required.
  • Enter the engagement window start date in the From Date field (yyyy-MM-dd format). The default is {'{now-30}'}.
  • Enter the engagement window end date in the To Date field (yyyy-MM-dd format). The default is {'{now}'}.

Get Live Analytics

This endpoint returns near-real-time analytics for live streams — concurrent viewers, plays, impressions, and play rate — filtered to videos tagged live. Use it to monitor a live event in flight or to back near-real-time dashboards.

  • Enter the live analytics window start date in the From Date field (yyyy-MM-dd format). The default is {'{now-7}'} (7 days ago) for live monitoring.
  • Enter the live analytics window end date in the To Date field (yyyy-MM-dd format). The default is {'{now}'}.

This endpoint relies on videos being tagged live in the Brightcove CMS. If your live workflow uses a different tag convention, configure the source manually and adjust the where clause in the API URL accordingly.

Get Players

This endpoint lists every Brightcove player configured on the account, including configuration metadata, attached plugins, branding settings, and publish status. Use it to inventory your player fleet or to audit which players are in production versus draft.

  • This endpoint requires no additional configuration. The path to data is set to $.items[*] so each player becomes its own record.

Get Player Configuration

This endpoint returns the detailed configuration of a specific player — every plugin, style rule, layout property, and analytics setting. Use it to back up player configurations, drive change detection, or audit security-relevant settings (for example, autoplay policies).

  • Enter the Brightcove player ID in the Player ID field. The default is default, which returns the account's default player. For a custom player, enter its UUID (obtainable from the Get Players endpoint).

Get Ingest Jobs

This endpoint lists the Dynamic Ingest jobs for a specific video, showing the transcoding state (received, processing, finished, failed), progress percentage, submitted profile, and any error details. Use it to monitor ingest pipelines or to surface failures for operations teams.

  • Enter the Brightcove video ID in the Video ID field. This is required. Dynamic Ingest jobs are scoped to a specific video.

Get Live Jobs

This endpoint lists every Brightcove Live job on the account, including the current state, RTMP and SRT ingest endpoints, CDN playback URLs, and the underlying job configuration. Use it for live event reporting or to power operational dashboards.

  • Optionally filter the result set by job state in the Job State Filter field. Leave it blank to retrieve every job, or set it to one of processing, standby, disconnected, cancelled, finished, or failed.

The Brightcove Live API uses a separate X-API-KEY header for authentication (passed through the credential's Client ID value). This is handled automatically by the connector.

Get Live Job Details

This endpoint returns the detailed configuration and runtime state of a specific Brightcove Live job — including stream health metrics, manifest URLs, and per-output CDN endpoints. Use it for deep monitoring of a live event in progress.

  • Enter the Brightcove Live job ID in the Live Job ID field. This is required. Live job IDs can be obtained from the Get Live Jobs endpoint.

Once the selected endpoint template has been configured, click the Test button to the right of the endpoint selection menu to retrieve a sample of the data that will be fetched. Sample data will be displayed in the Endpoint Test Result panel on the right, allowing you to verify that the source is configured correctly before saving.

Manual configuration

Brightcove data sources can also be manually configured to ingest data from any valid Brightcove API endpoint — CMS, Dynamic Ingest, Player Management, Live, or Analytics — including endpoints not covered by the pre-built templates or chained custom queries. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, endpoint URL, date/time and lookup macros, path to data, metadata, and request headers.

Brightcove API hosts vary by product:

  • CMS API: https://cms.api.brightcove.com/v1/accounts/{account_id}/...
  • Analytics API: https://analytics.api.brightcove.com/v1/data?...
  • Player Management API: https://players.api.brightcove.com/v2/accounts/{account_id}/...
  • Dynamic Ingest API: https://ingest.api.brightcove.com/v1/accounts/{account_id}/...
  • Live API: https://api.bcovlive.io/v1/...

The credential's Account ID is substituted into the URL with the macro {data_credential["brightcove_api.account_id"]}. Use the date format yyyy-MM-dd'T'HH:mm:ss'Z' for CMS updated_at queries and yyyy-MM-dd for Analytics date ranges. Common Path to Data values are $[*] for CMS list endpoints, $ for get-single endpoints, $.items[*] for Analytics and Player Management, and $.custom_fields[*] for custom fields. The OAuth Authorization: Bearer ... header is added automatically from the configured credential — you do not need to add it manually.

Once all of the relevant settings have been configured, click the Create button in the upper right corner of the screen to save and create the new Brightcove data source. Nexla will now begin ingesting data from the configured endpoint and will organize any data that it finds into one or more Nexsets.

Use as a destination

Click the + icon on the Nexset that will be sent to the Brightcove destination, and select the Send to Destination option from the menu. Select the Brightcove connector from the list of available destination connectors, then select the credential that will be used to connect to the Brightcove account, and click Next; or, create a new Brightcove credential for use in this flow.

Endpoint templates

Nexla provides pre-built templates that can be used to rapidly configure destinations to send data to common Brightcove endpoints. Select the endpoint to which data will be sent from the Endpoint pulldown menu. Then, click on the template in the list below to expand it, and follow the instructions to configure additional endpoint settings.

Create Video

This endpoint creates a new video object in the Brightcove CMS with the supplied metadata — title, description, tags, custom fields, schedule, and reference ID. The newly created video is a metadata-only shell; pair it with the Ingest Video destination to upload the source file and trigger transcoding.

  • Each record in the upstream Nexset is sent as the JSON body of POST /videos. The Brightcove CMS API requires only the name field at minimum; common optional fields include description, long_description, tags (array of strings), reference_id, state (ACTIVE or INACTIVE), and custom_fields (object).
  • Use the Nexla transform layer to shape upstream attributes into the field names expected by the Brightcove CMS API.

The response contains the assigned Brightcove id, which is required for the subsequent Ingest Video call. Enable the response webhook to capture the new video ID downstream. For the complete field reference, see the CMS API Create Video docs.

Update Video

This endpoint updates an existing video's metadata in the Brightcove CMS. Use it to sync title, description, tags, custom fields, scheduled publish dates, or state changes from a downstream system of record back into Brightcove.

  • Enter the Brightcove video ID to update in the Video ID field. This is required. The video must already exist in the account.
  • The body of each PATCH call is the upstream record (as JSON). Include only the fields that should be changed; omitted fields are left untouched. To clear a field, send it explicitly as null.

The Brightcove CMS Update Video endpoint uses HTTP PATCH semantics — partial updates only. For a description of every settable field, see the CMS API Update Video docs.

Ingest Video

This endpoint triggers a Brightcove Dynamic Ingest job — Brightcove fetches the source file from the URL you supply and transcodes it into the renditions defined by the ingest profile. Use it after Create Video to upload source media into a freshly created video shell, or to replace the source of an existing video.

  • Enter the Brightcove video ID to ingest into in the Video ID field. This is required. Create the video first via the Create Video endpoint, then chain in the assigned ID.
  • The body of each POST call is the upstream record (as JSON). At minimum, include a master.url field with the fully qualified, publicly reachable URL of the source video file. Common optional fields include profile (the ingest profile name), callbacks (a list of webhook URLs Brightcove should hit when the job finishes), and capture-images (boolean).

Dynamic Ingest runs asynchronously — the API call returns immediately with a job ID, but transcoding completes in the background. Use the Get Ingest Jobs source endpoint to monitor progress, or register a callback URL in the request body. For full payload reference, see the Dynamic Ingest API docs.

Create Playlist

This endpoint creates a new playlist in the Brightcove CMS — either a manual playlist (a fixed ordered list of video IDs) or a smart playlist (driven by a saved search query that resolves at playback time).

  • Each record is sent as the JSON body of POST /playlists. Required fields are name (the playlist name) and type (one of the supported playlist types — for manual playlists, use EXPLICIT; for smart playlists, use one of ACTIVATED_OLDEST_TO_NEWEST, ACTIVATED_NEWEST_TO_OLDEST, ALPHABETICAL, PLAYS_TOTAL, PLAYS_TRAILING_WEEK, START_DATE_OLDEST_TO_NEWEST, or START_DATE_NEWEST_TO_OLDEST).
  • For manual playlists, include a video_ids array with the ordered list of Brightcove video IDs. For smart playlists, include a search string with the Brightcove search query (for example, +tags:featured).

For the full playlist type catalog and field reference, see the CMS API Create Playlist docs.

Add Video to Folder

This endpoint assigns an existing video to a Studio folder for organizational purposes. A video can belong to only one folder at a time — assigning it to a new folder moves it from any previous folder. Use it to drive folder placement from an external system of record.

  • Enter the destination Brightcove folder ID in the Folder ID field. This is required. Folder IDs can be obtained from the Get Folders source endpoint.
  • Enter the Brightcove video ID to assign in the Video ID field. This is required.

The Brightcove PUT call to add a video to a folder takes no request body — Brightcove infers the operation from the path parameters. The Nexset record is still required to drive the per-record substitution of Folder ID and Video ID.

Manual configuration

Brightcove destinations can also be manually configured to send data to any valid Brightcove API endpoint that accepts a JSON body — CMS, Dynamic Ingest, Player Management, or Live. Select the Advanced tab at the top of the configuration screen, and follow the instructions in Connect to Any API to configure the API method, data format, endpoint URL, request headers, attribute exclusions, record batching, and response webhooks.

Brightcove write endpoints use POST (create videos, playlists, ingest jobs), PATCH (partial video updates), PUT (custom fields, folder assignment), or DELETE, and uniformly accept JSON bodies. API hosts vary by product — for example, https://cms.api.brightcove.com/v1/accounts/{account_id}/... (CMS), https://ingest.api.brightcove.com/v1/accounts/{account_id}/videos/{video_id}/ingest-requests (Dynamic Ingest), and https://players.api.brightcove.com/v2/accounts/{account_id}/... (Player Management). For update/upsert operations, include the ID of the object to be updated at the end of the URL. The OAuth Authorization: Bearer ... header is added automatically from the configured credential. Enable the response webhook to capture newly assigned Brightcove video IDs after a Create Video call so they can feed the downstream Ingest Video step.

Save & activate

Once all endpoint settings have been configured, click the Done button in the upper right corner of the screen to save and create the destination. To send the data to Brightcove, open the destination resource menu, and select Activate.

The Nexset data will not be sent to Brightcove until the destination is activated. Destinations can be activated immediately or at a later time, providing full control over data movement.