Awesome
<div align="center"> <a href="https://www.speakeasy.com/" target="_blank"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/21dd5d3a-aefc-4cd3-abee-5e17ef1d4dad"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/0a747f98-d228-462d-9964-fd87bf93adc5"> <img width="100px" src="https://github.com/user-attachments/assets/21dd5d3a-aefc-4cd3-abee-5e17ef1d4dad#gh-light-mode-only" alt="Speakeasy"> </picture> </a> <h1>Speakeasy</h1> <p>Build APIs your users love ❤️ with Speakeasy</p> <div> <a href="https://speakeasy.com/docs/create-client-sdks/" target="_blank"><b>Docs Quickstart</b></a> // <a href="https://join.slack.com/t/speakeasy-dev/shared_invite/zt-1cwb3flxz-lS5SyZxAsF_3NOq5xc8Cjw" target="_blank"><b>Join us on Slack</b></a> </div> <br /> </div> <hr /> <div align="left"> <h4><b>Trusted By:</b></h4> <h4> <p> <a href="https://github.com/vercel/sdk" target="_blank" margin-right="20px"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/a6feb0ff-6cb4-406f-9797-246dcbd7ae01"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/e5096709-2a50-4010-a719-d5f4c84a7279"> <img width="200px" src="https://github.com/user-attachments/assets/a6feb0ff-6cb4-406f-9797-246dcbd7ae01#gh-light-mode-only" alt="Vercel"> </picture> </a> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/c160c3e7-22f8-4523-9e25-0df1802fd6fe"> <img height="80" src="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758#gh-light-mode-only" alt="Line"> </picture> <a href="https://github.com/mistralai/client-python" target="_blank"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/2f7d466c-864e-4a42-aa7e-e9c251dec211"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/29bd2611-92f4-44fe-91d5-78e6781ca6c2"> <img width="200px" src="https://github.com/user-attachments/assets/2f7d466c-864e-4a42-aa7e-e9c251dec211#gh-light-mode-only" alt="Mistral"> </picture> </a> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/c160c3e7-22f8-4523-9e25-0df1802fd6fe"> <img height="80" src="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758#gh-light-mode-only" alt="Line"> </picture> <a href="https://github.com/clerk/clerk-sdk-python" target="_blank"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/b0351caf-bc9a-4f25-8eac-4e8f8bf0e078"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/2b0631bf-f2d0-436b-b008-fcabbb134d50"> <img width="200px" src="https://github.com/user-attachments/assets/b0351caf-bc9a-4f25-8eac-4e8f8bf0e078#gh-light-mode-only" alt="Clerk"> </picture> </a> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/c160c3e7-22f8-4523-9e25-0df1802fd6fe"> <img height="80" src="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758#gh-light-mode-only" alt="Line![fireworks-git](https://github.com/user-attachments/assets/26e80c87-c53c-4531-a607-cc78646bfdd7) "> </picture> <a href="https://fireworks.ai/" target="_blank"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/eb4327bc-91fc-4195-b68f-399712d4a24d"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/abb4c770-ab92-4595-81b0-a4736fb14b72"> <img width="200px" src="https://github.com/user-attachments/assets/eb4327bc-91fc-4195-b68f-399712d4a24d#gh-light-mode-only" alt="Fireworks"> </picture> </a> </p> <a href="https://speakeasy.com/customers"><p> Full showcase → </p></a> </h4> </div>Generate Polished and Type-Safe Client Libraries
<p>Use Speakeasy to generate idiomatic, type-safe SDKs your users will love. 9 Languages and counting.</p> <a href="https://app.speakeasy.com/"><img src="https://custom-icon-badges.demolab.com/badge/-Start%20Generating%20-212015?style=for-the-badge&logoColor=FBE331&logo=speakeasy&labelColor=545454" alt="Start Generating"/></a> <a href="https://youtu.be/-cSZGUvT5-8?si=VwJBPcOGq0g2R4cI"><img src="https://img.shields.io/static/v1?label=Docs&message=Watch Demo&color=000&style=for-the-badge" alt="Watch Demo" /></a> <div align="left"> <h1> <p> <a href="https://www.speakeasy.com/docs/sdk-design/typescript/methodology-ts" target="_blank" margin-right="20px"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/6c36bce3-34cf-4b68-b6e9-bd1522dfc8bf"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/6c36bce3-34cf-4b68-b6e9-bd1522dfc8bf"> <img width="100px" src="https://github.com/user-attachments/assets/6c36bce3-34cf-4b68-b6e9-bd1522dfc8bf#gh-light-mode-only" alt="Scalar API Reference"> </picture> </a> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/c160c3e7-22f8-4523-9e25-0df1802fd6fe"> <img height="80" src="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758#gh-light-mode-only" alt="Scalar API Reference"> </picture> <a href="https://www.speakeasy.com/docs/sdk-design/python/methodology-python" target="_blank"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/34a57c5b-e81d-4238-a1a4-2f1289630599"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/34a57c5b-e81d-4238-a1a4-2f1289630599"> <img width="100px" src="https://github.com/user-attachments/assets/34a57c5b-e81d-4238-a1a4-2f1289630599#gh-light-mode-only" alt="Python"> </picture> </a> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/c160c3e7-22f8-4523-9e25-0df1802fd6fe"> <img height="80" src="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758#gh-light-mode-only" alt="Scalar API Reference"> </picture> <a href="https://www.speakeasy.com/docs/sdk-design/golang/methodology-go" target="_blank"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/7be9379e-d3ae-44f7-afd0-a9fee526d402"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/7be9379e-d3ae-44f7-afd0-a9fee526d402"> <img width="100px" src="https://github.com/user-attachments/assets/7be9379e-d3ae-44f7-afd0-a9fee526d402#gh-light-mode-only" alt="Golang"> </picture> </a> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/c160c3e7-22f8-4523-9e25-0df1802fd6fe"> <img height="80" src="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758#gh-light-mode-only" alt="Scalar API Reference"> </picture> <a href="https://www.speakeasy.com/docs/create-terraform" target="_blank"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/7899cbd5-13c0-445e-b4ca-429fd2259477"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/7899cbd5-13c0-445e-b4ca-429fd2259477"> <img width="100px" src="https://github.com/user-attachments/assets/7899cbd5-13c0-445e-b4ca-429fd2259477#gh-light-mode-only" alt="Terraform"> </picture> </a> </p> <p> <a href="https://www.speakeasy.com/docs/sdk-design/java/methodology-java" target="_blank" margin-right="20px"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/9cc5a8d8-ce16-487d-9033-db4b364323cb"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/9cc5a8d8-ce16-487d-9033-db4b364323cb"> <img width="100px" src="https://github.com/user-attachments/assets/9cc5a8d8-ce16-487d-9033-db4b364323cb#gh-light-mode-only" alt="Java"> </picture> </a> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/c160c3e7-22f8-4523-9e25-0df1802fd6fe"> <img height="100px" src="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758#gh-light-mode-only" alt="Line"> </picture> <a href="https://www.speakeasy.com/docs/sdk-design/csharp/methodology-csharp" target="_blank"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/1f5c4a9c-f841-4c56-8d3c-bcb43ac4eef7"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/1f5c4a9c-f841-4c56-8d3c-bcb43ac4eef7"> <img width="100px" src="https://github.com/user-attachments/assets/1f5c4a9c-f841-4c56-8d3c-bcb43ac4eef7#gh-light-mode-only" alt="Csharp"> </picture> </a> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/c160c3e7-22f8-4523-9e25-0df1802fd6fe"> <img height="100px" src="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758#gh-light-mode-only" alt="Line"> </picture> <a href="https://www.speakeasy.com/docs/sdk-design/php/methodology-php" target="_blank"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/15f6a6c7-eb71-466c-bbaa-d7a974a25b5c"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/15f6a6c7-eb71-466c-bbaa-d7a974a25b5c"> <img width="100px" src="https://github.com/user-attachments/assets/15f6a6c7-eb71-466c-bbaa-d7a974a25b5c#gh-light-mode-only" alt="PHP"> </picture> </a> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/c160c3e7-22f8-4523-9e25-0df1802fd6fe"> <img height="100px" src="https://github.com/user-attachments/assets/a7e32045-a53a-433a-908f-1f5338b17758#gh-light-mode-only" alt="Line"> </picture> <a href="https://www.speakeasy.com/docs/sdk-design/ruby/methodology-ruby" target="_blank"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/c01f4d21-c05a-4d77-a65a-c7f4e72b1993"> <source media="(prefers-color-scheme: dark)" srcset="https://github.com/user-attachments/assets/c01f4d21-c05a-4d77-a65a-c7f4e72b1993"> <img width="100px" src="https://github.com/user-attachments/assets/c01f4d21-c05a-4d77-a65a-c7f4e72b1993#gh-light-mode-only" alt="Ruby"> </picture> </a> </p> </h1> </div> <h2> <p>How it works</p> <picture> <img src="https://github.com/user-attachments/assets/50a87bdc-5109-46a9-a1b5-082a2b26435e" alt="Speakeasy Workflow"> </picture> </a> </h2>Features
- SDK code that looks you wrote it. Optimised for performance, debuggability and modern idiomatics.
- Complete Terraform Providers built on a Type-safe Go SDK.
- Contract Test generation with a pre built mock-server (Powered by Arazzo)
- Generate clean code-samples for syncing with API docs.
- Make
npm install your-api
. Manage versioning and publishing to package managers - Modern OpenAPI 3.X toolchain for linting, cleaning, diff-ing and editing specs. (Powered by Overlays)
Check out the roadmap for whats coming up soon!
CLI installation
Homebrew (macOS and Linux)
brew install speakeasy-api/homebrew-tap/speakeasy
Script (macOS and Linux)
curl -fsSL https://raw.githubusercontent.com/speakeasy-api/speakeasy/main/install.sh | sh
winget (Windows)
winget install speakeasy
Chocolatey (Windows)
choco install speakeasy
Manual installation
Download the latest release for your platform from the releases page, extract, and add the binary to your path.
Keeping up to date
The CLI will warn you if you're running an outdated version. To update the CLI run:
speakeasy update
Common CLI commands
Command | Description |
---|---|
auth | Log in & out of your organization's workspace. |
quickstart | Create an idiomatic client SDK or target, such as a Terraform Provider, from your API specs. |
run | Regenerate existing SDK/target from your API specs. |
lint | Validate the correctness of your API specs. speakeasy run also includes a validation step before generation. |
suggest | Use an LLM to autocorrect your spec validation failures. |
merge | Work with your existing documentation workflows by merging your API specs into a single spec. |
status | Review all SDK/targets in current workspace. |
Community
We love chatting about OpenAPI and API Design. Come chat with us on slack.