docs

SDK configuration

Every PasspointConfig option, and what to pass to <PasspointProvider>.

The SDK is configured once, at app startup, via <PasspointProvider> (React) or PasspointSDK.configure() (imperative).

<PasspointProvider
  config={{
    apiKey: process.env.EXPO_PUBLIC_HELIUM_WIFI_API_KEY!,
    environment: 'production',
    keychainAccessGroup: 'PVM9KJZ2AD.com.apple.networkextensionsharing',
  }}
>
  <App />
</PasspointProvider>

PasspointConfig

FieldRequiredTypeDefaultNotes
apiKeyyesstringPartner API key. Sent as X-Helium-P-API-Key.
environmentnostring'production'One of 'production', 'staging', 'development', or a custom base URL.
keychainAccessGroupiOS yesstring<TEAM_ID>.com.apple.networkextensionsharing. Required for profile installation on iOS.
eapTypenoEapTypeEapType.TLSEapType.TLS (13), EapType.TTLS (21), or EapType.PEAP (25). Most partners stay on TLS.
serverCaCertPemnostring (PEM)bundled ISRG X1Override the bundled CA when peering against custom RADIUS infrastructure.
presetIdnostring (UUID)Required only if your partner account has multiple EAP-TLS presets.

Environment shorthands

// Production (default)
{ apiKey: 'pk_xxx' }

// Development
{ apiKey: 'pk_xxx', environment: 'development' }

// Staging
{ apiKey: 'pk_xxx', environment: 'staging' }

// Custom (must end at /api/inventory/v1, no trailing endpoint)
{ apiKey: 'pk_xxx', environment: 'https://your-api.example.com/api/inventory/v1' }

Which environments are published, and why a profile installed against one can't authenticate against another, is covered in environments.

Custom server CA

If you've agreed with Helium to use your own RADIUS infrastructure with a different CA, supply the PEM bytes:

{
  apiKey: 'pk_xxx',
  serverCaCertPem: '-----BEGIN CERTIFICATE-----\n...\n-----END CERTIFICATE-----',
}

Preset ID

Most partners have a single EAP-TLS preset and can leave presetId unset. If your account has several, pass the UUID of the one each install should use:

{ apiKey: 'pk_xxx', presetId: '7c9e6679-7425-40de-944b-e07fc1f90ae7' }

One provider per process. Mounting two <PasspointProvider>s with different configs is unsupported; the SDK keeps a singleton internally.

Imperative form

For non-React usage:

import { PasspointSDK } from '@helium/passpoint-sdk';

const sdk = PasspointSDK.configure({
  apiKey: 'pk_xxx',
  environment: 'production',
});

await sdk.install('sub-123');

Subsequent PasspointSDK.getInstance() calls return the same instance.

Next

Use the SDK