uploadId, which you use exactly like one from the File API.
The captured artefact is an image, so create the promotion with
fileFormat: "image" and the returned upload ID in uploadIds.Which links are supported
Figma files must be shared with anyone with the link. Adclear cannot read private Figma files submitted through the API.
Capturing a web page
A capture runs while you wait and can take up to two minutes, so set a generous client timeout. Request:previewUrl is a time-limited signed link for previewing the capture. Don’t store it — it expires. The uploadId does not.
Capturing a Figma frame
A Figma link identifies a file; Adclear needs to know which frame to import. Provide it either way:- Paste a frame link — in Figma, right-click a frame and choose Copy link to selection. The URL carries a
node-id, which Adclear reads automatically. - Or send the file URL plus an explicit
figmaFrameId, discovered with frame lookup.
400, pointing you at the frame lookup endpoint.
1
Start the import
Request:Response:Unlike a web page, a Figma import runs in the background and returns
202.2
Poll until it is ready
status is processing. When it reaches completed, use finalUploadId when creating the promotion — it can differ from the ID you polled. On failed, errorMessage explains why.Discovering frames
To let someone choose a frame, list what the file contains: Request:frameId back as figmaFrameId when submitting the link.
Creating a promotion from a captured link
Identical to a file upload — the capture is just anotheruploadId:
The submitted URL is not stored on the promotion. To keep it alongside the review, pass it in
metadata — it is echoed back in webhook payloads.Rate limits
Captures call third-party services, so they are limited more tightly than the rest of the API: 10 requests per minute per API key acrossPOST /v1/links and POST /v1/links/figma/frames. Polling GET /v1/links/{uploadId} is not affected and falls under the standard 60/minute limit.
A 429 includes a Retry-After header. See Errors & rate limits.
Common error scenarios
For cross-cutting errors (401, 403, 429, 502), see Errors & rate limits.
Frequently asked questions
Is the page captured again when I create the promotion?
Is the page captured again when I create the promotion?
No. The capture happens once, when you call
POST /v1/links. The promotion references that stored image, so a later change to the page does not alter what was reviewed.Can I reuse one capture across several promotions?
Can I reuse one capture across several promotions?
Yes. The returned upload ID behaves like any other — reference it from as many promotions or versions as you like.
Why is a screenshot immediate but Figma is not?
Why is a screenshot immediate but Figma is not?
A screenshot is captured inline while the request is open. A Figma frame is exported through the Figma API and processed in the background, so it returns
202 with a statusUrl to poll.My Figma frame fails as too large. Why?
My Figma frame fails as too large. Why?
Very large frames (over roughly 6 megapixels) need a conversion step that isn’t available through the API yet. Export the frame as an image and upload it via the File API, or import it through the Adclear app.
Can I submit a PDF by URL?
Can I submit a PDF by URL?
A link to a PDF is captured as a screenshot of the rendered page, not downloaded as a PDF. To have the PDF itself reviewed, fetch it yourself and upload it via the File API.