Publishers API


Updated:

1. Get started

API token can be retrieved on the “Account->Api Settings” page.


You can add token in two ways:

– through GET parameter ?token=yourtoken

– through Authorization Header Bearer {yourtoken}

2) Routes
The main route of all requests:

https://app.indoleads.com/api



2.1. Search for the Offers (include tracking links)

Desc: This API method provides the ability to filter offers by type, category, status, geo, and keyword. Also, it allows getting tracking links included in the response if source_id would be provided. Please take note that the response doesn't contain data about offer visibility and application status to the offers with "need approval" visibility, "2.3.  Get Offers list" should be used in case information about the offer visibility and application status is required.

API Users should also take note of the errors returned by the API in the data.*.tracking_link response field.

Route: /getOffers

Type: GET

Update 30/03/2023: fixed a bug with the returned list of campaigns if there was no filtering by status. Previously all campaigns were returned by default, but now the API method will return only active ones.

Name

Values

Description

Example

Required

type

cps, cpa, cpi



type=cps

No

category



filter by category name

category=nameOfCategory

No

status

inactive, all, active

Offer status. The default value is active



No

search



Search by offer title, offer description and offer URL.



No

geo



geo of ISO 3166-1 alpha-2 format

https://gist.github.com/vxnick/380904

Set GEOs by comma

geo=AI,AF

No



limit

int, min:1, max:100, default:25

Limit set number of offers in response

limit=25

No

page

int

Page in the total amount of response results

page=5

No

overage

true,false

filter by overage CAP

overage=true

No

source_id

int

source_id could be taken from the list of sources in the platform or using "4.2 Get a list of the publisher's sources" API method. It is required to get tracking links in response 

source_id=1232

No



Response fields:

Name

Values

Description

status

success, error

Request status

message



Success or error message

count



Number of results in response (in data array)

totalCount



Number of total results

totalPages



Number of available pages (according to used limit value)

page



Current page number

data



List of offers

data.*.id



Offer id

data.*.website_url



Offer website preview link

data.*.status



Offer status

data.*.category



Offer category

data.*.category.name



Offer category name

data.*.geo



Countries, in which this offer is available

data.*.tracking_link



*source_id required to get tracking link

Tracking link or error message if something went wrong.

Errors list:
error: source_id is required to get tracking link URL - in case if source_id is not provided or empty.

error: tracking links available only for publishers - if request is send by user with role different from publisher.

error: invalid source_id value provided - if provided source_id is not exists or related to the other account.

error: source type is restricted by offer rules - source type of the source provided in request is not listed in the Offer traffic restrictions rules.

error: source type is forbidden by offer rules - some offers may forbid different traffic sources. Please check the Offer traffic restrictions section to select the source correctly.

error: please apply to the offer to get tracking link - in case if the Offer has “need approval“ visibility, and application to the Offer is required to work with that Offer.

error: you application to the offer is pending - if publisher`s application to the offer is created but pending (awaiting for approval).

error: you application to the offer is rejected, contact to you manager to get details - if publishers`s application to use the Offer was rejected.

error: unknown problem, please contact support to get more details - unknown problem that requires investigation.

data.*.type



Offer types

data.*.payout



Offer payout description

data.*.short_payout



Offer short payout description

data.*.hold_period



Hold periods. Number of days

data.*.cookie_lifetime



Cookie lifetime in days

data.*.deeplink

true/false

offer deeplink

data.*.hold_period



hold period

data.*.cookie_lifetime



cookie lifetime

data.*.cookie_lifetime_is_hours

true/false

Determine if the cookie lifetime is in hours (true) or not (false)

data.*.traffic_restrictions



Offer traffic restriction

data.*.traffic_restrictions.*.name



Traffic restriction name

data.*.traffic_restrictions.*.status

allowed, forbiden, need approval

Traffic restriction status

data.*.logo



Offer logo link

data.*.banners



List of offer banners

data.*.banners.*.size



Banner size (e.g. "100-120"  => width 100px, height 120px)

data.*.banners.*.file



Banner file name

data.*.banners.*.link



Banner download link

data.*.landing_pages



List of offer landing pages

data.*.landing_pages.*.id



Landing page id

data.*.landing_pages.*.title



Landing page title (name)

data.*.landing_pages.*.preview_url



Landing page URL



2.2. Get Offer details

Route: /getOffer/{id}?source_id={source_id}

Type: GET

Parameters:

Name

Values

Description

Example

Required

id

int

Offer id



Yes

source_id

int

