### Example Callback URL Configuration Source: https://www.ayetstudios.com/openapi/publisher-doc/index This example shows how to configure a postback URL in the publisher dashboard. It includes placeholders for various event and placement data that will be dynamically replaced when a callback is triggered. The URL structure is designed to pass relevant information to your ad server for tracking and processing. ```plaintext https://www.your-ad-server.com/postback?event_value={event_value}&event_name={event_name}&placement_identifier={placement_identifier}&adslot_id={adslot_id}&sub_id={external_identifier}&your_parameter={custom_1} ``` -------------------------------- ### PHP Static API Request Example Source: https://www.ayetstudios.com/openapi/publisher-doc/index This snippet demonstrates how to make a GET request to the ayeT Studios Static API using PHP and cURL. It shows how to set the endpoint URL with parameters like adslot, apiKey, countries, platform, and conversion_type. The response is captured and error handling is included. ```php "https://www.ayetstudios.com/offers/get/3142?apiKey=xxxx&countries%5B%5D=DE&platform%5B%5D=ios&conversion_type%5B%5D=cpi", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:"; var_dump($err); } else { echo $response; } ?> ``` -------------------------------- ### Example Tracking Link and Postback Source: https://www.ayetstudios.com/openapi/publisher-doc/index Illustrates a user tracking link with parameters and the resulting postback URL sent to the publisher's server upon conversion. The postback includes offer details and user-specific identifiers. ```url https://www.ayetstudios.com/s2s/pub/53270/1/1?external_identifier=your-user-id-1&custom_1=your-custom-click-id ``` ```url https://www.your-ad-server.com/postback?payout_usd=0.51&placement_identifier=my_api_placement&adslot_id=18&sub_id=your-user-id-1&your_parameter=your-custom-click-id&is_chargeback=0-or-1 ``` -------------------------------- ### GET /offers Source: https://www.ayetstudios.com/openapi/publisher-doc/index Retrieves a list of available offers with details such as store ID, landing page, icons, descriptions, tags, platform information, conversion details, and pricing. ```APIDOC ## GET /offers ### Description Retrieves a list of available offers with details such as store ID, landing page, icons, descriptions, tags, platform information, conversion details, and pricing. ### Method GET ### Endpoint /offers ### Parameters #### Query Parameters - **external_identifier** (string) - Required - An identifier for external tracking. - **placementId** (integer) - Required - The ID of the placement. ### Request Example ```json { "example": "GET /offers?external_identifier={external_identifier}&placementId=2772" } ``` ### Response #### Success Response (200) - **status** (string) - The status of the response (e.g., "success"). - **num_offers** (integer) - The total number of offers returned. - **support_url** (string) - A URL for support related to the offers. - **offers** (array) - A list of offer objects. - **id** (integer) - The unique identifier for the offer. - **store_id** (string) - The identifier of the store where the offer is available. - **landing_page** (string) - The URL of the offer's landing page. - **icon** (string) - The URL of the offer's icon. - **name** (string) - The name of the offer. - **description** (string) - A description of the offer. - **tags** (object) - Tags associated with the offer. - **tab** (string) - The tab category for the offer. - **tasks** (array) - A list of tasks associated with the offer (e.g., "install"). - **categories** (array) - Categories the offer belongs to (e.g., "games_racing"). - **icon_large** (string) - The URL of a larger version of the offer's icon. - **video_url** (string) - The URL of a promotional video for the offer. - **video_url_vp9** (string) - The URL of a VP9 format promotional video. - **platform** (string) - The primary platform for the offer (e.g., "android"). - **platforms** (array) - A list of platforms the offer is available on. - **devices** (array) - A list of devices the offer is compatible with. - **category** (string) - The category of the offer (e.g., "incent"). - **conversion_type** (string) - The type of conversion (e.g., "cpi"). - **conversion_time** (integer) - The expected time for conversion in seconds. - **max_conversion_time** (integer) - The maximum allowed time for conversion in seconds. - **conversion_instructions** (string) - Instructions for completing the conversion. - **conversion_instructions_short** (string) - Short version of conversion instructions. - **conversion_instructions_long** (string) - Long version of conversion instructions. - **countries** (array) - A list of country codes where the offer is available. - **payout_usd** (number) - The payout amount in USD. - **currency_amount** (number) - The offer amount in the specified currency. - **epc** (number) - Earnings Per Click. - **daily_cap** (integer) - Daily cap on conversions. - **tracking_link** (string) - The tracking URL for the offer. - **impression_url** (string) - The URL to fire impression pixels. - **created** (string) - The date and time the offer was created. - **start_date** (string) - The start date for the offer. - **end_date** (string) - The end date for the offer. - **offer_owner** (integer) - The owner ID of the offer. - **score** (number) - A score for the offer. - **devices_whitelist** (array) - A list of whitelisted devices. - **devices_blacklist** (array) - A list of blacklisted devices. - **offer_complexity** (string) - Complexity level of the offer. - **payment_required** (boolean) - Indicates if payment is required for the offer. - **kpi** (object) - Key Performance Indicators for the offer. - **roas_d1** (number/null) - Return on Ad Spend for Day 1. - **roas_d7** (number/null) - Return on Ad Spend for Day 7. - **roas_d14** (number/null) - Return on Ad Spend for Day 14. - **roas_d30** (number/null) - Return on Ad Spend for Day 30. - **iap_iaa_ratio** (number/null) - In-App Purchase to Install value ratio. - **i18n** (object) - Internationalization details for offer instructions. - **[lang_code]** (object) - Language-specific instructions. - **conversion_instructions_short** (string) - Short conversion instructions for the language. - **conversion_instructions_long** (string) - Long conversion instructions for the language. #### Response Example ```json { "status": "success", "num_offers": 3, "support_url": "https://support.ayet.io/offers?externalIdentifier={external_identifier}&placementId=2772", "offers": [ { "id": 218592, "store_id": "com.ncsoft.universeapp", "landing_page": "https://play.google.com/store/apps/details?id=com.ncsoft.universeapp", "icon": "https://play-lh.googleusercontent.com/P4s0IwW1QSznws5r4d0rW0KzJpF0ag59vxuOVgIJWheY_LFUOt7RzuIsfJVBxdNHfA=w140", "name": "UNIVERSE", "description": "", "tags": { "tab": "apps", "tasks": [ "install" ], "categories": [ "games_racing", "games" ] }, "icon_large": "", "video_url": "", "video_url_vp9": "", "platform": "android", "platforms": [ "android" ], "devices": [ "phone", "tablet" ], "category": "incent", "conversion_type": "cpi", "conversion_time": 900, "max_conversion_time": 17340, "conversion_instructions": "Install and open app - new users only", "conversion_instructions_short": "Install and open app - new users only", "conversion_instructions_long": "Install and open app - new users only", "countries": [ "DE" ], "payout_usd": 0.091, "currency_amount": 91, "epc": 0, "daily_cap": 1000000, "tracking_link": "https://www.ayetstudios.com/s2s/pub/218592/1595/2772/3142?external_identifier={external_identifier}", "impression_url": "https://www.ayetstudios.com/offers/shown/218592;92;0;e4f323bdf5d01e92d8632f647d905cc42f9bef8c/img.gif?external_identifier={external_identifier}", "created": "2021-02-10 13:56:38", "start_date": "2021-02-10 00:00:00", "end_date": "2026-02-10 00:00:00", "offer_owner": 0, "score": 0, "devices_whitelist": [], "devices_blacklist": [], "offer_complexity": "0", "payment_required": false, "kpi": { "roas_d1": null, "roas_d7": null, "roas_d14": null, "roas_d30": null, "iap_iaa_ratio": null }, "i18n": { "en": { "conversion_instructions_short": "Install and open app - new users only", "conversion_instructions_long": "Install and open app - new users only" }, "de": { "conversion_instructions_short": "App installieren und öffnen - nur für neue Benutzer", "conversion_instructions_long": "App installieren und öffnen - nur für neue Benutzer" }, "es": { "conversion_instructions_short": "Instala, abre y usa esta aplicación durante unos minutos.", "conversion_instructions_long": "
  1. Instale la aplicación

  2. Abre la aplicación

  3. Usa la aplicación por unos minutos

