RivermarkRivermark
Guides

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:

Post to carousel
{
  "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.

On this page