---
title: "Upload a logo, artwork or recipient portrait"
method: POST
path: "/artwork"
tags: ["Artwork"]
---

# Upload a logo, artwork or recipient portrait

`POST /artwork`

## Request

- Base URL: `https://gtmswag.com/api/v1`
- URL: `https://gtmswag.com/api/v1/artwork`
- Auth: HTTP bearer

Send the raw file bytes (not multipart, not base64) with its `Content-Type` and an `X-Artwork-Filename` whose extension matches; up to 5 MiB. Add `X-Artwork-Purpose: portrait` for a recipient photo (PNG, JPEG or WebP, at least 256 × 256). Use the returned `asset_` ID in `customization.logoAssetId`, `recipient.assetIds` or `recipient.photo`. Artwork has its own rate limits (600 writes a minute) and daily allowances.

## Headers

- `X-Artwork-Filename` string, required
- `X-Artwork-Purpose` 'artwork' | 'portrait'

## Response `201`

Success: `{"data": Asset}`.

- AssetResponse: The success body: `{"data": Asset}`.
  - `data` Asset, required: An uploaded private file; use its `asset_` ID in campaigns and gifts.
    - `id` string, required
    - `mime` string, required
    - `bytes` integer, required

## Other responses

- `400`: Bad request: `INVALID_REQUEST`, `PORTRAIT_RESOLUTION`. Each example says when.
- `401`: Not authenticated: `AUTH_REQUIRED`. no credentials, or an OAuth token on a route that only takes workspace keys; the key is malformed, unknown or revoked.
- `403`: Forbidden: `DEMO_LIMITED`. Each example says when.
- `413`: Request too large: `INVALID_REQUEST`. Each example says when.
- `415`: Unsupported media type: `ARTWORK_TYPE`, `ARTWORK_SIGNATURE`, `PORTRAIT_IMAGE_REQUIRED`. Each example says when.
- `429`: Too many requests: `ARTWORK_QUOTA`, `RATE_LIMIT`. Each example says when.
- `503`: Unavailable: `ARTWORK_NOT_READY`. Each example says when.
- `default`: Any other refusal or failure, such as 403 CSRF (a cross-origin `Origin` header), 403 HTTPS_REQUIRED or 500 INTERNAL_ERROR, with what to do next.

---

[API](https://skmtc.dev/gtmswag/apis/gtm-swag-api.md) · [All operations](https://skmtc.dev/gtmswag/apis/gtm-swag-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gtmswag/apis/gtm-swag-api/revisions/9ff86fa99afe?raw)
