API
The API serves captures to other clients over HTTP from a server that keeps a browser warm between requests. Server mode is a Pro feature; signed-URL authentication requires Enterprise.
Run ZShot inside your own infrastructure and reach it from your own services. It is not built to sit on the public internet.
GET / takes a render request as query parameters and POST / as a JSON body. The request schema lists every key either one takes.
Security
The server offers Basic, token and signed-URL authentication, and --block-private-ips keeps a rendered page from reaching internal hosts. These controls protect a service running among trusted callers; they are not a hardening layer against wide public exposure. Put ZShot behind your own network boundary and front it with a gateway that handles public traffic.
PDF pages
A page that is a PDF renders only as download, warc, wacz or har. Any other
output_type answers 422 with Unsupported content: <url> is a PDF (application/pdf),
and so does a navigation that reaches a PDF.
Navigator credentials and files
A request supplies literal credentials as navigator_credential, a name→value
map, and may scope them to other pages with navigator_credential_origin, a map
from a name or a name pattern such as * to globs. navigator_file maps names to base64 data URLs or to
http(s) URLs the server fetches through its IP filter the first time the
navigator attaches the file; a fetch that fails answers 502 with
Navigator file 'NAME' failed: <reason>, the failure class only. A navigation
that does not reach its goal answers 502 with Navigation failed: <reason>
and produces no output. Credentials configured when the server started with
--navigator-credential-helper
are offered to every request under their startup origins; a request that restates
one of those names in either map is rejected with 400. A helper that fails during
a request answers 502 with Credential helper 'NAME' failed: <reason>, where the
reason is the failure class only; the detail is in the server log.