# SDKs

The DIDWW OTP Verification SDKs let you call the [Verification
API](../api-reference/index.html#otp-verification-api-reference) from your language of choice without hand-rolling HTTP
requests. Each SDK wraps the verification endpoints and handles
[authentication](../authentication.html#otp-verification-authentication), so you can work with native objects and
methods instead
of raw JSON and headers.

Note

- **Server-side** SDKs support every authentication mode, including HMAC request signing, and
  can verify inbound [callback](../callbacks.html#otp-verification-callbacks) signatures.
- **On-device** SDKs omit the signed `application` mode because a signing secret must never be
  included in an app. They use the `public` mode, where your backend authorizes each start
  request through a callback.

---

## Available SDKs

| SDK | Status | Notes |
| --- | --- | --- |
| [Ruby](ruby.html#otp-verification-sdk-ruby) | Available | Server-side. Supports start, report, status, all auth modes, and callback verification. |
| [Python](python.html#otp-verification-sdk-python) | Available | Server-side. Supports start, report, status, all auth modes, and callback verification. Synchronous and asynchronous clients, fully typed. |
| [Node.js](node.html#otp-verification-sdk-node) | Available | Server-side. Supports start, report, status, all auth modes, and callback verification. No third-party dependencies. |
| [PHP](php.html#otp-verification-sdk-php) | Available | Server-side. Supports start, report, status, all auth modes, and callback verification. Built on Guzzle 7, with PSR-7 callback support. |
| [Android](android.html#otp-verification-sdk-android) | Available | On-device Kotlin SDK. Supports start and submit for SMS and phone call, with a `Flow` state machine, typed errors, and automatic SMS code capture. |
| [iOS](ios.html#otp-verification-sdk-ios) | Available | On-device SDK. Supports start, submit, and status by verification ID or by number, with `async`/`await` and typed errors. |
| [React Native](react-native.html#otp-verification-sdk-react-native) | Available | On-device SDK. One `useVerification()` hook drives the whole flow, with a state machine, typed errors, and automatic SMS code capture on Android. |
| [Dart and Flutter](dart.html#otp-verification-sdk-dart) | Available | Pure Dart client plus a `Stream` state machine, and an optional Flutter plugin for automatic SMS code capture on Android. No dependencies. |

Note

You can integrate directly with the [REST API](../api-reference/index.html#otp-verification-api-reference) when
you need a custom setup or a platform-specific SDK is not available. The
[Authentication](../authentication.html#otp-verification-authentication) guide includes a reference signing
example that you can adapt for your own integration.

On this page
