Soxom

Every feature you need to ship SDKs at scale.

From spec-driven generation to publish-on-tag releases — Soxom handles the full lifecycle.

Built into every SDK

Soxom SDKs ship the runtime ergonomics your customers expect — the same capabilities are exercised at runtime across every language by our conformance suite, not just emitted and hoped for.

Type-safe & idiomatic

Fully typed models, parameters, and responses with editor autocomplete. Each SDK reads like it was hand-written for its language — Pydantic models, Go structs, Java records, TS interfaces.

Auto-pagination

Cursor and offset list endpoints return a lazy iterable that walks every page for you. One loop, all results — or grab a page object for manual control.

Automatic retries

Transient failures (429, 5xx, timeouts, connection errors) retry with exponential backoff and jitter, honoring Retry-After. Unsafe methods are gated on idempotency keys.

Authentication, handled

Bearer, API key (header/query/cookie), basic, OAuth2 (with lazy token fetch + auto-refresh), OpenID Connect, and mutual TLS — including AND/OR scheme combinations and per-operation overrides.

Streaming responses

Server-Sent Events parse lazily into a typed async stream you can iterate and cancel. The TypeScript runtime adds NDJSON and raw byte streams.

Typed errors

Status-specific exception classes (NotFound, Unauthorized, RateLimit, …) carry the parsed error body, response headers, and request ID — catch exactly what you mean to.

File uploads & downloads

Multipart form-data uploads, octet-stream bodies, and binary downloads work out of the box, with per-part encoding honored from your spec.

Typed webhook receivers

Declare webhooks in your 3.1 spec and Soxom emits typed payloads plus framework-agnostic receivers (with a multi-event mux) — content-type and method gating included.

Timeouts & cancellation

Per-client and per-request timeouts, native cancellation signals, and request-level overrides for headers, query params, and retry budgets.

Core generation features

Everything you need to keep generated SDKs in sync with your API.

Spec-driven regeneration

Push to your OpenAPI config repo and Soxom rebuilds every SDK target automatically — no manual triggers, no drift.

Custom code preservation

Hand-written extensions live in extended/* branches and are preserved across every regeneration. No rebase pain.

Multi-language output

Python, Java, TypeScript, Go, Ruby, and C# ship today. Kotlin, PHP, and Rust follow the same architecture — coming soon.

Publishing & release platform

Soxom plugs into the GitHub-based delivery workflow your team already uses.

Publish to your registries

Releases ship to PyPI, Maven Central, npm, RubyGems, NuGet, Packagist, and crates.io — directly from your own repos.

Two-environment release flow

Staging release PRs let you review changelogs before tagging. Merge to production, Soxom pushes the version tag.

GitHub-native

Generation, release PRs, and publishing all happen in your GitHub org. Your repos, your Actions, your credentials.

Deep dive

Codegen + extended branches

Soxom splits generated code from your customizations using a branch strategy: codegen/* branches hold raw generator output and extended/* branches hold your hand-written code on top. Regenerations rebase cleanly because your code is isolated.

Staging → Production

Every change flows through a staging release PR. Review the changelog and diff, merge, and Soxom mirrors the result into your production repo and pushes a version tag — which triggers your own release.yml to publish.

You own the credentials

Soxom never holds your PyPI, npm, or Maven Central tokens. Publishing runs inside your own GitHub Actions, using your own secrets. We just push the tag.

Per-language idiomatic output

Each generator emits code that looks hand-written for its language — Pythonic dataclasses, idiomatic Java records, TypeScript with the Compiler API, Go that passes gofmt and goimports. No leaky-abstraction transpiler artifacts.

Ready to stop hand-writing SDKs?

See full pricing — every plan starts with a 14-day free trial.