SDKs
Orbit ships two SDKs in active development today (Node.js, Web). The remaining six (Python, Go, PHP, Ruby, Java, .NET) are on the roadmap but have not been published to any package registry. When they ship, every SDK will share the same auth model (X-API-Key), retry policy
(3 attempts on 429/5xx with exponential backoff), idempotency contract
(auto-generated Idempotency-Key on every non-GET), and webhook
verification format (t=<unix_ts>,v1=<hex_hmac> HMAC-SHA256, 5-minute
replay window).
Pre-launch — no SDK is currently published to a public registry.
Until first publish, the Node + Web SDK source lives in the monorepo
under
packages/sdk-node/ and packages/sdk-web/. Install commands
here describe the future registry shapes — not the current reach
(every public registry probe today returns 404). The remaining six
languages are roadmap.Available today (workspace source)
Node.js / TypeScript
Source:
packages/sdk-node/ — package name @devotel/orbit-sdk.
Hand-written, fully typed. Node 18+.
Status: GA (workspace, pre-publish).Web (browser)
Source:
packages/sdk-web/ — package name @devotel/orbit-web-sdk.
Embeddable chat widget + inbound APIs.
Status: GA (workspace, pre-publish).On the roadmap
The six languages below are tracked targets — no public registry entry exists for any of them today. Do not attempt to install; the cited package names describe the future coordinates and may change before first publish.
Once each lands on its registry, the per-language Mintlify subpage
(
/sdks/node, /sdks/web, …) will carry the production install
command, version pin, and per-language quickstart. The codegen pipeline
that drives this lives at tools/sdk-codegen/README.md.
Common patterns across languages
Authentication
Every SDK authenticates with anX-API-Key. The GA Node SDK exposes a
single constructor — new Orbit({ apiKey }) (alias new Devotel({ apiKey }))
— and you pass your own env var (e.g. process.env.ORBIT_API_KEY); the Web
surfaces take a publicKey instead. There is no fromApiKey() static
or from_env() helper on the GA SDKs today — those are roadmap-language for
the codegen’d clients, so the From env column below is marked Roadmap
on every row that lists one.
The GA Node and Web rows have no
fromApiKey/env-reading helper — only
the constructor shown in the Direct column.
Webhook verification
Webhook verification is server-side only — the Web SDK does not expose a verifier (browser surfaces never receive inbound webhooks). Each server-side SDK exposes a one-call verifier that returns the decoded event on success or throwsOrbitWebhookSignatureError on any failure (malformed header, expired
timestamp, signature mismatch, invalid JSON):
- Node (GA):
Orbit.webhooks.constructEvent(body, signature, secret) - Python (Roadmap):
verify_webhook(payload=..., signature=..., secret=...) - Go (Roadmap):
orbit.VerifyWebhook(body, header, secret, 0, time.Time{}) - PHP (Roadmap):
Webhooks::verify(payload: ..., signature: ..., secret: ...) - Ruby (Roadmap):
OrbitSdk::Webhooks.verify(payload:, signature:, secret:) - Java (Roadmap):
Webhooks.verify(body, signature, secret) - C# (Roadmap):
Webhooks.Verify(payload, signature, secret)
Error hierarchy
Every SDK exposes the same error tree:OrbitApiError(base) → catch this to handle any non-2xx API response. Carriescode,statusCode(aliased asstatus),details,docsUrl, andrequestId, plusisRateLimited/isClientError/isServerErrorgetters.OrbitAuthError— 401/403 (bad API key or missing scope).OrbitNotFoundError— 404 (resource doesn’t exist or isn’t visible).OrbitRateLimitError— 429. Check theRetry-Afterheader (also surfaced indetails) to decide when to retry.OrbitValidationError— 400/422 (request body failed server-side validation).OrbitServerError— 5xx after retries exhausted, or persistent network failure.OrbitWebhookSignatureError— webhook verification failed. Carries acodeof'bad_signature' | 'expired' | 'malformed'. ExtendsError, notOrbitApiError, so a broadcatch (OrbitApiError)block can’t accidentally swallow + retry forgeries.
Operator: publishing checklist
Seetools/sdk-codegen/README.md for the per-registry publish commands.
Pre-launch, the SDKs are committed source-only; first publish to each
registry is an operator action.