Sign in
Start free7-day free trial
Live API contract
Record workflows

Retrieve a captured photo through an authorized backend

Stream photo and ID captures without exposing API keys, confusing image blocks or caching private content publicly.

The capture endpoint returns an image stored by a photo_capture or id_capture block. Signature and initials images are not available through this route. Build the viewer around the specific capture the authorized user needs rather than guessing that every image-like block uses the same endpoint.

Identify the record and block

Use the relevant waiver and the block identifier associated with the capture. Keep the request inside the correct organization context and require the appropriate access in your own application. The API route needs waivers:read.

Do not expose a broad API key in a browser image URL. Use an authorized backend to make the upstream request, check its result and deliver the permitted content to the authenticated viewer.

GET /v1/waivers/{id}/photos/{blockId}
Authorization: Bearer YOUR_API_KEY

See the capture reference for the supported block and path behavior.

Handle the response as binary content

The successful response is PNG or JPEG data, not a JSON object containing a public image URL. Check the upstream status and content type before presenting the body as an image. Do not write a JSON error response into an image file and report that the capture downloaded successfully.

Your proxy should preserve the correct media type and use a cache policy appropriate for private participant content. Do not place captures in a publicly cacheable asset directory or let a CDN treat them like marketing images. Apply your application’s authorization on every retrieval path.

Interpret missing content carefully

A 404 can mean the waiver, block or stored object is absent. Purged records also lose access to their stored images under the documented record behavior. Inspect the authorized record state when needed, but do not infer a particular cause from the image status alone.

Avoid retrying indefinitely or substituting another capture from a similarly named participant. An unavailable image needs an accurate state in the interface, not a fabricated placeholder that looks like an authentic record.

Test access and lifecycle cases

Test an allowed viewer, an unauthorized viewer, an absent block and a purged record. Verify that your logs contain diagnostic identifiers rather than image bytes or personal answers. If your interface creates a temporary browser object URL, release it when the view closes.

Use record access and purging for the lifecycle context and signature and capture handling for submission-side distinctions.