# SDKs Generate idiomatic SDKs from your OpenAPI spec. ## Languages Fern generates SDKs in 9 languages from a single API specification: - TypeScript / JavaScript - Python - Go - Java - C# / .NET - Ruby - PHP - Swift - Rust Each SDK is hand-tuned per language, not a thin wrapper. Generated code follows the idioms developers expect: typed responses, language-native error handling, async support, and standard package layouts. ## What Fern SDKs include - **Strongly typed clients.** Request and response types generated from your spec. - **Pagination helpers.** Cursor-based and offset-based pagination are first-class. - **Retries with backoff.** Configurable retry policy for transient failures. - **OAuth and bearer auth.** Token refresh handled automatically where the spec describes it. - **File upload and streaming.** Multipart uploads and SSE/streaming responses supported. - **Forward compatibility.** Unknown fields are preserved, deprecations surface as warnings, and additive spec changes don't break old clients. - **Idempotency.** Idempotency keys threaded through where the spec marks them. ## Workflow 1. Point Fern at your OpenAPI spec. 2. Configure language-specific options (package name, namespace, version) in fern.yaml. 3. Run `fern generate` to produce SDKs in your selected languages. 4. Fern publishes to npm, PyPI, Maven Central, NuGet, RubyGems, Packagist, CocoaPods, and crates.io. 5. Every spec change regenerates the SDKs — no manual edits, no drift. ## Customizations - Add custom helper methods (auth bootstrap, common workflows) without forking the generator. - Override naming, grouping, or error mapping per-language via configuration. - Bring your own changelog and release notes pipeline. ## Trusted by NVIDIA, Adobe, ElevenLabs, Twilio, Cohere, OpenRouter, Square. ## Next steps - Book a demo: - See pricing: - Read customer stories: