GenieOSdocs
SDKs

SDKs

Two officially-supported clients — Node and Python — that mirror each other 1:1.

We ship two SDKs. Both are typed end-to-end, both include retries + auto-idempotency + webhook verification, and both stay in lock-step with the REST API. Anything you can do in one, you can do in the other.

What\u2019s included in both

  • Typed methods for every endpoint (workspaces, templates, transactional, sequences, events, webhooks, audit).
  • Per-call idempotency keys, auto-generated when not supplied. See Idempotency.
  • Exponential-backoff retries on 408/429/5xx, honouring Retry-After.
  • Typed errors that round-trip the API\u2019s structured envelope (GenieOSValidationError, GenieOSRateLimitError, etc.).
  • A webhook verifier that takes the raw body + signature header and either returns the decoded event or throws.
  • A codegen command that turns published schema contracts into typed variables for templates.send().

What\u2019s not in the SDKs

We deliberately keep the SDKs thin:

  • No template authoring helpers. Push templates with the CLI or via the dashboard — your IDE is the right place to edit MJML/HTML.
  • No retry queues / outbox tables. That\u2019s your domain; the API\u2019s idempotency support means you don\u2019t need ours.
  • No analytics / "open tracking inflators" / "ai subject line scorers". Those live in the dashboard or are deliberate features of the product you build on top of GenieOS.

Other languages

If you want a client we don\u2019t ship — Go, Ruby, Elixir, Rust, .NET — the path is short:

  1. Use the REST API directly. Every example in these docs has a curl tab.
  2. Verify webhooks with the 5-line snippet on the Webhooks page.
  3. Open an issue at github.com/mail-genie/genieos if you\u2019d use a first-class SDK in your language; we triage SDKs by demand, not by checklist.

On this page