Skip to content

Wistia

Wistia is a video hosting and analytics platform for businesses.

Bruin supports Wistia as a source for Ingestr assets, and you can use it to ingest account, media, channel, webinar, and stats data from Wistia into your data platform.

To set up a Wistia connection, add a configuration entry to .bruin.yml and reference it from an asset file. You need an access_token to authenticate with Wistia.

Configuration

Step 1: Add a connection to the .bruin.yml file

yaml
connections:
  wistia:
    - name: "my_wistia"
      access_token: "your-wistia-api-token"
  • access_token (required): Wistia API token. ingestr also accepts api_key or token as aliases for this credential.
  • api_version (optional): Value sent as the X-Wistia-API-Version header. ingestr defaults to 2026-03.
  • base_url (optional): Override for the Wistia API base URL. This is mostly useful for tests; ingestr defaults to https://api.wistia.com/modern.

Step 2: Create an asset file for data ingestion

Create an asset configuration file (e.g., wistia.asset.yml) inside the assets folder:

yaml
name: public.wistia_medias
type: ingestr

parameters:
  source_connection: my_wistia
  source_table: 'medias'

  destination: postgres
  • source_connection: The name of the Wistia connection defined in .bruin.yml.
  • source_table: The Wistia table to ingest. See available tables below.
  • destination: The destination connection name.

Step 3: Run asset to ingest data

bash
bruin run assets/wistia.asset.yml

Running this command ingests data from Wistia into your destination.

Available Source Tables

Data API Tables

TablePKInc KeyInc StrategyDetails
account--replaceCurrent account summary.
token--replaceCurrent token summary.
allowed_domains--replaceAllowed domains.
folders--replaceFolders.
folder:<folder_id>--replaceA single folder.
folder_sharings:<folder_id>--replaceSharing records for a folder.
subfolders:<folder_id>--replaceSubfolders for a folder.
medias--replaceMedia records.
media:<media_id>--replaceA single media record.
captions--replaceCaptions across the account.
captions:<media_id>--replaceCaptions filtered by media.
media_captions:<media_id>--replaceCaptions for a media.
media_localizations:<media_id>--replaceLocalizations for a media.
media_customizations:<media_id>--replaceCustomizations for a media.
media_stats:<media_id>--replaceAggregated media stats from the Data API.
channels--replaceChannels.
channel:<channel_id>--replaceA single channel.
channel_episodes--replaceChannel episodes.
channel_episodes_by_channel:<channel_id>--replaceEpisodes in a channel.
tags--replaceTags.
webinars--replaceWebinars.
webinar:<webinar_id>--replaceA single webinar.

Stats API Tables

TablePKInc KeyInc StrategyDetails
stats_account--replaceCurrent account stats.
stats_account_by_date-datemergeAccount stats by date.
stats_events-received_atmergeEvent records.
stats_events:<media_id>-received_atmergeEvent records filtered by media.
stats_events_by_visitor:<visitor_key>-received_atmergeEvent records filtered by visitor.
stats_visitors--replaceVisitors.
stats_event:<event_key>--replaceA single event.
stats_visitor:<visitor_key>--replaceA single visitor.
stats_media:<media_id>--replaceStats for a media.
stats_media_by_date:<media_id>-datemergeStats for a media by date.
stats_media_engagement:<media_id>--replaceEngagement stats for a media.
stats_project:<project_id>--replaceStats for a project/folder.

Date-filtered Stats API tables use Bruin's run interval as Wistia start_date and end_date query parameters. Bruin passes --interval-start and --interval-end to ingestr when a run interval is defined.