# 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.count` (integer)

  - `meta.total_count` (integer)

  - `meta.offset` (integer)

  - `meta.next_page` (string)

## Response 400 fields (application/json):

  - `data` (object,null)

  - `meta` (object)

  - `meta.status` (string)

  - `meta.error` (string)


