Docs

Extract embedded PDF images

Export embedded images from selected pages as PNG files in a ZIP.

POST /v1/pdf/extract-images. Authenticated with your RelayPDF API key. Choose binary output, a temporary download URL, or an asynchronous job.

Request example

Replace the example input URL with a publicly accessible file you control. The example authorizes up to $1; successful work is charged for measured usage. Use a new idempotency key for a different request.

curl
curl https://api.relaypdf.com/v1/pdf/extract-images \
  -H "Authorization: Bearer $RELAYPDF_API_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: extract-images-example-001" \
  -H "X-RelayPDF-Max-Charge-Microdollars: 1000000" \
  --data '{"url":"https://example.com/input.pdf","response":"url","filename":"images.zip","options":{"pages":"1-3"}}'

Input and response

Provide exactly one of url, file, or fileId. All other fields are optional unless an operation option is marked required.

FieldMeaning
urlHTTPS input URL; public URL input is limited to 15 MiB.
fileBase64 input, optionally a data URI; decoded limit 15 MiB.
fileIdPrivate upload ID from POST /v1/files; maximum 100 MiB.
responsebinary (default), url, or async.
filenameOptional output filename matching the actual output extension.
callbackUrlOptional HTTPS per-job callback; unsigned.
optionsOnly use the options documented for the selected operation.

Operation options

Pass these fields inside the options object. Unknown or irrelevant options should not be relied upon.

OptionDefaultMeaning
pagesAllOne-based page selection.
passwordNoneInput password.

Output and limitations

Extracts embedded image objects, up to 500, rather than rendering full pages. Vector graphics are not converted into page screenshots. Use /v1/pdf/raster for rendered page images.

PDF inputs are limited to 500 pages and returned output to 32 MiB. Uploaded inputs expire after 24 hours. Download successful output before its 24-hour URL expires.

Failed jobs are unbilled. A 402 can mean insufficient available credit or a spending limit; a 409 indicates an idempotency conflict; a 413 indicates an exceeded size limit. Do not retry invalid inputs unchanged.

Node SDK

Use a release version containing client.process. With older published packages, call REST until the matching SDK version is available.

TypeScript
import { RelayPDF } from "@relaypdf/sdk";
const client = new RelayPDF({ apiKey: process.env.RELAYPDF_API_KEY! });
const result = await client.process("extract-images", {
  "url": "https://example.com/input.pdf",
  "response": "url",
  "filename": "images.zip",
  "options": {
    "pages": "1-3"
  }
}, { idempotencyKey: "extract-images-example-002", maxChargeMicrodollars: 1_000_000 });
console.log(result);

Pricing and job lifecycle

The assigned native rate applies. Final release pricing is $0.0004 per successful job plus $0.0005 per native execution second. Existing accounts retain their assigned rate. Reservations reduce available credit before work; unused funds return after settlement. See /docs/billing and /docs/idempotency for receipts, limits, and retries.