Conversions
Read conversions, record them from your server and change their status.
List conversions
GET /api/v1/conversionsTakes the same filters as clicks, plus transaction_id:
curl "https://app.affilinext.com/api/v1/conversions?status=approved&from=2026-10-01" \
-H "Authorization: Bearer ak_your_key"Each conversion includes id, clickId, campaignId, affiliateId, transactionId, status, payout, revenue, currency, goal, country, sub, createdAt and updatedAt.
Record a conversion
For advertiser and admin keys. The API version of the S2S postback — your API key replaces the postback token.
POST /api/v1/conversions
Content-Type: application/json{
"click_id": "clk_9e1f...",
"txid": "order-10293",
"status": "approved",
"revenue": 49.99,
"currency": "USD",
"goal": "purchase"
}| Field | Required | Description |
|---|---|---|
click_id | Yes* | The click ID you received on the offer URL |
txid | Recommended | Your own unique order or event ID. Prevents double counting. |
status | No | approved (default), pending or rejected |
revenue | No | Sale amount. Used as the base for RevShare payouts. |
payout | No | Only used if the campaign accepts advertiser-supplied payouts |
currency | No | e.g. USD. Defaults to the campaign currency. |
goal | No | Event name for multi-goal campaigns. Defaults to default. |
coupon | No | *Instead of click_id, attribute by coupon code |
Response 201:
{ "success": true, "status": "recorded", "conversion": { "id": "cv_31a7...", "status": "approved", "payout": 12.5 } }Sending the same txid again
A conversion is identified by its txid within a campaign (without a txid, by click ID and goal). Sending it again never counts it twice:
| What you send | Response |
|---|---|
| Same values as before | 200 with "status": "duplicate" — nothing changes |
A new status, payout or revenue | 200 with "status": "updated" — the conversion is updated and the publisher's postback fires again |
So to approve a conversion you sent as pending, send it again with the same txid and "status": "approved".
| Error | Reason |
|---|---|
400 | No click_id or coupon |
403 | A publisher key was used, or the click or coupon belongs to another advertiser |
404 | Unknown click_id or coupon |
422 | The click was rejected by fraud checks |
Update a conversion (admin)
PATCH /api/v1/conversions/{id}
Content-Type: application/json{ "status": "rejected" }Accepts status (approved, pending, rejected), payout and revenue. Admin keys only. The change is recorded in the audit log.