Skip to main content

Brightcove Data Source

Brightcove is an enterprise video cloud platform for hosting, managing, publishing, and analyzing video content. Follow the instructions below to create a new data flow that ingests data from a Brightcove source in Nexla.
brightcove_api.png

Brightcove

Create a New Data Flow

  1. 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.

  2. 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.

  3. In Nexla, Brightcove data sources can be created using pre-built endpoint templates, which expedite source setup for common Brightcove endpoints. Each template is designed specifically for the corresponding Brightcove endpoint, making source configuration easy and efficient.
    • To configure this source using a template, follow the instructions in Configure Using a Template.

    Brightcove sources can also be configured manually, allowing you to ingest data from Brightcove endpoints not included in the pre-built templates or apply further customizations to exactly suit your needs.
    • To configure this source manually, follow the instructions in Configure Manually.

Configure Using a Template

Nexla provides pre-built templates that can be used to rapidly configure data sources to ingest data from common Brightcove endpoints. Each template is designed specifically for the corresponding Brightcove endpoint, making data source setup easy and efficient.

Endpoint Settings

  • 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.

Endpoint Testing

Once the selected endpoint template has been configured, Nexla can retrieve a sample of the data that will be fetched according to the current settings. This allows users to verify that the source is configured correctly before saving.

  • To test the current endpoint configuration, click the Test button to the right of the endpoint selection menu. Sample data will be fetched & displayed in the Endpoint Test Result panel on the right.

  • If the sample data is not as expected, review the selected endpoint and associated settings, and make any necessary adjustments. Then, click the Test button again, and check the sample data to ensure that the correct information is displayed.

Configure Manually

Brightcove data sources can be manually configured to ingest data from any valid Brightcove API endpoint — CMS, Dynamic Ingest, Player Management, Live, Analytics, or any other product surface in the Brightcove API catalog. Manual configuration provides maximum flexibility for endpoints not covered by the pre-built templates or when you need to chain custom queries.

With manual configuration, you can also build more advanced Brightcove sources — for example, sources that paginate against a custom CMS search query, or sources that combine multiple Analytics dimensions with custom filters.

API Method

  1. To manually configure this source, select the Advanced tab at the top of the configuration screen.

  2. Select the API method that will be used for calls to the Brightcove API from the Method pulldown menu. Brightcove read endpoints are almost always GET:

    • GET: For retrieving data from the API (most CMS, Analytics, and Player Management endpoints)
    • POST: For Analytics queries that send a JSON body, or for triggering operations (rare on the read side)

