canonical: https://jentic.com/apis/dynapictures.com/dynapictures

# DynaPictures API

Jentic publishes the only available OpenAPI specification for the DynaPictures API, keeping it validated and agent-ready. DynaPictures generates personalised images and PDFs from reusable templates, exposing a REST surface for managing workspaces, templates, media assets, image generation, and webhook subscriptions. It is built for marketing teams and apps that need to render hundreds of personalised banners, social cards, or certificates per minute from a single design with variable layers.

## For AI agents

Generate personalised images and PDFs from templates, manage template assets and workspaces, and subscribe to webhooks so agents can fan out variant imagery from one design.

## Scope

Does not author templates, edit layouts, or host external design files - use for generating images and PDFs from existing DynaPictures templates only.

## Capabilities

- Generate a single personalised image by sending variable values to a template UID
- Batch-generate images or PDFs in one call to /batch for high-volume rendering
- List, retrieve, create, update, and delete workspaces that scope templates and assets
- Manage media assets within a workspace: upload, list, retrieve, update, and delete
- Subscribe and unsubscribe webhooks so downstream systems get notified when renders finish
- Delete generated images by path to clean up hosted output
- Browse template metadata before rendering to surface variables to end users

## Use cases

### Personalised Marketing Banner Generation

A marketing tool sends recipient name, headline, and product image to a DynaPictures template UID and gets back a personalised banner ready to drop into an email or ad. Because the template stores layout and the API only ships variables per render, a single design backs thousands of unique outputs.

Example prompt: POST to `/designs/{uid}` with variables {name: 'Jane', headline: 'Welcome', logo: 'https://...'} and store the returned image URL on the campaign send

### Bulk PDF Certificate Generation

An events platform calls /batch with a list of attendees, each with their own name and badge URL, and DynaPictures returns a batch of personalised PDF certificates. The batch endpoint plus webhook subscription means the platform doesn't have to long-poll - it triggers the render and waits for a callback.

Example prompt: POST a list of recipients to /batch with the certificate template UID, then handle the webhook callback to attach each PDF to an attendee record

### Per-Client Workspace Isolation

An agency creates a separate workspace per client, uploads each client's logo and brand assets into that workspace, and scopes templates so a render only references that client's media. The /workspaces and `/media/{workspaceId}/assets` endpoints make this isolation programmatic so onboarding a new client is a script, not a manual setup.

Example prompt: POST /workspaces with name 'Acme Co', then POST `/media/{workspaceId}/assets` to upload the Acme logo, and reference the asset in subsequent `/designs/{uid}` renders

### Agent-Driven Image Personalisation via Jentic

An AI agent producing variant social cards for a campaign asks Jentic for 'generate a personalised image from a DynaPictures template'. Jentic returns the `/designs/{uid}` operation, the agent supplies the per-recipient variable map, and DynaPictures renders the image - the agent never sees the bearer token directly.

Example prompt: Use Jentic to search 'generate an image from a template', load the operation for `/designs/{uid}`, and execute it with the campaign's variable map

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/designs/{uid}` | Generate a personalised image from a template |
| POST | `/batch` | Batch-generate images or PDFs |
| GET | `/templates` | List all templates |
| GET | `/templates/{uid}` | Get a single template's metadata |
| GET | `/workspaces` | List workspaces |
| POST | `/media/{workspaceId}/assets` | Upload a media asset to a workspace |
| POST | `/hooks` | Subscribe to a webhook |
| DELETE | `/images/{imagePath}` | Delete a generated image |

## Key resources

- **Designs** — Single-image generation from a template UID with variable values
- **Batch** — Bulk image or PDF generation across many variable sets in one call
- **Templates** — List templates and fetch a single template's metadata and variable definitions
- **Workspaces** — List, create, update, and delete workspaces that scope templates and media
- **Media Assets** — Upload, list, retrieve, update, and delete media assets within a workspace
- **Webhooks** — Subscribe to and unsubscribe from event callbacks for render completion
- **Generated Images** — Delete a previously generated image by its image path

## Why Jentic

- **Setup:** Wiring DynaPictures by hand means setting up its bearer auth, tracking template and workspace uids by hand, and coding the media upload and delete calls yourself. Through Jentic you install once, import DynaPictures from the API Directory, store the token once, and your agent calls it.
- **Permission scoping:** DynaPictures puts the template uid in the URL path (`/templates/{uid}`, `/designs/{uid}`), so a rule can pin your agent to one template: it can generate images and PDFs from that template and nothing else. You choose the operations it may call, so destructive ones like deleting a generated image or uploading workspace assets are not included unless you add them.
- **Credential handling:** Your DynaPictures token is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'generate an image from a template' or 'render a batch of PDFs', and Jentic returns the matching DynaPictures operation with its input schema, including the per-template variable shape, so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Dynamic Mockups API** — Product mockup rendering with smart-object templates rather than variable banner templates
- **Dynosend API** — Send the generated DynaPictures image inside a Dynosend transactional or campaign email
- **E-goi Marketing API** — Multi-channel campaign delivery using DynaPictures-rendered creatives across email, SMS, and push

## FAQ

### Why is there no official OpenAPI spec for the DynaPictures API?

DynaPictures does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call the DynaPictures API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the DynaPictures API use?

The API uses bearer token authentication - send your DynaPictures API key as 'Authorization: Bearer <token>'. Through Jentic, the bearer token is held in the vault and the agent receives a scoped execution token instead, so the raw key never enters agent context.

### Can I generate a PDF with the DynaPictures API?

Yes. POST /batch supports both image and PDF outputs depending on the template configuration - the batch payload specifies the output format per template UID. The single-image endpoint `/designs/{uid}` returns image renders only.

### What are the rate limits for the DynaPictures API?

The OpenAPI spec does not declare a numeric rate limit. DynaPictures applies plan-based monthly render quotas and per-account concurrency caps - for high-volume runs use /batch and subscribe a webhook via /hooks rather than polling.

### How do I generate a personalised image through Jentic?

Run pip install jentic, search for 'generate an image from a DynaPictures template', load the operation for POST `/designs/{uid}`, then execute it with the template UID and a variable map matching the template's named layers. The response contains the rendered image URL.

### Can I subscribe to webhook events for render completion?

Yes. POST /hooks subscribes to webhook callbacks; DELETE /hooks unsubscribes. This is the recommended pattern for batch renders - the webhook fires once a batch finishes so callers don't have to poll for individual image URLs.

### Can I limit what my agent is allowed to do with the DynaPictures API?

Yes. Jentic One runs self-hosted, so your own rules decide which DynaPictures operations and credentials the agent may use. Because the template UID sits in the URL path (`/designs/{uid}`, `/templates/{uid}`), a rule can pin the agent to a single template so it only generates images and PDFs from that design and nothing else. You choose the operations it can call, so destructive ones like deleting a generated image with DELETE `/images/{imagePath}` or uploading assets via POST `/media/{workspaceId}/assets` stay off unless you add them.
