Offer Campaign APIs
Click Listing API
https://api.pingtree.com/click/list/{cid}/{transaction_id}Overview#
The Click Listing API retrieves the set of offers (click listings) associated with a consumer's lead submission. It is called after a lead has been accepted and returns a list of offers the consumer can click on, typically displayed on a results or thank-you page. Each offer includes a click-redirect URL, branding, and call-to-action details.
This endpoint powers the offer wall that consumers see after form submission. It can be called directly from JavaScript or consumed server-side to build a custom offer display.
Endpoint#
GET /api/click/list/{cid}/{transaction_id}| Segment | Description |
|---|---|
{cid} | The campaign unique ID |
{transaction_id} | The transaction ID returned from the lead submission |
Authentication#
No token-based authentication is required. The cid and transaction_id pair authenticates the request by scope.
Request Parameters#
Path Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
cid | string | Yes | Campaign unique ID |
transaction_id | string | Yes | Transaction ID from the lead submission response |
Query Parameters#
| Parameter | Type | Required | Description |
|---|---|---|---|
pid | string | No | Source unique ID for attribution tracking |
device | string | No | Consumer device type: desktop or mobile |
Example Request#
curl "https://api.pingtree.com/api/click/list/cmp_9z8y7x6w/txn_7f3a2b1c-4d56-78ef-9012-abcdef123456"Example Response#
{
"status": 200,
"message": "Click listing retrieved successfully",
"data": {
"offers": [
{
"clickListingId": "cl_001",
"title": "Get Your Free Debt Quote",
"description": "See offers from top-rated lenders in minutes.",
"logoUrl": "https://cdn.example.com/logos/lender-a.png",
"clickUrl": "https://api.pingtree.com/api/click/cl_001/cmp_9z8y7x6w/src_abc123/txn_7f3a2b1c",
"callToAction": "Check My Rate",
"displayOrder": 1,
"device": "both"
},
{
"clickListingId": "cl_002",
"title": "Compare Loan Options",
"description": "Match with lenders who fund within 24 hours.",
"logoUrl": "https://cdn.example.com/logos/lender-b.png",
"clickUrl": "https://api.pingtree.com/api/click/cl_002/cmp_9z8y7x6w/src_abc123/txn_7f3a2b1c",
"callToAction": "View Offers",
"displayOrder": 2,
"device": "both"
}
],
"totalOffers": 2
}
}Response — No Offers Available#
{
"status": 200,
"message": "No offers available for this lead",
"data": {
"offers": [],
"totalOffers": 0
}
}Error — Invalid Transaction ID#
{
"status": 400,
"message": "Invalid or expired transaction_id"
}Click Redirect URL Structure#
Each offer's clickUrl follows this pattern:
GET /api/click/{clickListingId}/{cid}/{pid}/{transactionId}When the consumer clicks an offer link, this URL records the click event and redirects to the advertiser's landing page. The redirect URL is resolved based on the offer configuration and the consumer's device type.
Status Codes#
| HTTP Code | Description |
|---|---|
| 200 | Offer list returned (may be empty) |
| 400 | Invalid cid or transaction_id |
| 500 | Internal server error |
Tips#
- Call after lead submission. The click listing is populated once a lead is accepted. Call this endpoint immediately after receiving a successful submission response.
- Device targeting. Pass the
deviceparameter (desktopormobile) to receive only offers configured for that device type. Offers withdevice: "both"are always included. - Tracking clicks. Each offer's
clickUrlautomatically records the click and handles the redirect — do not modify or reconstruct this URL. Clicks are tracked per impression and used for revenue reporting. - Iframe alternative. If you prefer a managed display, embed the Click Listing iFrame instead of building a custom offer wall with this API.
- CORS. This endpoint supports cross-origin requests, so it can be called directly from browser JavaScript on your landing page domain.