Skip to main content
Not everything you need reviewed exists as a file. A landing page, a live promotion, or a design still in Figma can be submitted as a link — Adclear captures it and hands back an 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.
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:
Response:
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.
Sending a file-level URL with no frame returns 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

Poll every couple of seconds while 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:
Response:
Pass any frameId back as figmaFrameId when submitting the link. Identical to a file upload — the capture is just another uploadId:
From here, trigger an evaluation as usual.
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 across POST /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

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.
Yes. The returned upload ID behaves like any other — reference it from as many promotions or versions as you like.
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.
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.
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.