API Endpoint URL

  1. Enter the URL of the Brightcove API endpoint from which this source will fetch data in the Set API URL field. Include the protocol (https://) and the full path. 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 value is substituted into the URL using the macro {data_credential["brightcove_api.account_id"]}.

Ensure the API endpoint URL is correct and accessible with the scopes configured on your API Authentication client. You can test the endpoint using the Test button after configuring the URL.

Date/Time Macros (API URL)

Optional

Optionally, the API URL can be customized using macros—all macros added to the API URL will be converted into values when Nexla executes the API call. Macros are dynamic placeholders that allow you to create flexible API endpoints that adapt to different time periods, which is essential for incremental Brightcove ingestion (CMS updated_at queries and Analytics date ranges).

Macros are particularly useful for Brightcove Analytics report endpoints and for CMS search queries that filter by updated_at, created_at, or schedule.starts_at ranges.

  1. To add a macro, type { at the appropriate position in the API URL (within the Set API URL field), and select the desired macro from the dropdown list.

    • {now} – The current datetime
    • {now-1} – The datetime one time unit before the current datetime
    • {now+1} – The datetime one time unit after the current datetime
    • custom – Datetime macros can reference any number of time units before or after the current datetime—for example, enter (now-4) to indicate the datetime four time units before the current datetime
  2. Select the format that will be applied to datetime macros from the Date Format for Date/Time Macro pulldown menu. For the Brightcove CMS API, use yyyy-MM-dd'T'HH:mm:ss'Z' (ISO 8601 with UTC indicator). For the Analytics API, use yyyy-MM-dd.

  3. Select the datetime unit that will be used to perform mathematical operations in the included macro(s) from the Time Unit for Operations pulldown menu—for example, when Day is selected, {now-1} will be converted to the datetime one day before the current datetime.

Lookup-Based Macros (API URL)

Optional

Column values from existing lookups can also be included as macros in the API URL. Lookup-based macros allow you to reference data from previously configured data sources or lookups — useful for building chained Brightcove flows (for example, iterating over the Video IDs from Get Videos to retrieve renditions for each one).

Lookup-based macros are useful for building per-video, per-playlist, or per-folder source flows that fan out from a parent listing.

  1. To include a lookup column value macro, select the relevant lookup from the Add Lookups to Supported Macros pulldown menu.

  2. Type { at the appropriate position in the API URL, and select the lookup column-based macro from the dropdown list. Lookup-based macros are automatically populated into the macro list when a lookup is selected in the Add Lookups to Supported Macros pulldown menu.

Path to Data

Optional

If only a subset of the data returned by the API endpoint is needed, you can designate the part(s) of the response that should be included in the Nexset(s) produced from this source by specifying the path to the relevant data within the response. Brightcove response shapes vary by product — CMS endpoints typically return a top-level array, while Analytics and Player Management return an object with the records nested under a key.

For example, the Brightcove Analytics API returns the data array under $.items[*], while the Player Management API returns players under $.items[*], and most CMS list endpoints return a top-level array (path $[*]).

Path to Data is essential when API responses have nested structures. Without specifying the correct path, Nexla might not be able to properly parse and organize your data into usable records.

  • To specify which data should be treated as relevant in responses from this source, enter the path to the relevant data in the Set Path to Data in Response field.

    • For responses in JSON format (every Brightcove API endpoint), enter the JSON path that points to the object or array that should be treated as relevant data. JSON paths use dot notation (e.g., $.items[*] for Analytics and Player Management, $[*] for most CMS list endpoints).
    Path to Data Examples:
    • CMS list endpoints (videos, playlists, folders): $[*]
    • CMS get-single endpoints (video by ID, digital master): $
    • Analytics report endpoints: $.items[*]
    • Player Management list endpoints: $.items[*]
    • Custom fields: $.custom_fields[*]
Autogenerate Path Suggestions

Nexla can also autogenerate data path suggestions based on the response from the API endpoint. These suggested paths can be used as-is or modified to exactly suit your needs.

  • To use this feature, click the Test button next to the Set API URL field to fetch a sample response from the API endpoint. Suggested data paths generated based on the content & format of the response will be displayed in the Suggestions box below the Set Path to Data in Response field.

  • Click on a suggestion to automatically populate the Set Path to Data in Response field with the corresponding path. The populated path can be modified directly within the field if further customization is needed.

    PathSuggestions.png

Metadata

If metadata is included in the response but is located outside of the defined path to relevant data, you can configure Nexla to include this data as common metadata in each record. This is useful for Brightcove Analytics responses, where the top-level summary object contains report-wide totals that may be valuable on each row.

For example, an Analytics report response contains the records under $.items[*] and a summary object with totals at the root. Setting the metadata path to $.summary attaches those totals to each generated record.

Metadata paths are particularly useful for preserving Brightcove report context like summary totals, request timestamps, or pagination metadata that applies to all records in the response.

  • To specify the location of metadata that should be included with each record, enter the path to the relevant metadata in the Path to Metadata in Response field.

    • For responses in JSON format, enter the JSON path to the object or array that contains the metadata.

Request Headers

Optional
  • If Nexla should include any additional request headers in API calls to this source, enter the headers & corresponding values as comma-separated pairs in the Request Headers field (e.g., header1:value1,header2:value2). For Brightcove, the most common manual headers are Content-Type: application/json for POST queries, and Accept: application/json for endpoints that return XML by default.

    You do not need to include any headers already present in the credentials. The OAuth Authorization: Bearer ... header is added automatically by Nexla based on the configured Brightcove credential.

Endpoint Testing

After configuring all settings for the selected endpoint, Nexla can retrieve a sample of the data that will be fetched according to the current configuration. This allows users to verify that the source is configured correctly before saving.

  • To test the current endpoint configuration, click the Test button to the right of the endpoint selection menu. Sample data will be fetched & displayed in the Endpoint Test Result panel on the right.

  • If the sample data is not as expected, review the selected endpoint and associated settings, and make any necessary adjustments. Then, click the Test button again, and check the sample data to ensure that the correct information is displayed.

Save & Activate the Source

  1. Once all of the relevant steps in the above sections have been completed, 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.