API REFERENCE
Results
A completed conversion's files: download one, preview it, read its figures and shapes.
GET/v1/conversions/{id}/download
Download a file of the result
A short-lived URL for one of the result's files: format names one of result.formats by id (absent, the web default). Served from the storage domain as an attachment, never inline from this origin: SVG is an active document format. Allowed once the conversion's IMAGE is unlocked, on every plan; then every format and re-download is free. A locked image answers 402 unlock_required (this GET never spends). as takes the format as a print-ready PDF (pdf, a design file's of outlines, never its editableText twin) or a picture (png, a web file's with a preview, size px on its long side): made from the stored result on first ask, after the unlock check.
Path
ididrequired
Query
formatstring- A format's id from
result.formats; the web default when left out. asone ofsvg,pdf,pngdefault svgsizeone of2048,4096,8192default 2048- With
as=png: the picture's long side in px. variantid- A recolor of the result (POST /conversions/{id}/variants): the file with those colors, every format but
currentColor.
Errors
| Status | Code | What to do |
|---|---|---|
| 402 | unlock_ | Unlock it (1 credit, once per image), then download. |
| 404 | not_ | Check the id. Another account's objects read as not found too. |
| 404 | variant_ | Use a variant id this result listed. |
| 409 | conversion_ | Convert the image again. Converting is free. |
| 409 | not_ | Use a live key for it, or test the conversion and its SVG files. |
| 409 | not_ | Wait for it to finish (a webhook, the events stream, or a read), then ask again. |
| 409 | result_ | Convert the image again. |
| 429 | rate_ | Wait the Retry-After seconds, then send it again. |
| 502 | derive_ | Try again. The coarser picture still shows. |
Every refusal carries its code and a requestId. Errors and retries.
GET/v1/conversions/{id}/preview
Preview the result
A short-lived URL for a web file's rendered PNG, on EVERY tier: the free tier is the product demo, a full-quality conversion, this preview and its figures, with the SVG withheld. Served inline (a PNG is inert). format names a web file of result.formats that is not currentColor (its background kept or dropped); absent, the web default's. 2048 px on its long side, at the drawing's own aspect. layer=outline: the anchor-point view at the same size, lying exactly on it (black hairlines and squares on transparency).
Path
ididrequired
Query
formatstring- A web file's id; the web default when left out.
layerone ofoutline
Errors
| Status | Code | What to do |
|---|---|---|
| 404 | not_ | Check the id. Another account's objects read as not found too. |
| 409 | conversion_ | Convert the image again. Converting is free. |
| 409 | not_ | Use a live key for it, or test the conversion and its SVG files. |
| 409 | not_ | Wait for it to finish (a webhook, the events stream, or a read), then ask again. |
| 409 | result_ | Convert the image again. |
| 429 | rate_ | Wait the Retry-After seconds, then send it again. |
| 502 | derive_ | Try again. The coarser picture still shows. |
Every refusal carries its code and a requestId. Errors and retries.
POST/v1/conversions/{id}/tiles
Tiles of a deeper zoom
Every tier, like the preview: pictures of the file, never the SVG. Level L draws the drawing 2048·2^L px long, cut into 512-px squares (1 ≤ L ≤ 3); a tile is [x, y] within the square grid of its level. Missing tiles are made first, then served from storage.
Path
ididrequired
Body
layerstringrequiredoutlineoroutline-2x(the anchor-point view drawn for a 1× or 2× screen), a web file's id, orids-{format}(that web file's Shapes ID picture, GET /conversions/{id}/shapes).levelinteger, 1 to 3requiredtilesarray of array of anyrequiredvariantid, or null- A recolor of the result: a web file's tiles with its colors (never the outline's).
paletteinteger, 2 to 24, or null- A redraw's preview count (GET /conversions/{id}/palette): a web file's tiles with the drawing merged into its colors. Never with
variant.
Errors
| Status | Code | What to do |
|---|---|---|
| 404 | not_ | Check the id. Another account's objects read as not found too. |
| 404 | variant_ | Use a variant id this result listed. |
| 409 | conversion_ | Convert the image again. Converting is free. |
| 409 | not_ | Use a live key for it, or test the conversion and its SVG files. |
| 409 | not_ | Wait for it to finish (a webhook, the events stream, or a read), then ask again. |
| 409 | original_ | Upload the file again. |
| 409 | result_ | Convert the image again. |
| 429 | rate_ | Wait the Retry-After seconds, then send it again. |
| 502 | derive_ | Try again. The coarser picture still shows. |
Every refusal carries its code and a requestId. Errors and retries.
GET/v1/conversions/{id}/original
The original image
A short-lived URL for the image the conversion was made from: the upload, kept with its result for the comparison (deleted with the result or the account, never in the shared cache). While it waits or runs, the upload itself, so a client can show the image being converted. Served inline, as the type its bytes proved at upload. A result made before originals were kept, a running conversion whose upload is gone, or a TIFF (which no browser but Safari draws) has none: 404 original_unavailable.
Path
ididrequired
Errors
| Status | Code | What to do |
|---|---|---|
| 404 | not_ | Check the id. Another account's objects read as not found too. |
| 404 | original_ | Show its redraw instead. |
| 409 | conversion_ | Convert the image again. Converting is free. |
Every refusal carries its code and a requestId. Errors and retries.
GET/v1/conversions/{id}/facts
The result's facts
Every tier: the engine's facts of the default file, in the ENGINE's names (the same object the site's examples show): the counts a layers panel would sum (anchor points, paths, circles, rectangles, rings, strokes, repeats, elements, the words kept as text) and every color the file draws with what it paints and its share of the frame.
Path
ididrequired
Errors
| Status | Code | What to do |
|---|---|---|
| 404 | not_ | Check the id. Another account's objects read as not found too. |
| 409 | conversion_ | Convert the image again. Converting is free. |
| 409 | not_ | Use a live key for it, or test the conversion and its SVG files. |
| 409 | not_ | Wait for it to finish (a webhook, the events stream, or a read), then ask again. |
| 409 | result_ | Convert the image again. |
| 429 | rate_ | Wait the Retry-After seconds, then send it again. |
| 502 | derive_ | Try again. The coarser picture still shows. |
Every refusal carries its code and a requestId. Errors and retries.
GET/v1/conversions/{id}/shapes
The result's shapes
Every tier, like the preview: a web file's shapes in the engine's order, and a link to its ID PICTURE at the preview's size: every pixel's color − 1 is the shape on top there, transparent where none is, never a blended pixel. Decode it with color conversion and premultiplying off. Its deeper zoom: POST /conversions/{id}/tiles with the layer ids-{format}. Made on the first ask, then served.
Path
ididrequired
Query
formatstring- A web file's id; the default web file when left out.
Errors
| Status | Code | What to do |
|---|---|---|
| 404 | not_ | Check the id. Another account's objects read as not found too. |
| 409 | conversion_ | Convert the image again. Converting is free. |
| 409 | not_ | Use a live key for it, or test the conversion and its SVG files. |
| 409 | not_ | Wait for it to finish (a webhook, the events stream, or a read), then ask again. |
| 409 | result_ | Convert the image again. |
| 429 | rate_ | Wait the Retry-After seconds, then send it again. |
| 502 | derive_ | Try again. The coarser picture still shows. |
Every refusal carries its code and a requestId. Errors and retries.