SDKs

One SDK per platform, all speaking the same small REST contract. Pick yours:

SDKPlatformGuide
SwiftiOS 15+ appsiOS SDK
KotlinAndroid appsAndroid SDK
React NativeiOS + Android from one codebaseReact Native SDK
FlutteriOS + Android from one codebaseFlutter SDK
WebBrowser — landing pages & SaaS frontendsWeb SDK
NodeServer-side — SaaS backends & Stripe pairingNode SDK

What every SDK does

The surface is identical everywhere, so switching platforms is a rename:

  • configure — set your SDK key + API base URL once at startup.
  • attribute(url) — parse a claim_token (or ct) query param from an incoming link and claim the click.
  • applyCode(code) — manual referral-code attribution ("LUMI") — works with zero deep-link setup.
  • identify(userId) — bind your user id to the attribution. Use the same id your billing layer sees (RevenueCat app_user_id, Stripe metadata.customer_user_id).
  • attributedAffiliateId() — the persisted affiliate id from the install response, for passing into RevenueCat / Adapty subscriber attributes.

Every SDK persists a stable generated device id, and every network failure is silent-safe — calls return false/null and never crash the host app.

The underlying REST contract is two endpoints: see POST /sdk/install and POST /sdk/identify.