User Based Offer API

General Concept

The user-based offer API was designed to be called by the client. You can insert a User ID and get all offers for this specific user. The response will be updated based on the user's progress to give the complete flexibility of visualization.

Target Group or Use Case: Use this API to display the (top) offers in your design. You can replace the offer wall integration with this API without changing anything in your backend.


Call the API

Call the Get Offers Endpoint to get an updated list of available offers for the user. These offers are already sorted by performance (score).

Example Response

{
    "data": {
        "offers": [
            {
                "anchor": "Earn Money Playing Games",
                "app_metadata": {
                    "categories": [],
                    "screenshot_urls": [],
                    "video_urls": []
                },
                "categories": [
                    "CPA",
                    "Free",
                    "Lead Gen"
                ],
                "click_url": "https://bitlabs.link/vc/naeXr2c/users/458671576/offers/698523?s2=bitburst%3Auser-based&s3=0dcafa81-716c-4981-9f34-55f9cb1b8d69&s4=&source_type=user_based_api&funnel_id=01JYKA5G603PKERB91DM7RJDCJ&ps2=rpm",
                "confirmation_time": "Confirms Instantly",
                "creatives": {
                    "images": {}
                },
                "description": "Play games, download apps, test website and do other things to earn money.",
                "disclaimer": "*Points will appear as Pending for 2 days. Each person may redeem this offer only ONCE (1 time). This offer is presented to you by website or app on behalf of a third party merchant or sponsor (\"Merchant\"), which advises us when the offer is completed and a reward should be issued. website or app has not evaluated and does not endorse Merchant's views, policies, products or services, which you are encouraged to evaluate for yourself. Have questions? Please contact the website or app Help Center.",
                "epc": "0.48",
                "events": [
                    {
                        "display_type": "none",
                        "expires_at": 0,
                        "multiple_conversions_allowed": false,
                        "name": "Sign Up And Confirm Email",
                        "payable": true,
                        "payout": "3",
                        "points": "150",
                        "status": "",
                        "ttc_minutes": 0,
                        "type": "flat",
                        "type_id": 2,
                        "uuid": "1a80d65a-33ee-4e8b-8105-ac33845777bd"
                    },
                    {
                        "display_type": "none",
                        "expires_at": 0,
                        "multiple_conversions_allowed": false,
                        "name": "Download A Game And Return To The Game The Next Day.",
                        "payable": true,
                        "payout": "12",
                        "points": "720",
                        "status": "",
                        "ttc_minutes": 0,
                        "type": "flat",
                        "type_id": 2,
                        "uuid": "f6060758-f6bd-4335-bc75-d1d7cdcc11ea"
                    },
                    {
                        "display_type": "none",
                        "expires_at": 0,
                        "multiple_conversions_allowed": false,
                        "name": "Start 3 Offers.",
                        "payable": true,
                        "payout": "25",
                        "points": "1500",
                        "status": "",
                        "ttc_minutes": 0,
                        "type": "flat",
                        "type_id": 2,
                        "uuid": "550ff9fd-b4bf-48e6-8c51-564718c906df"
                    },
                    {
                        "display_type": "none",
                        "expires_at": 0,
                        "multiple_conversions_allowed": false,
                        "name": "Earn $5.",
                        "payable": true,
                        "payout": "30",
                        "points": "1800",
                        "status": "",
                        "ttc_minutes": 0,
                        "type": "flat",
                        "type_id": 2,
                        "uuid": "edef1e7f-e805-4b23-9b21-13ba4f33dce7"
                    },
                    {
                        "display_type": "none",
                        "expires_at": 0,
                        "multiple_conversions_allowed": false,
                        "name": "Make your first withdrawal.",
                        "payable": true,
                        "payout": "38",
                        "points": "2280",
                        "status": "",
                        "ttc_minutes": 0,
                        "type": "flat",
                        "type_id": 2,
                        "uuid": "1719ec2e-ded7-4656-9057-05904a164824"
                    },
                    {
                        "display_type": "none",
                        "expires_at": 0,
                        "multiple_conversions_allowed": false,
                        "name": "Withdraw an additional 25,000 coins.",
                        "payable": true,
                        "payout": "50",
                        "points": "3000",
                        "status": "",
                        "ttc_minutes": 0,
                        "type": "flat",
                        "type_id": 2,
                        "uuid": "791f815e-718b-4825-9302-24c9981eaedc"
                    },
                    {
                        "display_type": "none",
                        "expires_at": 0,
                        "multiple_conversions_allowed": false,
                        "name": "Withdraw an additional 50,000 coins.",
                        "payable": true,
                        "payout": "80",
                        "points": "4800",
                        "status": "",
                        "ttc_minutes": 0,
                        "type": "flat",
                        "type_id": 2,
                        "uuid": "8efc1388-c9fd-4fe1-bc7f-9cae86f7f6b4"
                    },
                    {
                        "display_type": "none",
                        "expires_at": 0,
                        "multiple_conversions_allowed": false,
                        "name": "Withdraw an additional 100,000 coins.",
                        "payable": true,
                        "payout": "100",
                        "points": "6000",
                        "status": "",
                        "ttc_minutes": 0,
                        "type": "flat",
                        "type_id": 2,
                        "uuid": "97f1092d-21b9-45d2-b9f1-88d902563a03"
                    },
                    {
                        "display_type": "none",
                        "expires_at": 0,
                        "multiple_conversions_allowed": false,
                        "name": "Withdraw an additional 250,000 coins.",
                        "payable": true,
                        "payout": "300",
                        "points": "18000",
                        "status": "",
                        "ttc_minutes": 0,
                        "type": "flat",
                        "type_id": 2,
                        "uuid": "55bcba06-0042-453a-b44b-ada27fb47db6"
                    }
                ],
                "funnel_id": "01JYKA5G603PKERB91DM7RJDCJ",
                "icon_url": "https://main-p.agmcdn.com/Dujt36KvZ3sdu438RhTnDFQ9gTAW8J442XoAPL0Z.gif",
                "id": 698523,
                "impression_url": "https://prdgos4.com/v1/user-based-api/i?funnel_id=01JYKA5G603PKERB91DM7RJDCJ&wall_code=naeXr2c&user_id=458671576&aff_id=101768&offer_id=698523&position=1&source_type=user_based_api&ps2=rpm&s2=bitburst%3Auser-based&s3=0dcafa81-716c-4981-9f34-55f9cb1b8d69",
                "is_game": false,
                "is_sticky": false,
                "lowest_cap_left": null,
                "mobile_verification_required": false,
                "offer_expires_at": "2025-07-25T10:29:33Z",
                "pending_time": 2880,
                "product_id": "01JEEGT93XYJCQS4SEFKDWV8DZ",
                "product_name": "zzz-698523",
                "requirements": "Register. Complete offers. Must complete within 30 days.",
                "session_hours": 720,
                "stats": {
                    "network_cpm": "20282"
                },
                "support_url": "https://wall.adgaterewards.com/offer/contact/naeXr2c/698523?s1=458671576",
                "things_to_know": [
                    "Register.",
                    "Complete offers.",
                    "Must complete within 30 days."
                ],
                "total_points": "38250",
                "web_to_mobile": false,
                "web_to_mobile_devices": []
            }
      ]
}

Impression Tracking for Improved Offer Ranking

To enhance the ranking accuracy of games and offers, we support impression tracking. By tracking impressions, we can make more intelligent and higher-performing ranking decisions for the User-Based Offer API.

To implement impression tracking, use the impression_url provided for each offer. When an offer is displayed on a user’s screen during a session, send a POST request to the associated impression_url.

"impression_url": "https://prdgos4.com/v1/user-based-api/i?funnel_id=01JWFJR2X4MNE6PC8YPA46XWA8&wall_code=nq2Wq2U&user_id=444278758&offer_id=698523&source_type=user_based_api&s2=bitburst%3Auser-based&s3=TESTUSER"

This helps ensure rankings are based not only on interactions but also on actual user visibility, leading to better-optimized content delivery.

User Progress

The user based offer API returns the started_offers array, for all games and offers a user has started. This array of offers also includes the status of each offer event. Use this information to display the user's progress and which events have been completed.

Handling multi-conversion events

Multi-conversion events are events that a user can complete multiple times, depending on specific rules that define how frequently and how often conversions are allowed.

To determine if an event supports multiple conversions, check the events.#.multiple_conversions_allowed field.

The configuration for multi-conversion rules is defined in the multiple_conversions_rules object, as shown below:

"multiple_conversions_rules": {
  "every_y_seconds": 2678400,
  "rule_type": "INTERVAL",
  "x_conversions": 5
}

The rule_type field determines how multiple conversions are handled. The following values are supported:

  • UNLIMITED: The user can complete the event an unlimited number of times.
  • TOTAL_CONVERSIONS: The user can complete the event up to x_conversions times in total.
  • INTERVAL: The user can complete the event up to x_conversions times every every_y_seconds interval.

Note: The every_y_seconds field is only applicable when rule_type is set to INTERVAL.