Choose the integration that fits where your code runs. Server libraries and browser or app SDKs use different credentials:
- Server libraries run on your server. They call the
/v1API athttps://api.kirora.iowith an API key, as a thin layer over the same operations. - App and web SDKs run in your users’ browsers and apps. They record what each signed-in user does, with a public client key and a user token your server signs. They never use an API key.
Server libraries
| Library | Language | Package | Status |
|---|---|---|---|
| Node.js | TypeScript | @kirora/node (not yet published) |
Preview (reference implementation) |
| React builders | React | @kirora/react (not yet published) |
Preview, partner accounts only |
| CLI | Shell | @kirora/cli (not yet published) |
Preview |
| Python | Python | To be announced | Planned |
| Go | Go | To be announced | Planned |
| .NET | C# | To be announced | Planned |
| PHP | PHP | To be announced | Planned |
| Java | Java | To be announced | Planned |
App and web SDKs
| SDK | Platform | Package | Status |
|---|---|---|---|
| Web | Browsers | @kirora/web (not yet published) |
Preview |
| iOS | Swift | To be announced | Planned |
| Android | Kotlin | To be announced | Planned |
| React Native | TypeScript | To be announced | Planned |
| Flutter | Dart | To be announced | Planned |
The app SDKs share the web SDK’s interface: the same options, methods and behaviour in each language.
What to use today
None of the server libraries is on a package registry yet, so for production code today, call the HTTP API directly. Every request is JSON over HTTPS to https://api.kirora.io, with your key as Authorization: Bearer $KIRORA_API_KEY. See Authentication, Errors, Pagination and Idempotency. To track an event with curl:
curl https://api.kirora.io/v1/events/track \
-H "Authorization: Bearer $KIRORA_API_KEY" \
-H "Idempotency-Key: order-1042-completed" \
-H "Content-Type: application/json" \
-d '{"externalId":"cust_1042","eventName":"Order Completed","properties":{"total":42.5,"currency":"USD"}}'
Without a library, handle these yourself: retry a 429 always, and a 5xx or connection failure only when the call is safe to repeat, with jittered backoff; fix each Idempotency-Key before the first attempt; stop paginating when nextCursor is null; and verify webhook signatures against the raw body.
The server library contract
The Node.js library is the reference implementation, and every official server library copies its shape: one namespace per API tag and one method per operationId, a single error type carrying the API’s code, bounded retries with jitter, auto-paginating iterators, caller-supplied idempotency keys, and a constant-time webhook verifier. The full list is in SDK conformance.
For AI assistants rather than code, connect to the hosted MCP server instead; see Agents.