---
title: "Upload or register newsletter asset"
method: POST
path: "/newsletter-assets"
tags: ["Newsletters"]
---

# Upload or register newsletter asset

`POST /newsletter-assets`

## Request

- Base URL: `https://shipmail.to/api/v1`
- URL: `https://shipmail.to/api/v1/newsletter-assets`
- Auth: one of:
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://shipmail.to/api/auth/oauth2/authorize`, token URL `https://shipmail.to/api/auth/oauth2/token`)

## Query parameters

- `filename` string

## Headers

- `X-Shipmail-Filename` string
- `Idempotency-Key` string
- `X-Shipmail-Organization` string

## Request body

- object
  - `url` string, uri, required
  - `filename` string
  - `thumbnail_url` string, uri

## Response `201`

Uploaded asset.

- NewsletterAsset
  - `object` 'newsletter_asset', required
  - `id` string, required
  - `kind` 'image' | 'video', required
  - `filename` string, required
  - `content_type` string, required
  - `byte_size` integer, required
  - `checksum_sha256` string, required
  - `url` string, uri, required
  - `thumbnail_url` string, uri, nullable
  - `thumbnail_content_type` string, nullable
  - `thumbnail_byte_size` integer, nullable
  - `duration_seconds` number, nullable
  - `width` integer, nullable
  - `height` integer, nullable
  - `created_at` string, date-time, required
  - `image_url` string, uri, nullable, required
  - `video_url` string, uri, nullable, required

## Other responses

- `401`: Authentication failed.
- `403`: Plan quota exceeded.
- `413`: Validation failed.
- `422`: Validation failed.
- `429`: Rate limit exceeded.

---

[API](https://skmtc.dev/shipmail/apis/shipmail-api.md) · [All operations](https://skmtc.dev/shipmail/apis/shipmail-api/llms.txt) · [OpenAPI document](https://skmtc.dev/shipmail/apis/shipmail-api/revisions/2c23e59d7e30?raw)
