Brightcove Redundant Groups API

Operations for creating redundant groups of live jobs for failover in case one stream fails

Operations 11

POST /redundantgroups Create Redundant Group #
GET /redundantgroups Get Redundant Groups #
POST /redundantgroups/{redundant_group_id}/jobs Add Jobs to Redundant Group #
DELETE /redundantgroups/{redundant_group_id}/jobs/{job_id} Remove a Job from Redundant Group #
GET /redundantgroups/{redundant_group_id} Get Redundant Group Status #
DELETE /redundantgroups/{redundant_group_id} Delete a redundant group #
PUT /redundantgroups/{redundant_group_id}/switch Force Redundant Stream Failover #
PUT /redundantgroups/{redundant_group_id}/activate Activates all SEP Jobs in the Group #
PUT /redundantgroups/{redundant_group_id}/deactivate Deactivates all SEP Jobs in the Group #
POST /redundantgroups/{redundant_group_id}/cuepoint Insert cuepoint for redundant group #
POST /redundantgroups/{redundant_group_id}/playback-token Create playback token for a redundant group #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/brightcove-redundant-groups-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

brightcove-redundant-groups-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Live API Reference Redundant Groups API
  description: 'Reference for the Brightcove Live API, used to create and manage live streaming events.


    For additional in-depth guides to features of the API, see the **[Support Site](/live-api/index.html)**.


    **Base URL**: https://api.bcovlive.io/v1'
  version: 1.0.0
servers:
- url: https://api.bcovlive.io/v1
  variables: {}
tags:
- name: Redundant Groups
  description: Operations for creating redundant groups of live jobs for failover in case one stream fails
