> For the complete documentation index, see [llms.txt](https://docs.perkox.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.perkox.com/getting-started/sdk/sdk-overview.md).

# SDK Overview

Perkox provides native SDKs for integrating high-converting rewarded offerwalls into your mobile apps and games. Each SDK is lightweight, requires minimal code to integrate, and provides secure server-side reward validation.

***

### Available SDKs

| Platform         | Language                | Min Version             | Status      |
| ---------------- | ----------------------- | ----------------------- | ----------- |
| **Android**      | Kotlin / Java           | minSdk 21 (Android 5.0) | ✅ Available |
| **iOS**          | Swift                   | iOS 13.0+               | ✅ Available |
| **React Native** | TypeScript / JavaScript | RN 0.60+ / 0.72+        | ✅ Available |
| **Flutter**      | Dart                    | Flutter 3.0+            | ✅ Available |
| **Unity**        | C#                      | Unity 2020.3 LTS+       | ✅ Available |

***

### Quick Integration

All SDKs follow the same standard integration flow:

1. **Initialize** with your App ID, SDK Key, and a unique Player ID
2. **Launch** the offerwall when the user taps an earn or reward button
3. **Handle rewards** via server-side postback (recommended) and client-side callbacks

#### Android Example (Kotlin)

```kotlin
val offerwall = PerkoxOfferwall.create("YOUR_APP_ID", "YOUR_SDK_KEY", "Player_123")
offerwall.launch(this)
```

#### iOS Example (Swift)

```swift
let offerwall = PerkoxOfferwall.create(appId: "YOUR_APP_ID", sdkKey: "YOUR_SDK_KEY", playerId: "Player_123")
offerwall.launch(viewController: self)
```

#### React Native Example (TypeScript)

```tsx
PerkoxSDK.init({ appId: "YOUR_APP_ID", sdkKey: "YOUR_SDK_KEY", playerId: "Player_123" });
PerkoxSDK.showOfferwall();
```

#### Flutter Example (Dart)

```dart
await PerkoxSDK.init(appId: "YOUR_APP_ID", sdkKey: "YOUR_SDK_KEY", playerId: "Player_123");
await PerkoxSDK.showOfferwall();
```

#### Unity Example (C#)

```csharp
PerkoxSDK.Initialize("YOUR_APP_ID", "YOUR_SDK_KEY", "Player_123");
PerkoxSDK.ShowOfferwall();
```

***

### Important: Server-Side Reward Validation

Do **not** rely only on SDK client-side callbacks to grant rewards. SDK callbacks only work while the offerwall is active inside the app. For accurate, fraud-proof reward processing, configure a **Postback URL** in your Perkox dashboard.

**Recommended reward flow:**

```
User completes offer
→ Perkox validates conversion
→ Perkox sends secure postback to your server
→ Your backend verifies the signature & event
→ Your backend credits virtual currency to the user
```

***

### Get Your Credentials

You can find your **App ID** and **SDK Key** inside the Perkox Publisher Dashboard under your app settings.

* [Register as a publisher](https://pub.perkox.com)
* [Read the full documentation](https://docs.perkox.com)
