Overview
With Server-Side Verification (SSV) for rewarded ads, Adrop sends a callback to your server URL when a user completes watching an ad. This lets you verify reward grants on your own server and prevent abuse. The callback payload is encrypted with your API key, so even if the URL is exposed, only a party holding the API key can decrypt its contents.Setup
Prepare an API key
Create an API key first — it will be used to decrypt the SSV callback payload. SSV registration requires at least one active API key in the project.See Integrations & API Keys for instructions.
Register the SSV
Under [Management] > [Integrations] > Reward Ad SSV, click [+ Register Reward Ad SSV].
| Field | Description |
|---|---|
| URL | Server URL to call when a reward is completed. Must start with https://. |
| API key | API key used to decrypt the callback payload. Defaults to the most recently created active key. |
Send userId / customData from the SDK
Set
userId and customData via setServerSideVerificationOptions() in the SDK. These values are included in the callback payload.See the SDK guides for each platform:Only HTTPS URLs are accepted at registration/edit time. Private IPs (localhost, 10.x, 172.16–31.x, 192.168.x, 169.254.x) are blocked.
Request Specification
Adrop delivers the callback as follows.| Item | Value |
|---|---|
| Method | POST |
| Content-Type | application/json |
| Retries | Up to 3 attempts (0ms / 1s / 2s intervals) |
| Timeout | 5 seconds per attempt |
| Success | HTTP 200 response |
:). After decryption, the plaintext JSON has the following shape:
| Field | Type | Description |
|---|---|---|
project | string | Adrop project ID |
app | string | Adrop app ID |
unit | string | Adrop ad unit ID |
adNetwork | string | Ad network identifier |
adUnit | string | Unit identifier within the ad network |
userId | string? | User identifier set via the SDK |
customData | string? | Custom data set via the SDK |
rewardItem | string | Reward item name |
rewardAmount | number | Reward amount |
transactionId | string | Unique transaction ID for deduplication |
timestamp | number | Callback time (Unix ms) |
transactionId is unique. If your server receives a transactionId that was already processed, handle it idempotently to avoid granting duplicate rewards.Decrypting the Payload
The AES-256-GCM key is the raw API key hashed with SHA-256 (32 bytes).Node.js
Python
Editing and Deleting
Use the row menu in the Reward Ad SSV section to edit or delete an existing SSV.- Edit: Change the URL or the connected API key.
- Delete: Callbacks will no longer be invoked. SDK-side
userId/customDatavalues continue to be stored in Adrop’s internal SSV log.
Related
Integrations & API Keys
How to generate, manage, and revoke API keys
Report API
Query campaign performance and backfill revenue data via API