paths:
  /redundantgroups:
    post:
      tags:
      - Redundant Groups
      summary: Create Redundant Group
      description: Creates a redundant group of live jobs to provide failover in case one stream fails
      operationId: CreateRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      requestBody:
        description: Create a redundant group of multiple Live jobs
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateRedundantGroup'
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateRedundantGroupResponse'
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
    get:
      tags:
      - Redundant Groups
      summary: Get Redundant Groups
      description: Get redundant groups for the account
      operationId: GetRedundantGroups
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/start_token'
      - $ref: '#/components/parameters/sort'
      - $ref: '#/components/parameters/sort_dir'
      - $ref: '#/components/parameters/user_id'
      - $ref: '#/components/parameters/account_id'
      - $ref: '#/components/parameters/RedundantGroupState'
      - $ref: '#/components/parameters/page_size'
      - name: created_at
        in: query
        description: Filter results by Unix time of group creation (in milliseconds)
        required: false
        schema:
          type: integer
      - name: updated_at
        in: query
        description: Filter results by Unix time of group last updated (in milliseconds)
        required: false
        schema:
          type: integer
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetRedundantGroupResponse'
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/jobs:
    post:
      tags:
      - Redundant Groups
      summary: Add Jobs to Redundant Group
      description: Add Jobs to Redundant Group
      operationId: AddJobsRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      requestBody:
        description: Create a redundant group of multiple Live jobs
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddJobsRedundantGroupRequest'
        required: true
      responses:
        '200':
          description: A success response will just contain the group id
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/jobs/{job_id}:
    delete:
      tags:
      - Redundant Groups
      summary: Remove a Job from Redundant Group
      description: Remove the specified Jobs from a Redundant Group; normally the operation will not remove the job that is currently `on_air`, but adding the `force=true` query parameter will remove it
      operationId: RemoveJobRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      - $ref: '#/components/parameters/JobId'
      - $ref: '#/components/parameters/force'
      responses:
        '204':
          description: 204 NO_CONTENT
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}:
    get:
      tags:
      - Redundant Groups
      summary: Get Redundant Group Status
      description: Get the current status of a redundant group
      operationId: GetStatusRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetStatusRedundantGroupResponse'
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
    delete:
      tags:
      - Redundant Groups
      summary: Delete a redundant group
      description: Deletes a redundant group and ends the redundant stream. Note that alternatively you can put the stream in standby mode by removing all jobs from it.
      operationId: DeleteRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      - $ref: '#/components/parameters/force'
      responses:
        '204':
          description: 204 NO_CONTENT
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/switch:
    put:
      tags:
      - Redundant Groups
      summary: Force Redundant Stream Failover
      description: Force failover from the `on_air` stream to a specified secondary stream; note that you can also accomplish this by stopping the encoder for the `on_air` stream.
      operationId: ForceRedundantStreamFailover
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      - $ref: '#/components/parameters/force'
      requestBody:
        description: Force failover to a secondary job
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ForceRedundantStreamFailover'
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the redundant group
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/activate:
    put:
      tags:
      - Redundant Groups
      summary: Activates all SEP Jobs in the Group
      description: Activates all SEP Jobs in the Redundant Group.
      operationId: ActivateRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the redundant group
                  jobs:
                    type: array
                    description: Array of objects.
                    items:
                      type: object
                      description: Object containing either an id for a job that was activated or an error message for jobs that failed to activate.
                      properties:
                        id:
                          type: string
                          description: ID of an SEP job that was activated
                        error:
                          type: string
                          description: Error message for a job that failed to activate
                example:
                  id: 3d68bcec490849bea6970be4646f5fd9
                  jobs:
                  - id: f19fdcfaf84d4b55b603c177cbb72f8f
                  - error: Error activating Job
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/deactivate:
    put:
      tags:
      - Redundant Groups
      summary: Deactivates all SEP Jobs in the Group
      description: Deactivates all SEP Jobs in the Redundant Group.
      operationId: DeactivateRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                    description: ID of the redundant group
                  jobs:
                    type: array
                    description: Array of objects.
                    items:
                      type: object
                      description: Object containing either an id for a job that was activated or an error message for jobs that failed to deactivate.
                      properties:
                        id:
                          type: string
                          description: ID of an SEP job that was deactivated
                        error:
                          type: string
                          description: Error message for a job that failed to deactivate
                example:
                  id: 3d68bcec490849bea6970be4646f5fd9
                  jobs:
                  - id: f19fdcfaf84d4b55b603c177cbb72f8f
                  - error: Error deactivating Job
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/cuepoint:
    post:
      tags:
      - Redundant Groups
      summary: Insert cuepoint for redundant group
      description: Manually inserts a cuepoint for a redundant Live job.
      operationId: InsertCuepointRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      requestBody:
        description: Inserts a manual Cue-Out with a duration to the Live ingest point for the redundant group.
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ManualAdCuePointInsertionbody'
        required: true
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RedundantGroupCuePointInsertionResponse'
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
  /redundantgroups/{redundant_group_id}/playback-token:
    post:
      tags:
      - Redundant Groups
      summary: Create playback token for a redundant group
      description: 'Redundant groups created via the Live module in Studio (or by specifying `videocloud.video` when creating a redundant group directly through the API) automatically create a special Video Cloud video that, when used in a Brightcove player, makes use of the `ad_config_id` property to select the specific source desired (i.e. SSAI source, DVR/no DVR, BYOCDN). Redundant groups which have SSAI enabled must always provide an `ad_config_id` in the player, even if the source desired is non-SSAI (this prevents an end user from omitting the `ad_config_id` and receiving a clear stream). **This applies only to live Video Cloud videos created via the Live module or Live API - manually created Video Cloud remote assets have no such restriction.**


        The request returns a generated `playback_token`.


        This behavior is handled automatically when you publish a live video from the Live module publishing screen, but may be useful if you have a custom workflow'
      operationId: CreatePlaybackTokenRedundantGroup
      parameters:
      - $ref: '#/components/parameters/ContentType'
      - $ref: '#/components/parameters/XAPIKEY'
      - $ref: '#/components/parameters/redundant_group_id'
      responses:
        '200':
          description: '200'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/RedundantGroupCreatePlaybackTokenResponse'
        '400':
          description: 'BAD_REQUEST: Invalid input value - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '401':
          description: 'UNAUTHORIZED: Unauthorized - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '404':
          description: 'RESOURCE_NOT_FOUND: The api could not find the resource you requested - see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
        '500':
          description: 'INTERNAL_SERVER_ERROR: see [Live API Error Messages](/live-api/references/live-api-error-messages.html) for more details'
      deprecated: false
      security: []
      x-operation-settings:
        CollectParameters: false
        AllowDynamicQueryParameters: false
        AllowDynamicFormParameters: false
        IsMultiContentStreaming: false
