Typed SDKs for your stack. Same wire, same behavior.
Idiomatic clients that handle authentication, retries, and telemetry for you. Full coverage of the public OpenApp API, generated from the same contract that powers the reference — so the types in your code match the wire, always.
Available SDKs
All SDKs share the same wire contract, error model, and authentication scheme as the public OpenApp API.
Async-first client (AsyncClient)
plus a synchronous facade (Client),
typed via py.typed,
with optional Pydantic v2 integration.
- Prebuilt wheels for Linux, macOS, and Windows
- Pure-Python fallback for exotic platforms
- Full OpenAPI coverage (15 resource groups)
More languages are on the way. Under active consideration:
- Go
- TypeScript / Node
- .NET (C#)
- Ruby
Need another language? Tell us which one.
What you get
Every OpenApp SDK is designed around the same principles, so you can reach for whichever language fits your stack without giving up ergonomics or safety.
- Batteries includedAuthentication, automatic retries with backoff, and structured telemetry are handled for you out of the box.
- Typed, always currentIdiomatic types for every resource and response, generated from the same contract that powers our API reference — so your editor's autocomplete is never behind the API.
- Consistent across languagesThe same authentication, retry, and error-handling behavior across every official SDK. Learn one, know them all.
from openapp_sdk import Client
from openapp_sdk.errors import ApiError
client = Client.connect(api_key="https://api.openapp.house/api/v1_openapp_YOUR_SECRET")
try:
whoami = client.auth.whoami()
print(whoami["email"])
for org in client.orgs.list():
print(org["id"], org["name"])
except ApiError as err:
print(f"{err.status} {err.code}: {err.message}")
Ready to build?
Grab an API key from the dashboard, install the SDK, and you're shipping. Questions, roadmap feedback, or want early access to a new language binding? Get in touch.