NAV
bash javascript php

Introduction

The Publisher API offers a set of API calls that allow you to pull data about the advertiser program on the Involve asia platform, the commission you can earn from those advertiser programs, your transactions and campaign details.

Getting Started With The API

What is a Publisher API ?

Publisher API allows Publishers to interact with Involve Asia's API, by making a request to pull important information without logging into their Dashboard.

What is Detailed Commission API ?

Publishers can use Detailed Commission API to access Real-Time Commission Data from their accounts to get the latest available commission data and commission data updates regularly.

How To Request For API Key ?

  1. Login to your Publisher Dashboard

  2. At the top bar, under Tools, select API


    Illustration purposes only

  3. You’ll be taken to the API page. If you’ve not requested an API Key, please select Request API Key.

Illustration purposes only

Illustration purposes only

  1. Once approved, you will be able to see your API Key and API Secret as shown in the screenshot below.

Illustration purposes only

For more information, check out our API Documentation here.


How to Authenticate Your API Request ?

Kindly refer to the notes and Sample API Request as follows:

Header

Illustration purposes only

Body & Response

Illustration purposes only

How to call data using API?

  1. Open our API Documentation here. Once open, select Offer from the options on the left.

    Illustration purposes only

  2. Under HTTP Request, copy and paste the link into your API program.

    Illustration purposes only

  3. A list of details about Offers will appear under Body in your API program.

    Illustration purposes only

The additional features will allow you to call information on commission for individual Offers (as shown in the highlighted box).

Visit our API documentation here on how to pull more data from Involve Asia’s API.

Limitation/Throttling

To guarantee smooth operation for all our publishers, we currently have a throttling in place that limits the number of API requests to 20 API calls per minute per account.

Standard Pagination

Certain endpoints will generate large result sets. To save bandwidth and long processing times, these endpoints will paginate the results to reduce the strain on both client and server.

Any endpoint that supports pagination will return 3 attributes to support this:

API requests

Purpose Endpoint Remarks
Authenticating your API key /authenticate To make a request, you must first have a valid "token".
To pull conversion data /conversions/all Conversion data include: conversion ID, offer ID, payout, aff sub, adv sub, rejection reason and etc.
To pull conversion data within a date range /conversions/range
  • Use "start_date" and "end_date" to specify date.
  • Date format: yyyy-mm-dd (e.g. 2017-12-28).
To pull conversion data within a date and time /conversions/data-range
  • Use "start_date_time" and "end_date_time" to specify the date and time.
  • Date format: yyyy-mm-dd hh:mm:ss (e.g. 2017-02-26 21:16:47).
To pull Offer details /offers/all Offer data include: ID, description, preview url, terms, tracking link and etc.
To pull Offer details within a date and time /offers/last-updated-range
  • Use "start_date" and "end_date" to specify the date and time.
  • Date format: yyyy-mm-dd hh:mm:ss (e.g. 2017-02-26 21:16:47)
To pull advertiser active campaign details /campaigns/all Campaign data include: banner, offer, voucher code and etc.
To generate links /deeplink/generate You will be able to generate links in scale
To pull Shopee Brand Commissions Xtra details /shopeextra/all Data include: type, brand name, commission rate, region, tracking link and etc.

Important note

Authentication

Authenticating API Key

How to call it

curl -X POST "https://api.involve.asia/api/authenticate" \
    -H "Accept: application/json" \
    --data-urlencode "secret=4ZU659+Ba4LjcSVGamz0LYnA3zYSKLDQgN3DriAzyH4=" \
    --data-urlencode "key=general"
var settings = {
    "async": true,
    "crossDomain": true,
    "url": "https://api.involve.asia/api/authenticate",
    "method": "POST",
    "headers": {
        "accept": "application/json"
    },
    "data": {
        "key": "general",
        "secret": "4ZU659+Ba4LjcSVGamz0LYnA3zYSKLDQgN3DriAzyH4="
    }
}

