SDK Generator · Pro and Business

Drop-in SDKs in TypeScript and Python. No build step.

Every spec compiles to a single drop-in .ts or .py file with typed methods, dataclasses, and a Client class. No npm package to maintain, no codegen toolchain — paste the file into a repo and import it. Re-run from CI on every spec change with one curl line.

Pro and BusinessReplaces: Speakeasy · OpenAPI Generator · openapi-typescript-codegen
acme-sdk.ts · TypeScript
// Generated from openapi.yaml · 2026-05-07
// Run: curl docs.outworx.io/api/sdk/acme/ts > acme-sdk.ts

export interface User {
  id: string;
  email: string;
  created_at: string;
}

export class AcmeClient {
  constructor(private apiKey: string) {}

  async listUsers(page = 1): Promise<User[]> {
    return this._get(`/v1/users?page=${page}`);
  }
}
acme-sdk.py ships the same shape — dataclasses, typed Client, retries.

Why one file

Skip the SDK pipeline. Keep the SDK ergonomics.

The conventional codegen path is heavyweight: a generator project, a publishing pipeline, a registry, a versioning policy, a CI workflow, a deprecation strategy. Reasonable for AWS — overkill for a 30-endpoint API your three customers integrate against.

One file, end to end

Typed methods, request/response dataclasses, error types, retry policy, the Client class — all in one importable file. Paste it in. Done.

No package, no registry

No npm publish, no PyPI workflow, no version-pinning conversation between you and your customers. The file is the SDK; the spec is the source of truth.

Re-download on spec change

curl the latest from CI on every spec PR. The SDK regenerates deterministically — same spec in, same file out, byte-for-byte.

Wire it into CI

One curl line. Fresh SDK on every spec PR.

Every project gets a stable URL at /api/sdk/<slug>/<lang>. Pipe it into your repo, commit the result, push. Per-project rate limit (60/min) keeps a runaway CI loop from costing you money.

1

Add a CI step

- name: Sync Acme SDK
  run: |
    curl -fsSL \
      docs.outworx.io/api/sdk/acme/ts \
      -o packages/acme/src/index.ts
2

Commit if changed

git diff --quiet packages/acme || \
  (git add -A && git commit -m "sync sdk" && git push)
~/acme · GitHub Actions runner
# .github/workflows/sync-sdk.yml

curl -fsSL \
  docs.outworx.io/api/sdk/acme/ts \
  -o packages/acme/src/index.ts

✓ Wrote 612 lines · 18.4 KB
  rate limit: 23 / 60 (per-project, 1m window)

git diff --quiet packages/acme/src/index.ts || \
  (git add -A && git commit -m 'chore(sdk): sync' && git push)

[main 8f3a4c2] chore(sdk): sync
 1 file changed, 14 insertions(+), 8 deletions(-)

Supported languages

TypeScript and Python today. ~150 lines per new language.

Each generator lives under lib/sdk/. Adding a new language is a small file that walks the parsed spec and emits the target syntax. The runtime surface (request envelope, retry, error shape) is shared.

TypeScript

.tsLive
  • Typed methods + interfaces
  • fetch-based, no transitive deps
  • Retry with backoff (configurable)
  • Tree-shake-friendly named exports

Python

.pyLive
  • Dataclasses for request + response
  • httpx-based; no per-version pinning
  • Typed exceptions per response code
  • Sync + async client variants

Go

.goRoadmap
  • Coming soon
  • Single-file with idiomatic structs
  • context.Context-aware methods

Rust

.rsRoadmap
  • Coming soon
  • Single-crate with reqwest
  • serde-derived types end to end
Active environment
Staging (default)
Variables substitute {{name}} placeholders at run time.

Environments

Variable maps you can reference as {{var}} — flip between staging and prod with one click.

New
  • Staging

    3 variables

  • Production

    3 variables

Saved requests

Method + path + headers + body, with {{var}} placeholders resolved against the active environment.

New
  • List users

    GET {{baseUrl}}/v1/users

    Run
  • Create user

    POST {{baseUrl}}/v1/users

    Run
  • Start checkout

    POST {{baseUrl}}/v1/checkout/sessions

    Run
  • Read order

    GET {{baseUrl}}/v1/orders/{{orderId}}

    Run

Saved requests + environments

The Postman replacement, built into the dashboard.

Library of named requests with {{var}} placeholders that resolve from a chosen environment at runtime. One-click flip between staging and production.

  • Collections + per-environment variables. Localhost auto-routes through `npx outworx-proxy` (same SSRF guard as the docs Try-It panel).

  • Project-scoped + RLS-locked. A collaborator can't accidentally read a prod token from an environment they shouldn't have access to.

  • Response auto-renders for JSON, sandboxed HTML, XML, images, video, audio, and PDF — with byte-faithful base64 round-trip for binaries.

Plan tiers

SDKs ship on every paid plan.

Free

  • Try-It playground (cURL/Fetch examples)
  • No SDK download
  • Saved requests on Pro and up
Most popular

Pro

TS + Python

  • Single-file SDKs from every spec
  • 60 req/min/project rate limit
  • Saved requests + environments
  • outworx-proxy for localhost
  • Response auto-render

Business

TS + Python

  • Everything in Pro
  • Custom domain on the docs site
  • Priority support
  • Roadmap input on next language

Ship a typed SDK in one curl.

Pro plan unlocks single-file TypeScript and Python SDKs from your spec. No registry, no build step.