Export as an image
POST /boards/{boardId}/export
A PNG of the whole board, one frame with everything inside it, or one item on its own, drawn by the same renderer as the editor's Export. Drawing takes a browser, so this answers 202 with a Job; poll it, and the finished job's result carries imageUrl, width and height.
boardis every item except comment pins, cropped to what they cover.frameis a frame (a section, design frame, diagram frame, mood board and the like) and the items fully inside it. A design frame is cropped to its canvas, under its title bar.itemis one item alone, with nothing behind it.
The background is transparent. The image is published at an unguessable address: anyone with the URL can open it, so treat the URL like the board content it shows. Very large areas are refused before rendering: 20,000 x 20,000 pixels at scale 1, 10,000 x 10,000 at scale 2.
Authorization
AuthorizationstringheaderrequiredBearer <key>. The key needs boards:read scope. Create and manage keys in the developer console, or use an OAuth app to act for other people; what each scope unlocks is on the scopes page.
Path parameters
boardIdstringpathrequiredHeaders
Idempotency-KeystringheaderA unique key per logical request. Replays within 24 hours return the original response.
Body
callbackUrlstringOptional. When the job this request starts finishes or fails, a short body is POSTed here once: { eventId, status, boardId, boardUrl, imageUrl }, where status is succeeded or failed and imageUrl is a picture of what the job drew, or null. Signed with the workspace's callback secret (GET /webhooks/callback-secret). https to a public host. The full job is on GET /jobs/{jobId}.
targetenum<string>What to draw. One of board, frame or item. Defaults to board.
itemIdstringThe frame or item to draw. Required unless target is board.
scaleenum<integer>2 doubles the pixels, for retina screens and print. One of 1 or 2. Defaults to 1.
Response
idstringkindenum<string>One of item.create, item.update, item.delete, item.batch, ai.generate, ai.modify, skill.apply or board.export.
statusenum<string>One of queued, running, succeeded or failed.
progressintegermessagestringHuman readable progress, for example "Placing kanban".
resultobject | nullChild attributes
itemIdsstring[]updatedstring[]deletedstring[]creditsUsedintegerboardTitlestring | nullskillstring | nullconvertedFromstringsourceDeletedbooleantargetenum<string>board.export. What was drawn. One of board, frame or item.
formatenum<string>board.export. One of png.
scaleenum<integer>board.export. One of 1 or 2.
imageUrlstringboard.export. The PNG. Anyone with this URL can open it.
widthintegerboard.export. The image's width in pixels.
heightintegerboard.export. The image's height in pixels.
errorerrorChild attributes
codeenum<string>requiredOne of unauthorized, forbidden, not_found, validation_failed, conflict, plan_limit, rate_limited or internal.
messagestringrequireddetailsobject[]docsUrlstringupgradeUrlstringcreatedAtstringfinishedAtstring | nullcallbackUrlstring | nullWhere the job's result is POSTed
callbackobject | nullThe newest delivery to callbackUrl, once the job has finished. Null until then, and when there is no callbackUrl.
Child attributes
urlstringdeliveryIdstringstatusenum<string>One of pending, retrying, succeeded, failed or cancelled.
attemptsintegerresponseStatusinteger | nullerrorstring | nulldeliveredAtstring | nullnextRetryAtstring | nullErrors
rate_limitedToo many requests.