Skip to content

Instantly share code, notes, and snippets.

@konhi
Created February 9, 2024 22:29
Show Gist options
  • Save konhi/031cf58eb13f3a2967d2d5a7a9db610b to your computer and use it in GitHub Desktop.
Save konhi/031cf58eb13f3a2967d2d5a7a9db610b to your computer and use it in GitHub Desktop.
{
"openapi": "3.0.0",
"info": {
"title": "ayeT-Studios Publisher API Documentation",
"version": "1.11.5",
"contact": {
"url": "https://www.ayetstudios.com/contact-us",
"name": "ayeT-Studios GmbH",
"email": "support@ayetstudios.com"
},
"x-logo": {
"url": "https://www.ayetstudios.com/wp-content/uploads/2016/09/ayetstudios_logo_press.png",
"altText": "ayeT-Studios"
},
"description": "Documentation for ayeT-Studios Publisher APIs"
},
"servers": [
{
"description": "Live Server",
"url": "https://www.ayetstudios.com"
}
],
"tags": [
{
"name": "Latest Changes",
"description": "2024-01-10: v1.11.5 - Added `include_mobile_offers`, `include_cpe` in Offerwall API response schema and cleaned up non-documented response fields\n\n2024-01-03: v1.11.4 - Added documentation for placements/get_ads_txt API endpoint\n\n2023-11-21: v1.11.3 - Added languages JA, KO, TH, ZH, ID to response examples\n\n2023-09-23: v1.11.2 - Added a persistent `task_uuid` field to cpe tasks in API responses.\n\n2023-09-21: v1.11.1 - Added `max_android_version` and `max_ios_version` fields to Static API and Offerwall API response.\n\n2023-09-11: v1.11 - Reworked the Offerwall API implementation, simplified request parameters, added `client_hints` and a new example for client-side requests. Older integrations are still functional for the time being, but offer and device matching is impacted.\n\n2023-08-21: v1.10.3 - Updated Offerwall API and Static API responses to include the optionally filled `video_url_vp9` field. This is a higher quality VP9 encoded video that might exist if `video_url` is set.\n\n2023-07-01: v1.10.2 - Updated & improved the Static API documentation.\n\n2023-06-06: v1.10.1 - Updated Offerwall API request to accept the optional `include_mobile_offers` parameter that if request is made from non mobile device also includes mobile offers.\n\n2023-05-22: v1.10.0 - Updated Offerwall API and Static API responses to include the optionally filled `icon_large` and `video_url` fields.\n\n2023-01-31: v1.9.9 - Live API has been removed and will no longer return offers\n\n2022-11-29: v1.9.8 - Updated documentation examples to reflect Static API response now including field currency_amount\n\n2022-07-18: v1.9.7 - Added DAU/ARPDAU to publisher reporting API response\n\n2022-06-13: v1.9.6 - Changed custom_parameter into optional_parameter for Publisher Reporting API, add custom parameters to available postback parameters.\n\n2022-06-08: v1.9.5 - Added rewarded video statistics to Publisher Reporting API.\n\n2022-04-27: v1.9.4 - Updated documentation to include new endpoint for setting currency conversion rate via api and 2 newly available postback parameters.\n\n2022-04-20: v1.9.3 - Updated documentation to reflect Static API change to use Static API token.\n\n2022-01-27: v1.9.2 - Removed default \"&num_offers=10\" parameter in Offerwall API. By default the number of offers returned is no longer limited.\n\n2021-07-23: v1.9.1 - Renamed \"CPE Offer Status\" parameter from \"externalIdentifier\" to \"external_identifier\" and added \"Static API\" parameter \"include_cpe\"\n\n2021-03-03: Added new documentation\n\n2021-03-03: v1.9 - Added Offerwall API, Deprecated Live API\n\n2020-08-11: v1.8.1 - Updated documentation to introduce new parameters to differentiate chargebacks from conversions\n\n2020-05-19: Initial release of the Publisher Reporting API\n\n2020-04-30: v1.8 - Updated documentation to reflect Live API changes (desktop support and optional device identifiers)\n\n2019-07-19: v1.7 - Updated documentation to reflect the adslot changes\n\n2018-03-07: v1.6 - Renamed platform type \"web\" to \"desktop\" + \"pc\" and \"mac\" device types, added \"start\\_date\" and \"end\\_date\" to offer entities\n\n2018-03-01: v1.5 - Updated parameters for live api requests, provided examples with plain GET requests\n\n2018-02-08: v1.4 - Added static api response example for non-incent campaigns\n\n2017-10-28: v1.3 - Conversions & Postbacks has been updated, parameters are no longer passed to postback URLs automatically\n\n2017-10-23: v1.2 - Publisher account & placement creation information, virtual placements, placement\\_identifier in s2s callbacks\n\n2017-05-10: v1.1 - Release of our Live Offers API"
},
{
"name": "Introduction",
"description": "Our Publisher APIs allow fetching our offer inventory either statically from your servers (\"Static API\") or dynamically for specific users both server-side and client-side (\"Offerwall API\").\n\nThe [**Offerwall API**](#tag/Offerwall-API) delivers offers for a specific user and filters our inventory by his country, device type and other possible factors (campaign eligibility) which will increase your conversion rate and CPM.\n\nThe [**Static API**](#tag/Static-API) on the other hand is intended for special (network) integration and must be called from your servers each 15-30 minutes to make sure our campaigns are still available, did not run into daily caps or changed targeting / bid. The Static API key, once approved by your account manager, is available in the adslot details.\n\nWe use a REST API with *application/json* responses. Most of our examples in this documentation are available in different languages. The PHP examples rely on mod\\_curl being enabled."
},
{
"name": "Obtain API Key, Create Placement & Adslot / Setup",
"description": "Before starting with the API integration, we recommend to [sign up for a publisher account](https://www.ayetstudios.com/account/login/register-publisher).<br>\nWe will assist you in setup and initial backend configuration regarding conversion postbacks, quality of your traffic, offer categories you're looking for and possible use cases for each API.\n\nIn your account, go to **Placements / Apps** and create a new **API placement** and one or more **adslots** for it.<br>\nAfter creating a placement and adslot(s), go to **Edit Adslot** to get integration details in the modal's overview tab.<br>\nIf you want to perform the integration manually, you'll need the **adslot id** and your **api key** (which can be obtained under **Account Settings**) to proceed."
},
{
"name": "Publisher API",
"description": ""
},
{
"name": "Offerwall API",
"description": "The Offerwall API provides a solution for publishers who want to include an offerwall in their application/website but have control over the presentation of the offers. All offers matching the parameters provided will be returned and can be displayed to the user. The Offerwall API supports both server and client-side calls."
},
{
"name": "Static API",
"description": "The Static API is recommended only for special integrations, because not all campaigns are available without more sophisticated device match. If integrated, it should be called each 15-30 minutes to make sure our campaigns are still available, did not run into daily caps or changed targeting / bid. The \"Static API key\" for requests is adslot specific and available in the adslot details once approved by your account manager."
},
{
"name": "Publisher Set Currency Conversion Rate API"
},
{
"name": "Publisher Get Ads Txt API"
},
{
"name": "Callbacks/Postbacks",
"description": "Whenever a conversion for your traffic is tracked, our server sends a postback to your tracking endpoint. In your publisher dashboard, you can configure the callback urls for each of your placements. **Important:** Your server must always reply with an HTTP 200 status code to our postbacks. Otherwise we will resend the postback 12 times over a span of one hour before giving up.\n#### Example:\nLet's assume this is your configured postback URL (in our dashboard under _Placements -> Settings_):\nhttps://www.your-ad-server.com/postback?payout_usd={payout_usd}&placement_identifier={placement_identifier}&adslot_id={adslot_id}&sub_id={external_identifier}&your_parameter={custom_1}\n\nYour user used this tracking link and completed an offer:\nhttps://www.ayetstudios.com/s2s/pub/53270/1/1?sub_id=your-user-id-1&custom_1=your-custom-click-id\n\nThe final postback to your server will look like this:\nhttps://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\n\n**Postback Verification with HMAC Security Hash (optional):** Our server will always add a custom header, **X-Ayetstudios-Security-Hash**, containing a SHA256 HMAC hash of the request parameters and your publisher api key. Your API key can be found in your dashboard at ayetstudios.com under settings.\n\nTo verify the hash, perform the following steps:\n(1) Get all request parameters\n(2) Order the request parameters alphabetically\n(3) Build and compare the HMAC hash using the ordered request parameter string and your API key\n\n### Available Macros for Postback URLs:\n|Placeholder|Type|Description|\n|--- |--- |--- |\n|{transaction_id}|string|Unique transaction id - use for duplicate checks. If chargeback it's prepend with r-|\n|{payout_usd}|float|The actual conversion payout in USD. If chargeback value is negative.|\n|{placement_identifier}|string|The placement_identifier for which the conversion occured|\n|{external_identifier}|string|Offerwall API: The external_identifier parameter passed when requesting the offers; Static API: The value of the sub_id parameter appended to the original tracking link|\n|{adslot_id}|int|The id of the adslot for which the conversion occured|\n|{ip}|string|Converting device's IP address if known, 0.0.0.0 otherwise|\n|{offer_id}|int|Offer ID of the converting offer|\n|{offer_name}|string|Name / title of the converting offer|\n|{device_uuid}|string|ayeT-Studios internal device identificator|\n|{device_make}|string|Device manufacturer|\n|{device_model}|string|Device model|\n|{advertising_id}|string|Device advertising id (GAID/IDFA) if known, otherwise empty|\n|{sha1_android_id}|string|Device sha1 hashed android id if known, otherwise empty|\n|{sha1_imei}|string|Device sha1 hashed imei if known, otherwise empty|Last updated: 2023-09-17\n|{is_chargeback}|int|Either 0 or 1. Indicator if the callback is a conversion (0) or a chargeback (1).|\n|{chargeback_reason}|string|Reason why chargeback created. Only available if is_chargeback set to 1.|\n|{chargeback_date}|string|Date of chargeback creation. Only available if is_chargeback set to 1.|\n|{task_name}|string|CPE campaigns only, shows individual task name for that conversion.|\n|{task_uuid}|string|CPE campaigns only, shows the persistent task UUID for that conversion.|\n|{currency_identifier}|string|Shows virtual currency name as set in adslot.|\n|{currency_conversion_rate}|number|Shows currency conversion rate used to calculate user currency for the given conversion.|\n|{custom_1}|string|Custom parameter to pass variables to the conversion callbacks|\n|{custom_2}|string|Custom parameter to pass variables to the conversion callbacks|\n|{custom_3}|string|Custom parameter to pass variables to the conversion callbacks|\n|{custom_4}|string|Custom parameter to pass variables to the conversion callbacks|\n|{custom_5}|string|Custom parameter to pass variables to the conversion callbacks|"
},
{
"name": "Publisher Reporting API",
"description": "Our Publisher Reporting API allows publishers with and without adserver functionality to retrieve detailed statistics on their placement & adslot performance."
},
{
"name": "IP Whitelisting",
"description": "If your want to restrict postbacks to our callback server IPs, please whitelist the following IPs and check back regularly for possible changes:\n\n**35.165.166.40\n35.166.159.131\n52.40.3.140**"
}
],
"x-tagGroups": [
{
"name": "Publisher API",
"tags": [
"Latest Changes",
"Introduction",
"Obtain API Key, Create Placement & Adslot / Setup",
"Offerwall API",
"Static API",
"Publisher Reporting API",
"Publisher Set Currency Conversion Rate API",
"Publisher Get Ads Txt API"
]
},
{
"name": "Callbacks/Postbacks",
"tags": [
"Callbacks/Postbacks",
"IP Whitelisting"
]
}
],
"paths": {
"/offers/offerwall_api/{adslot}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "adslot",
"in": "path",
"required": true,
"description": "Id of the adslot"
}
],
"get": {
"summary": "Offerwall API",
"tags": [
"Offerwall API"
],
"operationId": "offerwall-api",
"description": "Retrieve offers matching the provided parameters\n\nThis endpoint can be called client-side or server-side, where the `ip` parameter is required only for server-side requests.\n\nThe following parameters are recommended:<br>\n`[ip] + user_agent + client_hints`\n\n`client_hints` can be obtained in a secure (SSL) browser context - please check the example to the right.\n\nAlternative parameter combinations for special use cases are:\n- `ip + device_make + device_model + os + os_version` (Android & iOS devices)\n- `ip + browser + browser_version` (Desktop devices)\n\n**Attention:** Check the list below for the correct input format of the available parameters.",
"x-codeSamples": [
{
"lang": "Javascript",
"source": "async function fetchData() {\n let adslotId = 1234;\n let externalIdentifier = 'YOUR_VALUE';\n\n let userAgent = navigator.userAgent;\n let clientHints = '';\n\n if (navigator.userAgentData) {\n try {\n clientHints = await navigator.userAgentData.getHighEntropyValues(['architecture', 'bitness', 'brands', 'mobile', 'model', 'platform', 'platformVersion', 'uaFullVersion', 'fullVersionList', 'wow64']);\n clientHints = encodeURIComponent(JSON.stringify(clientHints));\n } catch (e) {\n console.log(e);\n }\n }\n\n let requestUrl = 'https://www.ayetstudios.com/offers/offerwall_api/' + adslotId + '?external_identifier=' + externalIdentifier + '&user_agent=' + encodeURIComponent(userAgent) + '&client_hints=' + clientHints;\n\n fetch(requestUrl)\n .then(response => {\n if (!response.ok) {\n throw new Error('Network response was not ok');\n }\n return response.json();\n })\n .then(data => {\n console.log(data);\n })\n .catch(error => {\n console.log('There was a problem with the fetch operation:', error.message);\n });\n}\n\nfetchData();\n"
},
{
"lang": "PHP",
"source": "<?php\n\n// Prepare required parameters:\n$adslotId = 1;\n$external_identifier = \"test\";\n$user_agent = urlencode($_SERVER['HTTP_USER_AGENT']);\n$ip = $_SERVER['REMOTE_ADDR'];\n\n// Make request:\n$ayetResponse = file_get_contents(\"https://www.ayetstudios.com/offers/offerwall_api/\" . $adslotId . \"?external_identifier=\" . $external_identifier .\"&user_agent=\" . $user_agent . \"&ip=\" . $ip, false, stream_context_create(['http' => ['ignore_errors' => true]]));\n$ayetResponse = json_decode($ayetResponse,true);\n\n// Output response:\nprint_r($ayetResponse);\n\n?> \n"
}
],
"parameters": [
{
"schema": {
"type": "string",
"example": "id of user"
},
"in": "query",
"name": "external_identifier",
"description": "External identifier",
"required": true
},
{
"schema": {
"type": "string",
"example": "Samsung"
},
"in": "query",
"name": "device_make",
"description": "Make of the user's device"
},
{
"schema": {
"type": "string",
"example": "GALAXY S10"
},
"in": "query",
"name": "device_model",
"description": "Model of the user's device"
},
{
"schema": {
"type": "string",
"enum": [
"android",
"ios",
"desktop"
],
"example": "android"
},
"in": "query",
"name": "os",
"description": "Operating system of the user's device"
},
{
"schema": {
"example": "10.1.0",
"type": "string"
},
"in": "query",
"name": "os_version",
"description": "Operating system version of the user's device"
},
{
"schema": {
"type": "string",
"example": "Chrome"
},
"in": "query",
"name": "browser",
"description": "Browser of user's device"
},
{
"schema": {
"type": "string",
"example": "88.0.4324.96"
},
"in": "query",
"name": "browser_version",
"description": "Browser version of user's device"
},
{
"schema": {
"type": "string",
"example": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/116.0.0.0 Mobile Safari/537.36"
},
"in": "query",
"name": "user_agent",
"description": "User agent of user's browser"
},
{
"schema": {
"type": "string",
"example": "{\"architecture\":\"\",\"bitness\":\"\",\"brands\":[{\"brand\":\"Chromium\",\"version\":\"116\"},{\"brand\":\"Not)A;Brand\",\"version\":\"24\"},{\"brand\":\"Google Chrome\",\"version\":\"116\"}],\"fullVersionList\":[{\"brand\":\"Chromium\",\"version\":\"116.0.5845.164\"},{\"brand\":\"Not)A;Brand\",\"version\":\"24.0.0.0\"},{\"brand\":\"Google Chrome\",\"version\":\"116.0.5845.164\"}],\"mobile\":true,\"model\":\"Pixel 7\",\"platform\":\"Android\",\"platformVersion\":\"13.0.0\",\"uaFullVersion\":\"116.0.5845.164\",\"wow64\":false}"
},
"in": "query",
"name": "client_hints",
"description": "Client hints of user's browser if existent, otherwise empty string"
},
{
"schema": {
"type": "string",
"example": "203.0.113.1"
},
"in": "query",
"name": "ip",
"description": "IP address of the user (if called server-side)"
},
{
"schema": {
"type": "string",
"example": "97987bca-ae59-4c7d-94ba-ee4f19ab8c21"
},
"in": "query",
"name": "gaid",
"description": "Google Advertising Identifier of the user's device"
},
{
"schema": {
"type": "string",
"example": "6D92078A-8246-4BA4-AE5B-76104861E7DC"
},
"in": "query",
"name": "idfa",
"description": "iOS Identifier for Advertisers of the user's device"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "custom_1",
"description": "Custom parameter to pass variables to the conversion callbacks"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "custom_2",
"description": "Custom parameter to pass variables to the conversion callbacks"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "custom_3",
"description": "Custom parameter to pass variables to the conversion callbacks"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "custom_4",
"description": "Custom parameter to pass variables to the conversion callbacks"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "custom_5",
"description": "Custom parameter to pass variables to the conversion callbacks"
},
{
"schema": {
"type": "boolean",
"default": false
},
"in": "query",
"name": "request_live_networks"
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "num_offers",
"description": "Number of offers to return"
},
{
"schema": {
"type": "string",
"enum": [
"payout",
"conversion_rate",
"epc",
"ecpm"
]
},
"in": "query",
"name": "offer_sorting",
"description": "Specify the key for sorting "
},
{
"schema": {
"type": "number",
"format": "double"
},
"in": "query",
"name": "minimum_payout",
"description": "Minimum payout of offers to return"
},
{
"schema": {
"type": "boolean",
"default": false,
"example": true
},
"in": "query",
"name": "include_cpe",
"description": "Specifies whether to return cpe campaigns in the response"
},
{
"schema": {
"type": "boolean",
"default": false,
"example": true
},
"in": "query",
"name": "include_mobile_offers",
"description": "Specifies whether to return mobile offers for request made from non mobile device"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1,
"enum": [
"success",
"error"
]
},
"num_offers": {
"type": "number",
"description": "Number of offers which are returned"
},
"filters": {
"type": "object",
"required": [
"make",
"model",
"os",
"os_version",
"ip",
"platform",
"offer_sorting",
"minimum_payout",
"include_cpe"
],
"properties": {
"make": {
"type": "string",
"minLength": 1,
"description": ""
},
"model": {
"type": "string",
"minLength": 1
},
"os": {
"type": "string",
"minLength": 1
},
"os_version": {
"type": "string",
"minLength": 1
},
"ip": {
"type": "string",
"minLength": 1
},
"platform": {
"type": "string",
"minLength": 1
},
"include_mobile_offers": {
"type": "boolean"
},
"offer_sorting": {
"type": "string",
"minLength": 1
},
"minimum_payout": {
"type": "number"
},
"include_cpe": {
"type": "boolean"
},
"num_offers": {
"type": "number"
}
}
},
"offerwall": {
"type": "object",
"required": [
"name",
"currency_name_singular",
"currency_name_plural",
"currency_sale"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"currency_name_singular": {
"type": "string",
"minLength": 1
},
"currency_name_plural": {
"type": "string",
"minLength": 1
},
"currency_sale": {
"type": "boolean"
},
"currency_sale_multiplier": {
"type": "number"
}
}
},
"offers": {
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"$ref": "#/components/schemas/Offer"
}
}
},
"required": [
"status",
"num_offers",
"filters",
"offerwall",
"offers"
]
},
"examples": {
"example-with-cpe-offer": {
"value": {
"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
},
"offerwall": {
"name": "oapi2",
"currency_name_singular": "Coin",
"currency_name_plural": "Coins",
"currency_sale": false
},
"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"
},
"icon_large": "",
"video_url": "",
"video_url_vp9": "",
"platform": "web",
"platforms": [
"android",
"ios"
],
"devices": [
"phone",
"tablet"
],
"category": "incent",
"conversion_type": "cpe",
"conversion_time": 300,
"conversion_instructions": "Genieße dieses großartige Spiel und erhalte mehrere Belohnungen <div> Genießen Sie dieses großartige <b>Spiel</b> und erhalten Sie <b>mehrere Belohnungen</b> : <br> </div> {multiple_rewards} <div><br></div><div>* Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum </div><div>** Anmerkung 2</div><div><br></div><div><br></div>",
"conversion_instructions_short": "Genieße dieses großartige Spiel und erhalte mehrere Belohnungen",
"conversion_instructions_long": "<div> Genießen Sie dieses großartige <b>Spiel</b> und erhalten Sie <b>mehrere Belohnungen</b> : <br> </div> {multiple_rewards} <div><br></div><div>* Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum </div><div>** Anmerkung 2</div><div><br></div><div><br></div>",
"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,
"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",
"payout": 56,
"multi_limit": "1",
"currency": "Coins",
"completed": false
},
{
"name": "Complete Level 5",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a219a",
"payout": 84,
"multi_limit": "1",
"currency": "Coins",
"completed": false
},
{
"name": "Stay Engaged!",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a217d",
"payout": 56,
"multi_limit": "1",
"currency": "Coins",
"completed": false
},
{
"name": "Team Up",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a215a",
"payout": 281,
"multi_limit": "1",
"currency": "Coins",
"completed": false
},
{
"name": "Regular Player",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a216e",
"payout": 22,
"multi_limit": "10",
"currency": "Coins",
"completed": false,
"percentage": 0
}
],
"cpe_total_rewards_currency_name": "Coins",
"cpe_progressbar_percentage": "5",
"payout": 697,
"payout_base": 0,
"payout_name": "697 Coins",
"button_text": "+697"
}
]
}
},
"example-curcency-sale-active": {
"value": {
"status": "success",
"num_offers": 1,
"filters": {
"make": "Samsung",
"model": "GALAXY S10",
"os": "Android",
"os_version": "10.1.0",
"ip": "79.213.245.101",
"platform": "android",
"include_mobile_offers": false,
"offer_sorting": "ecpm",
"minimum_payout": 0,
"include_cpe": true,
"num_offers": 10
},
"offerwall": {
"name": "oapi2",
"currency_name_singular": "Coin",
"currency_name_plural": "Coins",
"currency_sale": true,
"currency_sale_multiplier": 100
},
"offers": [
{
"id": 4,
"store_id": "com.turbo.stars",
"landing_page": "https://play.google.com/store/apps/details?id=com.turbo.stars",
"icon": "https://lh3.googleusercontent.com/EtAYKSp_Ncz-vqaRH6RMWVTwVagwsZGOdelo6qztOwJTEdKcLLvYoWiwyWUj6KBp_ss=w140",
"name": "Turbo Stars",
"description": "Earn 3900 Coins by completing the following task:",
"tags": {
"tab": "apps"
},
"icon_large": "",
"video_url": "",
"video_url_vp9": "",
"platform": "android",
"platforms": [
"android"
],
"devices": [
"phone",
"tablet"
],
"category": "incent",
"conversion_type": "cpi",
"conversion_time": 300,
"conversion_instructions": "Installiere, öffne und nutze diese App für einige Minuten. <div><b><ol><li>Installiere die App</li><br/><li>Öffne die App</li><br/><li>Benutze die App für ein paar Minuten</li></ol></b></div><br/><div>--<br/>Wenn du die App zuvor schon einmal installiert hattest, hast du keinen Anspruch auf eine Belohnung.</div>",
"conversion_instructions_short": "Installiere, öffne und nutze diese App für einige Minuten.",
"conversion_instructions_long": "<div><b><ol><li>Installiere die App</li><br/><li>Öffne die App</li><br/><li>Benutze die App für ein paar Minuten</li></ol></b></div><br/><div>--<br/>Wenn du die App zuvor schon einmal installiert hattest, hast du keinen Anspruch auf eine Belohnung.</div>",
"tracking_link": "https://www.ayetstudios.com/s2s/go/com.turbo.stars/4/100000085/mcIpTATjeGki3hszpIly2__w4HVe019Q5UCOI84oefX8CPeE_2iY9Lp9tHKsjHgG?pub_id=P-1&sub_id_int=P-10&adslot_id=20",
"created": "2019-12-02 17:48:01",
"start_date": "2019-12-02 00:00:00",
"end_date": "2024-12-02 00:00:00",
"offer_owner": 697607,
"score": 164.27441522953586,
"require_reservation": true,
"min_android_version": "5.0",
"min_ios_version": null,
"max_android_version": "6.0",
"max_ios_version": null,
"priority": 0,
"payout_base": 39,
"payout": 3900,
"payout_name": "3900 Coins",
"button_text": "+3900"
}
]
}
}
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
},
"examples": {
"missing-external_identifier": {
"value": {
"status": "error",
"error": "external_identifier is missing"
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
},
"examples": {
"example-1": {
"value": {
"status": "error",
"error": "The offerwall api is only available for offerwall api adslots"
}
}
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
},
"examples": {
"example-429": {
"value": {
"status": "error",
"error": "Too many consecutive API requests, throttled."
}
}
}
}
}
}
}
}
},
"/offers/get/{adslot}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "adslot",
"in": "path",
"required": true
}
],
"get": {
"summary": "Static API",
"tags": [
"Static API"
],
"operationId": "static-api",
"description": "Returns a list of currently running campaigns on our platform which suit your adslot configuration. Can be filtered by additional parameters.<br><br><b>Note:</b> To pass custom parameters from clicks to conversion callbacks, the <code>tracking_link</code> parameter in offer objects can be extended with <code>&custom_1=...</code> to <code>&custom_5=...</code><br>Those five parameters can be accessed in the publisher dashboard and from conversion callbacks using the <code>{custom_1} - {custom_5}</code> macros in the resulting callback URL.<br><br>The <code>external_identifier</code> parameter found as placeholder in tracking links is important for persistent user identification and also allows access to the users reward status.",
"x-codeSamples": [
{
"lang": "PHP",
"source": "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n CURLOPT_URL => \"https://www.ayetstudios.com/offers/get/3142?apiKey=xxxx&countries%5B%5D=DE&platform%5B%5D=ios&conversion_type%5B%5D=cpi\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => \"\",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 30,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => \"GET\",\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n}\n"
},
{
"lang": "curl",
"source": "curl --request GET \\\n--url 'https://www.ayetstudios.com/offers/get/3142?apiKey=xxxx&countries%5B%5D=DE&platform%5B%5D=ios&conversion_type%5B%5D=cpi'\n"
},
{
"lang": "node",
"source": "const http = require(\"https\");\nconst options = { \"method\": \"GET\", \"hostname\": \"ayetstudios.com\", \"port\": null, \"path\": \"/offers/get/3142?apiKey=xxxx&countries%5B%5D=DE&platform%5B%5D=ios&conversion_type%5B%5D=cpi\", \"headers\": {} };\nconst req = http.request(options, function (res) { const chunks = [];\nres.on(\"data\", function (chunk) { chunks.push(chunk); });\nres.on(\"end\", function () { const body = Buffer.concat(chunks); console.log(body.toString()); }); });\nreq.end();"
},
{
"lang": "python",
"source": "import requests\nurl = \"https://www.ayetstudios.com/offers/get/3142\"\nquerystring = {\"apiKey\":\"xxxx\",\"countries[]\":\"DE\",\"platform[]\":\"ios\",\"conversion_type[]\":\"cpi\"}\nresponse = requests.request(\"GET\", url, params=querystring)\nprint(response.text)"
}
],
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "apiKey",
"required": true,
"description": "static api key that is available under adslot details in your dashboard"
},
{
"schema": {
"type": "array"
},
"in": "query",
"name": "countries[]",
"description": "array of iso2 country codes"
},
{
"schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"android",
"ios",
"desktop"
]
}
},
"in": "query",
"name": "platform[]"
},
{
"schema": {
"type": "array",
"items": {
"type": "string",
"enum": [
"cpi",
"cpa",
"cpl"
]
}
},
"in": "query",
"name": "conversion_type[]"
}
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"x-examples": {
"example-1": {
"status": "success",
"num_offers": 3,
"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"
},
"icon_large": "",
"video_url": "",
"video_url_vp9": "",
"platform": "android",
"platforms": [
"android"
],
"devices": [
"phone",
"tablet"
],
"category": "incent",
"conversion_type": "cpi",
"conversion_time": 900,
"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,
"epc": 0,
"daily_cap": 1000000,
"tracking_link": "https://www.ayetstudios.com/s2s/pub/218592/1595/2772/3142?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,
"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": "<div><b><ol><li>Instale la aplicación</li><br><li>Abre la aplicación</li><br><li>Usa la aplicación por unos minutos</li></ol></b></div><br/><div>--<br/>Si ya instaló la aplicación anteriormente, no es elegible para una recompensa</div>"
},
"fr": {
"conversion_instructions_short": "Installer, ouvrir et utiliser cette application pendant quelques minutes.",
"conversion_instructions_long": "<div><b><ol><li>Installer l'application</li><br><li>Ouvrez l'application</li><br><li>Utilisez l'application pendant quelques minutes</li></ol></b></div><br/><div>--<br/>Si vous avez installé l'application avant, vous n'êtes pas admissible à recevoir une récompense.</div>"
},
"pt": {
"conversion_instructions_short": "Instale, abra e use este aplicativo por alguns minutos.",
"conversion_instructions_long": "<div><b><ol><li>Instale o aplicativo</li><br><li>Abra o aplicativo</li><br><li>Use o aplicativo por alguns minutos</li></ol></b></div><br/><div>--<br/>Se você instalou o aplicativo antes, não é elegível para receber uma recompensa.</div>"
},
"ru": {
"conversion_instructions_short": "Установите, откройте и используйте это приложение в течение нескольких минут.",
"conversion_instructions_long": "<div><b><ol><li>Установите приложение</li><br><li>Откройте приложение</li><br><li>Используйте приложение в течение нескольких минут</li></ol></b></div><br/><div>--<br/>Если вы установили приложение до того, как вы не получите право на вознаграждение.</div>"
},
"ja": {
"conversion_instructions_short": "アプリをインストールして開きます - 新規ユーザーのみ",
"conversion_instructions_long": "アプリをインストールして開きます - 新規ユーザーのみ"
},
"ko": {
"conversion_instructions_short": "앱 설치 및 열기 - 신규 사용자만 해당",
"conversion_instructions_long": "앱 설치 및 열기 - 신규 사용자만 해당"
},
"th": {
"conversion_instructions_short": "ติดตั้งและเปิดแอป - ผู้ใช้ใหม่เท่านั้น",
"conversion_instructions_long": "ติดตั้งและเปิดแอป - ผู้ใช้ใหม่เท่านั้น"
},
"zh": {
"conversion_instructions_short": "安裝並打開應用程式 - 僅限新用戶",
"conversion_instructions_long": "安裝並打開應用程式 - 僅限新用戶"
},
"id": {
"conversion_instructions_short": "Instal dan buka aplikasi - khusus pengguna baru",
"conversion_instructions_long": "Instal dan buka aplikasi - khusus pengguna baru"
}
},
"min_android_version": null,
"min_ios_version": null,
"max_android_version": null,
"max_ios_version": null
},
{
"id": 218819,
"store_id": "com.contextlogic.wish",
"landing_page": "https://play.google.com/store/apps/details?id=com.contextlogic.wish",
"icon": "https://play-lh.googleusercontent.com/y7h3n9TyaRdm4bD-X3RyFACj-k8uV-mz730oufeh_88ejX4jrn3urzrMvo_rbBHvQw=w140",
"name": "Wish - Shopping Made Fun",
"description": "",
"tags": {
"tab": "apps"
},
"icon_large": "",
"video_url": "",
"video_url_vp9": "",
"platform": "android",
"platforms": [
"android"
],
"devices": [
"phone",
"tablet"
],
"category": "incent",
"conversion_type": "cpi",
"conversion_time": 900,
"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.246,
"epc": 0.03,
"daily_cap": 1000000,
"tracking_link": "https://www.ayetstudios.com/s2s/pub/218819/1595/2772/3142?external_identifier={external_identifier}",
"created": "2021-02-12 15:11:35",
"start_date": "2021-02-12 00:00:00",
"end_date": "2026-02-12 00:00:00",
"offer_owner": 0,
"score": 0,
"devices_whitelist": [],
"devices_blacklist": [],
"offer_complexity": "0",
"payment_required": false,
"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": "<div><b><ol><li>Instale la aplicación</li><br><li>Abre la aplicación</li><br><li>Usa la aplicación por unos minutos</li></ol></b></div><br/><div>--<br/>Si ya instaló la aplicación anteriormente, no es elegible para una recompensa</div>"
},
"fr": {
"conversion_instructions_short": "Installer, ouvrir et utiliser cette application pendant quelques minutes.",
"conversion_instructions_long": "<div><b><ol><li>Installer l'application</li><br><li>Ouvrez l'application</li><br><li>Utilisez l'application pendant quelques minutes</li></ol></b></div><br/><div>--<br/>Si vous avez installé l'application avant, vous n'êtes pas admissible à recevoir une récompense.</div>"
},
"pt": {
"conversion_instructions_short": "Instale, abra e use este aplicativo por alguns minutos.",
"conversion_instructions_long": "<div><b><ol><li>Instale o aplicativo</li><br><li>Abra o aplicativo</li><br><li>Use o aplicativo por alguns minutos</li></ol></b></div><br/><div>--<br/>Se você instalou o aplicativo antes, não é elegível para receber uma recompensa.</div>"
},
"ru": {
"conversion_instructions_short": "Установите, откройте и используйте это приложение в течение нескольких минут.",
"conversion_instructions_long": "<div><b><ol><li>Установите приложение</li><br><li>Откройте приложение</li><br><li>Используйте приложение в течение нескольких минут</li></ol></b></div><br/><div>--<br/>Если вы установили приложение до того, как вы не получите право на вознаграждение.</div>"
},
"ja": {
"conversion_instructions_short": "アプリをインストールして開きます - 新規ユーザーのみ",
"conversion_instructions_long": "アプリをインストールして開きます - 新規ユーザーのみ"
},
"ko": {
"conversion_instructions_short": "앱 설치 및 열기 - 신규 사용자만 해당",
"conversion_instructions_long": "앱 설치 및 열기 - 신규 사용자만 해당"
},
"th": {
"conversion_instructions_short": "ติดตั้งและเปิดแอป - ผู้ใช้ใหม่เท่านั้น",
"conversion_instructions_long": "ติดตั้งและเปิดแอป - ผู้ใช้ใหม่เท่านั้น"
},
"zh": {
"conversion_instructions_short": "安裝並打開應用程式 - 僅限新用戶",
"conversion_instructions_long": "安裝並打開應用程式 - 僅限新用戶"
},
"id": {
"conversion_instructions_short": "Instal dan buka aplikasi - khusus pengguna baru",
"conversion_instructions_long": "Instal dan buka aplikasi - khusus pengguna baru"
}
},
"min_android_version": null,
"min_ios_version": null,
"max_android_version": null,
"max_ios_version": null
},
{
"id": 218820,
"store_id": "",
"landing_page": "https://play.google.com/store/apps/details?id=com.codigames.idle.barber.shop.empire.tycoon",
"icon": "https://play-lh.googleusercontent.com/zQL7-oG8X5AUKOM9XdOLlySr0zt9iQMYrhbhmT9PFVp7EnHI0DcJAPB9-8qwNkS3Y7w=w140",
"name": "Idle Barber Shop Tycoon - Business Management Game",
"description": "",
"tags": {
"tab": "apps"
},
"icon_large": "",
"video_url": "",
"video_url_vp9": "",
"platform": "android",
"platforms": [
"android"
],
"devices": [],
"category": "incent",
"conversion_type": "cpe",
"conversion_time": 300,
"conversion_instructions": "Complete multiple tasks to get your rewards. {multiple_rewards}",
"conversion_instructions_short": "Complete multiple tasks to get your rewards.",
"conversion_instructions_long": "{multiple_rewards}",
"countries": [],
"payout_usd": 0.506,
"epc": "new",
"daily_cap": 1000000,
"tracking_link": "https://www.ayetstudios.com/s2s/pub/218819/1595/2772/3142?external_identifier={external_identifier}",
"created": "2021-06-09 09:17:47",
"start_date": "2021-06-09 00:00:00",
"end_date": "2026-06-09 00:00:00",
"offer_owner": 0,
"score": 0,
"devices_whitelist": [],
"devices_blacklist": [],
"offer_complexity": "0",
"payment_required": false,
"i18n": {
"en": {
"conversion_instructions_short": "Complete multiple tasks to get your rewards.",
"conversion_instructions_long": "{multiple_rewards}"
},
"de": {
"conversion_instructions_short": "Schließe mehrere Aktionen ab, um deine Belohnungen zu erhalten.",
"conversion_instructions_long": "Schließe mehrere Aktionen ab, um deine Belohnungen zu erhalten."
},
"es": {
"conversion_instructions_short": "Completa varias tareas para obtener tus recompensas.",
"conversion_instructions_long": "Completa varias tareas para obtener tus recompensas."
},
"fr": {
"conversion_instructions_short": "Effectuez plusieurs tâches pour obtenir vos récompenses.",
"conversion_instructions_long": "Effectuez plusieurs tâches pour obtenir vos récompenses."
},
"pt": {
"conversion_instructions_short": "Conclua várias tarefas para obter suas recompensas.",
"conversion_instructions_long": "Conclua várias tarefas para obter suas recompensas."
},
"ru": {
"conversion_instructions_short": "Выполните несколько задач, чтобы получить награды.",
"conversion_instructions_long": "Выполните несколько задач, чтобы получить награды."
},
"ja": {
"conversion_instructions_short": "複数のタスクを完了して報酬を獲得してください。",
"conversion_instructions_long": "複数のタスクを完了して報酬を獲得してください。"
},
"ko": {
"conversion_instructions_short": "여러 작업을 완료하여 보상을 받으세요.",
"conversion_instructions_long": "여러 작업을 완료하여 보상을 받으세요."
},
"th": {
"conversion_instructions_short": "ทำงานหลายอย่างให้สำเร็จเพื่อรับรางวัลของคุณ",
"conversion_instructions_long": "ทำงานหลายอย่างให้สำเร็จเพื่อรับรางวัลของคุณ"
},
"zh": {
"conversion_instructions_short": "完成多項任務即可獲得獎勵。",
"conversion_instructions_long": "完成多項任務即可獲得獎勵。"
},
"id": {
"conversion_instructions_short": "Selesaikan banyak tugas untuk mendapatkan hadiah Anda.",
"conversion_instructions_long": "Selesaikan banyak tugas untuk mendapatkan hadiah Anda."
}
},
"tasks": [
{
"name": "Install the app",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a245a",
"payout": 0.056,
"conversion_limit": 1,
"single_conversion_per_day": true,
"i18n": {
"en": "Install the app",
"de": "Installiere die App",
"es": "Instala la aplicación",
"fr": "Installez l'application",
"pt": "instale o aplicativo",
"ru": "Установите приложение",
"ja": "アプリをインストールする",
"ko": "앱 설치",
"th": "ติดตั้งแอป",
"zh": "安裝應用程式",
"id": "Instal aplikasinya"
}
},
{
"name": "Open your own salon",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a215e",
"payout": 0.112,
"conversion_limit": 1,
"single_conversion_per_day": true,
"i18n": {
"en": "Open your own salon",
"de": "Eröffne deinen eigenen Salon",
"es": "Abre tu propio salón",
"fr": "Ouvrez votre propre salon",
"pt": "Abra seu próprio salão",
"ru": "Откройте свой салон",
"ja": "自分のサロンを開く",
"ko": "나만의 살롱을 열어보세요",
"th": "เปิดร้านทำผมของคุณเอง",
"zh": "開設自己的沙龍",
"id": "Buka salon Anda sendiri"
}
},
{
"name": "Earn 1m game dollars",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a217b",
"payout": 0.168,
"conversion_limit": 1,
"single_conversion_per_day": true,
"i18n": {
"en": "Earn 1m game dollars",
"de": "Verdienen Sie 1 Mio. Spieldollar",
"es": "Gana 1 millón de dólares en juegos",
"fr": "Gagnez 1 million de dollars de jeu",
"pt": "Ganhe 1 milhão de dólares em jogos",
"ru": "Заработайте 1 млн игровых долларов",
"ja": "100万ゲームドルを獲得",
"ko": "백만 달러의 게임 달러를 벌어보세요",
"th": "รับหนึ่งล้านดอลลาร์เกม",
"zh": "賺取一百萬遊戲幣",
"id": "Hasilkan satu juta dolar permainan"
}
},
{
"name": "Earn 10 milion game dollars",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a215c",
"payout": 0.168,
"conversion_limit": 1,
"single_conversion_per_day": true,
"i18n": {
"en": "Earn 10 milion game dollars",
"de": "Verdienen Sie 10 Millionen Spieldollar",
"es": "Gana 10 millones de dólares en juegos",
"fr": "Gagnez 10 millions de dollars de jeu",
"pt": "Ganhe 10 milhões de dólares em jogos",
"ru": "Заработайте 10 миллионов игровых долларов",
"ja": "1,000万ゲームドルを稼ぐ",
"ko": "게임달러 1000만 달러 벌기",
"th": "รับเงินเกมสิบล้านดอลลาร์",
"zh": "賺取一千萬遊戲幣",
"id": "Hasilkan sepuluh juta dolar permainan"
}
}
],
"min_android_version": null,
"min_ios_version": null,
"max_android_version": null,
"max_ios_version": null
}
]
}
},
"properties": {
"status": {
"type": "string",
"minLength": 1
},
"num_offers": {
"type": "number"
},
"offers": {
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"type": "object",
"properties": {
"id": {
"type": "number"
},
"store_id": {
"type": "string"
},
"landing_page": {
"type": "string",
"minLength": 1
},
"icon": {
"type": "string",
"minLength": 1
},
"name": {
"type": "string",
"minLength": 1
},
"description": {
"type": "string"
},
"tags": {
"type": "object",
"properties": {
"tab": {
"type": "string",
"minLength": 1
}
},
"required": [
"tab"
]
},
"icon_large": {
"type": "string",
"description": "an optional teaser icon, usually 720p"
},
"video_url": {
"type": "string",
"description": "optional teaser video, max. 15s, h264, 720p @ 1000kbps"
},
"video_url_vp9": {
"type": "string",
"description": "optional higher quality variant of the teaser video, max. 15s, vp9, 720p @ 750kbps"
},
"platform": {
"type": "string",
"minLength": 1,
"description": "platform the offer belongs to"
},
"platforms": {
"type": "array",
"items": {
"type": "string"
},
"description": "array of platforms permitted to complete the offer"
},
"devices": {
"type": "array",
"items": {
"type": "string"
}
},
"category": {
"type": "string",
"minLength": 1
},
"conversion_type": {
"type": "string",
"minLength": 1
},
"conversion_time": {
"type": "number"
},
"conversion_instructions": {
"type": "string",
"minLength": 1
},
"conversion_instructions_short": {
"type": "string",
"minLength": 1
},
"conversion_instructions_long": {
"type": "string",
"minLength": 1
},
"countries": {
"type": "array",
"items": {
"type": "string"
}
},
"payout_usd": {
"type": "number"
},
"currency_amount": {
"type": "number"
},
"epc": {
"oneOf": [
{
"type": "string"
},
{
"type": "number"
}
],
"minLength": 1
},
"daily_cap": {
"type": "number"
},
"tracking_link": {
"type": "string",
"minLength": 1
},
"created": {
"type": "string",
"minLength": 1
},
"start_date": {
"type": "string",
"minLength": 1
},
"end_date": {
"type": "string",
"minLength": 1
},
"offer_owner": {
"type": "number"
},
"score": {
"type": "number"
},
"devices_whitelist": {
"type": "array",
"items": {
"type": "string"
}
},
"devices_blacklist": {
"type": "array",
"items": {
"type": "string"
}
},
"offer_complexity": {
"type": "string",
"minLength": 1
},
"payment_required": {
"type": "boolean"
},
"i18n": {
"type": "object",
"properties": {
"en": {
"type": "object",
"required": [
"conversion_instructions_short",
"conversion_instructions_long"
],
"properties": {
"conversion_instructions_short": {
"type": "string",
"minLength": 1
},
"conversion_instructions_long": {
"type": "string",
"minLength": 1
}
}
},
"de": {
"type": "object",
"required": [
"conversion_instructions_short",
"conversion_instructions_long"
],
"properties": {
"conversion_instructions_short": {
"type": "string",
"minLength": 1
},
"conversion_instructions_long": {
"type": "string",
"minLength": 1
}
}
},
"es": {
"type": "object",
"required": [
"conversion_instructions_short",
"conversion_instructions_long"
],
"properties": {
"conversion_instructions_short": {
"type": "string",
"minLength": 1
},
"conversion_instructions_long": {
"type": "string",
"minLength": 1
}
}
},
"fr": {
"type": "object",
"required": [
"conversion_instructions_short",
"conversion_instructions_long"
],
"properties": {
"conversion_instructions_short": {
"type": "string",
"minLength": 1
},
"conversion_instructions_long": {
"type": "string",
"minLength": 1
}
}
},
"pt": {
"type": "object",
"required": [
"conversion_instructions_short",
"conversion_instructions_long"
],
"properties": {
"conversion_instructions_short": {
"type": "string",
"minLength": 1
},
"conversion_instructions_long": {
"type": "string",
"minLength": 1
}
}
},
"ru": {
"type": "object",
"required": [
"conversion_instructions_short",
"conversion_instructions_long"
],
"properties": {
"conversion_instructions_short": {
"type": "string",
"minLength": 1
},
"conversion_instructions_long": {
"type": "string",
"minLength": 1
}
}
},
"ja": {
"type": "object",
"required": [
"conversion_instructions_short",
"conversion_instructions_long"
],
"properties": {
"conversion_instructions_short": {
"type": "string",
"minLength": 1
},
"conversion_instructions_long": {
"type": "string",
"minLength": 1
}
}
},
"ko": {
"type": "object",
"required": [
"conversion_instructions_short",
"conversion_instructions_long"
],
"properties": {
"conversion_instructions_short": {
"type": "string",
"minLength": 1
},
"conversion_instructions_long": {
"type": "string",
"minLength": 1
}
}
},
"th": {
"type": "object",
"required": [
"conversion_instructions_short",
"conversion_instructions_long"
],
"properties": {
"conversion_instructions_short": {
"type": "string",
"minLength": 1
},
"conversion_instructions_long": {
"type": "string",
"minLength": 1
}
}
},
"zh": {
"type": "object",
"required": [
"conversion_instructions_short",
"conversion_instructions_long"
],
"properties": {
"conversion_instructions_short": {
"type": "string",
"minLength": 1
},
"conversion_instructions_long": {
"type": "string",
"minLength": 1
}
}
},
"id": {
"type": "object",
"required": [
"conversion_instructions_short",
"conversion_instructions_long"
],
"properties": {
"conversion_instructions_short": {
"type": "string",
"minLength": 1
},
"conversion_instructions_long": {
"type": "string",
"minLength": 1
}
}
}
},
"required": [
"en",
"de",
"es",
"fr",
"pt",
"ru",
"ja",
"ko",
"th",
"zh",
"id"
]
},
"tasks": {
"type": "array",
"uniqueItems": true,
"minItems": 1,
"description": "Present for CPE campaigns",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Name of the task"
},
"uuid": {
"type": "string",
"minLength": 1,
"description": "Persistent UUID for the task"
},
"payout": {
"type": "number",
"description": "Payout for the task"
},
"currency_amount": {
"type": "number",
"description": "Payout in user currency for the task"
},
"conversion_limit": {
"type": "number",
"description": "Maximum number of conversions for the task"
},
"single_conversion_per_day": {
"type": "boolean",
"description": "Whether the task can be completed only once per day"
},
"i18n": {
"type": "object",
"properties": {
"en": {
"type": "string",
"minLength": 1
},
"de": {
"type": "string",
"minLength": 1
},
"es": {
"type": "string",
"minLength": 1
},
"fr": {
"type": "string",
"minLength": 1
},
"pt": {
"type": "string",
"minLength": 1
},
"ru": {
"type": "string",
"minLength": 1
},
"ja": {
"type": "string",
"minLength": 1
},
"ko": {
"type": "string",
"minLength": 1
},
"th": {
"type": "string",
"minLength": 1
},
"zh": {
"type": "string",
"minLength": 1
},
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"en",
"de",
"es",
"fr",
"pt",
"ru",
"ja",
"ko",
"th",
"zh",
"id"
]
}
},
"required": [
"name",
"uuid",
"payout",
"currency_amount",
"conversion_limit",
"single_conversion_per_day"
]
}
},
"min_android_version": {
"type": "string"
},
"min_ios_version": {
"type": "string"
},
"max_android_version": {
"type": "string"
},
"max_ios_version": {
"type": "string"
}
},
"required": [
"id",
"store_id",
"landing_page",
"icon",
"name",
"description",
"platform",
"category",
"conversion_type",
"conversion_time",
"conversion_instructions",
"conversion_instructions_short",
"conversion_instructions_long",
"payout_usd",
"currency_amount",
"epc",
"daily_cap",
"tracking_link",
"created",
"start_date",
"end_date",
"offer_owner",
"score",
"offer_complexity",
"payment_required"
]
}
}
},
"required": [
"status",
"num_offers",
"offers"
]
},
"examples": {
"example-1": {
"value": {
"status": "success",
"num_offers": 3,
"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"
},
"icon_large": "",
"video_url": "",
"video_url_vp9": "",
"platform": "android",
"platforms": [
"android"
],
"devices": [
"phone",
"tablet"
],
"category": "incent",
"conversion_type": "cpi",
"conversion_time": 900,
"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}",
"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,
"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": "<div><b><ol><li>Instale la aplicación</li><br><li>Abre la aplicación</li><br><li>Usa la aplicación por unos minutos</li></ol></b></div><br/><div>--<br/>Si ya instaló la aplicación anteriormente, no es elegible para una recompensa</div>"
},
"fr": {
"conversion_instructions_short": "Installer, ouvrir et utiliser cette application pendant quelques minutes.",
"conversion_instructions_long": "<div><b><ol><li>Installer l'application</li><br><li>Ouvrez l'application</li><br><li>Utilisez l'application pendant quelques minutes</li></ol></b></div><br/><div>--<br/>Si vous avez installé l'application avant, vous n'êtes pas admissible à recevoir une récompense.</div>"
},
"pt": {
"conversion_instructions_short": "Instale, abra e use este aplicativo por alguns minutos.",
"conversion_instructions_long": "<div><b><ol><li>Instale o aplicativo</li><br><li>Abra o aplicativo</li><br><li>Use o aplicativo por alguns minutos</li></ol></b></div><br/><div>--<br/>Se você instalou o aplicativo antes, não é elegível para receber uma recompensa.</div>"
},
"ru": {
"conversion_instructions_short": "Установите, откройте и используйте это приложение в течение нескольких минут.",
"conversion_instructions_long": "<div><b><ol><li>Установите приложение</li><br><li>Откройте приложение</li><br><li>Используйте приложение в течение нескольких минут</li></ol></b></div><br/><div>--<br/>Если вы установили приложение до того, как вы не получите право на вознаграждение.</div>"
},
"ja": {
"conversion_instructions_short": "アプリをインストールして開きます - 新規ユーザーのみ",
"conversion_instructions_long": "アプリをインストールして開きます - 新規ユーザーのみ"
},
"ko": {
"conversion_instructions_short": "앱 설치 및 열기 - 신규 사용자만 해당",
"conversion_instructions_long": "앱 설치 및 열기 - 신규 사용자만 해당"
},
"th": {
"conversion_instructions_short": "ติดตั้งและเปิดแอป - ผู้ใช้ใหม่เท่านั้น",
"conversion_instructions_long": "ติดตั้งและเปิดแอป - ผู้ใช้ใหม่เท่านั้น"
},
"zh": {
"conversion_instructions_short": "安裝並打開應用程式 - 僅限新用戶",
"conversion_instructions_long": "安裝並打開應用程式 - 僅限新用戶"
},
"id": {
"conversion_instructions_short": "Instal dan buka aplikasi - khusus pengguna baru",
"conversion_instructions_long": "Instal dan buka aplikasi - khusus pengguna baru"
}
},
"min_android_version": null,
"min_ios_version": null,
"max_android_version": null,
"max_ios_version": null
},
{
"id": 218819,
"store_id": "com.contextlogic.wish",
"landing_page": "https://play.google.com/store/apps/details?id=com.contextlogic.wish",
"icon": "https://play-lh.googleusercontent.com/y7h3n9TyaRdm4bD-X3RyFACj-k8uV-mz730oufeh_88ejX4jrn3urzrMvo_rbBHvQw=w140",
"name": "Wish - Shopping Made Fun",
"description": "",
"tags": {
"tab": "apps"
},
"icon_large": "",
"video_url": "",
"video_url_vp9": "",
"platform": "android",
"platforms": [
"android"
],
"devices": [
"phone",
"tablet"
],
"category": "incent",
"conversion_type": "cpi",
"conversion_time": 900,
"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.246,
"currency_amount": 246,
"epc": 0.03,
"daily_cap": 1000000,
"tracking_link": "https://www.ayetstudios.com/s2s/pub/218819/1595/2772/3142?external_identifier={external_identifier}",
"created": "2021-02-12 15:11:35",
"start_date": "2021-02-12 00:00:00",
"end_date": "2026-02-12 00:00:00",
"offer_owner": 0,
"score": 0,
"devices_whitelist": [],
"devices_blacklist": [],
"offer_complexity": "0",
"payment_required": false,
"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": "<div><b><ol><li>Instale la aplicación</li><br><li>Abre la aplicación</li><br><li>Usa la aplicación por unos minutos</li></ol></b></div><br/><div>--<br/>Si ya instaló la aplicación anteriormente, no es elegible para una recompensa</div>"
},
"fr": {
"conversion_instructions_short": "Installer, ouvrir et utiliser cette application pendant quelques minutes.",
"conversion_instructions_long": "<div><b><ol><li>Installer l'application</li><br><li>Ouvrez l'application</li><br><li>Utilisez l'application pendant quelques minutes</li></ol></b></div><br/><div>--<br/>Si vous avez installé l'application avant, vous n'êtes pas admissible à recevoir une récompense.</div>"
},
"pt": {
"conversion_instructions_short": "Instale, abra e use este aplicativo por alguns minutos.",
"conversion_instructions_long": "<div><b><ol><li>Instale o aplicativo</li><br><li>Abra o aplicativo</li><br><li>Use o aplicativo por alguns minutos</li></ol></b></div><br/><div>--<br/>Se você instalou o aplicativo antes, não é elegível para receber uma recompensa.</div>"
},
"ru": {
"conversion_instructions_short": "Установите, откройте и используйте это приложение в течение нескольких минут.",
"conversion_instructions_long": "<div><b><ol><li>Установите приложение</li><br><li>Откройте приложение</li><br><li>Используйте приложение в течение нескольких минут</li></ol></b></div><br/><div>--<br/>Если вы установили приложение до того, как вы не получите право на вознаграждение.</div>"
},
"ja": {
"conversion_instructions_short": "アプリをインストールして開きます - 新規ユーザーのみ",
"conversion_instructions_long": "アプリをインストールして開きます - 新規ユーザーのみ"
},
"ko": {
"conversion_instructions_short": "앱 설치 및 열기 - 신규 사용자만 해당",
"conversion_instructions_long": "앱 설치 및 열기 - 신규 사용자만 해당"
},
"th": {
"conversion_instructions_short": "ติดตั้งและเปิดแอป - ผู้ใช้ใหม่เท่านั้น",
"conversion_instructions_long": "ติดตั้งและเปิดแอป - ผู้ใช้ใหม่เท่านั้น"
},
"zh": {
"conversion_instructions_short": "安裝並打開應用程式 - 僅限新用戶",
"conversion_instructions_long": "安裝並打開應用程式 - 僅限新用戶"
},
"id": {
"conversion_instructions_short": "Instal dan buka aplikasi - khusus pengguna baru",
"conversion_instructions_long": "Instal dan buka aplikasi - khusus pengguna baru"
}
},
"min_android_version": null,
"min_ios_version": null,
"max_android_version": null,
"max_ios_version": null
},
{
"id": 218820,
"store_id": "",
"landing_page": "https://play.google.com/store/apps/details?id=com.codigames.idle.barber.shop.empire.tycoon",
"icon": "https://play-lh.googleusercontent.com/zQL7-oG8X5AUKOM9XdOLlySr0zt9iQMYrhbhmT9PFVp7EnHI0DcJAPB9-8qwNkS3Y7w=w140",
"name": "Idle Barber Shop Tycoon - Business Management Game",
"description": "",
"tags": {
"tab": "apps"
},
"icon_large": "",
"video_url": "",
"video_url_vp9": "",
"platform": "android",
"platforms": [
"android"
],
"devices": [],
"category": "incent",
"conversion_type": "cpe",
"conversion_time": 300,
"conversion_instructions": "Complete multiple tasks to get your rewards. {multiple_rewards}",
"conversion_instructions_short": "Complete multiple tasks to get your rewards.",
"conversion_instructions_long": "{multiple_rewards}",
"countries": [],
"payout_usd": 0.506,
"currency_amount": 506,
"epc": "new",
"daily_cap": 1000000,
"tracking_link": "https://www.ayetstudios.com/s2s/pub/218819/1595/2772/3142?external_identifier={external_identifier}",
"created": "2021-06-09 09:17:47",
"start_date": "2021-06-09 00:00:00",
"end_date": "2026-06-09 00:00:00",
"offer_owner": 0,
"score": 0,
"devices_whitelist": [],
"devices_blacklist": [],
"offer_complexity": "0",
"payment_required": false,
"i18n": {
"en": {
"conversion_instructions_short": "Complete multiple tasks to get your rewards.",
"conversion_instructions_long": "{multiple_rewards}"
},
"de": {
"conversion_instructions_short": "Schließe mehrere Aktionen ab, um deine Belohnungen zu erhalten.",
"conversion_instructions_long": "Schließe mehrere Aktionen ab, um deine Belohnungen zu erhalten."
},
"es": {
"conversion_instructions_short": "Completa varias tareas para obtener tus recompensas.",
"conversion_instructions_long": "Completa varias tareas para obtener tus recompensas."
},
"fr": {
"conversion_instructions_short": "Effectuez plusieurs tâches pour obtenir vos récompenses.",
"conversion_instructions_long": "Effectuez plusieurs tâches pour obtenir vos récompenses."
},
"pt": {
"conversion_instructions_short": "Conclua várias tarefas para obter suas recompensas.",
"conversion_instructions_long": "Conclua várias tarefas para obter suas recompensas."
},
"ru": {
"conversion_instructions_short": "Выполните несколько задач, чтобы получить награды.",
"conversion_instructions_long": "Выполните несколько задач, чтобы получить награды."
},
"ja": {
"conversion_instructions_short": "アプリをインストールして開きます - 新規ユーザーのみ",
"conversion_instructions_long": "アプリをインストールして開きます - 新規ユーザーのみ"
},
"ko": {
"conversion_instructions_short": "앱 설치 및 열기 - 신규 사용자만 해당",
"conversion_instructions_long": "앱 설치 및 열기 - 신규 사용자만 해당"
},
"th": {
"conversion_instructions_short": "ติดตั้งและเปิดแอป - ผู้ใช้ใหม่เท่านั้น",
"conversion_instructions_long": "ติดตั้งและเปิดแอป - ผู้ใช้ใหม่เท่านั้น"
},
"zh": {
"conversion_instructions_short": "安裝並打開應用程式 - 僅限新用戶",
"conversion_instructions_long": "安裝並打開應用程式 - 僅限新用戶"
},
"id": {
"conversion_instructions_short": "Instal dan buka aplikasi - khusus pengguna baru",
"conversion_instructions_long": "Instal dan buka aplikasi - khusus pengguna baru"
}
},
"tasks": [
{
"name": "Install the app",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a215d",
"payout": 0.056,
"currency_amount": 56,
"conversion_limit": 1,
"single_conversion_per_day": true,
"i18n": {
"en": "Install the app",
"de": "Installiere die App",
"es": "Instala la aplicación",
"fr": "Installez l'application",
"pt": "instale o aplicativo",
"ru": "Установите приложение",
"ja": "アプリをインストールする",
"ko": "앱 설치",
"th": "ติดตั้งแอป",
"zh": "安裝應用程式",
"id": "Instal aplikasinya"
}
},
{
"name": "Open your own salon",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a218a",
"payout": 0.112,
"currency_amount": 112,
"conversion_limit": 1,
"single_conversion_per_day": true,
"i18n": {
"en": "Open your own salon",
"de": "Eröffne deinen eigenen Salon",
"es": "Abre tu propio salón",
"fr": "Ouvrez votre propre salon",
"pt": "Abra seu próprio salão",
"ru": "Откройте свой салон",
"ja": "自分のサロンを開く",
"ko": "나만의 살롱을 열어보세요",
"th": "เปิดร้านทำผมของคุณเอง",
"zh": "開設自己的沙龍",
"id": "Buka salon Anda sendiri"
}
},
{
"name": "Earn 1m game dollars",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a219c",
"payout": 0.168,
"currency_amount": 168,
"conversion_limit": 1,
"single_conversion_per_day": true,
"i18n": {
"en": "Earn 1m game dollars",
"de": "Verdienen Sie 1 Mio. Spieldollar",
"es": "Gana 1 millón de dólares en juegos",
"fr": "Gagnez 1 million de dollars de jeu",
"pt": "Ganhe 1 milhão de dólares em jogos",
"ru": "Заработайте 1 млн игровых долларов",
"ja": "100万ゲームドルを獲得",
"ko": "백만 달러의 게임 달러를 벌어보세요",
"th": "รับหนึ่งล้านดอลลาร์เกม",
"zh": "賺取一百萬遊戲幣",
"id": "Hasilkan satu juta dolar permainan"
}
},
{
"name": "Earn 10 milion game dollars",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a215b",
"payout": 0.168,
"currency_amount": 168,
"conversion_limit": 1,
"single_conversion_per_day": true,
"i18n": {
"en": "Earn 10 milion game dollars",
"de": "Verdienen Sie 10 Millionen Spieldollar",
"es": "Gana 10 millones de dólares en juegos",
"fr": "Gagnez 10 millions de dollars de jeu",
"pt": "Ganhe 10 milhões de dólares em jogos",
"ru": "Заработайте 10 миллионов игровых долларов",
"ja": "1,000万ゲームドルを稼ぐ",
"ko": "게임달러 1000만 달러 벌기",
"th": "รับเงินเกมสิบล้านดอลลาร์",
"zh": "賺取一千萬遊戲幣",
"id": "Hasilkan sepuluh juta dolar permainan"
}
}
],
"min_android_version": null,
"min_ios_version": null,
"max_android_version": null,
"max_ios_version": null
}
]
}
}
}
}
}
}
}
}
},
"/api2/publisher/reporting": {
"get": {
"summary": "Publisher Reporting API",
"tags": [
"Publisher Reporting API"
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1
},
"filters": {
"type": "object",
"required": [
"startDate",
"endDate"
],
"properties": {
"startDate": {
"type": "string",
"minLength": 1
},
"endDate": {
"type": "string",
"minLength": 1
},
"placements": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"data": {
"type": "object"
}
},
"required": [
"status",
"filters",
"data"
]
},
"examples": {
"example-1": {
"value": {
"status": "success",
"filters": {
"startDate": "2022-07-10",
"endDate": "2022-07-11",
"placements": [
"3"
],
"adslots": [
"3",
"26"
]
},
"data": {
"2022-07-10": {
"3": {
"type": "web",
"statistics": [],
"adslots": {
"3": {
"adformat": "offerwall",
"statistics": [],
"network_statistics": []
},
"26": {
"adformat": "offerwall_api",
"statistics": [],
"network_statistics": []
}
}
}
},
"2022-07-11": {
"3": {
"type": "web",
"statistics": {
"US": {
"DAU": 1
}
},
"adslots": {
"3": {
"adformat": "offerwall",
"statistics": {
"US": {
"impressions": 2,
"clicks": 0,
"adserver_clicks": 0,
"conversions": 0,
"adserver_conversions": 0,
"revenue": 0,
"adserver_revenue": 0,
"mediation_fees": 0,
"DAU": 1,
"EPC": 0,
"eCPM": 0
}
},
"network_statistics": {
"US": {
"ayetstudios": {
"offer_impressions": 14,
"clicks": 0,
"conversions": 0,
"revenue": 0,
"EPC": 0,
"eCPM": 0
}
}
}
},
"26": {
"adformat": "offerwall_api",
"statistics": [],
"network_statistics": []
}
}
}
}
}
}
},
"example-rewarded-video": {
"value": {
"status": "success",
"filters": {
"startDate": "2022-05-15",
"endDate": "2022-05-16",
"placements": [
"10"
],
"adslots": [
"24"
]
},
"data": {
"2022-05-15": {
"10": {
"type": "ios",
"statistics": [],
"adslots": {
"24": {
"adformat": "rewarded_video",
"statistics": [],
"network_statistics": []
}
}
}
},
"2022-05-16": {
"10": {
"type": "ios",
"statistics": {
"US": {
"revenue": 0
}
},
"adslots": {
"24": {
"adformat": "rewarded_video",
"statistics": {
"US": {
"revenue": 5,
"video_ecpm": 0,
"video_requests": 5,
"video_fills": 3,
"video_requested_plays": 5,
"video_media_errors": 0,
"video_started_plays": 1,
"video_play_errors": 0,
"video_completed_views": 1,
"video_rewarded_views": 1,
"DAU": 0,
"ARPDAU": 0
}
},
"network_statistics": {
"US": {
"ayetstudios": {
"revenue": 0,
"video_requests": 5,
"video_fills": 0,
"video_nofills": 1,
"video_unchecked_fill_status": 1,
"video_requested_plays": 5,
"video_media_errors": 0,
"video_started_plays": 1,
"video_play_errors": 0,
"video_completed_views": 1,
"video_rewarded_views": 1
}
}
}
}
}
}
}
}
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1
},
"errorCode": {
"type": "number"
},
"errorMessage": {
"type": "string",
"minLength": 1
}
},
"required": [
"status",
"errorCode",
"errorMessage"
],
"x-examples": {
"example-1": {
"status": "error",
"errorCode": 100,
"errorMessage": "Authentification failed, check your API Key and IP whitelisting."
}
}
},
"examples": {
"Unauthorized access": {
"value": {
"status": "error",
"errorCode": 100,
"errorMessage": "Authentification failed, check your API Key and IP whitelisting."
}
}
}
}
}
},
"403": {
"description": "Configurationerror",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1
},
"errorCode": {
"type": "number"
},
"errorMessage": {
"type": "string",
"minLength": 1
}
},
"required": [
"status",
"errorCode",
"errorMessage"
],
"x-examples": {
"example-1": {
"status": "error",
"errorCode": 403,
"errorMessage": "Placement(s) 12,13 dont belong to publisher #102"
}
}
},
"examples": {
"Unauthorized access": {
"value": {
"status": "error",
"errorCode": 403,
"errorMessage": "Placement(s) 12,13 dont belong to publisher #102"
}
}
}
}
}
},
"429": {
"description": "Toomanyrequests",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1
},
"errorCode": {
"type": "number"
},
"errorMessage": {
"type": "string",
"minLength": 1
}
},
"required": [
"status",
"errorCode",
"errorMessage"
],
"x-examples": {
"example-1": {
"status": "error",
"errorCode": 429,
"errorMessage": "Too many consecutive API requests, throttled."
}
}
},
"examples": {
"Unauthorized access": {
"value": {
"status": "error",
"errorCode": 429,
"errorMessage": "Too many consecutive API requests, throttled."
}
}
}
}
}
}
},
"operationId": "get-publisher-reporting",
"description": "Retrieves all statistics for the account for the given date range and filtered by optional parameters.\nThe returned data includes the impressions, clicks, conversions, revenue etc. statistics for the specified date range for each day grouped by country. If optional parameters (placements, adslots, etc.) are set, only metrics matching those parameters will be returned.\n\n**Attention:** Requests to the reporting module are limited to _20 calls per hour_.",
"x-codeSamples": [
{
"lang": "PHP",
"source": "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n CURLOPT_URL => \"https://www.ayetstudios.com/api2/publisher/reporting?startDate=2020-05-05&endDate=2020-05-6&apiKey=xxxx&placements[]=5\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => \"\",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 30,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => \"GET\",\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n}\n"
},
{
"lang": "Node",
"source": "const http = require(\"https\");\n\nconst options = {\n \"method\": \"GET\",\n \"hostname\": \"ayetstudios.com\",\n \"port\": null,\n \"path\": \"/api2/publisher/reporting?startDate=2020-05-05&endDate=2020-05-6&apiKey=xxxx&placements[]=5\",\n \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n const chunks = [];\n\n res.on(\"data\", function (chunk) {\n chunks.push(chunk);\n });\n\n res.on(\"end\", function () {\n const body = Buffer.concat(chunks);\n console.log(body.toString());\n });\n});\n\nreq.end();\n"
},
{
"lang": "curl",
"source": "curl --request GET \\ --url 'https://www.ayetstudios.com/api2/publisher/reporting?startDate=2020-05-05&endDate=2020-05-6&apiKey=xxxx&placements[]=5'"
},
{
"lang": "python",
"source": "import requests\nurl = \"https://www.ayetstudios.com/api2/publisher/reporting\"\nquerystring = {\"startDate\":\"2020-05-05\",\"endDate\":\"2020-05-06\",\"placements[]\":\"5\",\"apiKey\":\"xxxx\"}\nresponse = requests.request(\"GET\", url, params=querystring)\nprint(response.text)"
}
],
"parameters": [
{
"schema": {
"type": "string",
"example": "2020-05-05"
},
"in": "query",
"name": "startDate",
"required": true,
"description": "The start date for the statistics retrieval"
},
{
"schema": {
"type": "string",
"example": "2020-05-06"
},
"in": "query",
"name": "endDate",
"description": "The end date for the statistics retrieval",
"required": true
},
{
"schema": {
"type": "array",
"items": {
"type": "integer"
},
"example": [
102,
103
]
},
"in": "query",
"name": "placements[]",
"description": "Placements to get reports for"
},
{
"schema": {
"type": "array",
"items": {
"type": "integer"
},
"example": [
525,
526
]
},
"in": "query",
"name": "adslots[]",
"description": "Adslots to get reports for"
},
{
"schema": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"adnetwork_abc",
"adnetwork_xy"
]
},
"in": "query",
"name": "adsource[]",
"description": " names of your configured partner networks (adserver customers only)"
},
{
"schema": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"offerwall"
]
},
"in": "query",
"name": "adformat[]"
},
{
"schema": {
"type": "array",
"items": {
"type": "string"
},
"example": [
"US",
"DE"
]
},
"in": "query",
"name": "countries[]"
},
{
"schema": {
"type": "string",
"example": "test_parameter"
},
"in": "query",
"name": "optional_parameter",
"description": "Filters statistics with a specific subtype (works only on Rewarded Video Adslots and if a optionalParameter is set/supplied in AyetVideoSdk.init(...) when initializing)"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "apiKey",
"description": "Your publisher api key (under account settings in dashboard)",
"required": true
}
]
},
"parameters": []
},
"/api2/publisher/placements/get_ads_txt": {
"get": {
"summary": "Publisher Get Ads Txt API",
"tags": [
"Publisher Get Ads Txt API"
],
"responses": {
"200": {
"description": "OK",
"content": {
"text/plain": {
"schema": {
"x-examples": {
"example-1": ""
}
},
"examples": {
"successful get ads txt": {
"value": "# AYET-STUDIOS\nayetstudios.com, AYETSTUDIOS, DIRECT\nayetstudios.com, PL-22, DIRECT\n"
}
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1
},
"errorCode": {
"type": "number"
},
"errorMessage": {
"type": "string",
"minLength": 1
}
},
"required": [
"status",
"errorCode",
"errorMessage"
],
"x-examples": {
"example-1": {
"status": "error",
"errorCode": 400,
"errorMessage": "parameters placementId and hash required."
}
}
},
"examples": {
"missing parameter": {
"value": {
"status": "error",
"errorCode": 400,
"errorMessage": "parameters placementId and hash required."
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1
},
"errorCode": {
"type": "number"
},
"errorMessage": {
"type": "string",
"minLength": 1
}
},
"required": [
"status",
"errorCode",
"errorMessage"
],
"x-examples": {
"example-1": {
"status": "error",
"errorCode": 401,
"errorMessage": "hash is not valid."
},
"example-2": {
"status": "error",
"errorCode": 401,
"errorMessage": "placement is not available."
}
}
},
"examples": {
"Unauthorized access": {
"value": {
"status": "error",
"errorCode": 401,
"errorMessage": "hash is not valid."
}
}
}
}
}
}
},
"operationId": "set-publisher-currency-conversion-rate",
"description": "Allows publishers to retrieve the current (raw) ads.txt file.",
"parameters": [
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "placementId",
"description": "Placement ID",
"required": true
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "hash",
"description": "hash for privacy reasons (can be retrieved in the ads txt tab in the placement settings modal)",
"required": true
}
],
"x-codeSamples": [
{
"lang": "PHP",
"source": "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n CURLOPT_URL => \"https://www.ayetstudios.com/api2/publisher/placements/get_ads_txt?placementId=22&hash=0abd827e81729b681b85022ca8dd14d1914e215c\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => \"\",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 30,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => \"GET\",\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n}\n"
},
{
"lang": "Node",
"source": "const http = require(\"https\");\n\nconst options = {\n \"method\": \"GET\",\n \"hostname\": \"ayetstudios.com\",\n \"port\": null,\n \"path\": \"/api2/publisher/placements/get_ads_txt?placementId=22&hash=0abd827e81729b681b85022ca8dd14d1914e215c\",\n \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n const chunks = [];\n\n res.on(\"data\", function (chunk) {\n chunks.push(chunk);\n });\n\n res.on(\"end\", function () {\n const body = Buffer.concat(chunks);\n console.log(body.toString());\n });\n});\n\nreq.end();\n"
},
{
"lang": "curl",
"source": "curl --request GET \\ --url 'https://www.ayetstudios.com/api2/publisher/placements/get_ads_txt?placementId=22&hash=0abd827e81729b681b85022ca8dd14d1914e215c'"
},
{
"lang": "python",
"source": "import requests\nurl = \"https://www.ayetstudios.com/api2/publisher/placements/get_ads_txt?placementId=22&hash=0abd827e81729b681b85022ca8dd14d1914e215c\"\nquerystring = {\"placementId\":\"22\",\"hash\":\"0abd827e81729b681b85022ca8dd14d1914e215c\"}\nresponse = requests.request(\"GET\", url, params=querystring)\nprint(response.text)"
}
]
},
"parameters": []
},
"/api2/publisher/placements/set_conversion_rate": {
"get": {
"summary": "Publisher Set Currency Conversion Rate API",
"tags": [
"Publisher Set Currency Conversion Rate API"
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1
},
"message": {
"type": "string",
"minLength": 1
}
},
"required": [
"status",
"message"
],
"x-examples": {
"example-1": {
"status": "success",
"message": "Currency conversion rate for Adslot # 5 successfully updated to 25000.23 ."
}
}
},
"examples": {
"successful rate change": {
"value": {
"status": "success",
"message": "Currency conversion rate for Adslot # 5 successfully updated to 25000.23 ."
}
}
}
}
}
},
"400": {
"description": "Bad Request",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1
},
"errorCode": {
"type": "number"
},
"errorMessage": {
"type": "string",
"minLength": 1
}
},
"required": [
"status",
"errorCode",
"errorMessage"
],
"x-examples": {
"example-1": {
"status": "error",
"errorCode": 400,
"errorMessage": "Please provide your new rate and adslotId."
}
}
},
"examples": {
"missing parameter": {
"value": {
"status": "error",
"errorCode": 400,
"errorMessage": "Please provide your new rate and adslotId."
}
}
}
}
}
},
"401": {
"description": "Unauthorized",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1
},
"errorCode": {
"type": "number"
},
"errorMessage": {
"type": "string",
"minLength": 1
}
},
"required": [
"status",
"errorCode",
"errorMessage"
],
"x-examples": {
"example-1": {
"status": "error",
"errorCode": 100,
"errorMessage": "Authentification failed, check your API Key."
}
}
},
"examples": {
"Unauthorized access": {
"value": {
"status": "error",
"errorCode": 100,
"errorMessage": "Authentification failed, check your API Key."
}
}
}
}
}
},
"429": {
"description": "Too Many Requests",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1
},
"errorCode": {
"type": "number"
},
"errorMessage": {
"type": "string",
"minLength": 1
}
},
"required": [
"status",
"errorCode",
"errorMessage"
],
"x-examples": {
"example-1": {
"status": "error",
"errorCode": 429,
"errorMessage": "Too many consecutive API requests, throttled."
}
}
},
"examples": {
"Too many API requests": {
"value": {
"status": "error",
"errorCode": 429,
"errorMessage": "Too many consecutive API requests, throttled."
}
}
}
}
}
}
},
"operationId": "set-publisher-currency-conversion-rate",
"description": "Allows publishers to update Currency Conversion Rate, for a specific adslot.\n\n**Attention:** Requests to the set_conversion_rate module are limited to _60 calls per hour_.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "apiKey",
"description": "Your publisher api key (under account settings in dashboard)",
"required": true
},
{
"schema": {
"type": "integer"
},
"in": "query",
"name": "adslotId",
"description": "The id of the adslot for which the currency conversion rate is to be update.",
"required": true
},
{
"schema": {
"type": "number",
"format": "double",
"example": 12.2
},
"in": "query",
"name": "rate",
"description": "New currency conversion rate.",
"required": true
}
],
"x-codeSamples": [
{
"lang": "PHP",
"source": "<?php\n\n$curl = curl_init();\n\ncurl_setopt_array($curl, [\n CURLOPT_URL => \"https://www.ayetstudios.com/api2/publisher/placements/set_conversion_rate?apiKey=xxx&adslotId=xx&rate=25000\",\n CURLOPT_RETURNTRANSFER => true,\n CURLOPT_ENCODING => \"\",\n CURLOPT_MAXREDIRS => 10,\n CURLOPT_TIMEOUT => 30,\n CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,\n CURLOPT_CUSTOMREQUEST => \"GET\",\n]);\n\n$response = curl_exec($curl);\n$err = curl_error($curl);\n\ncurl_close($curl);\n\nif ($err) {\n echo \"cURL Error #:\" . $err;\n} else {\n echo $response;\n}\n"
},
{
"lang": "Node",
"source": "const http = require(\"https\");\n\nconst options = {\n \"method\": \"GET\",\n \"hostname\": \"ayetstudios.com\",\n \"port\": null,\n \"path\": \"/api2/publisher/placements/set_conversion_rate?apiKey=xxx&adslotId=xx&rate=25000\",\n \"headers\": {}\n};\n\nconst req = http.request(options, function (res) {\n const chunks = [];\n\n res.on(\"data\", function (chunk) {\n chunks.push(chunk);\n });\n\n res.on(\"end\", function () {\n const body = Buffer.concat(chunks);\n console.log(body.toString());\n });\n});\n\nreq.end();\n"
},
{
"lang": "curl",
"source": "curl --request GET \\ --url 'https://www.ayetstudios.com/api2/publisher/placements/set_conversion_rate?apiKey=xxx&adslotId=xx&rate=25000'"
},
{
"lang": "python",
"source": "import requests\nurl = \"https://www.ayetstudios.com/api2/publisher/placements/set_conversion_rate?apiKey=xxx&adslotId=xx&rate=25000\"\nquerystring = {\"rate\":\"25000\",\"adslotId\":\"5\",\"apiKey\":\"xxxx\"}\nresponse = requests.request(\"GET\", url, params=querystring)\nprint(response.text)"
}
]
},
"parameters": []
},
"/callback": {
"get": {
"summary": "Conversions & Postbacks",
"tags": [
"Callbacks/Postbacks"
],
"responses": {
"200": {
"description": "OK"
}
},
"servers": [
{
"url": "https://your-server.com",
"description": "Your server/website which contains the callback file"
}
],
"operationId": "callback",
"description": "Our postbacks always contain revenue\\_usd (your revenue in USD), placement\\_identifier (the identifier of the placement the conversion belongs to) as well as adslot\\_id (the id of the adslot responsible for the conversion). Also you have access to any parameter you passed to the original tracking URL clicked by your user.\n\n##",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "transaction_id",
"description": "Unique transaction id - use for duplicate checks. If chargeback it's prepend with r-"
},
{
"schema": {
"type": "string"
},
"in": "header",
"name": "X-Ayetstudios-Security-Hash",
"description": "HMAC Security Hash"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "payout_usd",
"description": "The actual conversion payout in USD. If chargeback value is negative."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "placement_identifier",
"description": "The placement_identifier for which the conversion occured"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "sub_id",
"description": "The value of the sub_id parameter appended to the original tracking link"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "external_identifier",
"description": "Offerwall only: The external_identifier parameter passed when requesting the offers"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "user_id",
"description": "Our internal id for this offerwall user"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "adslot_id",
"description": "The id of the adslot for which the conversion occured"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "ip",
"description": "Converting device's IP address if known, 0.0.0.0 otherwise"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "offer_id",
"description": "Offer ID of the converting offer"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "offer_name",
"description": "Name / title of the converting offer"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "device_uuid",
"description": "ayeT-Studios internal device identificator"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "device_make",
"description": "Device manufacturer"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "device_model",
"description": "Device model"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "advertising_id",
"description": "Device advertising id (GAID/IDFA) if known, otherwise empty"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "sha1_android_id",
"description": "Device sha1 hashed android id if known, otherwise empty"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "sha1_imei",
"description": "Device sha1 hashed imei if known, otherwise empty"
},
{
"schema": {
"type": "integer",
"minimum": 0,
"maximum": 1
},
"in": "query",
"name": "is_chargeback",
"description": "Values 0 or 1. Indicator if the callback is conversion or chargeback. If set to 0 then it's conversion else it's chargeback."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "chargeback_reason",
"description": "Reason why chargeback created. Only available if is_chargeback set to 1."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "chargeback_date",
"description": "Date of chargeback creation. Only available if is_chargeback set to 1."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "currency_amount",
"description": "Offerwall only: The amount of currency the user earned (taken from your offerwall currency configuration). If chargeback value is negative."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "task_name",
"description": "CPE campaigns only, shows individual task name for that conversion."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "task_uuid",
"description": "CPE campaigns only, shows persistent task UUID for that conversion."
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "currency_identifier",
"description": "Shows virtual currency name as set in adslot."
},
{
"schema": {
"type": "number",
"format": "double"
},
"in": "query",
"name": "currency_conversion_rate",
"description": "Shows currency conversion rate used to calculate user currency for the given conversion."
}
]
}
},
"/offers/cpe_status/{adslot}": {
"parameters": [
{
"schema": {
"type": "string"
},
"name": "adslot",
"in": "path",
"required": true
}
],
"get": {
"summary": "CPE Offer Status",
"tags": [
"Static API"
],
"responses": {
"200": {
"description": "OK",
"content": {
"application/json": {
"schema": {
"description": "",
"type": "object",
"x-examples": {
"example-1": {
"status": "success",
"num_offers": 3,
"offers": {
"218819": {
"name": "Wish - Shopping Made Fun",
"click_id": "785efc9772d5-c218819-a7dcaed2d895",
"expiration_time": 1623330344,
"created": "2021-05-11 13:05:44",
"pub_payout": 0.73,
"remaining_payout_usd": 0.281,
"tasks": [
{
"name": "Task 1",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a215e",
"status": "completed",
"num_conversions": 1,
"pub_payout": 0.168,
"conversion_limit": 1,
"single_conversion_per_day": false,
"i18n": {
"de": "Aufgabe 1",
"es": "Tarea 1",
"fr": "Tâche 1",
"pt": "Tarefa 1",
"ru": "Задача 1",
"ja": "アウフガベ・アイン",
"ko": "작업 1",
"th": "เอาฟกาเบ ไอน์ส",
"zh": "奧夫加貝·艾因斯",
"id": "Tugas satu"
}
},
{
"name": "Task 2",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a21djk",
"status": "available",
"num_conversions": 1,
"pub_payout": 0.281,
"conversion_limit": 2,
"single_conversion_per_day": false,
"i18n": {
"de": "Aufgabe 2",
"es": "Tarea 2",
"fr": "Tâche 2",
"pt": "Tarefa 2",
"ru": "Задача 2",
"ja": "アウフガベ ツヴァイ",
"ko": "아우프가베 즈바이",
"th": "เอาฟกาเบ ซไว",
"zh": "奧夫加貝·茨維",
"id": "Tugas kedua"
}
}
]
},
"218872": {
"name": "Play Games and Earn ",
"click_id": "2510e039d5fe-c218872-f11f0318ee70",
"expiration_time": 1623395242,
"created": "2021-05-12 07:07:22",
"pub_payout": 0.381,
"remaining_payout_usd": 0.281,
"tasks": [
{
"name": "Task 1 ",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a215e",
"status": "completed",
"num_conversions": 1,
"pub_payout": 0.1,
"conversion_limit": 1,
"single_conversion_per_day": false,
"i18n": {
"de": "Aufgabe 1",
"es": "Tarea 1",
"fr": "Tâche 1",
"pt": "Tarefa 1",
"ru": "Задача 1",
"ja": "アウフガベ・アイン",
"ko": "작업 1",
"th": "เอาฟกาเบ ไอน์ส",
"zh": "奧夫加貝·艾因斯",
"id": "Tugas satu"
}
},
{
"name": "Task 2",
"uuid": "dff19bjjh-3667-31fh-ac67-7523455a21s",
"status": "available",
"num_conversions": 0,
"pub_payout": 0.281,
"conversion_limit": 1,
"single_conversion_per_day": false,
"i18n": {
"de": "Aufgabe 2",
"es": "Tarea 2",
"fr": "Tâche 2",
"pt": "Tarefa 2",
"ru": "Задача 2",
"ja": "アウフガベ ツヴァイ",
"ko": "아우프가베 즈바이",
"th": "เอาฟกาเบ ซไว",
"zh": "奧夫加貝·茨維",
"id": "Tugas kedua"
}
}
]
}
}
}
},
"properties": {
"status": {
"type": "string",
"minLength": 1
},
"num_offers": {
"type": "number"
},
"offers": {
"type": "object",
"required": [
"218819",
"218872"
],
"properties": {
"218819": {
"type": "object",
"required": [
"name",
"click_id",
"expiration_time",
"created",
"pub_payout",
"remaining_payout_usd",
"tasks"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"click_id": {
"type": "string",
"minLength": 1
},
"expiration_time": {
"type": "number"
},
"created": {
"type": "string",
"minLength": 1
},
"pub_payout": {
"type": "number"
},
"remaining_payout_usd": {
"type": "number"
},
"tasks": {
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Name of the task"
},
"uuid": {
"type": "string",
"minLength": 1,
"description": "Persistent UUID for the task"
},
"status": {
"type": "string",
"minLength": 1,
"description": "Status of the task (\"pending\", \"completed\")"
},
"num_conversions": {
"type": "number",
"description": "Number of conversions for the task"
},
"pub_payout": {
"type": "number",
"description": "Payout for the task"
},
"conversion_limit": {
"type": "number",
"description": "Conversion limit for the task"
},
"single_conversion_per_day": {
"type": "boolean",
"description": "If true, only one conversion per day is allowed"
},
"i18n": {
"type": "object",
"properties": {
"de": {
"type": "string",
"minLength": 1
},
"es": {
"type": "string",
"minLength": 1
},
"fr": {
"type": "string",
"minLength": 1
},
"pt": {
"type": "string",
"minLength": 1
},
"ru": {
"type": "string",
"minLength": 1
},
"ja": {
"type": "string",
"minLength": 1
},
"ko": {
"type": "string",
"minLength": 1
},
"th": {
"type": "string",
"minLength": 1
},
"zh": {
"type": "string",
"minLength": 1
},
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"de",
"es",
"fr",
"pt",
"ru",
"ja",
"ko",
"th",
"zh",
"id"
]
}
},
"required": [
"name",
"uuid",
"status",
"num_conversions",
"pub_payout",
"conversion_limit",
"single_conversion_per_day"
]
}
}
}
},
"218872": {
"type": "object",
"required": [
"name",
"click_id",
"expiration_time",
"created",
"pub_payout",
"remaining_payout_usd",
"tasks"
],
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"click_id": {
"type": "string",
"minLength": 1
},
"expiration_time": {
"type": "number"
},
"created": {
"type": "string",
"minLength": 1
},
"pub_payout": {
"type": "number"
},
"remaining_payout_usd": {
"type": "number"
},
"tasks": {
"type": "array",
"uniqueItems": true,
"minItems": 1,
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1
},
"uuid": {
"type": "string",
"minLength": 1
},
"status": {
"type": "string",
"minLength": 1
},
"num_conversions": {
"type": "number"
},
"pub_payout": {
"type": "number"
},
"conversion_limit": {
"type": "number"
},
"single_conversion_per_day": {
"type": "boolean"
},
"i18n": {
"type": "object",
"properties": {
"de": {
"type": "string",
"minLength": 1
},
"es": {
"type": "string",
"minLength": 1
},
"fr": {
"type": "string",
"minLength": 1
},
"pt": {
"type": "string",
"minLength": 1
},
"ru": {
"type": "string",
"minLength": 1
},
"ja": {
"type": "string",
"minLength": 1
},
"ko": {
"type": "string",
"minLength": 1
},
"th": {
"type": "string",
"minLength": 1
},
"zh": {
"type": "string",
"minLength": 1
},
"id": {
"type": "string",
"minLength": 1
}
},
"required": [
"de",
"es",
"fr",
"pt",
"ru",
"ja",
"ko",
"th",
"zh",
"id"
]
}
},
"required": [
"name",
"uuid",
"status",
"num_conversions",
"pub_payout",
"conversion_limit",
"single_conversion_per_day"
]
}
}
}
}
}
}
},
"required": [
"status",
"num_offers",
"offers"
]
},
"examples": {
"example-1": {
"value": {
"status": "success",
"num_offers": 2,
"offers": {
"218819": {
"name": "Wish - Shopping Made Fun",
"click_id": "785efc9772d5-c218819-a7dcaed2d895",
"expiration_time": 1623330344,
"created": "2021-05-11 13:05:44",
"pub_payout": 0.73,
"remaining_payout_usd": 0.281,
"tasks": [
{
"name": "Task 1",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a215e",
"status": "completed",
"num_conversions": 1,
"pub_payout": 0.168,
"conversion_limit": 1,
"single_conversion_per_day": false,
"i18n": {
"de": "Aufgabe 1",
"es": "Tarea 1",
"fr": "Tâche 1",
"pt": "Tarefa 1",
"ru": "Задача 1",
"ja": "アウフガベ・アイン",
"ko": "작업 1",
"th": "เอาฟกาเบ ไอน์ส",
"zh": "奧夫加貝·艾因斯",
"id": "Tugas satu"
}
},
{
"name": "Task 2",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a934b",
"status": "available",
"num_conversions": 1,
"pub_payout": 0.281,
"conversion_limit": 2,
"single_conversion_per_day": false,
"i18n": {
"de": "Aufgabe 2",
"es": "Tarea 2",
"fr": "Tâche 2",
"pt": "Tarefa 2",
"ru": "Задача 2",
"ja": "アウフガベ ツヴァイ",
"ko": "아우프가베 즈바이",
"th": "เอาฟกาเบ ซไว",
"zh": "奧夫加貝·茨維",
"id": "Tugas kedua"
}
}
]
},
"218872": {
"name": "Play Games and Earn ",
"click_id": "2510e039d5fe-c218872-f11f0318ee70",
"expiration_time": 1623395242,
"created": "2021-05-12 07:07:22",
"pub_payout": 0.381,
"remaining_payout_usd": 0.281,
"tasks": [
{
"name": "Task 1 ",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a915c",
"status": "completed",
"num_conversions": 1,
"pub_payout": 0.1,
"conversion_limit": 1,
"single_conversion_per_day": false,
"i18n": {
"de": "Aufgabe 1",
"es": "Tarea 1",
"fr": "Tâche 1",
"pt": "Tarefa 1",
"ru": "Задача 1",
"ja": "アウフガベ・アイン",
"ko": "작업 1",
"th": "เอาฟกาเบ ไอน์ส",
"zh": "奧夫加貝·艾因斯",
"id": "Tugas satu"
}
},
{
"name": "Task 2",
"uuid": "dff19bdd-3558-31f1-ac09-9923kk5a919d",
"status": "available",
"num_conversions": 0,
"pub_payout": 0.281,
"conversion_limit": 1,
"single_conversion_per_day": false,
"i18n": {
"de": "Aufgabe 2",
"es": "Tarea 2",
"fr": "Tâche 2",
"pt": "Tarefa 2",
"ru": "Задача 2",
"ja": "アウフガベ ツヴァイ",
"ko": "아우프가베 즈바이",
"th": "เอาฟกาเบ ซไว",
"zh": "奧夫加貝·茨維",
"id": "Tugas kedua"
}
}
]
}
}
}
}
}
}
}
}
},
"operationId": "get-offers-cpe_status-adslot",
"description": "Retrieves cpe offers reward status information for the adslot by the given external identifier.\nThe returned data includes the offer id, click id, publisher payment, shows completed and available task etc.",
"parameters": [
{
"schema": {
"type": "string"
},
"in": "query",
"name": "apiKey",
"required": true,
"description": "static api key that is available under adslot details in your dashboard"
},
{
"schema": {
"type": "string"
},
"in": "query",
"name": "external_identifier",
"required": true
}
]
}
}
},
"components": {
"schemas": {
"Offer": {
"description": "",
"type": "object",
"x-examples": {
"example-cpe-campaign": {
"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 654 coin\"s by completing the following task:",
"tags": {
"tab": "tasks"
},
"icon_large": "",
"video_url": "",
"video_url_vp9": "",
"platform": "web",
"platforms": [
"android",
"ios"
],
"devices": [
"phone",
"tablet"
],
"category": "incent",
"conversion_type": "cpe",
"conversion_time": 300,
"conversion_instructions": "Genieße dieses großartige Spiel und erhalte mehrere Belohnungen Genießen Sie dieses großartige Spiel</b> und erhalten Sie mehrere Belohnungen</b> : </div> {multiple_rewards} </div>* Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum </div>** Anmerkung 2</div></div></div>",
"conversion_instructions_short": "Genieße dieses großartige Spiel und erhalte mehrere Belohnungen",
"conversion_instructions_long": " Genießen Sie dieses großartige Spiel</b> und erhalten Sie mehrere Belohnungen</b> : </div> {multiple_rewards} </div>* Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum Text 1 Lorem Ipsum </div>** Anmerkung 2</div></div></div>",
"tracking_link": "https://www.ayetstudios.com/s2s/go/|custom_campaign|engageme|f1abb1ef06468a66/61/100000083/oyNmjWyGMh63CCK-ByaTHvdV5YFCoLD_BZm6z1VLRxYrre783WCyql5fgNzFUiz6?pub_id=P-1&sub_id_int=P-3&adslot_id=3",
"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,
"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-7523455a215e",
"payout": 52,
"multi_limit": "1",
"currency": "coin\"s",
"completed": false
},
{
"name": "Complete Level 5",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a215e",
"payout": 78,
"multi_limit": "1",
"currency": "coin\"s",
"completed": false
},
{
"name": "Stay Engaged!",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a215e",
"payout": 52,
"multi_limit": "1",
"currency": "coin\"s",
"completed": false
},
{
"name": "Team Up",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a215e",
"payout": 262,
"multi_limit": "1",
"currency": "coin\"s",
"completed": false
},
{
"name": "Regular Player",
"uuid": "dff19bdd-3667-31f1-ac97-7523455a215e",
"payout": 21,
"multi_limit": "10",
"currency": "coin\"s",
"completed": false,
"percentage": 0
}
],
"cpe_total_rewards_currency_name": "coin\"s",
"cpe_progressbar_percentage": "5",
"payout": 654,
"payout_base": 0,
"payout_name": "654 coin\"s",
"button_text": "+654.0"
},
"example-android-cpi-campaign": {
"id": 4,
"store_id": "com.turbo.stars",
"landing_page": "https://play.google.com/store/apps/details?id=com.turbo.stars",
"icon": "https://lh3.googleusercontent.com/EtAYKSp_Ncz-vqaRH6RMWVTwVagwsZGOdelo6qztOwJTEdKcLLvYoWiwyWUj6KBp_ss=w140",
"name": "Turbo Stars",
"description": "Earn 36 coin\"s by completing the following task:",
"tags": {
"tab": "apps"
},
"icon_large": "",
"video_url": "",
"video_url_vp9": "",
"platform": "android",
"platforms": [
"android"
],
"devices": [
"phone",
"tablet"
],
"category": "incent",
"conversion_type": "cpi",
"conversion_time": 300,
"conversion_instructions": "Installiere, öffne und nutze diese App für einige Minuten. Installiere die App</li>Öffne die App</li>Benutze die App für ein paar Minuten</li></ol></b></div>--Wenn du die App zuvor schon einmal installiert hattest, hast du keinen Anspruch auf eine Belohnung.</div>",
"conversion_instructions_short": "Installiere, öffne und nutze diese App für einige Minuten.",
"conversion_instructions_long": "Installiere die App</li>Öffne die App</li>Benutze die App für ein paar Minuten</li></ol></b></div>--Wenn du die App zuvor schon einmal installiert hattest, hast du keinen Anspruch auf eine Belohnung.</div>",
"tracking_link": "https://www.ayetstudios.com/s2s/go/com.turbo.stars/4/100000083/oyNmjWyGMh63CCK-ByaTHvdV5YFCoLD_BZm6z1VLRxYrre783WCyql5fgNzFUiz6?pub_id=P-1&sub_id_int=P-3&adslot_id=3",
"created": "2019-12-02 17:48:01",
"start_date": "2019-12-02 00:00:00",
"end_date": "2024-12-02 00:00:00",
"offer_owner": 697607,
"score": 11.108555261599053,
"require_reservation": true,
"min_android_version": "5.0",
"min_ios_version": null,
"max_android_version": "6.0",
"max_ios_version": null,
"priority": 0,
"payout_base": 0,
"payout": 36,
"payout_name": "36 coin\"s",
"button_text": "+36.0"
}
},
"properties": {
"id": {
"type": "number"
},
"store_id": {
"type": "string",
"description": "Google Play Store ID, iTunes Store ID"
},
"landing_page": {
"type": "string",
"minLength": 1,
"description": "Preview URL"
},
"icon": {
"type": "string",
"minLength": 1,
"description": "Offer Icon"
},
"name": {
"type": "string",
"minLength": 1,
"description": "Offer Name"
},
"description": {
"type": "string",
"description": "Offer Description"
},
"tags": {
"type": "object",
"required": [
"tab"
],
"properties": {
"tab": {
"type": "string",
"minLength": 1
}
}
},
"icon_large": {
"type": "string",
"description": "an optional teaser icon, usually 720p"
},
"video_url": {
"type": "string",
"description": "optional teaser video, max. 15s, h264, 720p @ 1000kbps"
},
"video_url_vp9": {
"type": "string",
"description": "optional higher quality variant of the teaser video, max. 15s, vp9, 720p @ 750kbps"
},
"platform": {
"type": "string",
"minLength": 1,
"deprecated": true
},
"platforms": {
"type": "array",
"items": {
"type": "string"
}
},
"devices": {
"type": "array",
"items": {
"type": "string"
}
},
"category": {
"type": "string",
"minLength": 1
},
"conversion_type": {
"type": "string",
"minLength": 1,
"enum": [
"cpi",
"cpa",
"cpl",
"cpe",
"cpv",
"cpc"
]
},
"conversion_time": {
"type": "number"
},
"conversion_instructions": {
"type": "string",
"minLength": 1
},
"conversion_instructions_short": {
"type": "string",
"minLength": 1
},
"conversion_instructions_long": {
"type": "string",
"minLength": 1
},
"tracking_link": {
"type": "string",
"minLength": 1
},
"created": {
"type": "string",
"minLength": 1
},
"start_date": {
"type": "string",
"minLength": 1
},
"end_date": {
"type": "string",
"minLength": 1
},
"offer_owner": {
"type": "number"
},
"score": {
"type": "number",
"description": "Score to rank offers based on"
},
"require_reservation": {
"type": "boolean"
},
"min_android_version": {
"nullable": true,
"type": "string",
"description": "Minimum android version of client"
},
"min_ios_version": {
"nullable": true,
"type": "string",
"description": "Minimum ios version of client"
},
"max_android_version": {
"nullable": true,
"type": "string",
"description": "Maximum android version of client"
},
"max_ios_version": {
"nullable": true,
"type": "string",
"description": "Maximum ios version of client"
},
"priority": {
"type": "number"
},
"cpe_instructions": {
"type": "array",
"uniqueItems": true,
"minItems": 1,
"description": "Present if cpe campaign",
"items": {
"type": "object",
"properties": {
"name": {
"type": "string",
"minLength": 1,
"description": "Name of the cpe task"
},
"uuid": {
"type": "string",
"minLength": 1,
"description": "Persistent UUID of the task"
},
"payout": {
"type": "number",
"description": "Payout of the cpe task"
},
"multi_limit": {
"type": "string",
"minLength": 1,
"description": "Number of times an unique user can complete this task"
},
"currency": {
"type": "string",
"minLength": 1,
"description": "Offerwall Currency Name"
},
"completed": {
"type": "boolean",
"description": "True if the user has already completed this task"
},
"percentage": {
"type": "number",
"description": "Percentage of conversions the user completed for this task"
}
},
"required": [
"name",
"uuid",
"payout",
"multi_limit",
"currency",
"completed"
]
}
},
"cpe_total_rewards_currency_name": {
"type": "string",
"minLength": 1,
"description": "Offewall Currency Name"
},
"cpe_progressbar_percentage": {
"type": "string",
"minLength": 1,
"description": "Progress of all cpe events of this campaign for this user"
},
"payout": {
"type": "number",
"description": "Payout in virtual currency"
},
"payout_base": {
"type": "number",
"description": "greater than 0 if currency sale is active"
},
"payout_name": {
"type": "string",
"minLength": 1,
"description": "Payout with currency name"
},
"button_text": {
"type": "string",
"minLength": 1,
"description": "Offer start button text"
}
},
"required": [
"id",
"landing_page",
"icon",
"name",
"description",
"tags",
"platform",
"platforms",
"devices",
"category",
"conversion_type",
"conversion_time",
"conversion_instructions",
"conversion_instructions_short",
"conversion_instructions_long",
"tracking_link",
"created",
"start_date",
"end_date",
"offer_owner",
"score",
"require_reservation",
"priority"
]
},
"Error": {
"description": "",
"type": "object",
"properties": {
"status": {
"type": "string",
"minLength": 1,
"enum": [
"success",
"error"
]
},
"error": {
"type": "string",
"minLength": 1,
"description": "Human readable error message"
}
},
"required": [
"status",
"error"
]
}
},
"parameters": {},
"securitySchemes": {}
},
"x-extension-2": null
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment