📘 Public beta · Endpoints are stable; OpenAPI specs and SDKs ship monthly. See changelog →
Getting started
Client libraries

Client libraries

Official client libraries handle authentication, retries, rate-limiting, webhook verification, and TypeScript-grade typing for every endpoint.

LanguagePackageStatusRepo
TypeScript@quantum-elixir/sdkStablegithub.com/quantum-elixir-tech/sdk-typescript
Pythonquantum-elixirStablegithub.com/quantum-elixir-tech/sdk-python
Gogithub.com/quantum-elixir-tech/sdk-goStablegithub.com/quantum-elixir-tech/sdk-go
Java / Kotlintech.quantumelixir:sdkBetagithub.com/quantum-elixir-tech/sdk-java
.NETQuantumElixir.SdkBetagithub.com/quantum-elixir-tech/sdk-dotnet
Rubyquantum-elixirCommunitygithub.com/quantum-elixir-tech/sdk-ruby
PHPquantum-elixir/sdkCommunitygithub.com/quantum-elixir-tech/sdk-php

Mobile

PlatformPackageStatusUsed by
React Native (iOS/Android)@quantum-elixir/device-sdk-rnStableAnti-Fraud Platform — device intelligence + attestation
iOS SwiftQuantumElixirIdentityStableIdentity Platform — KTP capture + face liveness
Android Kotlintech.quantumelixir:identity-androidStableIdentity Platform — KTP capture + face liveness
Flutterquantum_elixir_identityBetaIdentity Platform — wraps native KTP capture

Quick install

TypeScript

npm install @quantum-elixir/sdk
import { QuantumElixir } from '@quantum-elixir/sdk';
 
const qe = new QuantumElixir({ apiKey: process.env.QE_API_KEY! });
 
const customer = await qe.identity.customers.create({
  fullName: 'Budi Santoso',
  nik: '3201234567890001',
});

Python

pip install quantum-elixir
from quantum_elixir import QuantumElixir
 
qe = QuantumElixir(api_key=os.environ["QE_API_KEY"])
 
customer = qe.identity.customers.create(
    full_name="Budi Santoso",
    nik="3201234567890001",
)

Go

go get github.com/quantum-elixir-tech/sdk-go
client := quantumelixir.New(os.Getenv("QE_API_KEY"))
customer, _ := client.Identity.Customers.Create(ctx, &quantumelixir.CustomerCreate{
    FullName: "Budi Santoso",
    NIK:      "3201234567890001",
})

What the SDKs do for you

  • Auth — sets the Authorization header from the constructor.
  • Retries — exponential backoff with jitter on 429/5xx. Configurable.
  • Rate-limit headers — surfaces X-RateLimit-Remaining so you can throttle proactively.
  • Webhook verificationqe.webhooks.verify(body, signature, secret) does the HMAC dance.
  • Streaming — for endpoints that stream (LLM completions in AI Automation), exposes an async iterator.
  • Typed errors — typed exceptions per status code (QuantumElixirValidationError, QuantumElixirRateLimitError, etc.).
  • Pagination helpersfor await (const c of qe.identity.customers.list()) auto-pages.

Versioning

SDKs follow semver. Major versions bump only for breaking API changes; we hold breaking changes for at least 12 months and deprecate loudly first (see Changelog).

The SDK pins to a wire-protocol version automatically — you don't have to set an API version header by hand.

Rolling your own

If you'd rather call the REST API directly (no SDK), everything you need is on Authentication, Errors, Webhooks, and each product's reference pages. The OpenAPI specs at /api-reference let you generate a typed client in any language.