Introduction to Affike

Welcome to the Affike documentation. Here you will find all required information to integrate our offerwall into your website or app in just a few minutes.

Before moving forward:Ensure you're registered on Affike. An account is required to use any of our tools.

Add your Placement

In order to integrate our Affike Offerwall, first you have to add your app/website placement. Once you have your placement approved, you will have an API KEY and a SECRET KEY that you will need to integrate our Offerwall.

Steps to add your placement

  1. 1

    Login or Signup your account with Affike

  2. 2

    Go to your Publisher Dashboard and click on "Placements"

  3. 3

    Click "Create Placement" and fill up the form

  4. 4

    Allow us up to 24 hours to check your placement request

    Within 24 hours, your account will be approved by our team. After that, make sure to add your postback and reward configs (Exchange Rate, Currency Name, etc.)

After approval: You can either use iFrame or Offers API to access our offers. We advise you to use iFrame if you run a simple Rewarding Platform, otherwise go with Offers API.

Website Integration

If you are looking to integrate the offerwall into your website, either open the offerwall in a new tab or show the offerwall in an iframe.

JavaScript Integration

Open the offerwall in a new browser tab:

window.open("https://affike.com/offerwall/[API_KEY]/[USER_ID]")

iFrame Integration

Embed the offerwall directly in your page:

<iframe 
  src="https://affike.com/offerwall/[API_KEY]/[USER_ID]"
  width="100%"
  height="600"
  frameborder="0"
  scrolling="yes">
</iframe>

Parameters

https://affike.com/track/click?offer_id=OFFER_ID&click_id=YOUR_TRACKER_CLICK_ID
  • [API_KEY] - Your unique API key from the Publisher Dashboard
  • [USER_ID] - The unique identifier of the user viewing the offerwall

Optional Parameters

You can pass additional parameters to customize the offerwall experience:

https://affike.com/offerwall/[API_KEY]/[USER_ID]?subid=[SUBID]&country=[COUNTRY]
  • subid - Custom tracking parameter for your analytics
  • country - Filter offers by country (ISO 3166-1 alpha-2)

Publisher API reference

Integrate, observe, and troubleshoot every event

All endpoints use your publisher credentials. Keep API keys server-side, validate status codes, and treat transaction IDs as idempotency keys.

GET/api/offerwall/offers200 · 401 · 500

Returns available offers for a publisher placement.

fetch("/api/offerwall/offers?apiKey=YOUR_API_KEY")
  .then((response) => response.json())
GET/api/publisher/stats200 · 401 · 500

Returns clicks, conversions, earnings, approval rate, and date-range performance.

GET /api/publisher/stats?startDate=2026-01-01&endDate=2026-01-31&status=approved&country=US
GET/api/publisher/payment-data200 · 401 · 500

Returns balances, payout schedule, payment methods, and payment history.

POST/api/track/postback200 · 400 · 409 · 500

Receives conversion events and records postback delivery. Use transaction_id to prevent duplicate credits.

POST /api/track/postback
Content-Type: application/json

{
  "transaction_id": "txn_123",
  "click_id": "click_456",
  "payout": 4.25,
  "status": "approved",
  "signature": "HMAC_SIGNATURE"
}
GET/api/track/click302 · 400 · 404

Creates a click record and redirects the visitor to the configured offer destination.

GET/api/publisher/payment-data200 · 401 · 500

Use this endpoint to populate your payment center and verify payout readiness.

Postback Setup

Configure your server-to-server postback URL to receive conversion notifications and reward your users automatically.

Postback URL Format

We will send a GET request to your postback URL with the following parameters:

https://yoursite.com/postback?user_id={user_id}&click_id={publisher_click_id}&payout={payout}&offer_id={offer_id}&transaction_id={transaction_id}&signature={signature}

Available Macros

MacroDescription
{user_id}The user ID you passed in the offerwall URL
{publisher_click_id}Your original click ID passed on the tracking link, echoed back for reconciliation
{payout}The payout amount for this conversion
{offer_id}The unique offer identifier
{offer_name}The name of the completed offer
{transaction_id}Unique transaction ID for this conversion
{subid}Your custom subid if provided
{signature}HMAC signature for security verification
{ip}User's IP address

Response Codes

Your server should respond with one of the following:

  • 200 OK - Conversion processed successfully
  • 400 Bad Request - Invalid parameters
  • 409 Conflict - Duplicate transaction

API status and delivery rules

200 / 302

Request accepted or click redirect completed.

400 / 401 / 404

Validate parameters, credentials, endpoint, and placement state.

409

Duplicate transaction. Do not credit the user twice.

500

Retry with exponential backoff and inspect the response log.

Postback troubleshooting: confirm HTTPS, verify the signature, preserve transaction IDs, return a 2xx response quickly, and review the dedicated Publisher Postbacks workspace for the resolved URL and response details.

Security

Verify postback authenticity using the signature parameter to prevent fraud.

Signature Verification

The signature is generated using HMAC-SHA256 with your Secret Key:

// PHP Example
$secret_key = "YOUR_SECRET_KEY";
$string_to_sign = $user_id . $payout . $transaction_id;
$expected_signature = hash_hmac('sha256', $string_to_sign, $secret_key);

if ($signature === $expected_signature) {
    // Valid postback - process the conversion
} else {
    // Invalid signature - reject the request
}
// Node.js Example
const crypto = require('crypto');

const secretKey = "YOUR_SECRET_KEY";
const stringToSign = user_id + payout + transaction_id;
const expectedSignature = crypto
  .createHmac('sha256', secretKey)
  .update(stringToSign)
  .digest('hex');

if (signature === expectedSignature) {
  // Valid postback - process the conversion
} else {
  // Invalid signature - reject the request
}

Important: Always verify the signature before crediting users. Never expose your Secret Key in client-side code.

Frequently Asked Questions

How long does placement approval take?

Placement approval typically takes up to 24 hours. You will receive an email notification once your placement is approved.

What is the minimum payout threshold?

The minimum payout threshold is $50. Payments are processed on a NET-30 basis.

Can I use Affike on mobile apps?

Yes! You can integrate our offerwall into iOS and Android apps using a WebView component with the same iframe/URL integration method.

How do I test the integration?

Enable "Test Mode" in your placement settings to receive test postbacks without real conversions.

Need Help?

If you have any questions or need assistance with integration, our support team is here to help.