Personalized Book Cover API: One Cover Per Child

A personalized book cover API renders the cover with the child's name already part of the artwork. You build the cover once, mark the name dynamic, and every order gets its own file. No designer opens anything.

The distinction that matters is between a name set into the cover and a name stamped on it. Stamped looks like a mail merge, and parents can tell. Set into the art, with the book's own display face, its own colour, sitting where the illustrator left room for it, looks like the book was made for that child. Both cost exactly one render. Only one of them sells.

Design the space for the name then fill itDesign the space for the name, then fill it

Dimensions are fixed at design time, which for print is what you want. A book has a trim size, and every cover in the run has to be that size or the printer rejects the batch.

Build for the finished sheet, not the trim:

  • Trim plus bleed. If you print 8.5 by 8.5 inches with a 0.125 inch bleed, the design is 8.75 by 8.75 inches, which at 300 DPI is 2625 by 2625 pixels.
  • Renders cap at 4096 by 4096, so a square picture book at 300 DPI has room to spare. A large landscape trim is worth checking against that ceiling before you commit.
  • The illustration is baked in. Only the layers you mark dynamic can change, so the artwork can't be swapped by a bad order payload.

The name layer sits inside that art with the space already reserved for it. That's a decision the illustrator makes once, and then it holds for every order.

Names are wildly variable and the type has to absorb itNames are wildly variable, and the type has to absorb it

"Bo" and "Alessandra" are going into the same slot on the same cover.

Auto-resize handles the length. Set minFontSize and maxFontSize and the type shrinks until it fits, so nothing overflows the space and nothing clips:

{
  "key": "child_name",
  "type": "text",
  "dynamic": true,
  "properties": {
    "fontFamily": "Baloo Bhaijaan 2",
    "autoResize": true,
    "minFontSize": 64,
    "maxFontSize": 180,
    "textAlignment": "center",
    "color": "#FFF3E0",
    "strokeWidth": 6,
    "strokeColor": "#7B3F00",
    "textShadow": "0 6px 12px rgba(0,0,0,0.25)"
  }
}

The stroke and shadow are what stop a long name turning to mush when it lands over a busy part of the illustration. Set the minimum where the name still reads from across a room, because that's how a picture book gets chosen.

Two failure modes that only show up at volumeTwo failure modes that only show up at volume

Both are quiet, which is what makes them expensive.

A font that silently falls back. Reference a fontFamily the renderer doesn't recognise and it doesn't error. It substitutes a default and returns a perfectly valid cover in the wrong typeface. Upload your display face first, then check the x-dma-warnings response header on your first few renders: it names any font that fell back. Do that once, before the run, rather than discovering it on a pallet of printed books.

A glyph the font doesn't carry. A display face drawn for a children's book often covers basic Latin and stops there. "Zoë", "José" and "Łukasz" then render as missing boxes. Normalizing input helps, and the Unicode normalization forms are the reference for doing it properly, but normalization can't invent a glyph that isn't in the file. Test your ten most awkward names against the actual font before you sell the product.

Where this stops the inside of the bookWhere this stops: the inside of the book

Worth being direct, because it's the thing that decides whether we fit your product at all.

A render returns a single-page PDF. A personalized picture book usually carries the child's name on several interior spreads too, and there's no book-block output here. Your options are:

ApproachRendersWorks when
Cover only, generic interior1 per bookThe cover carries the personalization
Cover plus personalized spreads1 per pageYou assemble the PDF yourself downstream
Full personalized book blockNot supportedUse a document engine instead

The middle row is a real workflow: render page by page, then merge with whatever your print pipeline already uses. A 24-page book is 24 renders. If the whole product is a fully personalized book block and you'd rather not run an assembly step, APITemplate's document engine is the better tool and we'd say so.

What a personalized book cover api costsWhat a personalized book cover API costs

One render per cover, and a reprint costs another.

As of September 2026, Basic is $14.99 for 1,000 renders, which works out at $0.015 each. Pro is $24.99 for 5,000, or $0.005. Either way the personalization is a rounding error next to printing and postage, which is the point: it stops being a cost question and becomes a margin question about reprints.

Volume a monthRenders (cover only)Plan
60 books60100 free renders a month, no card
900 books900Basic, $14.99
900 books, cover plus 4 spreads4,500Pro, $24.99

Track the reprint rate rather than the render price. A 3% reprint rate on 900 books is 27 extra renders, which is nothing, but the same 3% on print and postage is the number that decides whether personalization pays. The pricing page has the plan detail and render quota covers the counters.

Getting startedGetting started

Take one cover, rebuild it as a design at trim plus bleed, and mark only the name dynamic. Render your twenty most awkward customer names against it and look at the warnings header before anything reaches a printer. The text component page has the resize and stroke controls live, dynamic fields covers what to open up, and the API docs have working calls to drop into an order handler.

If you're producing certificates or invitations from the same setup, certificate generation and per-guest invitations cover the same mechanics on different jobs.

Frequently asked questions

Build the cover once as a design with the illustration baked in and the child's name marked dynamic, then render one cover per order. The finished file comes back in the response, so a print job can pull it at the moment the order is placed.

Yes. Upload the font family once and reference it as fontFamily on the name layer. Do check the render warnings header on your first few covers, because an unrecognised font name falls back to a default silently rather than failing.

Only if your font carries those glyphs. A display face built for a picture book often covers basic Latin and nothing else, so Zoë or José can render as a missing box. Test the awkward names before a print run, not after.

One page at a time. A render returns a single-page PDF, so a 24-page book is 24 renders plus your own assembly step. There's no book-block output, and if that's the core of your product a document engine fits better.

One render per cover. As of September 2026 that's $0.015 per render on Basic and $0.005 on Pro, so the cover is a rounding error against print and postage. Reprints cost another render, which is the number worth tracking.

We use cookies to run the site and, with your consent, for analytics and marketing. See our Cookie Policy. You can change this any time from “Cookie settings” in the footer.