canonical: https://jentic.com/apis/imejis.io/imejis

# Imejis API

The Imejis API renders a saved design to a finished image: pass a design id, override its dynamic fields, and get back a PNG, JPEG, WebP, or PDF. Renders run on the render host at render.imejis.io with a dma-api-key, either streamed as bytes or delivered as a hosted public URL or an expiring signed URL, and a bulk call renders 1 to 25 items in one request. The account side at api.imejis.io lists designs, returns a design's render config and dynamic fields, queues background exports with an optional webhookUrl, and reports render usage over time.

## For AI agents

Render an Imejis design to an image with dynamic text and values, in bulk or one at a time, and read designs, render configs, export jobs, and usage.

## Scope

Does not edit photos, remove backgrounds, or author new designs through this REST surface. Use for rendering saved Imejis designs to images and tracking exports only.

## Capabilities

- Render a design to PNG, JPEG, WebP, or PDF by design id, overriding dynamic fields with query params or a JSON body
- Choose stream, hosted, or signed delivery to get image bytes, a public URL, or an expiring signed URL
- Render 1 to 25 items in one POST /bulk call, such as several sizes or the slides of a carousel
- Read a design's render endpoint and overridable dynamic fields from its config before rendering
- Queue a background export that stores the image and notifies a webhookUrl, then poll it by exportId
- Pull time-bucketed render counts to track historical usage

## Use cases

### AI agent generating images through Jentic

A developer wants their agent to produce on-brand images, such as a blog header with the post title, without wiring the Imejis render host by hand. Through Jentic the agent searches for 'render a design to an image', loads the design config to learn the dynamic fields, then calls the render operation with overrides, with the render key injected at call time. The agent returns a hosted URL ready to embed.

Example prompt: Call GET `/designs/v2/{id}/config` for the header design, then POST /{design_id} with title set to the post title and delivery=hosted, and return the hosted URL

### Bulk social graphics

Marketing teams need the same graphic in several sizes or a set of carousel slides. POST /bulk accepts an items array of 1 to 25 entries, each with a designId, an optional variation size id, and overrides, plus request-level format and delivery defaults. The response gives stored URLs for every render.

Example prompt: POST /bulk with three items that share one designId and use different variation ids, with format set to png, and collect the returned URLs

### Background exports with webhooks

Pipelines that render on a schedule avoid holding a connection open. POST `/designs/v2/{id}/export/jobs` takes a required delivery value and an optional webhookUrl, and returns an exportId and pollUrl. GET `/analytics/exports/{exportId}` returns the status and the stored URL once ready.

Example prompt: POST `/designs/v2/{id}/export/jobs` with delivery=signed and a webhookUrl, then GET `/analytics/exports/{exportId}` until the stored URL is returned

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/{design_id}` | Render a design to an image |
| GET | `/{design_id}` | Render a design via query params |
| POST | `/bulk` | Bulk render many items |
| GET | `/designs/v2` | List designs |
| GET | `/designs/v2/{id}/config` | Get render endpoint and dynamic fields |
| POST | `/designs/v2/{id}/export/jobs` | Queue an async stored export |
| GET | `/analytics/exports/{exportId}` | Poll an export job |
| GET | `/analytics/api` | Get render usage over time |

## Key resources

- **Render** — Render a design by id with GET or POST, and bulk render many items, on render.imejis.io
- **Designs** — List designs, read a design document, and read its render config and dynamic fields
- **Exports** — Export a design as bytes, a hosted URL, a signed URL, or an async job, and poll jobs by exportId
- **Usage and keys** — Read render usage over time and list render API keys

## AI readiness

This API is usable in Jentic One now. Its AI-readiness score against Jentic's framework shows where it stands today and where improvements would make it even easier for agents to use.

- **Score:** 65 / 100
- **Maturity:** AI-Aware
- **Dimensions:**
  - Foundational Compliance: 100 / 100
  - Developer Experience & Jentic Compatibility: 63 / 100
  - AI-Readiness & Agent Experience: 49 / 100
  - Agent Usability: 94 / 100
  - Security: 47 / 100
  - AI Discoverability: 74 / 100
- **View full report:** https://jentic.com/apis/imejis.io/imejis/scorecard
- **How the score is calculated:** https://docs.jentic.com/reference/api-readiness-framework/overview/
- **More about the dimensions:** https://docs.jentic.com/reference/api-readiness-framework/specification/#dimensional-model-overview

### Score it yourself

Every API in the directory is allowlisted, so you can re-score it with no key required.

- **Score your own API:** https://jentic.com/scorecard.md
- **Scoring CLI agent skill:** https://github.com/jentic/jentic-api-scorecard/blob/main/skills/jentic-api-scorecard/SKILL.md

```sh
npx @jentic/api-scorecard-cli score <openapi-url>
```

## Why Jentic

- **Setup:** Wiring Imejis by hand means juggling two hosts and two credentials: a dma-api-key for renders on render.imejis.io and an OAuth bearer token for designs and exports on api.imejis.io. Through Jentic you install once, import Imejis from the API Directory, store each credential once, and your agent calls it.
- **Permission scoping:** Imejis puts the design id in the URL path (/{design_id} and `/designs/v2/{id}/...`), so a rule can pin your agent to one design and the operations you pick. You choose the operations it may call, so bulk renders or background export jobs are not included unless you add them.
- **Credential handling:** Your Imejis render key and access token are stored once, encrypted, by your own Jentic One instance and injected at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'render a design to an image' or 'bulk render images', and Jentic returns the matching Imejis operation with its input schema, including format and delivery options, so the agent calls the right endpoint directly.

## Related APIs

- **Bannerbear API** — Template-based image and video generation
- **Placid API** — Generates images, videos, and PDFs from templates with dynamic content
- **HTML/CSS to Image** — Renders HTML and CSS into an image
- **Cloudinary Upload API** — Uploads and stores media assets for delivery

## FAQ

### What authentication does the Imejis API use?

The Imejis API declares two kinds of credential in its OpenAPI spec. Render operations on render.imejis.io use a render API key named dma-api-key, sent as a header or, for GET renders and bulk, as a query parameter. Design, export, usage, and key-listing operations on api.imejis.io use an OAuth 2.0 bearer access token. Through Jentic both are stored encrypted by your own Jentic One instance and injected at call time.

### Can I get a shareable link instead of image bytes with the Imejis API?

Yes. Set delivery=hosted for a public URL or delivery=signed for an expiring signed URL on the render call; the default stream returns the bytes. On the account side, POST `/designs/v2/{id}/export/signed-url` takes expiresIn in minutes for the link lifetime.

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

The OpenAPI spec does not specify rate limits, though it notes each export consumes one render from your quota. Check https://imejis.io for current plan limits.

### Is there an Imejis MCP server?

You don't need an MCP server to give your agent the Imejis render and export operations. Jentic connects them directly from the API Directory: import the API, store your render key and token once, and your agent calls the operations it needs, discovered on demand without loading extra tool definitions into its context.

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

Yes. As a worked example, allow only GET and POST on /{design_id} for one design id, and the agent can render that design with new values but cannot render other designs, queue exports, or read usage. Every call it makes is logged.

### How do I render a design through Jentic?

Search Jentic for 'render a design to an image', load the renderDesignPost operation, and execute it with the design_id, a JSON body of dynamic-field overrides, and optional format and delivery. To run it on your own infrastructure, install Jentic One from its GitHub repo.
