Skip to main content
@plainrouter/sdk is the generated TypeScript client for the signed Plainrouter OpenAPI contract. It exposes typed request and response models, API methods, and Zod schemas for the Conversion API, including cursor-based event listing. The current npm release is 0.6.0 and targets signed API contract 0.5.0. The source is in plainrouter/sdk. Review release notes before upgrading while the SDK remains in the 0.x series.
Version 0.6.0 includes the required event consent fields and verifySignalIngestion.

Requirements

  • Node.js 22.22.2 or newer.
  • A Signals workspace secret.
  • Server-side code. Do not use the secret in a browser bundle.

Install

Configure the client

Configure the shared client once when your server starts:
The client sends the Signals workspace secret as a bearer token. The signalTrackerSecret property keeps its compatibility name in 0.6.0. The client does not read credentials from the environment automatically.

Configure another API origin

The default API base URL is https://plainrouter.com/api/v1. Override it only for a Plainrouter-provided region or a controlled test environment:
You can also inject a compatible fetch implementation through the same configuration object.

Available methods

The package also exports the generated TypeScript models and Zod schemas. Use the schemas when you need runtime validation at an application boundary.

Verify Signal ingestion

The first successful call returns the accepted verification result. Repeating it is safe and returns duplicate: true. The event confirms ledger receipt but is not real arrival evidence and does not complete onboarding.

Send a purchase and inspect its delivery

Follow the Node.js and TypeScript purchase recipe for a complete createEvent request, recorded consent checks, stable retry IDs, and a typed getEvent delivery check. It sends through Plainrouter; it is not a direct Meta Graph API tutorial. By default, operations return data, error, and response; an HTTP failure must be checked before using data. A transport failure may have no response; check it before reading the status. Code using throwOnError: true must also catch thrown failures. Stop on 401, inspect field errors on 422, and retry an uncertain purchase timeout only with its original persisted ID and payload. Avoid logging entire request or error objects. See the API error table.

Handle credentials safely

The SDK accepts only a Signals workspace secret for Conversion API calls. It does not accept an MCP OAuth token or workspace execution token. Keep the secret in a server-side secret manager. Never include it in client-side JavaScript, prompts, URLs, logs, or source control. For request and response fields, use the API reference.