source_id could be taken from the list of sources in the platform or using "4.2 Get a list of the publisher's sources" API method. It is required to get tracking links in response 

source_id=1232

No



Response Fields:

Name

Values

Description

id



offer id

status



offer status

website_url



Offer website preview link

status



Offer status

category



Offer category

geo



Countries, in which this offer is available

tracking_link



*source_id required to get tracking link

Tracking link or error message if something went wrong.

Errors list:
error: source_id is required to get tracking link URL - in case if source_id is not provided or empty.

error: tracking links available only for publishers - if request is send by user with role different from publisher.

error: invalid source_id value provided - if provided source_id is not exists or related to the other account.

error: source type is restricted by offer rules - source type of the source provided in request is not listed in the Offer traffic restrictions rules.

error: source type is forbidden by offer rules - some offers may forbid different traffic sources. Please check the Offer traffic restrictions section to select the source correctly.

error: please apply to the offer to get tracking link - in case if the Offer has “need approval“ visibility, and application to the Offer is required to work with that Offer.

error: you application to the offer is pending - if publisher`s application to the offer is created but pending (awaiting for approval).

error: you application to the offer is rejected, contact to you manager to get details - if publishers`s application to use the Offer was rejected.

error: unknown problem, please contact support to get more details - unknown problem that requires investigation.

type



Offer types

deeplink

true/false

offer deeplink

hold_period



hold period

cookie_lifetime



cookie lifetime

traffic_restrictions



traffic names

logo



Offer logo link

banners



banners

landing_pages



landing pages





2.3.  Get Offers list

Desc: The API method will provide an offers list with information about the users application status for said offers. When the offer visibility returned is “need approval” then the additional fields applied, allowed, and rejected will be listed in response. These Boolean fields indicate the status of the user application. Find more detail here in the fields description .

Route: /offers

Type: GET

Parameters:

Name

Values

Description

Example

Required

page

int

Page in total amount of response results

page=5

No



Response fields:

Name

Values

Description

total



Number of total offers

per_page



Number of data limit in one page

current_page



Number of current page

last_page



Number of last page

first_page_url



URL for first page

last_page_url



URL for last page

next_page_url



URL for next page

prev_page_url



URL for previous page

path



Path of URL

from



Number of first data in current page

to



Number of last data in current page

data



List of offers

data.title



offer name

data.type



cps, cpl, etc.

data.deleted_at





data.id_thumbnail





data.advertiser_id





data.geo





data.short_payout





data.preview_url





data.cr



conversions rate

data.category_id





data.created_at





data.overage

 

 

data.visibility

active, need approval, private, testing

 Offer visibility rules:
active - visible for all.
need approval - publishers have to apply to the offer and get approval to use it. Application status is described in allowed, applied and rejected fields.

private - private offer, available for particular publishers only.

testing - an offer that is used for testing or it’s integration with Indoleads is in progress.

data.allowed

bool

* Used only if visibility is ‘need approval'
The field has TRUE If Publisher`s application to the offer was approved, FALSE - if publisher doesn’t applied to the offer or his application is pending or rejected.

data.applied

bool

* Used only if visibility is 'need approval'

The field has TRUE If Publisher applied to the offer and the application is pending, FALSE - if application was approved, rejected or doesn’t exists.

data.rejected

bool

* Used only if visibility is 'need approval'

The field has TRUE If Publisher`s application to the offer was rejected, FALSE - if publisher doesn’t applied to the offer or the application is pending or approved.

data.blocked

bool

Displays if user was banned for using the offer.

data.active

bool



data.advertiser





data.traffic_restrictions





data.caps





Example:

Request:
curl -H 'Accept: application/json' -H "Authorization: Bearer ${TOKEN}" https://app.indoleads.com/api/offers

Response:

