Get Result Image
Stream a PNG/JPEG visual image referenced by an extraction
response under bounding_boxes.Images[].image_url.
The URL is API-hosted instead of raw S3 — the underlying object
store is intentionally not part of the public contract. The
host portion of image_url mirrors the request origin (e.g. a
request to a beta deployment receives image URLs on that same
host), so the path you fetch is exactly what came back in the
extraction response.
Authentication is required. Unlike the legacy single-use
/large_results/{jobId} route, visual artifacts are
independently-addressable resources — every fetch must present
a valid API key for the owning org. There is no anonymous /
TTL-based fallback. Use the same x-api-key header you use for
/extract.
Fetching an image does not consume the parent extraction’s result-delivery slot, so one extraction can produce many image URLs and each can be fetched repeatedly while the artifact is retained.
Overview
Fetch a PNG or JPEG visual image referenced by an extraction response underbounding_boxes.Images[].image_url.
When you call /extract with figure_processing.show_images: true, every detected chart or embedded image in the response carries an image_url field. Those URLs point at this endpoint — GET /results/{jobId}/images/{filename} — which streams the actual image bytes.
When to use this vs. /large_results/{jobId}
| Endpoint | Purpose | Auth | Single-use? |
|---|---|---|---|
GET /large_results/{jobId} | Download the full extraction result (markdown + bounding_boxes + …) when the inline payload exceeds 5 MB or 70 pages. | Anonymous within 1-hour TTL or authenticated same-org. | Yes — fetching invalidates the link. |
GET /results/{jobId}/images/{filename} | Download one visual image referenced by bounding_boxes.Images[].image_url. | Authenticated same-org only. No anonymous access. | No — fetch as many times as you need while the artifact is retained. |
End-to-End Example
The full path: extract a workbook → walk the typedImages array → fetch one chart’s bytes.
Authentication
Every request must present a validx-api-key header for the org that owns the extraction. Unlike the legacy single-use /large_results/{jobId} route, visual artifacts are independently-addressable resources — there is no anonymous fallback or short-lived public link.
- Authenticated same-org calls (your
x-api-keymatches the org that produced the extraction): succeed for as long as the underlying artifact is retained — same window as any other extraction artifact for that org. - Missing credentials (no
x-api-keyheader): rejected with401 Unauthorized(AUTH_001). - Cross-org authenticated calls (valid key, but not the owning org): rejected with
403 Forbidden(AUTH_002).
Pulse(api_key=...) / new PulseClient({ apiKey: ... }) constructor will attach x-api-key to every results.getImage fetch automatically.
image_url are fine — the link is multi-use. Fetching does not consume the parent extraction’s result-delivery slot, so one extraction can produce many image URLs and each can be downloaded as many times as needed.Errors
| Status | Code | Meaning |
|---|---|---|
400 Bad Request | INVALID_REQUEST | The filename path segment failed safe-filename validation. |
401 Unauthorized | AUTH_001 | No x-api-key (or no valid signed-in session) was supplied. |
403 Forbidden | AUTH_002 | The caller is authenticated but does not belong to the org that owns this extraction. |
404 Not Found | NOT_FOUND | Job or visual image not found. The jobId or filename is wrong, or the artifact has been garbage-collected. |
Next Steps
Bounding Boxes
Images, Tables, Text, Title, and Footer arrays.Extract Endpoint
figure_processing.show_images to populate image_url.Authorizations
API key for authentication
Path Parameters
Job identifier — same value used in the image_url returned
from /extract.
Visual filename — e.g. excel_image_1_1.png. Must be the
exact filename segment from the image_url.
Response
Visual image bytes (image/png or image/jpeg).
The response is of type file.