$.ajax(settings).done(function (response) {
    console.log(response);
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.involve.asia/api/authenticate",
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_POSTFIELDS => http_build_query(
      array(
          "secret" => "4ZU659+Ba4LjcSVGamz0LYnA3zYSKLDQgN3DriAzyH4=",
          "key" => "general"
          )
      )
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

How does the response look

{
  "status": "success",
  "message": "",
  "data": {
    "token": ""
  }
}

You need to Authenticate your API key before being able to call any API request from involve asia. Once you already authenticate you will receive a "token" which will be expired in 2 hours.

HTTP Request

POST https://api.involve.asia/api/authenticate

Response data type and sample ?

Parameters Name Description and Example
"status" API call Status, There will be only 2 type of respond
Example :
  • "success"
  • "error"
"message" API call message status, If your API key is correct you will get below status
Example :
  • "success"

If your API key Credentials is wrong you will get error as below
Example :
  • "invalid Credentials"

*Please ensure your API's credentials are correct and please refer to our sample request.
"token" This will be your token. It can be used only for 2 hours once your token expires you need to request for a new token again.

Conversion

All Conversion

How to call it

curl -X POST "https://api.involve.asia/api/conversions/all" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer [token]" \
    -d "page=1" \
    -d "limit=100" \
    -d "filters[conversion_id]=899191|7008168" \
    -d "filters[offer_id]=25" \
    -d "filters[offer_name]=lazada" \
    -d "filters[conversion_status]=pending" \
    -d "filters[preferred_currency]=USD"
var settings = {
    "async": true,
    "crossDomain": true,
    "url": "https://api.involve.asia/api/conversions/all",
    "method": "POST",
    "headers": {
        "accept": "application/json",
        "Authorization": "Bearer [token]"
    },
    "data": {
        "page": 1,
        "limit": 100,
        "filters[conversion_id]": "899191|7008168",
        "filters[offer_id]": 25,
        "filters[offer_name]": "lazada",
        "filters[conversion_status]": "pending",
        "filters[preferred_currency]": "USD"
    }
}

$.ajax(settings).done(function (response) {
    console.log(response);
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.involve.asia/api/conversions/all",
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_POSTFIELDS => http_build_query(
      array(
            "page" => 1,
            "limit" => 100,
            "filters[conversion_id]" => "899191|7008168",
            "filters[offer_id]" => 25,
            "filters[offer_name]" => "lazada",
            "filters[conversion_status]" => "pending",
            "filters[preferred_currency]" => "USD"
          )
      ),
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer [token]"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

How does the response look

{
  "status": "success",
  "message": "",
  "data": {
    "page": 1,
    "limit": 100,
    "count": 246,
    "nextPage": 2,
    "data": [
      {
        "conversion_id": 899191,
        "offer_name": "Lazada (PH)",
        "offer_id": 44,
        "merchant_id": 88,
        "sale_amount": "345.00",
        "currency": "PHP",
        "payout": "14.49",
        "base_payout": "13.49",   
        "bonus_payout": "1.00",
        "aff_sub1": null,
        "aff_sub2": null,
        "aff_sub3": null,
        "aff_sub4": null,
        "aff_sub5": null,
        "adv_sub1": "348666368",
        "adv_sub2": "Health & Beauty",
        "adv_sub3": "false",
        "adv_sub4": "AD109HBAK1YRANPH-611385",
        "adv_sub5": "6.00",
        "datetime_conversion": "2017-02-22 21:16:47",
        "conversion_status": "pending",
        "affiliate_remarks": "rejected by advertiser",
        "affiliate_id": 4726,
        "user_id": 2,
        "user_email": "[email protected]"
      }
    ]
  }
}

Publishers can pull individual transactions, to check the status of the transactions, to create your own reports, and to pull additional information that is shared between publishers and advertisers via Aff_sub (from publisher to advertiser) and Adv_sub and custom parameters (from advertiser to publisher).

When should you call API for all conversion ?

Best to use this API once a month to update all the conversion and status. To get updates real time is advisable to use POSTBACK URL for frequent update.

HTTP Request

POST https://api.involve.asia/api/conversions/all

Optional parameters available for you to filter.

Parameters name Description and Example
[conversion_id]
  • Optional
This field is optional if you would like to track specific individual conversion you can use the conversion id to keep track of the conversion.

String
ID of the conversion
Example : 899191

To filter more than 1 conversion id please use vertical bar " | "

String
ID of the conversion
Example : 899191|7008168
[offer_id]
  • Optional
This field is optional if you would like to track specific advertiser conversion you can use the offer id to keep track of the conversion.

String
ID of the advertiser
Example : 25

To filter more than 1 offer id please use vertical bar " | "

String
ID of the advertiser
Example : 25|85
[offer_name]
  • Optional
This field is optional if you would like to track specific advertiser conversion you can use the offer name aka advertiser name to keep track of the conversion.

String
Name of the advertiser
Example : Lazada

To filter more than 1 advertiser please use vertical bar " | "

String
Name of the advertiser
Example : Lazada|Shopee
[conversion_status]
  • Optional
Current conversion status

Available Filter
  • Pending
  • Approved
  • Rejected
  • Paid
  • Yet to consumed
  • Invalid

String
Conversion Status
Example : pending

To filter more than 1 status please use vertical bar " | "

String
Conversion Status
Example : pending|approved
[preferred_currency]
  • Optional
Default conversion currency code - (ISO 4217)

Available Filter
  • MYR
  • USD

String
Currency code
Example : USD

Response data type and sample

Parameters name Description
"status" API call Status, There will be only 2 type of respond
Example :
  • "success"
  • "error"
"message" API call message status, If your API key is correct you will get below status
  • "Success"

If your API Token is wrong you will get error as below
  • "Token Signature could not be verified"

If you Get this below error it means your header is incorrect.
  • "Failed to authenticate because of bad credentials or an invalid authorization header"
  • "Incorrect arguments. Please fill up start_date and end_date"
  • "Incorrect arguments"

*Please ensure your API's credentials are correct and please refer to our sample request.
"page" Current page index

Number
Example : 1
"limit" Number of data available in 1 page - Maximum is 100 entry per page

Number
Example : 100
"count" Count of total number of data available

Number
Example : 246
"nextPage" Next page number

Number
Example : 3
"conversion_id" Involve Asia unique conversion id to keep track conversion

String
Example : 348666368
"offer_name" Advertiser or Program Name

String
Example : Lazada (PH)
"offer_id" Advertiser or offer unique reference ID

String
Example : 44
"sale_amount" Local sale amount or user paid amount to advertiser

Number
Example : 345.00
"currency" Default conversion currency code - (ISO 4217)

String
Example : PHP
"payout" Total commission earn on local currency including the base and bonus commission

Number
Example : 14.49
"base_payout" Base commission earn on local currency excluding bonus commission

Number
Example : 13.49
"bonus_payout" Bonus payout earn on local currency excluding base commission

Number
Example : 1.00
"aff_sub" Publisher custom parameter sent to involve asia

String
Example : 1293847 or null (Blank)
"adv_sub" Advertiser custom parameter (refer to advertiser integration document)

String
Example : 1293847 or null (Blank)
"datetime_conversion" Date and time of the conversion recorded

String
Example : 2017-02-22 21:16:47
"conversion_status" Status of the conversion - (pending, approved, rejected, paid, invalid, yet to consumed and processing)

String
Example : pending
"affiliate_remarks" Conversion rejection reason

String
Example : rejected by advertiser
"affiliate_id" Publisher Unique account ID

Number
Example : 4726
"user_id" User ID for the assigned API key

Number
Example : 2
"user_email" User email address for the assigned API key

String
Example : [email protected]

base_payout bonus_payout

Conversion by Date range

How to call it

curl -X POST "https://api.involve.asia/api/conversions/range" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer [token]" \
    -d "page=1" \
    -d "limit=100" \
    -d "start_date=2017-02-26" \
    -d "end_date=2017-02-28" \
    -d "filters[conversion_id]=899191|7008168" \
    -d "filters[offer_id]=25" \
    -d "filters[offer_name]=lazada" \
    -d "filters[conversion_status]=pending" \
    -d "filters[preferred_currency]=USD"
var settings = {
    "async": true,
    "crossDomain": true,
    "url": "https://api.involve.asia/api/conversions/range",
    "method": "POST",
    "headers": {
        "accept": "application/json",
        "Authorization": "Bearer [token]"
    },
    "data": {
        "page": 1,
        "limit": 100,
        "start_date": "2017-02-26",
        "end_date": "2017-02-28",
        "filters[conversion_id]": "899191|7008168",
        "filters[offer_id]": 25,
        "filters[offer_name]": "lazada",
        "filters[conversion_status]": "pending",
        "filters[preferred_currency]": "USD"
    }
}

$.ajax(settings).done(function (response) {
    console.log(response);
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.involve.asia/api/conversions/range",
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_POSTFIELDS => http_build_query(
      array(
            "page" => 1,
            "limit" => 100,
            "start_date" => "2017-02-26",
            "end_date" => "2017-02-28",
            "filters[conversion_id]" => "899191|7008168",
            "filters[offer_id]" => 25,
            "filters[offer_name]" => "lazada",
            "filters[conversion_status]" => "pending",
            "filters[preferred_currency]" => "USD"
          )
      ),
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer [token]"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

How does the response look

{
  "status": "success",
  "message": "",
  "data": {
    "page": 1,
    "limit": 100,
    "count": 246,
    "nextPage": 2,
    "data": [
      {
        "conversion_id": 899191,
        "offer_name": "Lazada (PH)",
        "offer_id": 44,
        "merchant_id": 88,
        "sale_amount": "345.00",
        "currency": "PHP",
        "payout": "14.49",
        "base_payout": "13.49",   
        "bonus_payout": "1.00",
        "aff_sub1": null,
        "aff_sub2": null,
        "aff_sub3": null,
        "aff_sub4": null,
        "aff_sub5": null,
        "adv_sub1": "348666368",
        "adv_sub2": "Health & Beauty",
        "adv_sub3": "false",
        "adv_sub4": "AD109HBAK1YRANPH-611385",
        "adv_sub5": "6.00",
        "datetime_conversion": "2017-02-22 21:16:47",
        "conversion_status": "pending",
        "affiliate_remarks": "rejected by advertiser",
        "affiliate_id": 4726,
        "user_id": 2,
        "user_email": "[email protected]"
      }
    ]
  }
}

Publishers can pull individual transactions by date range, to check the status of the transactions, to create your own reports, and to pull additional information that shared between publishers and advertisers via Aff_sub (from publisher to advertiser) and Adv_sub and custom parameters (from advertiser to publisher)

When should you call API for conversion by date range ?

Best to use this API once a month or twice a month to update and get the current conversion status.

HTTP Request

POST https://api.involve.asia/api/conversions/range

Parameters available for you to filter

Parameters name Description and Example
[start_date]
  • Required
Start date of conversion you would like to filter. (YYYY:MM:DD)

String
Example : 2017-02-26
[end_date]
  • Required
End date of conversion you would like to filter. (YYYY:MM:DD)

String
Example : 2017-02-28
[conversion_id]
  • Optional
This field is optional if you would like to track specific individual conversion you can use the conversion id to keep track of the conversion.

String
ID of the conversion
Example : 899191

To filter more than 1 conversion id please use vertical bar " | "

String
ID of the conversion
Example : 899191|7008168
[offer_id]
  • Optional
This field is optional if you would like to track specific advertiser conversion you can use the offer id to keep track of the conversion.

String
ID of the advertiser
Example : 25

To filter more than 1 offer id please use vertical bar " | "

String
ID of the advertiser
Example : 25|85
[offer_name]
  • Optional
This field is optional if you would like to track specific advertiser conversion you can use the offer name aka advertiser name to keep track of the conversion.

String
Name of the advertiser
Example : Lazada

To filter more than 1 advertiser please use vertical bar " | "

String
Name of the advertiser
Example : Lazada|Shopee
[conversion_status]
  • Optional
Current conversion status

Available Filter
  • Pending
  • Approved
  • Rejected
  • Paid
  • Yet to consumed
  • Invalid

String
Conversion Status
Example : pending

To filter more than 1 status please use vertical bar " | "

String
Conversion Status
Example : pending|approved
[preferred_currency]
  • Optional
Default conversion currency code - (ISO 4217)

Available Filter
  • MYR
  • USD

String
Currency code
Example : USD

Response data type and sample

Parameters name Description and Example
"status" API call Status, There will be only 2 type of respond
Example :
  • "success"
  • "error"
"message" API call message status, If your API key is correct you will get below status
  • "Success"

If your API Token is wrong you will get error as below
  • "Token Signature could not be verified"

If you Get this below error it means your header is incorrect.
  • "Failed to authenticate because of bad credentials or an invalid authorization header"
  • "Incorrect arguments. Please fill up start_date and end_date"
  • "Incorrect arguments"

*Please ensure your API's credentials are correct and please refer to our sample request.
"page" Current page index

Number
Example : 1
"limit" Number of data available in 1 page - Maximum is 100 entry per page

Number
Example : 100
"count" Count of total number of data available

Number
Example : 246
"nextPage" Next page number

Number
Example : 3
"conversion_id" Involve Asia unique conversion id to keep track conversion

String
Example : 348666368
"offer_name" Advertiser or Program Name

String
Example : Lazada (PH)
"offer_id" Advertiser or offer unique reference ID

String
Example : 44
"sale_amount" Local sale amount or user paid amount to advertiser

Number
Example : 345.00
"currency" Default conversion currency code - (ISO 4217)

String
Example : PHP
"payout" Total commission earn on local currency including the base and bonus commission

Number
Example : 14.49
"base_payout" Base commission earn on local currency excluding bonus commission

Number
Example : 13.49
"bonus_payout" Bonus payout earn on local currency excluding base commission

Number
Example : 1.00
"aff_sub" Publisher custom parameter sent to involve asia

String
Example : 1293847 or null (Blank)
"adv_sub" Advertiser custom parameter (refer to advertiser integration document)

String
Example : 1293847 or null (Blank)
"datetime_conversion" Date and time of the conversion recorded

String
Example : 2017-02-22 21:16:47
"conversion_status" Status of the conversion - (pending, approved, rejected, paid, invalid, yet to consumed and processing)

String
Example : pending
"affiliate_remarks" Conversion rejection reason

String
Example : rejected by advertiser
"affiliate_id" Publisher Unique account ID

Number
Example : 4726
"user_id" User ID for the assigned API key

Number
Example : 2
"user_email" User email address for the assigned API key

String
Example : [email protected]

Conversion by Date and time range

How to call it

curl -X POST "https://api.involve.asia/api/conversions/data-range" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer [token]" \
    -d "page=1" \
    -d "limit=100" \
    -d "start_date=2017-02-26 21:16:47" \
    -d "end_date=2017-02-28 21:16:47" \
    -d "filters[conversion_id]=899191|7008168" \
    -d "filters[offer_id]=25" \
    -d "filters[offer_name]=lazada" \
    -d "filters[conversion_status]=pending" \
    -d "filters[preferred_currency]=USD"
var settings = {
    "async": true,
    "crossDomain": true,
    "url": "https://api.involve.asia/api/conversions/data-range",
    "method": "POST",
    "headers": {
        "accept": "application/json",
        "Authorization": "Bearer [token]"
    },
    "data": {
        "page": 1,
        "limit": 100,
        "start_date": "2017-02-26 21:16:47",
        "end_date": "2017-02-28 21:16:47",
        "filters[conversion_id]": "899191|7008168",
        "filters[offer_id]": 25,
        "filters[offer_name]": "lazada",
        "filters[conversion_status]": "pending",
        "filters[preferred_currency]": "USD"
    }
}

$.ajax(settings).done(function (response) {
    console.log(response);
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.involve.asia/api/conversions/data-range",
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_POSTFIELDS => http_build_query(
      array(
            "page" => 1,
            "limit" => 100,
            "start_date" => "2017-02-26 21:16:47",
            "end_date" => "2017-02-28 21:16:47",
            "filters[conversion_id]" => "899191|7008168",
            "filters[offer_id]" => 25,
            "filters[offer_name]" => "lazada",
            "filters[conversion_status]" => "pending",
            "filters[preferred_currency]" => "USD"
          )
      ),
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer [token]"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

How does the response look

{
  "status": "success",
  "message": "",
  "data": {
    "page": 1,
    "limit": 100,
    "count": 246,
    "nextPage": 2,
    "data": [
      {
        "conversion_id": 899191,
        "offer_name": "Lazada (PH)",
        "offer_id": 44,
        "merchant_id": 88,
        "sale_amount": "345.00",
        "currency": "PHP",
        "payout": "14.49",
        "base_payout": "13.49",   
        "bonus_payout": "1.00",
        "aff_sub1": null,
        "aff_sub2": null,
        "aff_sub3": null,
        "aff_sub4": null,
        "aff_sub5": null,
        "adv_sub1": "348666368",
        "adv_sub2": "Health & Beauty",
        "adv_sub3": "false",
        "adv_sub4": "AD109HBAK1YRANPH-611385",
        "adv_sub5": "6.00",
        "datetime_conversion": "2017-02-22 21:16:47",
        "conversion_status": "pending",
        "affiliate_remarks": "rejected by advertiser",
        "affiliate_id": 4726,
        "user_id": 2,
        "user_email": "[email protected]"
      }
    ]
  }
}

Publishers can pull individual transactions by date and time range, to check the status of the transactions, to create own reports, and to pull additional information that can be shared between publishers and advertisers via Aff_sub (from publisher to advertiser) and Adv_sub and custom parameters (from advertiser to publisher)

When should you call API for conversion by date and time range ?

Best to use this API once a month or twice a month to update and get the current conversion status.

HTTP Request

POST https://api.involve.asia/api/conversions/data-range

Parameters available for you to filter

Parameters name Description and Example
[start_date]
  • Required
Start date of conversion you would like to filter. (YYYY-MM-DD HH:MM:SS)

String
Example : 2017-02-26 21:16:47
[end_date]
  • Required
End date of conversion you would like to filter. (YYYY-MM-DD HH:MM:SS)

String
Example : 2017-02-28 21:16:47
[conversion_id]
  • Optional
This field is optional if you would like to track specific individual conversion you can use the conversion id to keep track of the conversion.

String
ID of the conversion
Example : 899191

To filter more than 1 conversion id please use vertical bar " | "

String
ID of the conversion
Example : 899191|7008168
[offer_id]
  • Optional
This field is optional if you would like to track specific advertiser conversion you can use the offer id to keep track of the conversion.

String
ID of the advertiser
Example : 25

To filter more than 1 offer id please use vertical bar " | "

String
ID of the advertiser
Example : 25|85
[offer_name]
  • Optional
This field is optional if you would like to track specific advertiser conversion you can use the offer name aka advertiser name to keep track of the conversion.

String
Name of the advertiser
Example : Lazada

To filter more than 1 advertiser please use vertical bar " | "

String
Name of the advertiser
Example : Lazada|Shopee
[conversion_status]
  • Optional
Current conversion status

Available Filter
  • Pending
  • Approved
  • Rejected
  • Paid
  • Yet to consumed
  • Invalid

String
Conversion Status
Example : pending

To filter more than 1 status please use vertical bar " | "

String
Conversion Status
Example : pending|approved
[preferred_currency]
  • Optional
Default conversion currency code - (ISO 4217)

Available Filter
  • MYR
  • USD

String
Currency code
Example : USD

Response data type and sample

Parameters name Description and Example
"status" API call Status, There will be only 2 type of respond
Example :
  • "success"
  • "error"
"message" API call message status, If your API key is correct you will get below status
  • "Success"

If your API Token is wrong you will get error as below
  • "Token Signature could not be verified"

If you Get this below error it means your header is incorrect.
  • "Failed to authenticate because of bad credentials or an invalid authorization header"
  • "Incorrect arguments. Please fill up start_date and end_date"
  • "Incorrect arguments"

*Please ensure your API's credentials are correct and please refer to our sample request.
"page" Current page index

Number
Example : 1
"limit" Number of data available in 1 page - Maximum is 100 entry per page

Number
Example : 100
"count" Count of total number of data available

Number
Example : 246
"nextPage" Next page number

Number
Example : 3
"conversion_id" Involve Asia unique conversion id to keep track conversion

String
Example : 348666368
"offer_name" Advertiser or Program Name

String
Example : Lazada (PH)
"offer_id" Advertiser or offer unique reference ID

String
Example : 44
"sale_amount" Local sale amount or user paid amount to advertiser

Number
Example : 345.00
"currency" Default conversion currency code - (ISO 4217)

String
Example : PHP
"payout" Total commission earn on local currency including the base and bonus commission

Number
Example : 14.49
"base_payout" Base commission earn on local currency excluding bonus commission

Number
Example : 13.49
"bonus_payout" Bonus payout earn on local currency excluding base commission

Number
Example : 1.00
"aff_sub" Publisher custom parameter sent to involve asia

String
Example : 1293847 or null (Blank)
"adv_sub" Advertiser custom parameter (refer to advertiser integration document)

String
Example : 1293847 or null (Blank)
"datetime_conversion" Date and time of the conversion recorded

String
Example : 2017-02-22 21:16:47
"conversion_status" Status of the conversion - (pending, approved, rejected, paid, invalid, yet to consumed and processing)

String
Example : pending
"affiliate_remarks" Conversion rejection reason

String
Example : rejected by advertiser
"affiliate_id" Publisher Unique account ID

Number
Example : 4726
"user_id" User ID for the assigned API key

Number
Example : 2
"user_email" User email address for the assigned API key

String
Example : [email protected]

Offers

All offers

How to call it

curl -X POST "https://api.involve.asia/api/offers/all" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer [token]" \
    -d "page=1" \
    -d "limit=100" \
    -d "sort_by=relevance" \
    -d "filters[offer_id]=25" \
    -d "filters[offer_name]=lazada" \
    -d "filters[country]=Malaysia" \
    -d "filters[offer_type]=cpa|cps|cpa_both|cpc|cpm" \
    -d "filters[categories]=Electronics|Fashion|Finance|Health & Beauty|Lifestyle|Marketplace|Other|Services|Travel"
var settings = {
    "async": true,
    "crossDomain": true,
    "url": "https://api.involve.asia/api/offers/all",
    "method": "POST",
    "headers": {
        "accept": "application/json",
        "Authorization": "Bearer [token]"
    },
    "data": {
        "page": 1,
        "limit": 100,
        "sort_by": "relevance",
        "filters[offer_id]": 25,
        "filters[offer_name]": "lazada",
        "filters[country]": "Malaysia",
        "filters[offer_type]": "cpa|cps|cpa_both|cpc|cpm",
        "filters[categories]": "Electronics|Fashion|Finance|Health & Beauty|Lifestyle|Marketplace|Other|Services|Travel"
    }
}

$.ajax(settings).done(function (response) {
    console.log(response);
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.involve.asia/api/offers/all",
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_POSTFIELDS => http_build_query(
      array(
            "page" => 1,
            "limit" => 100,
            "sort_by" => "relevance",
            "filters[offer_id]" => 25,
            "filters[offer_name]" => "lazada",
            "filters[country]" => "Malaysia",
            "filters[offer_type]" => "cpa|cps|cpa_both|cpc|cpm",
            "filters[categories]" => "Electronics|Fashion|Finance|Health & Beauty|Lifestyle|Marketplace|Other|Services|Travel"
          )
      ),
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer [token]"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

How does the response look

{
  "status": "success",
  "message": "Success",
  "data": {
    "page": 1,
    "limit": 1,
    "count": 75,
    "nextPage": 2,
    "data": [
      {
        "offer_name": "Medical Departures",
        "description": "Offer Description",
        "preview_url": "https://www.medicaldepartures.com/",
        "offer_id": 289,
        "merchant_id": 577,
        "currency": "USD",
        "logo": "https://img.involve.asia/ia_logo/289.png",
        "lookup_value": "cpa",
        "datetime_updated": "2019-05-31 11:17:36",
        "countries": "International",
        "categories": "Health & Beauty",
        "commissions": [
          {
            "Commission": "USD52.50"
          },
          {
            "Commission": "USD52.50 OR 0.000"
          }
        ],
        "validation_terms": "30",
        "payment_terms": "60",
        "tracking_link": "https://invol.co/aff_m?offer_id=577&aff_id=2&source=deeplink_generator&url=https%3A%2F%2Fwww.medicaldepartures.com%2F",
        "tracking_type": "desktop mobile android",
        "commission_tracking": "real-time",
        "directory_page": "https://app.involve.asia/directory/medical-departures-affiliate-program"
      }
    ]
  }
}

Publishers can check via API which programmes they currently have access to promote. You can also check the whole program list, and filter by program country, offer type and categories.

When should you call API for all offer ?

Best to use this API once a week to update and get the current advertiser or program status.

HTTP Request

POST https://api.involve.asia/api/offers/all

Which data fields you can filter

Parameters name Description and Example
[offer_id]
  • Optional
This field is optional if you would like to track specific individual offers you can use the offer id to filter for information.

String
ID of the offer
Example : 25

To filter more than 1 offer id please use vertical bar " | "

String
ID of the offer
Example : 25|50
[offer_name]
  • Optional
This field is optional if you would like to track specific advertiser conversion you can use the offer name aka advertiser name to keep track of the conversion.

String
Name of the advertiser
Example : Lazada

To filter more than 1 advertiser please use vertical bar " | "

String
Name of the advertiser
Example : Lazada|Shopee
[country]
  • Optional
Filter by country availability, For example if you are would like to filter which advertiser is available in Singapore you can just filter the country

String
Advertiser availability country
Example : Malaysia
[offer_type]
  • Optional
Filter by offer type (CPS,CPA,CPC and etc)

List of available option
  • cpa
  • cps
  • cpa_both
  • cpc
  • cpm


String
Example : cps
[categories]
  • Optional
Filter by program categories (Fashion,Travel, Finance and etc)

List of available option
  • Fashion
  • Electronics
  • Health & Beauty
  • Travel
  • Marketplace
  • Services
  • Finance

String
Example : Fashion

Which data fields do we provide

Parameters name Description and Example
"status" API call Status, There will be only 2 type of respond
Example :
  • "success"
  • "error"
"message" API call message status, If your API key is correct you will get below status
  • "Success"

If your API Token is wrong you will get error as below
  • "Token Signature could not be verified"

If you Get this below error it means your header is incorrect.
  • "Failed to authenticate because of bad credentials or an invalid authorization header"
  • "Incorrect arguments. Please fill up start_date and end_date"
  • "Incorrect arguments"

*Please ensure your API's credentials are correct and please refer to our sample request.
"page" Current page index

Number
Example : 1
"limit" Number of data available in 1 page - Maximum is 100 entry per page

Number
Example : 100
"count" Count of total number of data available

Number
Example : 246
"nextPage" Next page number

Number
Example : 3
"offer_name" Advertiser or Program Name

String
Example : Medical Departures
"description" Advertiser or Program description

String
Example : Offer Description
"preview_url" Advertiser landing page or campaign page

String
Example : https://www.medicaldepartures.com/
"offer_id" Advertiser or offer unique reference ID

Number
Example : 289
"currency" Default conversion currency code - (ISO 4217)

String
Example : PHP
"logo" Advertiser Logo link in png file format

String
Example : https://img.involve.asia/ia_logo/289.png
"offer_type" Offer type (CPS,CPA,CPC and etc)

String
Example : CPA
"datetime_updated" Last advertiser or program updated date and time

String
Example : 2019-05-31 11:17:36
"countries" Advertiser or program availability.

String
Example : International or Thailand
"categories" Program categories (Fashion,Travel, Finance and etc)

String
Example : Health & Beauty
"commission" Advertiser or program default commission

*Take note some offers will have multiple tier commissions based on user type, product or categories.

String
Example : USD52.50 OR 0.000
"validation_terms" Advertiser validation terms, Number of days it takes for advertiser to validate your transaction.

*Please refer to validation our knowledge base to understand validation terms
https://help.involve.asia/hc/en-us/articles/360038154852-What-is-Validation-Payment-Terms-

String
Example : 30
"payment_terms" Advertiser terms upon validation and invoiced. Number of days it takes for the advertiser to process payment and ready to be collected by the publisher.

*Please refer to validation our knowledge base to understand payment terms
https://help.involve.asia/hc/en-us/articles/360038154852-What-is-Validation-Payment-Terms-

String
Example : 60
"tracking_link" Publisher default landing page tracking link

String
Example : https://invol.co/aff_m?offer_id=577&aff_id=2&source=deeplink_generator&url=https%3A%2F%2Fwww.medicaldepartures.com%2F

Last updated offers

How to call it

curl -X POST "https://api.involve.asia/api/offers/last-updated-range" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer [token]" \
    -d "page=1" \
    -d "limit=100" \
    -d "start_date=2017-01-01 00:00:00" \
    -d "end_date=2017-12-30 23:59:59" \
    -d "sort_by=relevance" \
    -d "filters[offer_id]=25" \
    -d "filters[offer_name]=lazada" \
    -d "filters[country]=Malaysia" \
    -d "filters[offer_type]=cpa|cps|cpa_both|cpc|cpm" \
    -d "filters[categories]=Electronics|Fashion|Finance|Health & Beauty|Lifestyle|Marketplace|Other|Services|Travel"
var settings = {
    "async": true,
    "crossDomain": true,
    "url": "https://api.involve.asia/api/offers/last-updated-range",
    "method": "POST",
    "headers": {
        "accept": "application/json",
        "Authorization": "Bearer [token]"
    },
    "data": {
        "page": 1,
        "limit": 100,
        "start_date": "2017-01-01 00:00:00",
        "end_date": "2017-12-30 23:59:59",
        "sort_by": "relevance",
        "filters[offer_id]": 25,
        "filters[offer_name]": "lazada",
        "filters[country]": "Malaysia",
        "filters[offer_type]": "cpa|cps|cpa_both|cpc|cpm",
        "filters[categories]": "Electronics|Fashion|Finance|Health & Beauty|Lifestyle|Marketplace|Other|Services|Travel"
    }
}

$.ajax(settings).done(function (response) {
    console.log(response);
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.involve.asia/api/offers/last-updated-range",
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_POSTFIELDS => http_build_query(
      array(        
            "page" => 1,
            "limit" => 100,
            "start_date" => "2017-01-01 00:00:00",
            "end_date" => "2017-12-30 23:59:59",
            "sort_by" => "relevance",
            "filters[offer_id]" => 25,
            "filters[offer_name]" => "lazada",
            "filters[country]" => "Malaysia",
            "filters[offer_type]" => "cpa|cps|cpa_both|cpc|cpm",
            "filters[categories]" => "Electronics|Fashion|Finance|Health & Beauty|Lifestyle|Marketplace|Other|Services|Travel"
          )
      ),
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer [token]"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

How does the response look

{
  "status": "success",
  "message": "Success",
  "data": {
    "page": 1,
    "limit": 1,
    "count": 75,
    "nextPage": 2,
    "data": [
      {
        "offer_name": "Medical Departures",
        "description": "Offer Description",
        "preview_url": "https://www.medicaldepartures.com/",
        "offer_id": 289,
        "merchant_id": 577,
        "currency": "USD",
        "logo": "https://img.involve.asia/ia_logo/289.png",
        "lookup_value": "cpa",
        "datetime_updated": "2019-05-31 11:17:36",
        "countries": "International",
        "categories": "Health & Beauty",
        "commissions": [
          {
            "Commission": "USD52.50"
          },
          {
            "Commission": "USD52.50 OR 0.000"
          }
        ],
        "validation_terms": "30",
        "payment_terms": "60",
        "tracking_link": "https://invol.co/aff_m?offer_id=577&aff_id=13972&source=deeplink_generator&url=https%3A%2F%2Fwww.medicaldepartures.com%2F",
        "tracking_type": "desktop mobile android",
        "commission_tracking": "real-time",
        "directory_page": "https://app.involve.asia/directory/medical-departures-affiliate-program"
      }
    ]
  }
}

Publishers can check automatically which programmes they currently have access to promote. You can filter by the last update date.

When should you call API for last updated offers ?

Best to use this API once a week to update and get the current advertiser or program status.

HTTP Request

POST https://api.involve.asia/api/offers/last-updated-range

Which data fields you can filter

Parameters name Description and Example
[start_date]
  • Required
Last updated start date and time. (YYYY-MM-DD HH:MM:SS)

String
Example : 2017-02-26 21:16:47
[end_date]
  • Required
Last updated end date and time. (YYYY-MM-DD HH:MM:SS)

String
Example : 2017-02-28 21:16:47
[offer_id]
  • Optional
This field is optional if you would like to track specific individual offers you can use the offer id to filter for information.

String
ID of the offer
Example : 25

To filter more than 1 offer id please use vertical bar " | "

String
ID of the offer
Example : 25|50
[offer_name]
  • Optional
This field is optional if you would like to track specific advertiser conversion you can use the offer name aka advertiser name to keep track of the conversion.

String
Name of the advertiser
Example : Lazada

To filter more than 1 advertiser please use vertical bar " | "

String
Name of the advertiser
Example : Lazada|Shopee
[country]
  • Optional
Filter by country availability, For example if you are would like to filter which advertiser is available in Singapore you can just filter the country

String
Advertiser availability country
Example : Malaysia
[offer_type]
  • Optional
Filter by offer type (CPS,CPA,CPC and etc)

List of available option
  • cpa
  • cps
  • cpa_both
  • cpc
  • cpm

String
Example : cps
[categories]
  • Optional
Filter by program categories (Fashion,Travel, Finance and etc)

List of available option
  • Fashion
  • Electronics
  • Health & Beauty
  • Travel
  • Marketplace
  • Services
  • Finance

String
Example : Fashion

Response data type and sample

Parameters name Description and Example
"status" API call Status, There will be only 2 type of respond
Example :
  • "success"
  • "error"
"message" API call message status, If your API key is correct you will get below status
  • "Success"

If your API Token is wrong you will get error as below
  • "Token Signature could not be verified"

If you Get this below error it means your header is incorrect.
  • "Failed to authenticate because of bad credentials or an invalid authorization header"
  • "Incorrect arguments. Please fill up start_date and end_date"
  • "Incorrect arguments"

*Please ensure your API's credentials are correct and please refer to our sample request.
"page" Current page index

Number
Example : 1
"limit" Number of data available in 1 page - Maximum is 100 entry per page

Number
Example : 100
"count" Count of total number of data available

Number
Example : 246
"nextPage" Next page number

Number
Example : 3
"offer_name" Advertiser or Program Name

String
Example : Medical Departures
"description" Advertiser or Program description

String
Example : Offer Description
"preview_url" Advertiser landing page or campaign page

String
Example : https://www.medicaldepartures.com/
"offer_id" Advertiser or offer unique reference ID

Number
Example : 289
"currency" Default conversion currency code - (ISO 4217)

String
Example : PHP
"logo" Advertiser Logo link in png file format

String
Example : https://img.involve.asia/ia_logo/289.png
"offer_type" Offer type (CPS,CPA,CPC and etc)

String
Example : CPA
"datetime_updated" Last advertiser or program updated date and time

String
Example : 2019-05-31 11:17:36
"countries" Advertiser or program availability.

String
Example : International or Thailand
"categories" Program categories (Fashion,Travel, Finance and etc)

String
Example : Health & Beauty
"commission" Advertiser or program default commission

*Take note some offers will have multiple tier commissions based on user type, product or categories.

String
Example : USD52.50 OR 0.000
"validation_terms" Advertiser validation terms, Number of days it takes for advertiser to validate your transaction.

*Please refer to validation our knowledge base to understand validation terms
https://help.involve.asia/hc/en-us/articles/360038154852-What-is-Validation-Payment-Terms-

String
Example : 30
"payment_terms" Advertiser terms upon validation and invoiced. Number of days it takes for the advertiser to process payment and ready to be collected by the publisher.

*Please refer to validation our knowledge base to understand payment terms
https://help.involve.asia/hc/en-us/articles/360038154852-What-is-Validation-Payment-Terms-

String
Example : 60
"tracking_link" Publisher default landing page tracking link

String
Example : https://invol.co/aff_m?offer_id=577&aff_id=2&source=deeplink_generator&url=https%3A%2F%2Fwww.medicaldepartures.com%2F

Campaign

All Campaign

How to call it

curl -X POST "https://api.involve.asia/api/campaigns/all" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer [token]" \
    -d "page=1" \
    -d "limit=100" \
    -d "filters[campaign_banner_id]=123|456" \
    -d "filters[offer_id]=25|815" \
    -d "filters[offer_name]=lazada" \
    -d "filters[start_date]=2017-06-29" \
    -d "filters[end_date]=2017-06-29" \
    -d "filters[country]=Malaysia" \
    -d "filters[category]=Finance|Services|Marketplace|Other|Travel|Health & Beauty|Lifestyle|Electronics|Fashion" \
    -d "filters[coupons_only]=true" \
    -d "filters[with_banner]=true" \
    -d "filters[banner_size]=300x250|728x90" \
    -d "filters[commission_tracking]=real-time|manual"\  
    -d "filters[device_type]=desktop|mobile|android|ios"
var settings = {
    "async": true,
    "crossDomain": true,
    "url": "https://api.involve.asia/api/campaigns/all",
    "method": "POST",
    "headers": {
        "accept": "application/json",
        "Authorization": "Bearer [token]"
    },
    "data": {
        "page": 1,
        "limit": 100,
        "filters[campaign_banner_id]": "123|456",
        "filters[offer_id]": "25|815",
        "filters[offer_name]": "lazada",
        "filters[start_date]": "2017-06-29",
        "filters[end_date]": "2017-06-29",
        "filters[country]": "Malaysia",
        "filters[category]": "Electronics|Fashion|Finance|Health & Beauty|Lifestyle|Marketplace|Other|Services|Travel",
        "filters[coupons_only]": true,
        "filters[with_banner]": true,
        "filters[banner_size]": "300x250|728x90",
        "filters[commission_tracking]": "real-time|manual",  
        "filters[device_type]": "desktop|mobile|android|ios",
    }
}

$.ajax(settings).done(function (response) {
    console.log(response);
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.involve.asia/api/campaigns/all",
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_POSTFIELDS => http_build_query(
      array(        
            "page" => 1,
            "limit" => 100,
            "filters[campaign_banner_id]" => "123|456",
            "filters[offer_id]" => "25|815",
            "filters[offer_name]" => "lazada",
            "filters[start_date]" => "2017-06-29",
            "filters[end_date]" => "2017-06-29",
            "filters[country]" => "Malaysia",
            "filters[category]" => "Electronics|Fashion|Finance|Health & Beauty|Lifestyle|Marketplace|Other|Services|Travel",
            "filters[coupons_only]" => true,
            "filters[with_banner]" => true,
            "filters[banner_size]" => "300x250|728x90",
            "filters[commission_tracking]" => "real-time|manual",  
            "filters[device_type]" => "desktop|mobile|android|ios",
            )
      ),
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer [token]"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

How does the response look

{
  "status": "success",
  "message": "Success",
  "data": {
    "page": 1,
    "limit": 1,
    "count": 71,
    "nextPage": 2,
    "data": [
      {
        "campaign_banner_id": 123,
        "offer_id": 46,
        "merchant_id": 124,
        "offer_name": "Photobook (MY)",
        "campaign_name": "60% OFF storewide!",
        "description": "60% OFF storewide! for all Photobooks",
        "voucher_code": "IARAM60",
        "date_campaign_start": "2017-05-23",
        "date_campaign_end": "2017-06-30",
        "banner_image_url": "https://dev-bkt.s3-ap-southeast-1.amazonaws.com/rpss/campaigns_banners/no-img.jpg",
        "tracking_link": "https://invol.co/aff_m?offer_id=124&aff_id=13972&source=campaign&url=http%3A%2F%2Fwww.photobook.com.my%2Fprp%2Fmay17-aff-involveasia",
        "categories": "Food & Beverage, Lifestyle, Other",
        "with_banner": true
      }
    ]
  }
}

Publishers can check all ongoing and upcoming campaign details and creative.

When should you call API for all campaign ?

Best to use this API once a week to update and get the current campaign details.

HTTP Request

POST https://api.involve.asia/api/campaigns/all

Which data fields you can filter

Field name Description
[campaign_banner_id]
  • Optional
Advertiser or offer banner unique reference ID

String
ID of the campaign banner
Example : 123

To filter more than 1 offer banner unique reference ID please use vertical bar " | "

String
ID of the campaign banner
Example : 123|456
[offer_id]
  • Optional
This field is optional if you would like to track specific individual offers you can use the offer id to filter for information.

String
ID of the offer
Example : 25

To filter more than 1 offer id please use vertical bar " | "

String
ID of the offer
Example : 25|50
[offer_name]
  • Optional
This field is optional if you would like to track specific advertiser conversion you can use the offer name aka advertiser name to keep track of the conversion.

String
Name of the advertiser
Example : Lazada

To filter more than 1 advertiser please use vertical bar " | "

String
Name of the advertiser
Example : Lazada|Shopee
[start_date]
  • Required
Campaign Start date, If you prefer to see only active campaigns for specific start dates you can filter by date. (YYYY:MM:DD)

String
Example : 2017-02-26
[end_date]
  • Required
Campaign end date,If you prefer to see only active campaign for specific end date you can filter by end date (YYYY:MM:DD)

String
Example : 2017-02-28
[country]
  • Optional
Filter by country availability, For example if you are would like to filter which advertiser is available in Singapore you can just filter the country

String
Advertiser availability country
Example : Malaysia
[categories]
  • Optional
Filter by program categories (Fashion,Travel, Finance and etc)

List of available option
  • Fashion
  • Electronics
  • Health & Beauty
  • Travel
  • Marketplace
  • Services
  • Finance

String
Example : Fashion
[coupons_only]
  • Optional
To filter campaigns with coupon code only below is the available option.

List of available option
  • true - Filter only with coupon code
  • false or "blank" - will not filter for coupon will show all

String
Example : true
[with_banner]
  • Optional
To filter campaigns with banners only below is the available option.

List of available option
  • true - Filter only with banners
  • false or "blank" - will not filter for banners will show all

String
Example : true

Response data type and sample

Parameters name Description and Example
"status" API call Status, There will be only 2 type of respond
Example :
  • "success"
  • "error"
"message" API call message status, If your API key is correct you will get below status
  • "Success"

If your API Token is wrong you will get error as below
  • "Token Signature could not be verified"

If you Get this below error it means your header is incorrect.
  • "Failed to authenticate because of bad credentials or an invalid authorization header"
  • "Incorrect arguments. Please fill up start_date and end_date"
  • "Incorrect arguments"

*Please ensure your API's credentials are correct and please refer to our sample request.
"page" Current page index

Number
Example : 1
"limit" Number of data available in 1 page - Maximum is 100 entry per page

Number
Example : 100
"count" Count of total number of data available

Number
Example : 246
"nextPage" Next page number

Number
Example : 3
"campaign_banner_id" Campaign banner id is unique for every campaign in involve asia

Number
Example : 123
"offer_id" Advertiser or offer unique reference ID

Number
Example : 289
"offer_name" Advertiser or Program Name

String
Example : Medical Departures
"campaign_name" Campaign Name and details

String
Example : 60% OFF storewide!
"description" Details and description of the campaign

String
Example : 60% OFF storewide! for all Photobooks
"voucher_code" Campaign or promotion coupon code, Please take note if coupon code is not available the response will return as blank

String
Example : IARAM60
"date_campaign_start" Campaign Start date, If you prefer to see only active campaigns for specific start dates you can filter by date.

(YYYY-MM-DD)

String
Example : 2017-02-26
"date_campaign_end" Campaign end date,If you prefer to see only active campaign for specific end date you can filter by end date.

(YYYY-MM-DD)

String
Example : 2017-02-26
"banner_image_url" Image banners for the campaign can be used by you to promote.

String
Example : https://img.involve.asia/rpss/campaigns_banners/no-img.jpg
"tracking_link" Publisher campaign landing page tracking link

String
Example : https://invol.co/aff_m?offer_id=577&aff_id=2&source=deeplink_generator&url=https%3A%2F%2Fwww.medicaldepartures.com%2F
"categories" Program categories (Fashion,Travel, Finance and etc)

String
Example : Health & Beauty
"with_banner" Campaign banner availability Status

If return response as below
  • true (Banner is available from this campaign)
  • false (Banner is not available for this campaign)

String
Example : true

Deeplink

Deeplink Generator

How to call it

curl -X POST "https://api.involve.asia/api/deeplink/generate" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer [token]" \
    -d "offer_id=2281" \
    -d "url=https://www.lazada.com.my/shop-audio-2"
var settings = {
    "async": true,
    "crossDomain": true,
    "url": "https://api.involve.asia/api/deeplink/generate",
    "method": "POST",
    "headers": {
        "accept": "application/json",
        "Authorization": "Bearer [token]"
    },
    "data": {
        "offer_id": 2281,
        "url": "https://www.lazada.com.my/shop-audio-2",
    }
}

$.ajax(settings).done(function (response) {
    console.log(response);
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.involve.asia/api/deeplink/generate",
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_POSTFIELDS => http_build_query(
      array(        
            "offer_id" => 2281,
            "url" => "https://www.lazada.com.my/shop-audio-2",
            )
      ),
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer [token]"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

How does the response look

{
  "status": "success",
  "message": "Success",
  "data": {
    "offer_name": "Lazada (MY)",
    "offer_id": 2281,
    "merchant_id": 101132,
    "tracking_link": "https:\/\/invol.co\/clh7nii"
  }
}

Involve Asia Deeplink API is a powerful tool for publishers to generate link on the go. You can programmatically generate links at scale to support all of your campaigns.

API Limitations

Limitation Details
Rate Limits 20 API Calls/minute
1 API call = 1 deeplink generated
Monthly Limits 1000 Per Month

HTTP Request

POST https://api.involve.asia/api/deeplink/generate

Which data fields you can filter

Field name Description
[offer_id]
  • Required
Program that you would like to generate deeplink.

String
ID of the offer
Example : 2281
[url]
  • Required
Destination link that you would like to deeplink.

String
Destination URL
Example : https://www.lazada.com.my/shop-audio-2
[aff_sub]
  • Optional
Affiliate sub 1

String
Example : sub_1
[aff_sub2]
  • Optional
Affiliate sub 2

String
Example : sub_2
[aff_sub3]
  • Optional
Affiliate sub 3

String
Example : sub_3
[aff_sub4]
  • Optional
Affiliate sub 4

String
Example : sub_4
[aff_sub5]
  • Optional
Affiliate sub 5

String
Example : sub_5

Response data type and sample

Parameters name Description and Example
"status" API call Status, There will be only 2 type of respond
Example :
  • "success"
  • "error"
"message" API call message status, If your API key is correct you will get below status
  • "Success"

If your API Token is wrong you will get error as below
  • "Token Signature could not be verified"

If you Get this below error it means your header is incorrect.
  • "Failed to authenticate because of bad credentials or an invalid authorization header"
  • "Incorrect arguments. Please fill up start_date and end_date"
  • "Incorrect arguments"

*Please ensure your API's credentials are correct and please refer to our sample request.
"offer_id" Advertiser or offer unique reference ID

Number
Example : 289
"offer_name" Advertiser or Program Name

String
Example : Medical Departures
"tracking_link" The deep link URL created by this endpoint.

String
Example : https://invol.co/clh7nii

Shopee Commissions Xtra

All Shopee Brand Commissions Xtra

How to call it

curl -X POST "https://api.involve.asia/api/shopeextra/all" \
    -H "Accept: application/json" \
    -H "Authorization: Bearer [token]" \
    -d "page=1" \
    -d "limit=100" \
    -d "filters[shop_name]=mobile" \
    -d "filters[shop_type]=mall" \
    -d "filters[sort_type]=high_commission" \
    -d "filters[country]=Malaysia" 
var settings = {
    "async": true,
    "crossDomain": true,
    "url": "https://api.involve.asia/api/shopeextra/all",
    "method": "POST",
    "headers": {
        "accept": "application/json",
        "Authorization": "Bearer [token]"
    },
    "data": {
        "page": 1,
        "limit": 100,
        "filters[shop_name]": "mobile",
        "filters[shop_type]": "mall",
        "filters[sort_type]": "high_commission",
        "filters[country]": "Malaysia"
    }
}

$.ajax(settings).done(function (response) {
    console.log(response);
});
<?php

$curl = curl_init();

curl_setopt_array($curl, array(
  CURLOPT_URL => "https://api.involve.asia/api/shopeextra/all",
  CURLOPT_POST => true,
  CURLOPT_RETURNTRANSFER => true,
  CURLOPT_FOLLOWLOCATION => true,
  CURLOPT_POSTFIELDS => http_build_query(
      array(        
            "page" => 1,
            "limit" => 100,
            "filters[shop_name]" => "mobile",
            "filters[shop_type]" => "mall",
            "filters[sort_type]" => "high_commission",
            "filters[country]" => "Malaysia"
            )
      ),
  CURLOPT_HTTPHEADER => array(
    "Authorization: Bearer [token]"
  ),
));

$response = curl_exec($curl);

curl_close($curl);
echo $response;

How does the response look

{
  "status": "success",
  "message": "Success",
  "data": {
    "shop_id": "100",
    "shop_name": "Official Store", 
    "shop_type": "mall",
    "shop_link": "https://shopee.com.my/shop/100",
    "shop_image": "https://cf.shopee.com.my/file/79777fcca942fc51347995a2f7dc80b0",
    "shop_banner": [
        "https://cf.shopee.com.my/file/79777fcca942fc51347995a2f7dc80b0",
        "https://cf.shopee.com.my/file/79777fcca942fc51347995a2f7dc80b0"
    ],
    "offer_name": "Shopee MY - CPS",
    "country": "Malaysia",
    "period_start_time": "2023-03-03",
    "period_end_time": "2023-06-01",
    "commission_rate": "0.7000",
    "tracking_link": "https://invol.co/aff_m?offer_id=124&aff_id=13972&source=ia_api_shopeextra&url=https%3A%2F%2Fshopee.com.my%2Fshop%2F100"
  }
}

Get detailed information about Shopee Brand commission Xtra

API Limitations

Limitation Details
Rate Limits 200 Per Page

HTTP Request

POST https://api.involve.asia/api/shopeextra/all

Which data fields you can filter

Field name Description
[shop_name]
  • Optional
Search by shop name

String
Brand name
Example : Mobile
[shop_type]
  • Optional
Filter specific shop type

List of available option
  • mall
  • preferred

String
Shop Type
Example : mall
[sort_type]
  • Optional
Sort shop listing

List of available option
  • latest_updated
  • high_commission

String
Sort Type
Example : high_commission
[country]
  • Optional
Filter by country availability, For example if you are would like to filter which shop is available in Singapore you can just filter the country

List of available option
  • Malaysia
  • Singapore
  • Indonesia
  • Thailand
  • Vietnam
  • Philippines
  • Taiwan

String
Shop availability country
Example : Malaysia

Response data type and sample

Parameters name Description and Example
"status" API call Status, There will be only 2 type of respond
Example :
  • "success"
  • "error"
"message" API call message status, If your API key is correct you will get below status
  • "Success"

If your API Token is wrong you will get error as below
  • "Token Signature could not be verified"

If you Get this below error it means your header is incorrect.
  • "Failed to authenticate because of bad credentials or an invalid authorization header"
  • "Incorrect arguments. Please fill up start_date and end_date"
  • "Incorrect arguments"

*Please ensure your API's credentials are correct and please refer to our sample request.
"shop_id" Seller shop id in shopee

Number
Example : 100
"shop_name" Shop name in shopee

String
Example : Official Store
"shop_type" Shop type in shopee

String
Example : mall
"shop_link" Shop URL in shopee

String
Example : https://shopee.com.my/shop/100
"shop_image" Shop image URL or logo

String
Example : https://cf.shopee.com.my/file/79777fcca942fc51347995a2f7dc80b0
"shop_banner" Shop banner images URL

String
Example : https://cf.shopee.com.my/file/79777fcca942fc51347995a2f7dc80b0
"offer_name" Advertiser or Program Name

String
Example : Shopee MY - CPS
"country" Shop country

String
Example : Malaysia
"period_start_time" Xtra commission program start time

String
Example : 2023-03-03
"period_end_time" Xtra commission program end time

String
Example : 2023-06-01
"commission_rate" The commission rate, e.g. set "0.0123" if the rate is 1.23%

String
Example : 0.7000
"tracking_link" Involve Asia tracking link

String
Example : https://invol.co/aff_m?offer_id=124&aff_id=13972&source=ia_api_shopeextra&url=https%3A%2F%2Fshopee.com.my%2Fshop%2F100