Multi-format resizing
One design, every format — with intelligent reflow, not cropping.
Sooner or later every design needs to exist in more than one format: the Instagram story version, the LinkedIn version, the square feed version, the flyer for print. Rivermark adapts designs across formats with real reflow — type scales, layouts rebalance, crops are chosen deliberately — because it understands the design's content, not just its pixels.
One call, many formats
Declare each target as a named output:
const create = (body: object) =>
fetch("https://api.rivermark.ai/design", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.RIVERMARK_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify(body),
}).then((r) => r.json());
const set = await create({
task: [
"Adapt the provided design to the requested formats.",
"Reflow and recompose as each format needs — do not just crop or letterbox.",
"Keep the design's content, hierarchy, and brand.",
].join(" "),
references: [{ type: "design", id: sourceDesign.designId }],
creativity: 1,
output: [
{ id: "instagram_story", size: "1080x1920" },
{ id: "instagram_post", size: "1080x1350" },
{ id: "linkedin", size: "1200x627" },
{ id: "flyer", size: "1240x1754", format: "pdf" },
],
});The response maps each declared ID to its rendered frame — route each one wherever it belongs (one per network, the PDF to print).
When a resize is more than a resize
Going from a 4:5 post to a 9:16 story isn't a scale operation — the composition has to be rebuilt around a different canvas. Rivermark treats this as design work: headlines restack, secondary content may reflow into panels, imagery gets re-cropped with intent. Simple resizes are cheap; significant reflows take a few adjustment rounds — see Costs.
For exotic aspect ratios or format conversions (post → carousel, poster → web banner), describe the transformation in the task instead of relying on sizes alone:
{
"task": "Turn the provided LinkedIn post into a 5-slide LinkedIn carousel. Slide 1 is the hook; slides 2-4 each carry one idea from the post; slide 5 is the call to action.",
"references": [{ "type": "design", "id": "rmd_cj4hbqz2w0003mz6x7p9q2xe" }],
"output": [
{ "id": "slide_1", "size": "1080x1350" },
{ "id": "slide_2", "size": "1080x1350" },
{ "id": "slide_3", "size": "1080x1350" },
{ "id": "slide_4", "size": "1080x1350" },
{ "id": "slide_5", "size": "1080x1350" }
]
}From any source, not just Rivermark
The design being adapted doesn't have to come from Rivermark. A user's existing flyer (PDF/image upload), a Canva design, or a webpage can be the reference — "recreate this as an Instagram story set" — and the adaptation logic is identical.
Pattern: the "everywhere" button
Once a design is approved — by a user in your app, or by someone on your creative team — offer a one-tap Send it everywhere: fire the multi-format request with the formats that matter to you, stream progress, then tweak any variant on its own with a conversational edit. Per-variant tweaks fork only that variant, leaving the rest of the set untouched.

