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.