{ "current_page": 1, "data": [ { "id": 3, "title": "Zalora Hong Kong", "type": "cps", "deleted_at": null, "id_thumbnail": "3_5a685fc227207.jpg", "advertiser_id": "59d23374b6920d0dc868ce3e", "geo": "HK", "short_payout": "HKD160; 6%", "preview_url": "https:\/\/www.zalora.com.hk", "cr": 0.04, "category_id": 60, "created_at": "2018-04-03 07:05:50", "visibility": "need approval", "overage": 0, "allowed": false, "applied": true, "rejected": false, "blocked": false, "active": true, "advertiser": { "id": "59d23374b6920d0dc868ce3e", "name": "-", "active": true }, "traffic_restrictions": [ { "id": 1, "name": "Paid search (Brand)", "description": "Google Adwords, Yandex Direct, Bing Ads and usage of \"branded\" keywords", "created_at": "2018-04-17 05:34:12", "updated_at": "2018-11-22 21:56:16", "network_id": 3, "status": "forbidden" }, { "id": 2, "name": "PPC (not search)", "description": "Adwords, Yandex Direct, Bing ads. Without usage of branded keywords", "created_at": "2018-04-17 05:34:21", "updated_at": "2018-11-22 22:10:53", "network_id": 3, "status": "allow" }, { "id": 3, "name": "SEO", "description": "websites-satellites, doorways, landing pages", "created_at": "2018-04-17 05:34:36", "updated_at": "2018-11-22 21:59:44", "network_id": 3, "status": "need approval" }, ... ], "caps": [] }, { "id": 47, "title": "Chic Me - World", "type": "cps", "deleted_at": null, "id_thumbnail": "47_c69529f75ef9b.png", "advertiser_id": "5a54be18b6920d7eaa5ffec0", "geo": "ALL", "short_payout": "13%", "preview_url": "https:\/\/www.chicme.com\/", "cr": 0.3, "category_id": 516, "created_at": "2018-04-03 07:06:20", "visibility": "active", "overage": 0, "blocked": false, "active": true, "advertiser": { "id": "5a54be18b6920d7eaa5ffec0", "name": "-", "active": true }, "traffic_restrictions": [...], "caps": [] }, ... ], "first_page_url": "https:\/\/app.indoleads.com\/api\/offers?page=1", "from": 1, "last_page": 336, "last_page_url": "https:\/\/app.indoleads.com\/api\/offers?page=336", "next_page_url": "https:\/\/ap.indoleads.com\/api\/offers?page=2", "path": "https:\/\/app.indoleads.com\/api\/offers", "per_page": 10, "prev_page_url": null, "to": 10, "total": 3351 }

2.4. Get conversions report

Route: /conversions

Type: GET

Parameters:

Name

Values

Description

Example

Required

startDate



Start date filter

format 2018-07-27

startDate=2018-07-27

Yes

endDate



End date filter

format 2018-07-27

endDate=2018-07-27

Yes

limit



Conversion limit for one request

Default limit is 1000 conversions

max limit is 1000

min limit is 1

limit=300

No

page



if count of conversions are more than your Limit use page

page=2

No

ConversionId



Get only by this parameter



No

ClickId



Get only by this parameter



No

status

pending, declined, approved, overaged, paid





No

offer



Filter by offers,

set offer ides by comma

offer=1,2,3

No


Response Fields:

Name

Values

Description

status

Enum:
success,

error

Request processing status

message

string

Error message

count

integer

Numer of conversions in response

data

array

List of conversions. Each item inside of the data list represents Conversion instance

data.*.conversion_id

UUID

Conversion ID

data.*.offer_id

integer

Offer ID / Campaign ID

data.*.date

string

Conversion date (in YYYY-MM-DD format)

data.*.status

Enum:
pending,
approved,
declined,
paid,
averaged

Conversion status

data.*.created

integer

Conversion created date timestamp

data.*.currency

string,
3 letter currency code

Conversion currency

data.*.payout

float

Payout, publisher`s reward

data.*.payout_usd

float

Payout reward converted to the USD

data.*.sale_amount

float

Order amount

data.*.offer_title

string

Offer title

data.*.click_time

string

Click event timestamp

data.*.p1

string

Publisher`s custom parameter #1

data.*.p2

string

Publisher`s custom parameter #2

data.*.p3

string

Publisher`s custom parameter #3

data.*.p4

string

