Warner Bros. Discovery Content Partner API

The Warner Bros. Discovery Content Partner Hub provides technical specifications and APIs for content partners to deliver media assets to WBD's supply chain. Supports Automated Content Delivery (ACD) via Aspera P2P and MovieLabs Media Manifest Core (MMC) for technical and configuration metadata delivery.

OpenAPI Specification

warner-bros-discovery-content-partner-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Warner Bros. Discovery Content Partner API
  description: >-
    The Warner Bros. Discovery Content Partner API enables content partners to
    deliver media assets and metadata to WBD's media supply chain. The API
    supports Automated Content Delivery (ACD) for high-volume media ingest using
    the MovieLabs Media Manifest Core (MMC) specification, metadata validation,
    and delivery status tracking. Partners use this API to submit content for
    distribution across Max, HBO, Warner Bros., Discovery, CNN, and other WBD brands.
  version: 1.0.0
  contact:
    name: Warner Bros. Discovery Content Partner Support
    url: https://partnerhub.warnermedia.com/
  termsOfService: https://www.wbd.com/terms-of-service
servers:
  - url: https://api.warnermediasupplychain.com
    description: WBD Media Supply Chain API
tags:
  - name: Deliveries
    description: Media content delivery management
  - name: Metadata
    description: Content metadata and manifest submission
  - name: Status
    description: Delivery and validation status tracking
  - name: Assets
    description: Media asset management
paths:
  /v1/deliveries:
    get:
      operationId: listDeliveries
      summary: List Deliveries
      description: >-
        List all media content deliveries submitted by the partner. Supports
        filtering by status, date range, and content type.
      tags:
        - Deliveries
      parameters:
        - name: status
          in: query
          required: false
          schema:
            type: string
            enum:
              - pending
              - processing
              - completed
              - failed
              - rejected
          description: Filter deliveries by status
        - name: startDate
          in: query
          required: false
          schema:
            type: string
            format: date
          description: Filter deliveries created on or after this date
        - name: endDate
          in: query
          required: false
          schema:
            type: string
            format: date
          description: Filter deliveries created before or on this date
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 50
            maximum: 200
          description: Maximum number of results to return
        - name: offset
          in: query
          required: false
          schema:
            type: integer
            default: 0
          description: Pagination offset
      responses:
        '200':
          description: List of deliveries returned successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryListResponse'
        '401':
          description: Unauthorized - invalid or missing credentials
        '403':
          description: Forbidden - insufficient permissions
    post:
      operationId: createDelivery
      summary: Create Delivery
      description: >-
        Submit a new content delivery to Warner Bros. Discovery's media supply
        chain. The delivery contains references to media assets and a MovieLabs
        MMC manifest with metadata.
      tags:
        - Deliveries
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateDeliveryRequest'
      responses:
        '201':
          description: Delivery created successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryResponse'
        '400':
          description: Invalid request payload
        '401':
          description: Unauthorized
  /v1/deliveries/{deliveryId}:
    get:
      operationId: getDelivery
      summary: Get Delivery
      description: Retrieve the details and current status of a specific delivery.
      tags:
        - Deliveries
      parameters:
        - name: deliveryId
          in: path
          required: true
          schema:
            type: string
          description: Unique delivery identifier
      responses:
        '200':
          description: Delivery details returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryResponse'
        '401':
          description: Unauthorized
        '404':
          description: Delivery not found
  /v1/deliveries/{deliveryId}/status:
    get:
      operationId: getDeliveryStatus
      summary: Get Delivery Status
      description: >-
        Retrieve the processing status of a delivery including validation
        results, ingest progress, and any error messages.
      tags:
        - Status
      parameters:
        - name: deliveryId
          in: path
          required: true
          schema:
            type: string
          description: Unique delivery identifier
      responses:
        '200':
          description: Delivery status information
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeliveryStatusResponse'
        '401':
          description: Unauthorized
        '404':
          description: Delivery not found
  /v1/metadata:
    post:
      operationId: submitMetadata
      summary: Submit Metadata
      description: >-
        Submit content metadata using the MovieLabs Media Manifest Core (MMC)
        format. Used for Automated Content Delivery (ACD) integration.
      tags:
        - Metadata
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MetadataSubmissionRequest'
      responses:
        '202':
          description: Metadata accepted for processing
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetadataSubmissionResponse'
        '400':
          description: Invalid metadata format
        '401':
          description: Unauthorized
  /v1/metadata/validate:
    post:
      operationId: validateMetadata
      summary: Validate Metadata
      description: >-
        Validate metadata against WBD's MMC schema requirements before
        submission. Returns validation errors and warnings.
      tags:
        - Metadata
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MetadataValidationRequest'
      responses:
        '200':
          description: Validation results returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MetadataValidationResponse'
        '400':
          description: Invalid request
        '401':
          description: Unauthorized
  /v1/assets:
    get:
      operationId: listAssets
      summary: List Assets
      description: List media assets available in the partner's delivery account.
      tags:
        - Assets
      parameters:
        - name: deliveryId
          in: query
          required: false
          schema:
            type: string
          description: Filter assets by delivery ID
        - name: assetType
          in: query
          required: false
          schema:
            type: string
            enum:
              - video
              - audio
              - subtitle
              - image
              - document
          description: Filter assets by type
      responses:
        '200':
          description: List of assets returned
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetListResponse'
        '401':
          description: Unauthorized
