Complete guide to integrating our offerwall across all platforms
Visit Offery HomepageWelcome to the Offery documentation. Below you'll find everything you need to integrate our offerwall into your platform in just minutes.
Before integrating our offerwall, you must register your website to obtain your API credentials.
Access your dashboard by clicking here.
Click the Add New App button in the sidebar to register your website.
Provide your App Name, URL, and select your platform type.
Set the endpoint where we'll send completion notifications to credit users automatically.
Our adaptive offerwall displays targeted, automatically translated offers that work across all devices.
Ensure you have:
Choose between opening the offerwall in a new tab or embedding it directly in your page.
window.open("https://offery.io/offerwall/[API_KEY]/[USER_ID]");
<iframe
scrolling="yes"
frameborder="0"
src="https://offery.io/offerwall/[API_KEY]/[USER_ID]"
width="100%"
height="600"
></iframe>
These parameters are used in all integration methods:
Parameter | Description | Value |
---|---|---|
[API_KEY] | Unique API code provided when you registered your website | varchar(32) |
[USER_ID] | Unique identifier for your user | varchar(32) |
Access our complete offer inventory for server-side integration or custom implementations.
GET https://offery.io/api/?apikey=YOUR_API_KEY
Parameter | Description | Type | Example |
---|---|---|---|
countries | Filter by country codes (comma-separated) | String | us,ca,de |
offer | Filter by offer name | String | Opera GX |
device | Filter by devices (PC, Android, iOS) | String | iOS,Android |
featured | Filter featured offers (yes/no) | String | yes |
id | Filter by specific offer ID | Integer | 1234 |
GET https://offery.io/api/?apikey=YOUR_API_KEY&countries=us,de&device=iOS,Android
{
"status": "success",
"results": 123,
"data": [{
"offer": {
"id": "9529",
"name": "Offer Name",
"description": "Offer description goes here",
"requirements": "Achieve a specific target",
"image": "https://link_to_icon_image"
},
"payout": {
"usd": "4.36",
"reward": "436",
"currency": "Coins"
},
"featured": "no",
"devices": ["Android"],
"events": [
{
"name": "Install",
"payout": 0.50
},
{
"name": "Reach Level 10",
"payout": 1.17
},
{
"name": "Finish Game",
"payout": 3.09
}
],
"geo_targeting": {
"allowed_countries": ["US"],
"excluded_countries": []
},
"url": "https://offery.io/click/7o2mrg9zqmg7xewf66mbk7pek11r1v/1234/USER_ID"
}]
}
We notify your server when users complete offers through HTTP POST requests to your configured Postback URL.
Parameter | Description | Example |
---|---|---|
subId | User's unique identifier | user123 |
transId | Unique transaction ID | XX-12345678 |
offer_id | Completed offer ID | 123456 |
offer_name | Offer name | Offery - Register and Earn |
offer_type | Offer type (ptc, offer, task, shortlink) | ptc |
reward | Virtual currency amount to credit | 1.25 |
reward_name | Your currency name | Points |
reward_value | Currency units per $1 payout | 1000.00 |
payout | Offer payout in USD | 0.100000 |
userIp | User's IP address | 192.168.1.0 |
country | User's country (ISO2) | US |
status | 1 = credit, 2 = chargeback | 1 |
debug | 1 = test, 0 = live | 1 |
signature | MD5 hash for verification | 17b4e2a70d6efe9796dd4c5507a9f9ab |
Verify the signature to ensure the postback comes from our servers. The signature is an MD5 hash of:
subId + transId + reward + SECRET_KEY
<?php
$secret = ""; // Get your secret key from Offery
$subId = isset($_REQUEST['subId']) ? $_REQUEST['subId'] : null;
$transId = isset($_REQUEST['transId']) ? $_REQUEST['transId'] : null;
$reward = isset($_REQUEST['reward']) ? $_REQUEST['reward'] : null;
$signature = isset($_REQUEST['signature']) ? $_REQUEST['signature'] : null;
// Validate Signature
if(md5($subId.$transId.$reward.$secret) != $signature) {
echo "ERROR: Signature doesn't match";
return;
}
?>
<?php
$secret = ""; // Get your secret key from Offery
// Get postback variables
$userId = $_REQUEST['subId'] ?? null;
$transId = $_REQUEST['transId'] ?? null;
$reward = $_REQUEST['reward'] ?? null;
$reward_name = $_REQUEST['reward_name'] ?? null;
$reward_value = $_REQUEST['reward_value'] ?? null;
$offer_id = $_REQUEST['offer_id'] ?? null;
$offer_name = $_REQUEST['offer_name'] ?? null;
$offer_type = $_REQUEST['offer_type'] ?? null;
$payout = $_REQUEST['payout'] ?? null;
$ipuser = $_REQUEST['userIp'] ?? "0.0.0.0";
$country = $_REQUEST['country'] ?? null;
$status = $_REQUEST['status'] ?? null;
$debug = $_REQUEST['debug'] ?? null;
$signature = $_REQUEST['signature'] ?? null;
// Validate signature
if(md5($userId.$transId.$reward.$secret) != $signature) {
echo "ERROR: Signature doesn't match";
return;
}
// Handle chargebacks
if($status == 2) {
$reward = -abs($reward);
}
// Check if transaction is new
if(isNewTransaction($transId)) {
// Process the transaction
processTransaction($userId, $reward, $transId);
}
echo "ok"; // Required response
?>