Documentation menu
Offers API

Offers API Reference

Pull available offers as JSON over HTTP Basic auth and build your own offer UI.

The Offers API returns the same offer inventory the Offer Wall renders — as JSON, so you can build your own earning experience: custom cards, your own sorting, native UI. One endpoint, personalized per user, paginated.

Authentication

HTTP Basic auth on every request: the username is your publisher ID, the password is your API key — both shown in the publisher portal (requires a publisher login). The publisher ID also appears in the endpoint path; access is decided by your credentials, not by the path segment.

edgecash / offers-api
1
GET https://edgecash.ai/api/v1/publishers/YOUR_PUBLISHER_ID/offers?subid1=user_123
request.http http UTF-8 LF

Responses: 200 with the offers payload; 401 when credentials are invalid; 422 when a parameter fails validation.

Query parameters

Parameter Type Required Example Description
subid1 string Yes subid1=user_123 Your unique identifier of the end-user this request is for. Max 60 characters. Used to score the user and personalize the response — never share the same value across different users.
countries[] string[2] No countries[]=US&countries[]=CA ISO-2 country codes. Filters offers targeted to these countries.
platforms[] int No platforms[]=3 Platform IDs — see the Platform mapping below.
categories[] int No categories[]=5 Category IDs. Matches any category the offer belongs to.
payout_models[] int No payout_models[]=1 Payout model IDs — see the Payout model mapping below.
per_page int No per_page=50 Results per page. Min 1, max 100. Default 25.

Platform mapping

IDPlatform
1Any (All)
2iOS / Apple
3Android
4Desktop

Payout model mapping

IDPayout model
1CPI
2CPE
3CPA
4CPL
5CPS
6CPR
7CPC
8CPCV
9Rev Share

Request examples

edgecash / offers-api
1
2
3
curl --user 'YOUR_PUBLISHER_ID:YOUR_API_KEY' \
     --header 'Accept: application/json' \
     'https://edgecash.ai/api/v1/publishers/YOUR_PUBLISHER_ID/offers?subid1=user_123&countries[]=US&platforms[]=1&per_page=25'
request.sh bash UTF-8 LF

Sample response

edgecash / offers-api
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{
    "data": [
        {
            "id": 1234,
            "name": "Coin Master — Android CPI",
            "display_name": "Coin Master",
            "description": "Install Coin Master and open the app.",
            "display_description": "Install & play Coin Master!",
            "package_id": "com.moonactive.coinmaster",
            "platform": "Android",
            "payout_model": "CPI",
            "difficulty": "Easy",
            "preview_url": "https://play.google.com/store/apps/details?id=com.moonactive.coinmaster",
            "categories": [
                { "id": 9, "name": "Casino", "is_primary": true },
                { "id": 2, "name": "Mobile Apps", "is_primary": false }
            ],
            "countries": ["US", "CA", "GB"],
            "tags": ["new", "high-payout"],
            "currency": "USD",
            "conversion_rate": null,
            "epc": null,
            "events": [
                {
                    "id": 5678,
                    "name": "Install",
                    "display_order": 1,
                    "payout": 2.50,
                    "estimated_time_to_complete": 600,
                    "geo_payouts": []
                }
            ],
            "caps": [],
            "pro_tips": [],
            "target_systems": [],
            "creatives": [],
            "tracking_link": "https://edgecash.ai/click?t=k7Ax9dQp2eR8&subid1=user_123",
            "start_date": "2026-03-01T00:00:00+00:00",
            "end_date": null
        }
    ],
    "links": { "first": "...", "last": "...", "prev": null, "next": null },
    "meta": { "current_page": 1, "last_page": 1, "per_page": 25, "total": 1 }
}
response.json json UTF-8 LF
Every offer's tracking_link already carries the subid1 you sent — send the user straight to it. The t= token is opaque: don't modify it. You may append subid2/subid3/subid4/device (up to 60 characters each) — they come back in postbacks.

Field reference

Offer data[]

One entry per visible offer. Pagination metadata lives in links and meta.

