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.

4 min readSume
All posts

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.

Where each copy lives, per the Amazon and Sume docs read 2026-10-01.
CopyWhat the docs sayWhat to do
Amazon mediaUrlNon-permanentCall getMedia when you need it
Sume finished videoDownloaded from the content URLDownload once and store it
Sume video framesDurable media.sume.com image artifactsKeep the artifact URLs you need
Sume trim resultRead from the job envelopeRead 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

All Developers posts

Written by Sume