Changelog

What shipped, when.

The things that shipped, newest first. Subscribe to the RSS feed to get notified.

Recent updates

  1. new
    Delete a template from the API

    DELETE /v1/templates/:id removes a template and every asset it uploaded to storage. Agents that create templates programmatically can now clean up after themselves instead of leaving files behind forever. Past renders survive with their URLs intact; the response reports what was detached. The MCP delete_template tool now cleans up storage the same way.

  2. new
    Idempotency-Key on every render endpoint

    Send an Idempotency-Key on POST /v1/render, /v1/renders or /v1/renders/batch and a retry replays the first response byte for byte — no second render, no second credit, no duplicate job. Concurrent retries get 409 idempotency_in_progress; the same key with a different body gets 422 idempotency_key_reuse. Keys are workspace-scoped and expire after 24 hours.

  3. fixed
    Fixed: multi-select jumping to the wrong spot after a drag

    Moving several selected elements together could render them in the wrong place right after the drag, even though the correct position was saved — a sync bug between the canvas and the saved layout, not a data-loss issue. Reworked how the canvas resyncs elements while a multi-selection is active.

  4. new
    New docs site

    Full multi-section documentation replacing the single-page reference. API reference, guides, and integrations all live here now.

  5. improved
    Render API authorization hardening

    Staging keys can no longer touch production templates. Cleaner 403 responses on cross-workspace access.

  6. new
    Batch renders

    POST /v1/renders/batch accepts up to 100 renders per request and returns per-item job ids.

  7. new
    Business plan

    API access, higher credit allocation, and webhook delivery moved to a dedicated Business tier.

  8. improved
    PDF vector fidelity

    Pure vector export path replaces the raster fallback. Smaller, sharper, print-safe files.