We don’t ship an SDK. Every capability is a standard JSON-over-HTTPS endpoint, so you can integrate with the HTTP client you already use - fetch, axios, requests, HttpClient, net/http, anything.
If you’re on Node or Python and want a lightweight wrapper, the examples below show a small request() helper you can paste into your codebase. You own it, we don’t publish a package.

Authenticate

Every request sends two headers: Every request to a tenant-scoped endpoint must include your API key pair:
HeaderValue
x-api-keyYour publishable key, e.g. pk_live_...
x-api-secretYour secret key, e.g. sk_live_...
Content-Typeapplication/json
The tenant is resolved automatically from the key pair - you never pass tenantId in the URL or body. See Authentication for key types and rotation.

Minimal integration pattern

A tiny wrapper handles auth, JSON encoding, and error parsing. Below are drop-in starters.
curl https://api.geldstuck.com/v1/tenants/me \
  -H "x-api-key: $GELDSTUCK_PUBLIC_KEY" \
  -H "x-api-secret: $GELDSTUCK_SECRET_KEY"

What you need to handle

Because you own the integration, you also own a few concerns the platform expects of well-behaved clients. All covered in the Core concepts section:

Idempotency keys

Send Idempotency-Key on every POST so retries don’t double-create.

Rate limits

Respect Retry-After and back off on 429.

Error shape

Switch on error.code, surface requestId in your logs.

Pagination

Cursor-based; follow nextCursor until hasMore is false.

OpenAPI spec

We publish a full OpenAPI 3.1 spec at https://api.geldstuck.com/openapi.json. Generate a typed client with the tool of your choice - openapi-typescript, openapi-generator-cli, datamodel-code-generator, etc.
npx openapi-typescript https://api.geldstuck.com/openapi.json \
  --output src/generated/geldstuck.d.ts
The spec is versioned with the API. Regenerate after each minor version bump - see versioning.