CPC Clicks
List CPC Clicks
Returns paginated CPC (cost-per-click) click records for the authenticated publisher. Clicks are queried one day at a time via the required date parameter. Add updated_since to re-sync only the records of that day that have changed since your last pull.
GET
/pub_api/v3/cpc_clicks
read:transactions
▶ Run in console
Query parameters
|
date *
date (YYYY-MM-DD)
|
Required. The click date to return. One day per request. Must be 2024-02-29 or later and not in the future. |
|
updated_since
datetime (ISO 8601)
|
Return only clicks from date whose record changed at or after this timestamp - validations, rejections and commission corrections. Use for incremental syncs. |
|
campaign_id
integer
|
Filter by campaign ID. |
|
channel_id
integer
|
Filter by channel ID. |
|
status
string
|
Filter by status: pending, validated, rejected. |
|
page
integer
|
Page number. Default: 1. |
|
per_page
integer
|
Results per page. Default 30, max 500. |
Response fields
FieldTypeDescription
data[].id
integer
CPC click record ID.
data[].transaction_id
integer | null
Linked affiliate transaction ID (when a sale is attached).
data[].click_log_uid
string
Unique click identifier from the tracking system.
data[].campaign_id
integer
Campaign ID.
data[].campaign_name
string
Campaign display name.
data[].channel_id
integer | null
Channel the click was tracked through.
data[].click_date
string
Date of the click (YYYY-MM-DD).
data[].click_timestamp
string
Full click timestamp.
data[].status
string
One of:
pending, validated, rejected.
data[].sale_amount
string
Sale amount tied to the click (2 decimal places). Usually
0.00 for pure CPC.
data[].currency
string
Always
"INR". CPC click amounts are reported in INR even on USD accounts — unlike transactions, invoices and reports, which follow your account currency.
data[].user_commission
string
Publisher commission earned for this click (2 decimal places).
data[].sales
integer
Number of sales attributed to this click.
data[].sub_id – sub_id_6
string | null
Custom sub IDs passed at click time for attribution.
data[].traffic_source
string | null
Traffic source label, if set.
data[].country_iso
string | null
ISO 3166-1 alpha-2 country code of the click.
data[].validated_at
string | null
ISO 8601 timestamp when the click was validated.
data[].rejected_at
string | null
ISO 8601 timestamp when the click was rejected.
data[].updated_at
string
ISO 8601 timestamp of the last change to this record. Track the highest value you receive and pass it back as
updated_since on your next sync of this date.
meta
object
Pagination:
page, per_page, total, total_pages, next_page, prev_page.
Request - one day
curl https://developers.cuelinks.com/pub_api/v3/cpc_clicks \ -H "Authorization: Token YOUR_API_KEY" \ -G \ -d "date=2026-07-10" \ -d "status=validated"
Request - incremental sync
curl https://developers.cuelinks.com/pub_api/v3/cpc_clicks \ -H "Authorization: Token YOUR_API_KEY" \ -G \ -d "date=2026-07-10" \ -d "updated_since=2026-07-12T06:15:00Z"
200 OK
200
{ "data": [ { "id": 884512, "transaction_id": null, "click_log_uid": "clk_a1b2c3d4e5", "campaign_id": 11799, "campaign_name": "Amazon UK", "channel_id": 3424, "click_date": "2026-07-10", "click_timestamp": "2026-07-10 08:32:14", "status": "validated", "sale_amount": "0.00", "currency": "INR", "user_commission": "12.50", "sales": 0, "sub_id": "homepage", "sub_id_2": null, "sub_id_3": null, "sub_id_4": null, "sub_id_5": null, "sub_id_6": null, "traffic_source": null, "country_iso": "GB", "validated_at": "2026-07-12T06:15:00Z", "rejected_at": null, "updated_at": "2026-07-12T06:15:00Z" } ], "meta": { "page": 1, "per_page": 30, "total": 214, "total_pages": 8, "next_page": 2, "prev_page": null } }
Tip — incremental sync
CPC clicks are often validated or rejected days after the click itself. To keep a local copy current without re-downloading everything, iterate over the dates you care about and pass
CPC clicks are often validated or rejected days after the click itself. To keep a local copy current without re-downloading everything, iterate over the dates you care about and pass
updated_since with the highest updated_at you last saw for that date. You'll get back only the records that changed - validations, rejections and commission corrections alike.
One date per request
date is required and accepts a single day - there is no date-range form. Click volume is high enough that clicks are stored in per-day tables, and serving one day at a time is what keeps this endpoint fast. To cover a range, loop over the dates. Data is available from 2024-02-29 onward; a date with no recorded clicks returns an empty data array rather than an error.
CPC vs CPS
This endpoint returns only CPC (cost-per-click) records. For CPS (cost-per-sale) and CPA (cost-per-action) transactions, use /pub_api/v3/transactions.
This endpoint returns only CPC (cost-per-click) records. For CPS (cost-per-sale) and CPA (cost-per-action) transactions, use /pub_api/v3/transactions.