components:
  securitySchemes:
    OAuth2:
      type: oauth2
      description: OAuth 2.0 client credentials flow for partner authentication
      flows:
        clientCredentials:
          tokenUrl: https://auth.warnermedia.com/oauth/token
          scopes:
            content:read: Read content delivery information
            content:write: Submit content deliveries
            metadata:read: Read metadata submissions
            metadata:write: Submit metadata
  schemas:
    Delivery:
      type: object
      properties:
        id:
          type: string
          description: Unique delivery identifier
        status:
          type: string
          enum:
            - pending
            - processing
            - completed
            - failed
            - rejected
          description: Current delivery status
        title:
          type: string
          description: Content title for this delivery
        contentType:
          type: string
          enum:
            - feature
            - series
            - episode
            - short
            - documentary
            - promotional
          description: Type of content being delivered
        manifestPath:
          type: string
          description: Path to the MMC manifest file
        createdAt:
          type: string
          format: date-time
          description: Delivery creation timestamp
        updatedAt:
          type: string
          format: date-time
          description: Last update timestamp
        assets:
          type: array
          items:
            $ref: '#/components/schemas/Asset'
          description: List of media assets in this delivery
    DeliveryListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Delivery'
        total:
          type: integer
          description: Total number of deliveries matching the filter
        limit:
          type: integer
        offset:
          type: integer
    DeliveryResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/Delivery'
    CreateDeliveryRequest:
      type: object
      required:
        - title
        - contentType
        - manifestPath
      properties:
        title:
          type: string
          description: Content title
        contentType:
          type: string
          enum:
            - feature
            - series
            - episode
            - short
            - documentary
            - promotional
        manifestPath:
          type: string
          description: Path to the MMC manifest file in Aspera
        notes:
          type: string
          description: Optional delivery notes
    DeliveryStatus:
      type: object
      properties:
        deliveryId:
          type: string
        status:
          type: string
          enum:
            - pending
            - processing
            - completed
            - failed
            - rejected
        stage:
          type: string
          description: Current processing stage
        progress:
          type: integer
          minimum: 0
          maximum: 100
          description: Processing progress percentage
        validationResults:
          type: object
          properties:
            valid:
              type: boolean
            errors:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
                  field:
                    type: string
            warnings:
              type: array
              items:
                type: object
                properties:
                  code:
                    type: string
                  message:
                    type: string
    DeliveryStatusResponse:
      type: object
      properties:
        data:
          $ref: '#/components/schemas/DeliveryStatus'
    MetadataSubmissionRequest:
      type: object
      required:
        - manifest
      properties:
        deliveryId:
          type: string
          description: Associated delivery identifier
        manifest:
          type: object
          description: MovieLabs MMC manifest object
        languageCode:
          type: string
          description: BCP-47 language code for primary content language
    MetadataSubmissionResponse:
      type: object
      properties:
        id:
          type: string
          description: Metadata submission identifier
        status:
          type: string
          enum:
            - accepted
            - processing
        message:
          type: string
    MetadataValidationRequest:
      type: object
      required:
        - manifest
      properties:
        manifest:
          type: object
          description: MMC manifest to validate
    MetadataValidationResponse:
      type: object
      properties:
        valid:
          type: boolean
          description: Whether the metadata is valid
        errors:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              message:
                type: string
              field:
                type: string
        warnings:
          type: array
          items:
            type: object
            properties:
              code:
                type: string
              message:
                type: string
    Asset:
      type: object
      properties:
        id:
          type: string
          description: Asset identifier
        type:
          type: string
          enum:
            - video
            - audio
            - subtitle
            - image
            - document
          description: Asset type
        filename:
          type: string
          description: Asset filename
        size:
          type: integer
          description: File size in bytes
        checksum:
          type: string
          description: MD5 checksum for integrity verification
        languageCode:
          type: string
          description: BCP-47 language code if applicable
        uploadedAt:
          type: string
          format: date-time
    AssetListResponse:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/Asset'
        total:
          type: integer
security:
  - OAuth2:
      - content:read