> This page is for SDKs, version Legacy.
> For other versions, use one of these documentation indexes:
> - Current (default): https://buildwithfern.com/learn/sdks/current/llms.txt
> - Legacy: https://buildwithfern.com/learn/sdks/legacy/llms.txt

> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

# SDKs overview

> Build multi-language SDKs with Fern's generator platform. Support TypeScript, Python, Go, Java, .NET, PHP, Ruby, Swift, and Rust clients.

> **You're viewing the legacy SDK docs**
>
> These pages cover SDK generation configured with `generators.yml`. New projects use `sdk-config.yml`, so see [the Current version of this page](/learn/sdks/overview/introduction) for up-to-date guidance. To move an existing project, follow the [SDK Config migration guide](/learn/sdks/legacy/generators/migration-guides/sdk-config), which walks through `fern sdk migrate`, and review the [`sdk-config.yml` reference](/learn/sdks/reference/sdk-config).

Generate client libraries in multiple languages from your API definition.

* [TypeScript](/learn/sdks/legacy/generators/typescript/quickstart): Quickstart guide for generating a TypeScript SDK.
* [Python](/learn/sdks/legacy/generators/python/quickstart): Quickstart guide for generating a Python SDK.
* [Go](/learn/sdks/legacy/generators/go/quickstart): Quickstart guide for generating a Go SDK.
* [Java](/learn/sdks/legacy/generators/java/quickstart): Quickstart guide for generating a Java SDK.
* [.NET](/learn/sdks/legacy/generators/csharp/quickstart): Quickstart guide for generating a .NET SDK.
* [PHP](/learn/sdks/legacy/generators/php/quickstart): Quickstart guide for generating a PHP SDK.
* [Ruby](/learn/sdks/legacy/generators/ruby/quickstart): Quickstart guide for generating a Ruby SDK.
* [Swift](/learn/sdks/legacy/generators/swift/quickstart): Quickstart guide for generating a Swift SDK.
* [Rust](/learn/sdks/legacy/generators/rust/quickstart): Quickstart guide for generating a Rust SDK.
* [C++](https://buildwithfern.com/book-demo?type=language-request): Request access for C++ SDK generation.
* [Kotlin](https://buildwithfern.com/book-demo?type=language-request): Request access for Kotlin SDK generation.

## Frequently Asked Questions

### What programming languages does Fern support for SDK generation?

Fern generates SDKs in TypeScript, Python, Go, Java, .NET (C#), PHP, Ruby, Swift, and Rust.

### How do I generate an SDK with Fern?

Define your API using OpenAPI or another supported spec, configure a generator in `generators.yml`, and run `fern generate`. Fern produces an idiomatic client library for each configured language.

### Are Fern-generated SDKs production-ready?

Yes. Fern-generated SDKs include type safety, error handling, automatic retries, pagination helpers, and follow the idiomatic conventions of each language. Many companies ship Fern-generated SDKs directly to their customers.

### Can I publish Fern-generated SDKs to package registries?

Yes. Fern can publish generated SDKs directly to npm (TypeScript), PyPI (Python), Maven (Java), NuGet (.NET), Packagist (PHP), RubyGems (Ruby), and other registries as part of the generation pipeline.

### Does Fern keep SDKs in sync with my API?

Yes. Every time you update your API definition and run `fern generate`, Fern regenerates the SDKs to reflect the latest changes. You can automate this with GitHub Actions so SDKs are always up to date.