# Bulk create video creatives

Create a set of video creatives (bulk upload) - V3

Endpoint: PUT /v3.0/creatives/bulk
Version: v1.0

## Request body:

  - `application/json` (unknown)
    List of creative objects to create

## Request fields (application/json):

  - `creatives` (array, required)

  - `creatives.active` (boolean)

  - `creatives.advertiser` (integer, required)
    T1 Advertiser ID

  - `creatives.name` (string, required)
    Creative name (required, max 256 chars)

  - `creatives.concept` (integer, required)
    T1 Concept ID (mandatory for creation)

  - `creatives.startTime` (integer)
    Creative start date (Unix timestamp, must be >= 0 and < year 10000)

  - `creatives.endTime` (integer)
    Creative end date (Unix timestamp, must be >= startTime)

  - `creatives.clickthroughUrl` (string)
    Clickthrough URL (required unless customVAST or customVASTUrl is set)

  - `creatives.customVAST` (string)
    VAST XML content (mutually exclusive with customVASTUrl)

  - `creatives.customVASTUrl` (string)
    URL to VAST XML content (mutually exclusive with customVAST)

  - `creatives.viewabilityTemplate` (string)
    VAST XML template for BYOT viewability (must contain **VPAID_AD_PARAMETERS.URL** macro)

  - `creatives.landingUrl` (string)
    Declared landing page. If empty, landing URL will be fetched from VAST XML.

  - `creatives.eventPixels` (array)
    Additional pixels

  - `creatives.eventPixels.typ` (string, required)
    Pixel event type (must be a valid pixel type)

  - `creatives.eventPixels.url` (string, required)
    Pixel URL

  - `creatives.vendors` (array)
    T1 Vendor IDs

  - `creatives.vastVersion` (string)
    Enum: "VAST2", "VAST3", "VAST4"

  - `creatives.disabledVariants` (array)
    Disabled variant IDs

  - `creatives.externalIdentifier` (string)
    External Identifier (requires customVAST or customVASTUrl)

  - `creatives.clockNumber` (string)
    Clock Number for Clearcast (UK freewheel broadcasters)

  - `creatives.customVASTExtensionXML` (string)
    Custom VAST Extension XML

  - `creatives.fileName` (string)
    Optional. File name including extension (e.g. my-video.mp4).
When provided, a pre-signed S3 PUT URL is returned in the response.
Mutually exclusive with customVAST and customVASTUrl.
The S3 PUT request must include headers x-amz-acl: public-read and x-amz-meta-creative: .

## Response 201:

  - `201` (unknown)
    Bulk creatives created successfully

## Response 201 fields (application/json):

  - `data` (array)

  - `data.id` (integer)
    Creative ID (used in bulk create to show which creative was created)

  - `data.details` (object)

  - `data.details.active` (boolean)

  - `data.details.advertiser` (integer)

  - `data.details.name` (string)

  - `data.details.concept` (integer)

  - `data.details.startTime` (integer)

  - `data.details.endTime` (integer)

  - `data.details.clickthroughUrl` (string)

  - `data.details.customVAST` (string)

  - `data.details.customVASTUrl` (string)

  - `data.details.viewabilityTemplate` (string)

  - `data.details.landingUrl` (string)

  - `data.details.landingUrlIsCalculated` (boolean)

  - `data.details.eventPixels` (array)

  - `data.details.eventPixels.typ` (string)

  - `data.details.eventPixels.url` (string)

  - `data.details.vendors` (array)

  - `data.details.vastVersion` (string)
    Enum: "VAST2", "VAST3", "VAST4"

  - `data.details.disabledVariants` (array)

  - `data.details.externalIdentifier` (string)

  - `data.details.customVASTExtensionXML` (string)

  - `data.details.clockNumber` (string)

  - `data.companionIds` (array)

  - `data.duration` (number)
    Duration in seconds

  - `data.isUploaded` (boolean)

  - `data.unsecureUrls` (object)
    Associates unsecured URLs (non-https) with their respective vendors

  - `data.status` (string)
    Enum: "Pending", "Processing", "Finished", "Waiting", "Storing", "Details", "Error"

  - `data.readyToServe` (boolean)
    True when creative details/variants are stable

  - `data.thumbnail` (string)

  - `data.autoVendors` (array)
    Automatically detected vendors (MM Vendor ID)

  - `data.percent` (number)
    Combined upload/conversion progress (0-100)

  - `data.isSecure` (boolean)

  - `data.isRotating` (boolean)

  - `data.isDynamic` (boolean)

  - `data.isAudio` (boolean)

  - `data.vpaidVersion` (integer)

  - `data.hasCompanions` (boolean)

  - `data.t1as` (boolean)

  - `data.updatedOn` (string)

  - `errors` (object)

  - `errors.field_error` (array)

  - `errors.field_error.error` (string)

  - `errors.field_error.index` (integer)
    Index in bulk request (for bulk operations)

  - `errors.field_error.code` (string)

  - `errors.field_error.name` (string)

  - `errors.field_error.field` (string)

  - `meta` (object)

  - `meta.status` (string)

  - `meta.count` (integer)

  - `status` (object)

  - `status.code` (string)

  - `status.message` (string)

## Response 400:

  - `400` (unknown)
    Bad request

## Response 400 fields (application/json):

  - `field_error` (array)

  - `field_error.error` (string)

  - `field_error.index` (integer)
    Index in bulk request (for bulk operations)

  - `field_error.code` (string)

  - `field_error.name` (string)

  - `field_error.field` (string)

