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 take and animate;
  • streaming plus an in-memory bytes convenience;
  • distinct binary, JSON, 202 Accepted and 204 No Content outcomes;
  • 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.