Official SDKs
Seven first-party clients, their shared contract and publication status.
Release status — August 12, 2026: all seven source packages, generated types, package builds and conformance suites are implemented as release candidates. Promotion to public registries is still pending. Until this notice changes, the HTTP quickstart is the installation path that is publicly executable.
Packages
| Language | Candidate coordinate | Minimum runtime |
|---|---|---|
| TypeScript / JavaScript | @pagecapture/sdk |
Node.js 22 |
| Python | pagecapture |
Python 3.10 |
| Go | github.com/thalesvinif/pagecapture/packages/sdk/go |
Go 1.22 |
| Java | dev.pagecapture:pagecapture |
Java 17 |
| PHP | pagecapture/pagecapture |
PHP 8.2 |
| Ruby | pagecapture |
Ruby 3.2 |
| C# / .NET | PageCapture |
.NET 8 |
These are candidate coordinates, not an assertion that a registry already serves them. Package names, publisher accounts and the final public source repository — required for the Go coordinate — are verified as part of the first promotion, before install commands replace this status notice.
Shared behavior
Every client uses the same public HTTP API and therefore the same authentication, billing, cache and error behavior. There is no private SDK endpoint. Types and public error codes are generated from the same sources that drive request validation and OpenAPI.
All seven clients provide:
- typed options for
takeandanimate; - streaming plus an in-memory bytes convenience;
- distinct binary, JSON,
202 Acceptedand204 No Contentoutcomes; - bulk, usage, request polling, devices, regions and egress IP catalogs;
- typed errors with
error_code, request id, retry guidance and rate-limit metadata; - bounded timeouts, with native cancellation where the runtime exposes it;
- SDK name/version headers, without putting the API key in logs or error messages.
No SDK retries a capture automatically. If the response is lost after the service accepted the
job, repeating it can create a second successful, billable capture. Retry only a code marked
retryable and use Idempotency-Key for bulk admission.
TypeScript preview
This is the API of the candidate package and becomes the registry quickstart only after promotion:
import { writeFile } from "node:fs/promises";
import { PageCapture, PageCaptureError } from "@pagecapture/sdk";
const client = new PageCapture(process.env.PAGECAPTURE_API_KEY!);
try {
const png = await client.takeBytes({
url: "https://example.com",
format: "png",
full_page: true,
});
await writeFile("capture.png", png);
} catch (error) {
if (error instanceof PageCaptureError) {
console.error(error.code, error.requestId, error.retryable);
}
throw error;
}
For large artifacts, use the streaming method instead of buffering. For background jobs, use the async convenience and poll the request id or receive the signed webhook.
Publication gate
A package is called published only after its final artifact installs in a clean environment, the supported runtime matrix and staging capture pass, its registry namespace and distribution terms are approved, and a human authorizes the irreversible promotion. Normal CI builds and verifies artifacts but cannot publish them.