Offery Documentation

Complete guide to integrating our offerwall across all platforms

Visit Offery Homepage

Getting Started

Welcome to the Offery documentation. Below you'll find everything you need to integrate our offerwall into your platform in just minutes.

Prerequisites

Add Your Website

Before integrating our offerwall, you must register your website to obtain your API credentials.

1
Log in to your Offery account

Access your dashboard by clicking here.

2
Add a new application

Click the Add New App button in the sidebar to register your website.

3
Configure basic settings

Provide your App Name, URL, and select your platform type.

4
Set up your virtual currency
  • Currency Name: The name of your virtual currency (e.g., Points, Tokens)
  • Currency Round: Number of decimal places (up to 2)
  • Exchange Rate: Your currency units per 1 USD payout
5
Configure Postback URL

Set the endpoint where we'll send completion notifications to credit users automatically.

Note: Our team reviews all new applications. You'll receive an approval email, but can begin integration immediately using your temporary API keys.

Integrate Offerwall

Our adaptive offerwall displays targeted, automatically translated offers that work across all devices.

Before You Begin

Ensure you have:

Website Integration

Choose between opening the offerwall in a new tab or embedding it directly in your page.

JavaScript Integration (New Tab)

window.open("https://offery.io/offerwall/[API_KEY]/[USER_ID]");

iFrame Integration (Embedded)

<iframe 
    scrolling="yes" 
    frameborder="0" 
    src="https://offery.io/offerwall/[API_KEY]/[USER_ID]"
    width="100%"
    height="600"
></iframe>
Remember: Replace [API_KEY] with your website API key and [USER_ID] with your user's unique identifier.

Offerwall Parameters

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)

Offers API

Access our complete offer inventory for server-side integration or custom implementations.

API Endpoint

GET https://offery.io/api/?apikey=YOUR_API_KEY

Optional Parameters

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

Example Request

GET https://offery.io/api/?apikey=YOUR_API_KEY&countries=us,de&device=iOS,Android

Example Response

{
    "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"
    }]
}
Best Practice: Call this API periodically from your backend (e.g., every 5 minutes) to get fresh offers. Avoid making requests from client-side code.

S2S Postback

We notify your server when users complete offers through HTTP POST requests to your configured Postback URL.

Postback Parameters

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
Important: The "reward" and "payout" parameters are absolute values. Check the "status" parameter to determine whether to add or subtract the amount.

Postback Security

Verify the signature to ensure the postback comes from our servers. The signature is an MD5 hash of:

subId + transId + reward + SECRET_KEY

PHP Verification Example

<?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;
  }
?>

Complete PHP Postback Example

<?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
?>
Response Requirement: Our servers expect your postback endpoint to respond with "ok". Any other response will be marked as failed.