--
Si ya instaló la aplicación anteriormente, no es elegible para una recompensa
" }, "fr": { "conversion_instructions_short": "Installer, ouvrir et utiliser cette application pendant quelques minutes.", "conversion_instructions_long": "
  1. Installer l'application

  2. Ouvrez l'application

  3. Utilisez l'application pendant quelques minutes

--
Si vous avez installé l'application avant, vous n'êtes pas admissible à recevoir une récompense.
" }, "pt": { "conversion_instructions_short": "Instale, abra e use este aplicativo por alguns minutos.", "conversion_instructions_long": "
  1. Instale o aplicativo

  2. Abra o aplicativo

  3. Use o aplicativo por alguns minutos

--
Se você instalou o aplicativo antes, não é elegível para receber uma recompensa.
" }, "ru": { "conversion_instructions_short": "Установите, откройте и используйте это приложение в течение нескольких минут.", "conversion_instructions_long": "
  1. Установите приложение

  2. Откройте приложение

  3. Используйте приложение в течение нескольких минут

--
Если вы установили приложение до того, как вы не получите право на вознаграждение.
" }, "ja": { "conversion_instructions_short": "アプリをインストールして開きます - 新規ユーザーのみ", "conversion_instructions_long": "アプリをインストールして開きます - 新規ユーザーのみ" }, "ko": { "conversion_instructions_short": "앱 설치 및 열기 - 신규 사용자만 해당", "conversion_instructions_long": "앱 설치 및 열기 - 신규 사용자만 해당" }, "th": { "conversion_instructions_short": "ติดตั้งและเปิดแอป - ผู้ใช้ใหม่เท่านั้น", "conversion_instructions_long": "ติดตั้งและเปิดแอป - ผู้ใช้ใหม่เท่านั้น" } } } ] } ``` ``` -------------------------------- ### PHP Request Sample for Getting Ads.txt Source: https://www.ayetstudios.com/openapi/publisher-doc/index This PHP script shows how to fetch the ads.txt file for a given placement ID using the Ayetstudios API. It uses cURL to send a GET request, including the placementId and a privacy hash. The script handles potential cURL errors and outputs the response. ```php "https://www.ayetstudios.com/api2/publisher/placements/get_ads_txt?placementId=22&hash=0abd827e81729b681b85022ca8dd14d1914e215c", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ?> ``` -------------------------------- ### Example Tracking Link and Final Postback Source: https://www.ayetstudios.com/openapi/publisher-doc/index Illustrates a user clicking a tracking link and completing an offer, followed by the resulting final postback sent to the server. This demonstrates how the placeholders in the tracking link are populated and transmitted in the final callback URL, enabling detailed conversion tracking. ```plaintext Tracking Link: https://www.ayetstudios.com/s2s/pub/53270/1/1?external_identifier=your-user-id-1&custom_1=your-custom-click-id Final Postback: https://www.your-ad-server.com/postback?event_value=2.33&event_name=payment-made-custom-task&placement_identifier=my_api_placement&adslot_id=18&sub_id=your-user-id-1&your_parameter=your-custom-click-id ``` -------------------------------- ### Example PHP Request for Publisher Reporting API Source: https://www.ayetstudios.com/openapi/publisher-doc/index This PHP code snippet demonstrates how to make a GET request to the Publisher Reporting API to retrieve statistics. It includes setting cURL options for the URL, return transfer, encoding, redirects, timeout, and HTTP version. The response is then printed or an error is shown. ```php "https://www.ayetstudios.com/api2/publisher/reporting?startDate=2020-05-05&endDate=2020-05-6&apiKey=xxxx&placements[]=5", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:"; } else { echo $response; } ?> ``` -------------------------------- ### Plain Text Response Sample for Ads.txt Source: https://www.ayetstudios.com/openapi/publisher-doc/index This is a sample of the plain text response from the Publisher Get Ads Txt API. It contains the necessary declarations for a publisher's ads.txt file, including their domain, a specific placement, and the 'DIRECT' relationship. ```text # AYET-STUDIOS ayetstudios.com, AYETSTUDIOS, DIRECT ayetstudios.com, PL-22, DIRECT ``` -------------------------------- ### GET /offers/get/{adslot} Source: https://www.ayetstudios.com/openapi/publisher-doc/index Retrieves a list of currently running campaigns on the platform that match the adslot configuration. Supports filtering by countries, platform, and conversion type. ```APIDOC ## GET /offers/get/{adslot} ### Description Returns a list of currently running campaigns on our platform which suit your adslot configuration. Can be filtered by additional parameters. **Note:** To pass custom parameters from clicks to conversion callbacks, the `tracking_link` parameter in offer objects can be extended with `&custom_1=...` to `&custom_5=...` Those five parameters can be accessed in the publisher dashboard and from conversion callbacks using the `{custom_1} - {custom_5}` macros in the resulting callback URL. Tracking links can also be extended with `&age={numeric_age}` and `&gender={gender}` to collect demographic data. The `age` parameter accepts a numeric age in years. The `gender` parameter accepts values: `male`, `female`, or `non_binary`. The `external_identifier` parameter found as placeholder in tracking links is important for persistent user identification and also allows access to the users reward status. Publishers who are unable to provide a stable `external_identifier` for their users can use the `{DYNAMIC_USER}` macro and let ayeT-Studios handle the identification. **Since this has implications on traffic quality and offer exposure, please contact your account manager before implementing this.** ### Method GET ### Endpoint https://www.ayetstudios.com/offers/get/{adslot} ### Parameters #### Path Parameters - **adslot** (string) - Required - The adslot identifier. #### Query Parameters - **apiKey** (string) - Required - Static API key that is available under adslot details in your dashboard. - **countries[]** (array of strings) - Optional - Array of iso2 country codes (e.g., `countries[]=US`). - **platform[]** (array of strings) - Optional - Items Enum: "android", "ios", "desktop". - **conversion_type[]** (array of strings) - Optional - Items Enum: "cpi", "cpa", "cpe", "cpl". ### Request Example ```php "https://www.ayetstudios.com/offers/get/3142?apiKey=xxxx&countries%5B%5D=DE&platform%5B%5D=ios&conversion_type%5B%5D=cpi", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ?> ``` ### Response #### Success Response (200) OK #### Response Example (Response structure not provided in the input text, but would typically be a JSON array of campaign objects.) ``` -------------------------------- ### JSON Response Sample for Publisher Reporting API (200 OK) Source: https://www.ayetstudios.com/openapi/publisher-doc/index This is an example of a successful JSON response (HTTP 200 OK) from the Publisher Reporting API. It includes status, filters, survey wall configuration, and a list of available surveys with their respective details like CPI, LOI, and remaining completes. ```json { "status": "success", "filters": { "targeting": "desktop", "user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Safari/537.36", "client_hints": "{\"architecture\":\"x86\",\"bitness\":\"64\",\"brands\":[{\"brand\":\"Not A(Brand\",\"version\":\"8\"},{\"brand\":\"Chromium\",\"version\":\"132\"},{\"brand\":\"Google Chrome\",\"version\":\"132\"}],\"fullVersionList\":[{\"brand\":\"Not A(Brand\",\"version\":\"8.0.0.0\"},{\"brand\":\"Chromium\",\"version\":\"132.0.6834.83\"},{\"brand\":\"Google Chrome\",\"version\":\"132.0.6834.83\"}],\"mobile\":false,\"model\":\"\",\"platform\":\"Linux\",\"platformVersion\":\"6.8.0\",\"uaFullVersion\":\"132.0.6834.83\",\"wow64\":false}", "ip": "127.0.0.1", "language": [ "de", "en" ], "num_surveys": 20, "survey_sorting": "cr", "minimum_payout": 0 }, "surveywall": { "name": "surveywall test", "currency_name_singular": "Coin", "currency_name_plural": "Coins", "currency_sale": false, "currency_sale_multiplier": 1, "currency_sale_end": null }, "profiler": { "missing_profiler": false, "missing_profiler_qualifications": 0 }, "surveys": [ { "id": 6232459, "cpi": 32.21, "loi": 17, "category": "miscellaneous", "remaining_completes": 2, "is_new": false, "url": "https://example.com", "missing_qualifications": 0, "category_icon_svg": "https://cdn.ayet.io/sw-icons/Other.svg", "category_icon_gif": "https://cdn.ayet.io/sw-icons/Other.gif" }, { "id": 6232614, "loi": 16, "category": "technology", "remaining_completes": 2, "is_new": false, "cpi": 54.25, "url": "https://example.com", "missing_qualifications": 1, "category_icon_svg": "https://cdn.ayet.io/sw-icons/Technology.svg", "category_icon_gif": "https://cdn.ayet.io/sw-icons/Technology.gif" } ] } ``` -------------------------------- ### PHP Request Sample for Setting Currency Conversion Rate Source: https://www.ayetstudios.com/openapi/publisher-doc/index This PHP script demonstrates how to make a GET request to the Ayetstudios API to set a currency conversion rate for a specific adslot. It utilizes cURL to send the request with required parameters like apiKey, adslotId, and rate. Error handling for the cURL request is included. ```php "https://www.ayetstudios.com/api2/publisher/placements/set_conversion_rate?apiKey=xxx&adslotId=xx&rate=25000", CURLOPT_RETURNTRANSFER => true, CURLOPT_ENCODING => "", CURLOPT_MAXREDIRS => 10, CURLOPT_TIMEOUT => 30, CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1, CURLOPT_CUSTOMREQUEST => "GET", ]); $response = curl_exec($curl); $err = curl_error($curl); curl_close($curl); if ($err) { echo "cURL Error #:" . $err; } else { echo $response; } ?> ``` -------------------------------- ### Callback Macros and Configuration Source: https://www.ayetstudios.com/openapi/publisher-doc/index Information on available macros for conversion callbacks and configuration updates for whitelists. ```APIDOC ## Callback Configuration ### Description Details on using macros within conversion callbacks and updates to callback IP whitelisting. ### Method N/A (Configuration aspect) ### Endpoint N/A ### Parameters #### Macros for Callbacks - **{click_date}** - Macro representing the click date. - **{callback_ts}** - Macro representing the callback timestamp. - **{event_name}** - Macro representing the event name for CPE tasks. - **{event_value}** - Macro representing the value of the event. - **{DYNAMIC_USER}** - Macro for dynamic user information in static API callbacks. ### Updates - **Callback IP Whitelist**: Updated configuration for whitelisting callback IPs. - **Conditional Expressions**: Support for conditional expressions in postback URLs using simplified Jinja2 template syntax. ``` -------------------------------- ### GET /offers/cpe_status/{adslot} Source: https://www.ayetstudios.com/openapi/publisher-doc/index Retrieves the status of CPE offers for a given ad slot using its external identifier. ```APIDOC ## GET /offers/cpe_status/{adslot} ### Description Retrieves cpe offers reward status information for the adslot by the given external identifier. The returned data includes the offer id, click id, publisher payment, shows completed and available task etc. ### Method GET ### Endpoint /offers/cpe_status/{adslot} ### Parameters #### Path Parameters - **adslot** (string) - Required - The unique identifier for the ad slot. #### Query Parameters - **apiKey** (string) - Required - Your static API key, available in your dashboard. - **external_identifier** (string) - Required - The external identifier for the ad slot. ### Request Example ``` GET https://www.ayetstudios.com/offers/cpe_status/YOUR_ADSLOT_ID?apiKey=YOUR_API_KEY&external_identifier=YOUR_EXTERNAL_ID ``` ### Response #### Success Response (200) - **offer_id** (string) - The unique identifier for the offer. - **click_id** (string) - The unique identifier for the click. - **publisher_payment** (number) - The amount paid to the publisher. - **shows_completed** (integer) - The number of shows completed for the offer. - **available_tasks** (integer) - The number of available tasks for the offer. #### Response Example ```json { "offer_id": "123e4567-e89b-12d3-a456-426614174000", "click_id": "click_abc123", "publisher_payment": 0.50, "shows_completed": 10, "available_tasks": 5 } ``` ``` -------------------------------- ### Publisher Get Ads Txt API Source: https://www.ayetstudios.com/openapi/publisher-doc/index Allows publishers to retrieve the current (raw) ads.txt file for a given placement. ```APIDOC ## GET /api2/publisher/placements/get_ads_txt ### Description Allows publishers to retrieve the current (raw) ads.txt file. ### Method GET ### Endpoint `https://www.ayetstudios.com/api2/publisher/placements/get_ads_txt` ### Parameters #### Query Parameters - **placementId** (integer) - Required - Placement ID - **hash** (string) - Required - Hash for privacy reasons (can be retrieved in the ads txt tab in the placement settings modal) ### Request Example ``` GET https://www.ayetstudios.com/api2/publisher/placements/get_ads_txt?placementId=22&hash=0abd827e81729b681b85022ca8dd14d1915c ``` ### Response #### Success Response (200) - **Content-Type**: `text/plain` #### Response Example ``` # AYET-STUDIOS ayetstudios.com, AYETSTUDIOS, DIRECT ayetstudios.com, PL-22, DIRECT ``` #### Error Responses - **400** Bad Request - **401** Unauthorized ``` -------------------------------- ### Fetch Offers with Client Hints (Javascript) Source: https://www.ayetstudios.com/openapi/publisher-doc/index This Javascript code snippet demonstrates how to fetch offer data from the API. It constructs a request URL including an ad slot ID, external identifier, user agent, and client hints. It utilizes the Fetch API to make the request and handles both successful responses and potential errors. Client hints are dynamically retrieved if supported by the browser for more detailed user information. ```javascript async function fetchData() { let adslotId = 1234; let externalIdentifier = 'YOUR_VALUE'; let userAgent = navigator.userAgent; let clientHints = ''; if (navigator.userAgentData) { try { clientHints = await navigator.userAgentData.getHighEntropyValues(['architecture', 'bitness', 'brands', 'mobile', 'model', 'platform', 'platformVersion', 'uaFullVersion', 'fullVersionList', 'wow64']); clientHints = encodeURIComponent(JSON.stringify(clientHints)); } catch (e) { console.log(e); } } let requestUrl = 'https://www.ayetstudios.com/offers/offerwall_api/' + adslotId + '?external_identifier=' + externalIdentifier + '&user_agent=' + encodeURIComponent(userAgent) + '&client_hints=' + clientHints; fetch(requestUrl) .then(response => { if (!response.ok) { throw new Error('Network response was not ok'); } return response.json(); }) .then(data => { console.log(data); }) .catch(error => { console.log('There was a problem with the fetch operation:', error.message); }); } fetchData(); ``` -------------------------------- ### GET /api/offers Source: https://www.ayetstudios.com/openapi/publisher-doc/index Retrieves a list of available offers based on specified filters. This endpoint is useful for populating offerwalls or displaying targeted promotions to users. ```APIDOC ## GET /api/offers ### Description Retrieves a list of available offers based on specified filters. This endpoint is useful for populating offerwalls or displaying targeted promotions to users. ### Method GET ### Endpoint /api/offers ### Parameters #### Query Parameters - **make** (string) - Optional - Filter offers by manufacturer (e.g., "Samsung"). - **model** (string) - Optional - Filter offers by device model (e.g., "GALAXY S10"). - **os** (string) - Optional - Filter offers by operating system (e.g., "Android"). - **os_version** (string) - Optional - Filter offers by operating system version (e.g., "10.1.0"). - **ip** (string) - Optional - Filter offers by IP address for geo-targeting. - **platform** (string) - Optional - Filter offers by platform (e.g., "android", "ios", "web"). - **include_mobile_offers** (boolean) - Optional - Whether to include offers specific to mobile devices. - **offer_sorting** (string) - Optional - Specifies the order of offers (e.g., "ecpm"). - **minimum_payout** (number) - Optional - Sets a minimum payout threshold for offers. - **include_cpe** (boolean) - Optional - Whether to include Cost Per Engagement (CPE) offers. - **num_offers** (integer) - Optional - The number of offers to return. - **language** (string) - Optional - Filter offers by language (e.g., "en"). ### Request Example ```json { "example": "GET /api/offers?make=Samsung&model=GALAXY S10&os=Android&include_cpe=true&num_offers=10&language=en" } ``` ### Response #### Success Response (200) - **status** (string) - The status of the response (e.g., "success"). - **num_offers** (integer) - The total number of offers returned. - **filters** (object) - An object containing the filters applied to the request. - **offerwall** (object) - Information about the offerwall, including currency details and support URL. - **offers** (array) - An array of offer objects, each containing details about a specific offer. #### Response Example ```json { "status": "success", "num_offers": 6, "filters": { "make": "Samsung", "model": "GALAXY S10", "os": "Android", "os_version": "10.1.0", "ip": "79.213.245.101", "platform": "android", "include_mobile_offers": true, "offer_sorting": "ecpm", "minimum_payout": 0, "include_cpe": true, "num_offers": 10, "language": "en" }, "offerwall": { "name": "oapi2", "currency_name_singular": "Coin", "currency_name_plural": "Coins", "currency_sale": false, "support_url": "https://support.ayet.io/offers/6?externalIdentifier=EXTERNAL-IDENT-001&placementId=458" }, "offers": [ { "id": 61, "store_id": "", "landing_page": "https://www.external-campaign.com/redirect?sub1={click_id}", "icon": "https://d1vurj8zt1ctkj.cloudfront.net/custom_icon/5e8f02f3f11bf-61.png", "name": "Engagement Test Campaign", "description": "Earn 697 Coins by completing the following task:", "tags": { "tab": "tasks", "tasks": [ "install" ], "categories": [ "games_racing", "games" ] }, "icon_large": "", "video_url": "", "video_url_vp9": "", "platform": "web", "platforms": [ "android", "ios" ], "devices": [ "phone", "tablet" ], "category": "incent", "conversion_type": "cpe", "conversion_time": 300, "max_conversion_time": 17340, "conversion_instructions": "Genieße dieses großartige Spiel und erhalte mehrere Belohnungen
Genießen Sie dieses großartige Spiel und erhalten Sie mehrere Belohnungen :
{multiple_rewards}

* Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum
** Anmerkung 2


", "conversion_instructions_short": "Genieße dieses großartige Spiel und erhalte mehrere Belohnungen", "conversion_instructions_long": "
Genießen Sie dieses großartige Spiel und erhalten Sie mehrere Belohnungen :
{multiple_rewards}

* Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum
** Anmerkung 2


", "tracking_link": "https://www.ayetstudios.com/s2s/go/|custom_campaign|engageme|f1abb1ef06468a66/61/100000085/mcIpTATjeGki3hszpIly2__w4HVe019Q5UCOI84oefX8CPeE_2iY9Lp9tHKsjHgG?pub_id=P-1&sub_id_int=P-10&adslot_id=20", "created": "2020-04-09 12:53:57", "start_date": "2020-04-09 00:00:00", "end_date": "2025-04-09 00:00:00", "offer_owner": 0, "score": 0, "offer_complexity": "", "payment_required": "", "kpi": { "roas_d1": null, "roas_d7": null, "roas_d14": null, "roas_d30": null, "iap_iaa_ratio": null }, "offer_status": "new", "offer_status_days_left": null, "support_url": "https://support.ayet.io/offers/61?externalIdentifier=EXTERNAL-IDENT-001&placementId=458", "impression_url": "https://www.ayetstudios.com/offers/shown/269690;92;0;e4f323bdf5d01e92d8632f647d905cc42f9bef8c/img.gif?external_identifier=YOUR_VALUE", "require_reservation": true, "min_android_version": null, "min_ios_version": null, "max_android_version": null, "max_ios_version": null, "priority": 0, "cpe_instructions": [ { "name": "Register", "uuid": "dff19bdd-3667-31f1-ac97-7523455a215c", "event_name": "ev_reg001", "payout_base": 56, "payout": 56, "multi_limit": 1, "currency": "Coins", "completed": false, "bonus_task": false, "status": "available", "remaining_time": null }, { "name": "Complete Level 5", "uuid": "dff19bdd-3667-31f1-ac97-7523455a219a", "payout_base": 84, "payout": 84, "multi_limit": 1, "currency": "Coins", "completed": false, "bonus_task": false, "status": "available", "remaining_time": null }, { "name": "Stay Engaged!", "uuid": "dff19bdd-3667-31f1-ac97-7523455a217d", "event_name": "ev_54545", "payout_base": 56, "payout": 56, "multi_limit": 1, "currency": "Coins", "completed": false, "bonus_task": false, "status": "available", "remaining_time": null } ] } ] } ``` #### Error Response (400, 401, 429) - The API may return error codes such as 400 (Bad Request), 401 (Unauthorized), or 429 (Too Many Requests) with appropriate error messages in the response body. ``` -------------------------------- ### Initialize Ayet Surveys SDK with HTML Source: https://www.ayetstudios.com/openapi/publisher-doc/index This snippet shows the basic HTML structure required to integrate the Ayet Surveys SDK. It includes a container for surveys and the necessary JavaScript SDK script tag. Configuration options like theme and adslot details are set in a subsequent script block. ```html Ayet Studios Surveywall
``` -------------------------------- ### Placements API - get_ads_txt Source: https://www.ayetstudios.com/openapi/publisher-doc/index Documentation for the placements/get_ads_txt API endpoint. ```APIDOC ## Placements API - get_ads_txt ### Description Retrieves the ads.txt content for placements. ### Method GET ### Endpoint `/placements/get_ads_txt` ### Parameters (No specific parameters documented for this endpoint in the provided text.) ### Request Example (No request example provided.) ### Response #### Success Response (200) (Response details not provided in the text.) #### Response Example (No response example provided.) ``` -------------------------------- ### HMAC Security Hash Verification Steps Source: https://www.ayetstudios.com/openapi/publisher-doc/index Outlines the optional steps to verify the HMAC security hash sent in the 'X-Ayetstudios-Security-Hash' header. This involves ordering request parameters alphabetically and comparing the generated HMAC hash with the received hash using your publisher API key. ```pseudocode 1. Get all request parameters. 2. Order the request parameters alphabetically. 3. Build and compare the HMAC hash using the ordered request parameter string and your API key. ```