# Creative assets upload

Upload creative assets to the system and create atomic creatives. This endpoint processes the uploaded 
files and metadata, validates them, and stores them permanently in the system. Once uploaded, the 
creatives can be associated with campaigns and strategies.

Endpoint: POST /creative_upload
Version: 3.0.1807
Security: Auth0

## Request fields (multipart/form-data):

  - `filename` (array, required)
    Creative asset files to upload

  - `metadata` (object, required)
    JSON string containing metadata for all files

  - `metadata.advertiser_id` (integer, required)
    Example: 123

  - `metadata.is_https` (boolean)

  - `metadata.submissions` (array, required)
    This array should contain an entry for each file being uploaded (or the files inside the outer zip for HTML5 creatives), with details about the creative.

  - `metadata.submissions.name` (string, required)
    The name of the creative file. For HTML5 creatives, this should match the filename inside the zip (e.g., "interactive_ad.zip"). For zip files containing images, this should match the filename inside the zip. For non-HTML5 creatives, this should match the uploaded filename.
    Example: one.jpg

  - `metadata.submissions.click_through_url` (string, required)
    Example: https://example.com/clickThrough

  - `metadata.submissions.landing_page` (string)
    Example: https://example.com/landing

  - `metadata.submissions.concept_id` (integer, required)
    Example: 123

  - `metadata.submissions.backup` (string)
    Optional backup image filename for HTML5 creatives. Used as a fallback when HTML5 content cannot be displayed.
    Example: backup_image.jpg

  - `metadata.submissions.creative_name` (string)
    Optional display name for the atomic creative. When provided, this overrides the default name (i.e. the filename).
    Example: My Custom Creative Name

## Response 200 fields (application/json):

  - `data` (array)

  - `data.id` (integer)

  - `data.version` (integer)

  - `data.entity_type` (string)

  - `data.advertiser_id` (integer)

  - `data.concept_id` (integer)

  - `data.concept_name` (string)

  - `data.name` (string)

  - `data.width` (integer)

  - `data.height` (integer)

  - `data.file_type` (string)

  - `data.is_https` (boolean)

  - `data.is_multi_creative` (boolean)

  - `data.has_sound` (boolean)

  - `data.rich_media` (boolean)

  - `data.status` (boolean)

  - `data.built` (boolean)

  - `data.build_date` (string)

  - `data.built_by_user_id` (integer)

  - `data.created_on` (string)

  - `data.last_modified` (string)

  - `data.external_identifier` (string)

  - `data.tpas_ad_tag_name` (string)

  - `data.updated_on` (string)

  - `data.click_url` (string)

  - `data.ad_format` (string)

  - `data.expansion_trigger` (string)

  - `data.expansion_direction` (string)

  - `data.ad_server_type` (string)

  - `data.t1as` (boolean)

  - `data.edited_tag` (string)

  - `data.click_through_url` (string)

  - `data.approval_status` (string)

  - `data.media_type` (string)

  - `data.is_mraid` (boolean)

  - `data.sizmek_tag_status` (string)

  - `data.sizmek_creative_status` (string)

  - `meta` (object)

  - `meta.status` (string)

  - `meta.warnings` (array)
    Non-blocking advisory issues on an otherwise-successful HTML5 upload (e.g. a  tag, localStorage/sessionStorage usage, external references in the root HTML, invalid filename characters, an oversized asset inside an inner package zip, or a case-only backup mismatch). The creative is still created.

  - `meta.warnings.code` (string)

  - `meta.warnings.sub_code` (string)

  - `meta.warnings.message` (string)

  - `meta.warnings.field` (string)

  - `meta.count` (integer)

  - `meta.total_count` (integer)

  - `meta.offset` (integer)

  - `meta.next_page` (string)

## Response 400 fields (application/json):

  - `data` (object)

  - `meta` (object)

  - `meta.status` (string)

  - `errors` (array)

  - `errors.code` (string)

  - `errors.sub_code` (string)
    Stable per-problem identifier (e.g. html5-noscript-tag) refining the generic code. Present on HTML5 upload/preview validation errors.

  - `errors.message` (string)

  - `errors.field` (string)

