CPAlead Publisher API

Publisher API Documentation

Use these APIs to pull offers, check conversions, and download reversals. If you want, you can also use the OpenAPI file below with your own API tools.

This page is public. Replace placeholder values like {PUBLISHER_ID} and {API_KEY} with your own values after you sign in.

Overview

What this API is designed for

Offer Sync

Pull available offers, filter by device or country, and use updated_since for incremental refreshes.

Tracking Safety

The Offers API never returns native CPC offers. Boost-click offers can appear, but they keep their normal rank.

OpenAPI File

The public OpenAPI file is available at /api/openapi.json .

01

Offers API

Returns a JSON list of available offers. Featured offers can show first. After that, lower offer_rank values show first.

Ranking & Country Payouts

  • Each offer includes an offer_rank where 1 is the highest ranked offer. Featured offers can appear first. After that, results stay in offer_rank order from low to high.
  • Some offers pay different amounts depending on the country. If an offer includes a "payouts_per_country" list, use the payout that matches the user's two-letter country code (e.g., US, CA, GB). If their country isn't in the list, use the default payout shown in "amount".

Offer API Notes

  • CPC offers are not returned by this API.
  • If an offer has boost clicks, it still keeps its normal rank. It is not moved to the top just because it has boost clicks.
  • Using the exact link returned by the API keeps the best attribution. If you save or rebuild links in your own system, clicks still work.

Endpoint

https://www.cpalead.com/api/offers?id={PUBLISHER_ID}

Available HTTP query parameters

HTTP Parameter Description
id Required. Your publisher ID.
country Only show offers from country, pass two letter ISO country code
Use country=user to get offers for user's country automatically
limit Limit the number of offers returned. This can make your API calls faster. Default is 2500 and the maximum is 5000.
type This API does not return CPC offers. By default it returns CPA, CPI, and CPE offers. You can also request CPR with a comma-separated list, for example &type=cpi,cpe,cpr
updated_since Only return offers updated on or after this date. You can use YYYY-MM-DD or a full ISO date and time, for example &updated_since=2026-04-01T00:00:00Z
fields

Only return the offer fields you need. Use a comma-separated list, for example &fields=id,title,link,amount,offer_rank

Available fields: id, title, description, conversion, device, daily_cap, is_fast_pay, link, preview_link, amount, payout_currency, payout_type, countries, epc, creatives, offer_rank, payouts_per_country

offerwall_offers Boolean (true|false). Use true if you also want offers that are marked for offerwalls. CPC offers still stay out, and boost-click offers keep their normal rank.
device

Use this only if you are not using automatic device targeting. By default, the API can return all device types. Use this field to only return certain device types. Available values: ios, android, mobile, and desktop. Device may also be a comma-separated list, for example: &device=ios,android,mobile,desktop

For getting only CPI / CPE offers (which requires only installation for conversion - use device=ios,android

Use device=user to get offers for user's device automatically

subid / subid2 / subid3 SubID tracking allows you to send extra data when a user clicks on your affiliate links by passing a tag at the end of your affiliate links, this parameter will automatically fill in the subid in your tracking link.

You can use SubIDs to segment leads, optimize campaigns, and improve conversions, here is some examples: Sub-Affiliate IDs, Sources (Organic, PPC, Email etc), Keywords, Locations, etc...
A second subid variable for extra data
A third subid variable for extra data
gaid / idfa If you have a Google Advertising ID (GAID) for mobile, use this variable to automatically fill in the gaid on your tracking link
If you have a Apple Identifier For Advertisers (IDFA) for mobile, use this variable to automatically fill in the idfa on your tracking link
format / callback JSON or JSONP format. JSON is default
JSONP callback function name. Only used for JSONP format. If using jQuery getJSON, use callback=? and jQuery will automatically fill function name in for you. See JSONP example

Response example


                                
                            

Code example


                                
                            

02

Conversions API

Limit: 1 request per minute
Conversion API allows you to ping CPAlead to test for conversions, useful for making custom apps. Pass subid in as a subid or ip address, or "user" to have our system use the ip address of the client calling this script (useful for JSONP calls)
For push-type conversion service (Server-to-Server Postback), see our Postback Documentation

Endpoint

https://www.cpalead.com/api/conversions?id={PUBLISHER_ID}&api_key={API_KEY}

Available HTTP query parameters

HTTP Parameter Description
id Required. Your publisher ID.
api_key Required. Your API key.
subid Required. Lookup conversion based on subid, pass subid or users ip address, pass "user" to use the ip address of the client calling this script (useful for JSONP calls)
offer_id Optional. Will check for conversion only for this offer (campaign) id
format / callback JSON or JSONP format. JSON is default
JSONP callback function name. Only used for JSONP format. If using jQuery getJSON, use callback=? and jQuery will automatically fill function name in for you. See JSONP example

Response example


                            
                        

03

Reversals API

Limit: 1 request per minute
Use this API to download your list of bad leads between two dates. Useful for sorting out bad traffic

Endpoint

https://www.cpalead.com/api/reversals?id={PUBLISHER_ID}&api_key={API_KEY}

Available HTTP query parameters

HTTP Parameter Description
id Required. Your publisher ID.
api_key Required. Your API key.
start_date Starting date to use when pulling bad leads. Format: yyyy-mm-dd
end_date End date to use when pulling bad leads. A maximum of one month can be pulled at a time
format / callback JSON or JSONP format. JSON is default
JSONP callback function name. Only used for JSONP format. If using jQuery getJSON, use callback=? and jQuery will automatically fill function name in for you. See JSONP example

Response example