# API Integration Checklist

<table><thead><tr><th width="164.37890625">Feature/ Parameter</th><th>Checklist Question</th><th>Recommendation / Action</th><th>Explanation</th></tr></thead><tbody><tr><td>API Refresh/Pull Rate</td><td>Are you fetching data at the optimal interval?</td><td>Pull data every 5 to 10 minutes.</td><td>We recommend 5 to 10 minutes refresh rate due to capReached parameter refresh to avoid invalid clicks and also if there are any bids changes you can also detect it earlier to avoid discrepancy.</td></tr><tr><td><code>status</code> query parameter</td><td>Are you filtering out paused campaigns?</td><td>Pass the <code>status=active</code> query parameter in API requests.</td><td>To help filtering out paused campaigns</td></tr><tr><td><code>capReached</code> parameter (in API response)</td><td>Are you filtering out capped campaigns?</td><td>Use <code>capReached = true</code> in the response to filter.</td><td>To help filtering out capped campaigns to avoid invalid user clicks</td></tr><tr><td>Campaign ID</td><td>Which identifier are you using to identify a specific campaign?</td><td>Map to <code>campaignId</code> in the API response</td><td><code>campaignId</code> is generated from our internal system so it would be our recommendation to identify a specifc campaign [correspond to <code>campaign_id</code> macros in postback]</td></tr><tr><td>Event ID</td><td>Which identifier are you using to identify a specific event?</td><td>Map to <code>appEventId</code> in the API response</td><td><code>appEventId</code> is generated from our internal system so it would be our recommendation to identify a specific event within a campaign [correspond to <code>app_event_id</code> macros in postback]</td></tr><tr><td><code>rankingScore</code> parameter (in API response)</td><td>Are you using our optimization metric?</td><td>Use this 30-day average CPI/CPA to maximize campaign exposure.</td><td>the rankingScore parameter is the average CPI/CPA of a campaign in last 30 days, you can use this data to maximum and optimize your campaign exposure.</td></tr><tr><td>Media Source</td><td>Are you passing media source data?</td><td>If available, please do send the media source data through Source ID parameter in the tracking (ClickURL) macros [can be setup in Solutions dashboard]</td><td>Media Source data is the data on where  you acquired the users. We will use this in our systems for user base segmentation and allow us to provide media source specific rewards. Can be in string or integer form (etc 5880, or Applovin)</td></tr><tr><td>GAID / IDFA</td><td>Are you passing the device ID (GAID/IDFA) to us through the tracking macros?</td><td>If available, please do send the media source data through Google Ad ID and IDFA parameter in the tracking (ClickURL) macros [can be setup in Solutions dashboard]</td><td>We also use device id to detect fraudulent user activity, if possible, we would also recommend you to send the device id to us.</td></tr><tr><td><code>maxTime</code> parameter (in API response)</td><td>Do you need to check on the maximum allowed time for a event?</td><td>You may utilize the maxTime parameter in our API response where it is the <strong>maximum allowed time</strong> for a user to complete an event after install.</td><td>Available in API response.</td></tr><tr><td>changeId (only in V2 Publisher Active Campaign API)</td><td>Do you need an indicator every time when the payout changes within a campaign?</td><td><code>changeId</code> - parameter that changes everytime we made updates on the payout the specific campaign (etc changing from 1 to 2)</td><td>Integer. You may ingest this parameter on your end to know when some changes in payout occurred in a specific campaign.</td></tr></tbody></table>

***

{% hint style="info" %}
**Tracking URL (s) Handling**

Your system must be able to handle both types of tracking URLs returned in the API response. Set up your tracking macros to dynamically replace `{YOURINPUT}` with actual data:

1. Tyrads URL (`click.tyrads.com`) \[as shown in Solutions dashboard]\
   [`https://click.tyrads.com/?s2s=0&campaignId=5577&publisherId=627&sub2={YOURINPUT}&sub3={YOURINPUT}&sub4={YOURINPUT}&sub5={YOURINPUT}&publisherUserId={YOURINPUT}&sourceId={YOURINPUT}&googleAdId={YOURINPUT}&idfa={YOURINPUT}&oaid={YOURINPUT}&publisherClickId={YOURINPUT}`](https://click.tyrads.com/?s2s=0\&campaignId=5577\&publisherId=627\&sub2={YOURINPUT}\&sub3={YOURINPUT}\&sub4={YOURINPUT}\&sub5={YOURINPUT}\&publisherUserId={YOURINPUT}\&sourceId={YOURINPUT}\&googleAdId={YOURINPUT}\&idfa={YOURINPUT}\&oaid={YOURINPUT}\&publisherClickId={YOURINPUT}) \ <br>

   > Note: Campaigns using `click.tyrads.com` URL will *not* include the `everflowEventId` parameter in payoutEvents, and the `offerId` (from Everflow) will return as `null` within the API response.
2. Everflow URL (`ltv-mob.com` )\
   [`https://www.ltv-mob.com/257J8KR/2N13CLN5/?sub1={YOURINPUT}&sub2={YOURINPUT}&sub3={YOURINPUT}&sub4={YOURINPUT}&sub5={YOURINPUT}&user_id={YOURINPUT}&source_id={YOURINPUT}&google_aid={YOURINPUT}&idfa={YOURINPUT}`](https://www.ltv-mob.com/257J8KR/2N13CLN5/?sub1={YOURINPUT}\&sub2={YOURINPUT}\&sub3={YOURINPUT}\&sub4={YOURINPUT}\&sub5={YOURINPUT}\&user_id={YOURINPUT}\&source_id={YOURINPUT}\&google_aid={YOURINPUT}\&idfa={YOURINPUT})
   {% endhint %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.tyrads.com/publishers-integrations/api-integration-checklist.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