FieldTypeNotes
id int Stable offer identifier.
name string Internal offer name — useful for logs and dashboards.
display_name string|null User-facing name. Falls back to name if not set.
description string|null Internal description. Plain text.
display_description string|null User-facing description.
package_id string|null Android package or iOS bundle ID where applicable.
platform string Human-readable label — see the Platform mapping above.
payout_model string Human-readable label — see the Payout model mapping above.
difficulty string One of: Easy, Medium, Hard, Very Hard.
preview_url string|null Store listing or landing page used for preview.
categories object[] Every category the offer belongs to; at most one entry carries is_primary = true.
countries string[2][] ISO-2 country codes the offer is targeted to.
tags string[] Editorial tags. May be empty.
currency string Currency for every payout value in the response. Always USD today.
conversion_rate float|null Reserved — currently always null.
epc float|null Reserved — currently always null.
events object[] See Events below. At least one entry per offer.
caps object[] Active conversion caps. See Caps below. Empty when none are set.
pro_tips object[] See Pro Tips below.
target_systems object[] OS / version targeting. See Target Systems below.
creatives object[] Icons and banners attached to the offer. See Creatives below.
tracking_link string Ready-to-use tracking link — already contains the subid1 you sent. The token (?t=...) is opaque: do not modify it; changing subid1 on the URL invalidates the link. You may append subid2/subid3/subid4/device.
start_date string(ISO-8601)|null When the offer becomes active. null = always-on.
end_date string(ISO-8601)|null When the offer expires. null = no end date.

Events data[].events[]

Conversion events (milestones) a user can complete for this offer.

FieldTypeNotes
id int Event identifier — comes back in postbacks as [EID].
name string Event label (Install, Tutorial, Level 5, Purchase…).
display_order int Sort order. Lower = shown first.
payout float Amount in USD paid to you when the end-user completes this event.
estimated_time_to_complete int|null Estimated seconds for an average user to complete the event. null when not supplied.
geo_payouts object[] Per-country payout overrides. See Geo Payouts below.

Geo Payouts data[].events[].geo_payouts[]

Overrides the base event payout for a specific country.

FieldTypeNotes
country string[2] ISO-2 country code the override applies to.
payout float Amount in USD paid when the end-user is from this country. Overrides the event payout.

Caps data[].caps[]

Active throttles on this offer. Conversions stop counting once a cap is hit.

FieldTypeNotes
type string One of: Leads, Clicks, Revenue.
value int The cap ceiling (count for Leads/Clicks, USD for Revenue).
frequency string One of: Hourly, Daily, Weekly, Monthly, Custom Period.

Pro Tips data[].pro_tips[]

Curated hints you can surface to the end user.

FieldTypeNotes
name string Tip text.
display_order int Sort order. Lower = shown first.

Target Systems data[].target_systems[]

Per-OS targeting. Empty array = no OS restrictions beyond the offer platform.

FieldTypeNotes
os string One of: Android, iOS (iPhone), iPadOS (iPad), Windows, macOS, Linux, ChromeOS.
version_min number|null Lowest accepted OS version (major.minor). null = no lower bound.
version_max number|null Highest accepted OS version (major.minor). null = no upper bound.

Creatives data[].creatives[]

Icons, banners and other promo art you can use to advertise the offer.

FieldTypeNotes
id int Creative identifier.
mime_type string MIME type of the file.
width int|null Pixel width. null when not measured.
height int|null Pixel height. null when not measured.
is_primary bool Exactly one creative per offer is marked primary.
file_url string|null Public URL. null when the file is missing.

Pagination Links links

Standard paginator links block.

FieldTypeNotes
first string URL of the first page.
last string URL of the last page.
prev string|null URL of the previous page. null on the first page.
next string|null URL of the next page. null on the last page.

Pagination Meta meta

Counts and current page for the paginator.

FieldTypeNotes
current_page int 1-based page index.
last_page int Total number of pages.
per_page int Rows per page — controlled by the per_page query parameter.
total int Total offers visible to your account, across all pages.

Ready to start earning?

Tell us about your app, site or traffic — and start monetizing with EdgeCash.

Apply as a publisher