TypeScript SDK
Typed client for the thesignup REST API.
Status: Not yet released. The SDK is in active development.
What's planned
A typed TypeScript client generated from the same OpenAPI 3.1 spec that powers this reference, via @hey-api/openapi-ts. One source of truth (the Zod schemas in the main app), one generator, no hand-written drift.
// Once published — not the current state.
import { TheSignup } from '@thesignup/sdk';
const client = new TheSignup({ apiKey: process.env.SIGNUP_API_KEY });
const { data, error } = await client.signups.list({ limit: 20 });
if (error) {
// RFC 7807 problem details, typed via the OpenAPI spec
console.error(error.code, error.detail);
return;
}
console.log(data.data.length, 'signups');What it will include
- Typed request/response shapes for every
/api/v1/*endpoint. - Zod runtime validation on responses (catch upstream drift early).
- Idempotency-Key helpers — pass a UUID per logical operation, the SDK handles the header.
- Automatic retry on
429honoringRetry-After. - RFC 7807 error parsing into a
TheSignupErrorclass with thecodefield strongly typed. - Optional TanStack Query hooks for React.
Out of scope
- Server-side streaming. Use the MCP server for agent flows.
- Webhook signature verification — handled by a small companion package once webhooks are public.
What to use today
Plain fetch against the REST API. The OpenAPI spec is downloadable at https://thesignup.app/api/v1/openapi if you want to generate your own client in the meantime.
const res = await fetch('https://thesignup.app/api/v1/signups', {
headers: { Authorization: `Bearer ${process.env.SIGNUP_API_KEY}` },
});
if (!res.ok) {
const problem = await res.json();
throw new Error(`${problem.code}: ${problem.detail ?? problem.title}`);
}
const { data, nextCursor } = await res.json();