Skip to main content
Pirehub captures a public webpage and returns a PNG data URI in the standard JSON success envelope. Choose a viewport capture or set fullPage: true to capture the full page.

Authentication

POST /api/v1/screenshot accepts a Pirehub API key with the screenshot:capture scope for server-to-server integrations. Send the key in x-pirehub-api-key or as a bearer token. Keep the key on your server. Pirehub’s website can use the alternative described in First-party browser verification. External integrations should use a scoped API key.

Capture options

URLs containing credentials, private network targets, and ports other than 80 or 443 are rejected. Sites that require login or block automated capture may not produce an image.

Capture request

Capture response

The image data is abbreviated in this example. data.width and data.height describe the actual output image; full-page capture can produce a height different from the requested viewport. Decode the base64 portion of data.dataUrl to save a PNG, or use the complete data URI as an image source.

Caching

Matching captures are cached for 15 minutes, or 10 minutes for supported tweet URLs. data.cached: true indicates a cached result. Set refreshCache: true to request a fresh capture. Cache hits still count toward the API key’s limits.

Limits and failures

API-key requests use the per-minute and monthly limits configured for that key. Inspect X-ApiKey-RateLimit-* and X-ApiKey-Monthly-*. First-party browser requests without an API key are limited to 5 requests per minute per IP and return X-RateLimit-* headers. Honor Retry-After when present. After monthly quota exhaustion, wait until the reported reset time. See Errors and retries.

Next steps

Screenshot endpoint

Review the complete request and response schemas.

Authentication

Learn about scopes and credential handling.

Errors and retries

Handle failures safely and predictably.