S3 and compatible storage
Deliver straight into your own bucket.
Save a configuration once in the dashboard and reference it by id, so your requests never carry a secret:
{
"url": "https://example.com",
"format": "png",
"store": true,
"storage_config_id": "sto_01...",
"storage_path": "screenshots/{date}/{external_identifier}.{format}",
"storage_return_location": true,
"response_type": "empty"
}
Path placeholders: {request_id}, {timestamp}, {date}, {external_identifier}, {format}, {organization_id}. Values are sanitised — an external_identifier containing ../ cannot escape your intended prefix.
Inline credentials (storage_access_key_id, storage_secret_access_key) are also accepted for migration, and are treated exactly like other request secrets.
Custom endpoints must be HTTPS, are resolved and checked against private ranges, and redirects are not followed — following one would hand your bucket credentials to a host you did not choose.
Failures are distinguished: storage_access_denied is yours to fix, storage_returned_transient_error is retried.