---
title: "Upload a creative image, up to 10 MB in jpeg, png, webp or gif."
method: POST
path: "/v1/agent/creatives/upload"
---

# Upload a creative image, up to 10 MB in jpeg, png, webp or gif.

`POST /v1/agent/creatives/upload`

## Request

- Base URL: `https://api.nowyourlink.com`
- URL: `https://api.nowyourlink.com/v1/agent/creatives/upload`
- Auth: OAuth 2 (authorization code, authorization URL `https://api.nowyourlink.com/oauth/authorize`, token URL `https://api.nowyourlink.com/oauth/token`, scopes: `creatives:write`)

Upload a creative image, up to 10 MB in jpeg, png, webp or gif.

## Response `200`

Draft asset created (or reused by content hash).

- object
  - `ad_id` string, required
  - `asset_id` string, required
  - `deduped` boolean, required

## Other responses

- `400`: No file field, an empty file, or a malformed image (ads.bad-multipart, ads.missing-file, ads.malformed-image).
- `401`: The bearer token is missing, expired or invalid. A missing Authorization header returns an empty body.
- `403`: This grant lacks the scope the operation requires.
- `405`: The path exists but does not accept this method (agent.method-not-allowed).
- `413`: Upload exceeds 10 MB (ads.upload-too-large).
- `415`: Only image/png, image/jpeg, image/webp, image/gif are accepted (ads.unsupported-mime).
- `429`: This grant's 120-per-minute token bucket is empty. Wait Retry-After seconds before retrying.

---

[API](https://skmtc.dev/nowyourlink/apis/nowyourlink-public-spotlight-api.md) · [All operations](https://skmtc.dev/nowyourlink/apis/nowyourlink-public-spotlight-api/llms.txt) · [OpenAPI document](https://skmtc.dev/nowyourlink/apis/nowyourlink-public-spotlight-api/revisions/cd8408529b48?raw)