components:
  schemas:
    CreateLiveJobRequestBody.addCdns:
      properties:
        label:
          description: A label to identify the CDN.
          type: string
        prepend:
          description: CDN hostname to be prepended to addresses
          type: string
        protocol:
          description: Protocol to use for the stream delivery
          enum:
          - http
          - https
          type: string
        token_auth:
          $ref: '#/components/schemas/CreateLiveJobRequestBody.addCdns.tokenAuth'
        vendor:
          description: CDN vendor such as akamai
          type: string
      required:
      - label
      - prepend
      - protocol
      title: Create_Live_Job_Request_Body.add_cdns
      type: object
    CreateLiveJobRequestBody.addCdns.tokenAuth.media:
      description: Object containing tokenization properties
      properties:
        end_time:
          description: The time to end token auth, epoch time in seconds
          format: int32
          type: integer
        start_time:
          default: now
          description: The time to apply token auth - "now" or epoch time in seconds
          format: int32
          oneOf:
          - type: integer
          - enum:
            - now
            type: string
        ttl:
          description: The time to live in seconds - either `end_time` or `ttl` is required
          format: int32
          type: integer
      title: Create_Live_Job_Request_Body.add_cdns.token_auth.media
      type: object
    ForceRedundantStreamFailover:
      title: Force failover request body
      type: object
      properties:
        mode:
          type: string
          enum:
          - auto
          - manual
          default: auto
          description: 'The mode for failover. `manual` means automatic failover will **not** occur. To resume automatic failover, you must submit another request with `mode: auto`'
        on_air:
          type: string
          description: The id of the job that should be used for streaming. To force failover, this must be a different job than the one that is currently `on_air`
    ManualAdCuePointInsertionbody:
      properties:
        ad_server_data:
          description: a set of any variables (key/value pairs) that should be passed to the adServer
          type: object
        cancel:
          description: When `true`, cuepoint specified by `cuepoint_id` will be canceled. If an ad break is already in progress, a crash-out will occur, returning to the main content.
          type: boolean
          default: false
        cuepoint_id:
          description: ID to use when creating cuepoint. If `cancel` is `true`, then this field is required and is the ID of cuepoint to cancel.
          type: string
        duration:
          description: An integer value to indicate the length of the ad break in seconds
          type: number
        timecode:
          description: "'When to insert the cuepoint in SMPTE HH:MM:SS:FF format from the stream start (FF = frames); if omitted, the cuepoint will be inserted immediately. Note:\n  1. If you use the timecode property, the job only only stores the most recent request for insertion\n  2. If you use the timecode property, the encoder must be sending SMPTE-formatted (HH:MM:SS:FF) timecode stored in the `tc` property via `OnFI`\n  3. Software encoders such as Wirecast and OBS do not support the sending timecode via `OnFI` packets in the RTMP stream\n  4. Elemental hardware encoders do support the sending timecode via `OnFI` packets in the RTMP stream'"
          type: string
          example:
            ad_server_data:
              subject: wildlife
            duration: 30
            timecode: 09:23:18:05
      required:
      - duration
      title: Manual_Ad_Cue_Point_InsertionBody
      type: object
    CreateLiveJobRequestBody.videocloud:
      properties:
        account_id:
          description: The Video Cloud Account ID the video for the remote asset live stream should be created in. Only required if the account ID is not the default configured in your Live account. If set, you must also set the `videocloud.credentials` property.
          type: number
        credentials:
          description: Credentials to use for Video Cloud authentication. Only required if you set `videocloud.account_id`.
          type: string
        live_to_vod:
          type: boolean
          default: false
          description: If set to `true`, a full VOD version of the live event will be created after the event is complete. Requires that there is a Video Cloud account associated with the Live account, *and* the `videocloud.video` property is set.
        mode:
          type: string
          description: Expedite clip publishing by leveraging existing live renditions and segment boundaries
          enum:
          - instant
        video:
          $ref: '#/components/schemas/CreateLiveJobRequestBody.videocloud.video'
      required:
      - video
      title: Create_Live_Job_Request_Body.videocloud
      type: object
      description: Video Cloud customers have the option to create a video to use for the live stream. The `videocloud` object in the `job` settings is used for this purpose. If you want to define VOD clips to send to Video Cloud, use the `videocloud` object in `outputs`.
    RedundantGroupCuePointInsertionResponse:
      properties:
        id:
          type: string
          description: The redundant group id
        jobs:
          type: array
          items:
            type: object
            description: Job details
            properties:
              id:
                type: string
                description: The Live job id
              error:
                type: string
                description: An error message returned if the cuepoint insertion failed
              cue_point:
                type: object
                description: The cuepoint details
                properties:
                  accuracy:
                    type: string
                    description: The accuracy of the timing
                    enum:
                    - segment
                    - frame
                  duration:
                    type: integer
                    description: The duration of the break in seconds
                  id:
                    type: string
                    description: Cuepoint id
      example:
        id: 3ae7fa89943f4a96aa273fbbf175d527
        jobs:
        - id: 3fbbf175d5273ae7fa89943f4a96aa27
          cue_point:
            accuracy: segment
            duration: 30
            id: 3f273ae4a96aa273ae4a96aafa8994
        - id: 7fa89943f3fbbf175d5273ae4a96aa27
          error: error message
        - id: 3ae4a96aa277fa89943f3fbbf175d527
          cue_point:
            accuracy: segment
            duration: 30
            id: 3f273ae4a96aa273ae4a96aafa8994
      title: Redundant Group Cuepoint Insertion Response
      type: object
    RedundantGroupCreatePlaybackTokenResponse:
      properties:
        playback_token:
          type: string
          description: The playback token
          example: live.6cGp7MDhWW4wXw0FKlTM_kruqzN4QO2eklBJhrXt8tBnSCKyuwwBReptfp91K5bBUdfRALYlnu-QXhb9xGEJYR9UCkmGdfwqJqKhx7gngzIg43L9ByQmEMUc"
      title: Redundant Group Playback Token Response
      type: object
    CreateLiveJobRequestBody.addCdns.tokenAuth:
      description: 'Token authentication details


        **Note: If you don''t have your secret key for Akamai, or need to have a new one, contact your Customer Success Manager or Brightcove Support.**'
      properties:
        auth_type:
          description: Token authentication type - currently, the only supported value is `Akamai2.0`
          type: string
        key:
          description: Your Akamai token auth password
          type: string
        media:
          $ref: '#/components/schemas/CreateLiveJobRequestBody.addCdns.tokenAuth.media'
        token_name:
          description: Your Akamai token token name
          type: string
      required:
      - auth_type
      - key
      - token_name
      title: Create_Live_Job_Request_Body.add_cdns.token_auth
      type: object
    CreateRedundantGroupResponse:
      properties:
        id:
          type: string
          description: ID of the redundant group
        processing_regions:
          type: array
          description: The processing regions defined for the group
        storage_regions:
          type: array
          description: The storage regions defined for the group
        jobs:
          type: array
          description: Array of live job ids included in the group
        state:
          type: string
          description: The current state of the group
          enum:
          - CANCELLED
          - CANCELLING
          - DELETING
          - DISCONNECTED
          - FAILED
          - FINISHED
          - FINISHING
          - PROCESSING
          - STANDBY
          - WAITING
        live_dvr_sliding_window_duration:
          type: integer
          description: Duration of live DVR sliding window in seconds
        label:
          type: string
          description: The label for the group
        status:
          type: object
          description: The properties will be processing regions and the value their current status
        ad_insertion:
          type: boolean
          description: Whether this group is SSAI enabled
        outputs:
          type: object
          description: Outputs for the group
      example:
        id: 91c268a6ec5240d79a6004f4ccf0dc6f
        account_id: a95ac581551b4478b27910e5675db1f8
        user_id: c2691d4d039040be96c190a949d754a7
        processing_regions:
        - region: us-west-2
          probability: 1
        storage_regions:
        - us-west-2
        - us-east-1
        jobs: []
        state: standby
        label: Test Redundant Group
        live_dvr_sliding_window_duration: 86400
        status:
          us-west-2: null
        outputs:
          playback_url: https://bcovlive-a.akamaihd.net/r91c268a6ec5240d79a6004f4ccf0dc6f/us-west-2/NA/playlist.m3u8
          playback_url_dvr: https://bcovlive-a.akamaihd.net/r91c268a6ec5240d79a6004f4ccf0dc6f/us-west-2/NA/playlist_dvr.m3u8
    CreateRedundantGroup:
      title: Create Redundant Group Request Body
      properties:
        ad_insertion:
          type: boolean
          description: Set to true if this stream should be SSAI enabled
        add_cdns:
          description: Array of additional CDN providers

# --- truncated at 32 KB (54 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/brightcove/refs/heads/main/openapi/brightcove-redundant-groups-api-openapi.yml