Publisher`s custom parameter #4



2.5. Search offers by domain

Route: /search_offers

Type: GET


Parameters:

Name

Values

Description

domain



Filter offers by website URL. Required field 

url



Deep link that will be added to tracking link

p1



Custom parameter #1 that will be added to tracking link

p2



Custom parameter #2 that will be added to tracking link

p3



Custom parameter #3 that will be added to tracking link

p4



Custom parameter #4 that will be added to tracking link

publisherId



Only for network and advertiser roles. Sets publisher for offer tracking link

source_id

int

source_id could be taken from the list of sources in the platform or using "4.2 Get a list of the publisher's sources" API method. It is required to get tracking links in response 


Response Fields:

Name

Values

Description

id



Offer id

title



Offer title

preview_url



Offer website preview link

logo



Offer logo link

type

cps, cpa, cpi

Offer types

tracking_link



Offer tracking link, that should be placed for traffic generating

*source_id required

geo

Country codes

Countries, in which this offer is available



2.6. Apply to the Offer

Desc: This API method should be used by publishers to send applications to the Offer(s) with "need approval" visibility.

Route: /offers/{offerId}/apply

Type: POST



Parameters:

Name

Values

Description

Required

source

int

Identifier of publisher source

yes



Return status message of offer requesting.



3.1.  Get coupons

Route: /getCoupons

Type: GET

Desc: API to fetch coupons related to the offers approved for the publisher.

Update: 16/11/2022 : Bug fix to restrict response to coupons related to offers the publisher has been approved for.

Response Fields:

Name

Values

Description

id



Offer id

short_description



Offer title

description



Offer website preview link

discount



Offer logo link

discount_type

percent,

Offer types

geo

Country codes



start_duration





end_duration





code





offer





offer.id





offer.title





offer.logo





offer.short_desc





offer.geo





offer.type





offer.payout







To receive tracking links for coupons via API, you must
1. Take the offer.id value from the getCoupons method (https://confluence.indoleads.com/display/PUB/API#API-3.1.Getcoupons), for example, 972
2. Use the getOffer method through the input of which to transfer the Id of the offer, for example, 972: https://app.indoleads.com/api/getOffer/972
3. Take a link from the tracking_link parameter



4.1. Get publisher's sources types

Route: /getPublisherSourcesTypes/{publisher_id}

Type: GET

Parameters:

Name

Values

Description

Example

Required

publisher_id



Publisher id



Yes


Response fields:

Name

Values

Description

status

success, error

Request status

message



Empty or error message

count



Number of results in response (in data array)

data



List of source types

data.*.id



Offer id

data.*.name



Source type title



Possible source types and its ids:

id

title

description

1

Paid search (Brand)

Google Adwords, Yandex Direct, Bing Ads and usage of "branded" keywords

2

PPC (not search)

Adwords, Yandex Direct, Bing ads. Without usage of branded keywords

3

SEO

websites-satellites, doorways, landing pages

4

Emails



5

Popunder/Clickunder



6

Reachmedia



7

Teaser Networks



8

Retargeting

Any retargeting/remarketing platform

9

Display Traffic

Non-Google or Facebook, Demand-Supply side platforms

10

Google Display

Google Display Network

11

Coupons



12

Cashbacks



13

Incentive



14

Social Media

Personal page in Facebook, Twitter, Instagram, Vkontakte, Youtube

15

Websites

Blog, personal website, marketplace, ecommerce, online magazine

16

Context ads

Any pay-per-click platform not related to search engines

33

Re-brokering



34

Push Notification



35

Native ads



36

Facebook Display

Facebook Ads & Instagram

43

Doorways

web pages that are created for the deliberate manipulation of search engine indexes

93

Toolbar





4.2 Get a list of the publisher's sources

Route: /sources

Type: GET


Response fields:

Name

Values

Description

status

success, error

Request status

message



Empty or error message

list



List of sources

list.*.id



Source ID

list.*.type



Source type title

list.*.url



Website URL (if source type is a website)



4.3 Get or create a tracking link

Route: /tracking_links

Type: POST


Parameters:

Name

Values

Description

Example

Required

offer_id

int

Offer ID

2017

Yes

source_id

int

Source ID

1234

Yes

p1

string

Custom parameter to add to the tracking link



No

p2

string

Custom parameter to add to the tracking link



No

p3

string

Custom parameter to add to the tracking link



No

p4

string

Custom parameter to add to the tracking link



No

deeplink_url

string

Deeplink URL that should be the final landing page of tracking link



No


Response fields:

Name

Values

Description

status

success, error

Request status



Empty or error message

tracking_link



Tracking link



5 Feeds

5.1 Fetch possible offer list to generate feeds.

Route: /api/feed/offers

Type: GET

Parameters: none

Response fields:

Name

Values

Description

active

boolean

Offer active status

boolean

True If you are requested to this offer

applied

boolean

True If request is approved

blocked

boolean

True If request is declined

description

string

Offer description

geo

string country codes.

ALL - All

Offer geo information

id

int

Offer id

id_thumbnail

string

Logo file name

in_blacklist

boolean

True If you are blacklisted for this offer

logoCDN

string

Link to logo on CDN services

preview_url

string



rejected

boolean



short_payout

percentage string



title

string



type

cps, cpa, cpi

Offer types

visibility

active, need approval, private

Offer visibility



5.2 Generate feed

Route: /api/feed/generate

Type: POST

Parameters:

Name

Values

Description

Example

Required

offer

int

Offer ID

2017

Yes

Return status message. Link for feed will be sent to your email