Skip to main content
POST
Create an image carousel — a single image or up to 10 — in one request. Send each image as an uploaded file, as a public URL that ShortKit downloads, or a mix of both. ShortKit stores and checks every image and returns the carousel ready, published if your organization auto-publishes. A single image is a one-image carousel. This endpoint requires a secret key.
Prefer this endpoint for new integrations. Upload plus finalize remains available for carousels whose files total more than 30 MB, and Import for batches of up to 100 items.

Request format

Send multipart/form-data with:
  • a metadata part — a JSON string containing the fields below
  • one file part per uploaded image, named however you like; each image’s file field refers to it by that name
If every image is a sourceUrl, you can send the same fields as application/json instead.

Request body

string
required
Display title. Max 200 characters.
object[]
required
The carousel’s images, in display order. Min 1, max 10. Each object has exactly one of file or sourceUrl:
  • file (string) — Name of a file part in this request.
  • sourceUrl (string) — Public http or https URL. ShortKit downloads it with a 15-second limit and at most 3 redirects. Private and internal addresses are refused.
  • altText (string) — Accessibility text for the image. Max 500 characters.
string
Optional description. Max 2000 characters.
string[]
Tags for categorization and filtering.
object
Key-value pairs passed through to the feed. Values must be strings.
string
Editorial section (e.g., "Sports", "News"). Max 200 characters.
string
Content author name. Max 200 characters.
string
Your own identifier for this carousel. Max 255 characters. Repeating a request with the same externalId returns the existing carousel with 200 and replayed: true instead of creating a second one, so a timed-out request is safe to retry.
string
Receives a content.imported callback once the carousel is created. See Callback events.
boolean
When true, playback is gated behind a short-lived signed URL. When omitted, defaults to your organization’s default. See Protected Content.

Image requirements

  • JPEG, PNG, WebP, or GIF. The format is read from the image itself, not from the declared content type.
  • At most 10 MB and 40 megapixels per image.
  • The whole request body can be at most 30 MB. For larger carousels, send some images as sourceUrl.

Response

Returns 201 with the created carousel. A repeated externalId returns 200 with the existing carousel and replayed: true.
string
"ready" for a newly created carousel.
string
"published" when your organization auto-publishes, otherwise "unpublished".
object[]
The stored images in display order: id, position, imageUrl, and altText.
boolean
true when the response is an existing carousel returned for a repeated externalId.

Errors

The request is all-or-nothing. If any image can’t be used, nothing is created and the response lists every failed image.