---
title: "Upload Partner Banners"
method: POST
path: "/api/upload/partner-banners"
---

# Upload Partner Banners

`POST /api/upload/partner-banners`

## Request

- Base URL: `https://app.socialconstructco.com` (the document declares no server; this is the origin it was published from)
- URL: `https://app.socialconstructco.com/api/upload/partner-banners`
- Auth: none declared

Import partner creatives (e.g. a Viator quicklink JSON {offers, banners}) into
banner_creatives with contour='partner'. An optional media.zip is unpacked into
MEDIA_DIR so the images are served from /media. With preview=1 nothing is written -
it returns what would be created/updated plus per-banner attribution (pid/mcid
intact). Reuses partner_import.upsert_banners (the same core as the CLI) and never
binds creatives to sites/zones - that is done later with a flow in /network.

## Query parameters

- `preview` string

## Request body `multipart/form-data`

- BodyUploadPartnerBannersApiUploadPartnerBannersPost
  - `file` string, binary, required
  - `media_zip` string, binary

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/socialconstructco/apis/atlas.md) - [All operations](https://skmtc.dev/socialconstructco/apis/atlas/llms.txt) - [OpenAPI document](https://skmtc.dev/socialconstructco/apis/atlas/revisions/18fba0671fc9?raw)
