| Endpoint | Output | Operations |
|---|---|---|
POST /api/ai/tools | JSON | image.describe, image.alt-text, image.tags, image.moderate |
POST /api/ai/transform | Image bytes (saved as a new stored file) | image.edit, image.generate, image.upscale, image.background-replace, image.style-transfer |
Analysis — /api/ai/tools
Returns structured JSON describing the input image.
| Field | Type | Description |
|---|---|---|
operation | string | One of image.describe, image.alt-text, image.tags, image.moderate. |
file | file | Image upload. Required unless sourceUrl is provided. |
sourceUrl | string | Public HTTP(S) image URL. Private networks, local hosts, and credentialed URLs are rejected. |
prompt | string | Optional context for the AI operation, up to 2,000 characters. |
2 and ~10 AI units depending on the image size, so most Pro accounts run hundreds of analyses inside their monthly quota.
Image transforms — /api/ai/transform
Generative endpoints that return a new image. The output is persisted to your Convertly storage automatically and returned as a stored_files row with a signed download URL.
| Field | Type | Description |
|---|---|---|
operation | string | One of image.edit, image.generate, image.upscale, image.background-replace, image.style-transfer. |
prompt | string | Instruction for the transform. Required for editing operations. |
storedFileId | string | Reference an existing file in the caller’s library. Preferred when the source already lives in Convertly. |
file | file | Image upload — used when the source is not yet in your library. |
sourceUrl | string | Public HTTP(S) URL. Same restrictions as the analysis endpoint. |
aspectRatio | string | Output aspect ratio: 1:1, 16:9, 9:16, 4:3, 3:4, 3:2, 2:3, or 21:9. Most useful with image.generate. |
async | boolean | When true, the job is queued and the response returns a job id immediately. The worker runs the transform and stores the result. |
image.generate is the only operation that does not require a source image — the model produces an image purely from the prompt. Pair it with aspectRatio to control the canvas shape, for example a 16:9 hero image or a 9:16 story.
Examples
Edit an image already in the user’s library:Costs
Image-out operations are charged as75 units base plus 1 unit per MB of source image. A 4 MB edit therefore costs 79 units. With Pro overage at $0.002/unit that is roughly $0.16 per generated image; Business overage is $0.0015/unit.
Generative fill (in-app)
Convertly’s editor at/app/editor/<id> exposes an Expand tool that surfaces the generative-fill capability directly. Drag the canvas handles outward to add space on any side, optionally write a guidance prompt, and click Generative fill with Forma AI.
The editor composites the current preview onto a larger transparent canvas in the browser, then sends that composite to /api/ai/transform with operation=image.outpaint. Forma AI fills the transparent regions with content that continues the existing scene. The result lands as a new step in the edit stack and is auto-saved to the user’s library.
The same outcome can be reproduced server-side by submitting a multipart file already padded with transparent pixels to operation=image.outpaint — the behaviour is identical.
Quotas
AI endpoints useX-Convertly-AI-* response headers, shared between the analysis and transform routes:
| Header | Description |
|---|---|
X-Convertly-AI-Limit-Month | Included monthly AI units. |
X-Convertly-AI-Used-Month | AI units consumed in the current month. |
X-Convertly-AI-Remaining-Month | Included units remaining before overage or cap. |
X-Convertly-AI-Limit-Minute | Per-minute AI burst limit. |
X-Convertly-AI-Used-Minute | AI units consumed in the current minute. |
402 response with an upgrade URL. Pro and Business accounts can continue past the included quota when overage billing is enabled. Enterprise plans use the same surface with larger allowances.