Amazon A+ Content API: mediaUrl is not permanent, keep your own copy
Amazon says A+ getMedia's mediaUrl is non-permanent. Re-fetch it, and keep your own copy of finished Sume clips by downloading from the content URL.

The A+ Content API's getMedia returns a mediaUrl that Amazon calls non-permanent: call getMedia again rather than caching the URL. For your side of the pipeline, download each finished Sume clip from GET /v1/videos/{jobId}/content and store it yourself, so a re-upload never depends on a link staying alive.
The Amazon note is from its create, edit and retrieve A+ media page, which the Sep 30, 2026 release notes tie to the new createMedia, getMedia and updateMedia operations; read 2026-10-01. Sume steps are from the video docs.
What does Amazon say about mediaUrl?
After you upload through createUploadDestinationForResource and call createMedia, the response includes a mediaUrl. The page says the value is non-permanent and tells you to re-retrieve the asset with getMedia rather than cache the URL indefinitely. It also lists status values such as PENDING_PROCESSING, PENDING_REVIEW and AVAILABLE.
| Copy | What the docs say | What to do |
|---|---|---|
Amazon mediaUrl | Non-permanent | Call getMedia when you need it |
| Sume finished video | Downloaded from the content URL | Download once and store it |
| Sume video frames | Durable media.sume.com image artifacts | Keep the artifact URLs you need |
| Sume trim result | Read from the job envelope | Read GET /v1/jobs/:id/result |
How do I save a Sume clip?
The video flow is: submit POST /v1/videos, poll GET /v1/videos/{jobId} until completed, then download from the content URL. Write the bytes to your own storage and record the job id beside the file.
import { writeFile } from "node:fs/promises";
const jobId = process.argv[2];
const res = await fetch("https://api.sume.com/v1/videos/" + jobId + "/content", {
headers: { Authorization: "Bearer " + process.env.SUME_API_KEY },
});
if (!res.ok) throw new Error("download failed: " + res.status);
await writeFile(jobId + ".mp4", Buffer.from(await res.arrayBuffer()));Which Sume outputs are described as durable?
Only some. The frames docs say video frames returns durable media.sume.com image artifacts. For trims, the docs say to read the result from the job envelope at GET /v1/jobs/:id/status and the result route. For generated video, the docs describe the content URL as the download step and do not promise a lifetime, so keep your own copy and do not assume.
When do I re-run getMedia?
Each time you need a fresh mediaUrl, and when you are waiting on review: poll status until AVAILABLE. A general guide to saving renders is download a generated video from the API.
Sources
Related posts
More in Developers
- Amazon A+ video descriptions per locale vs Sume caption language
A+ updateMedia upserts video descriptions by locale, one of title or descriptions per call. Sume's caption language is only a speech-to-text hint.
- Nova Reel start_async_invoke S3 output vs a Sume result URL
Nova Reel's start_async_invoke writes output.mp4 to your S3 bucket and needs IAM. A Sume job returns a result_url and durable media.sume.com links.
- Anam 99.9% uptime SLA vs Sume failed-job retry metadata and refunds
Anam states a 99.9% uptime SLA for Cara-4. Sume documents what a failed avatar job exposes, category and retryability, and refunds the reservation.
- ant apply agent file: declare the Sume server, keep the key out
In an ant apply agent file, declare the Sume server by name and URL, https://mcp.sume.com/mcp. The API key belongs in a vault, never in the committed file.
Written by Sume