You can create and manage API Keys via https://dashboard.mybid.io/key-gateways
Each request returns a response in the format:
{
"code": int,
"message": text,
"data": json
}
code - Status code of the responsemessage - Error messagedata - Data returned in response to the request200 - Request completed successfully400 - Validation error401 - Authorization issues500 - Internal errorThe following rules apply to data from /gateway/v1/api/application/* and to request fields that reference those dictionaries (campaign updates, change-task creation, and similar).
value vs labelDo not use label as an identifier. A dictionary row may look like this:
{
"value": "mobile",
"label": "Mobile devices"
}
Use only value (here: "mobile") in API requests and targeting.
From GET /gateway/v1/api/application/usage-types, each item may include several fields. When you send usage_type or usage_type_black, pass only the string from type:
{
"type": "mainstream",
"label": "Mainstream"
}
Example in a request: "usage_type": ["mainstream"] — not the label text.
Versions may be any values you need; each version must be a JSON string (for example a decimal like "120.5"). Example whitelist shape:
{
"browser_families_versions_whitelist": {
"chrome": ["120.5", "131", "142.25"]
}
}
GET /gateway/v1/api/current-balanceOnly the API key needs to be passed in the request.
{
"code": int,
"message": text,
"data": {
"current_balance": float
}
}
current_balance - current balance
curl --location 'http://api.mybid.io/gateway/v1/api/current-balance' \
--header 'X-Auth-Token: {{api_key}}'
{
"code": 401,
"message": "api key is not valid",
"data": null
}
curl --location 'http://api.mybid.io/gateway/v1/api/current-balance' \ --header 'X-Auth-Token: *****MRCP'
{
"code": 200,
"message": "",
"data": {
"current_balance": 6849.651174751568
}
}
GET /gateway/v1/api/campaignsOnly the API key needs to be passed in the request.
{
"code": int,
"message": text,
"data": [{
"id": int,
"name": text,
"adtype":text,
"budget": float,
"status": text,
"tracking_url":text,
"daily_budget": float,
"Total_spend": float,
"daily_spend": float,
"bid": float
}]
}
id - campaign IDname - campaign nameadtype - campaign typebudget - campaign budgetstatus - campaign statustracking_url - URL to which users are redirecteddaily_budget - campaign daily budgetTotal_spend - campaign total spenddaily_spend - campaign daily spendbid - campaign bidcurl --location 'http://api.mybid.io/gateway/v1/api/campaigns' \ --header 'X-Auth-Token: *****MRCP'
{
"code": 200,
"message": "",
"data": [{
"id": 502,
"name": "test_inpage_adv_direct",
"adtype": "inpage",
"budget": 0,
"status": "active",
"tracking_url": "https://mybid.io/campaigns/new",
"daily_budget": 0,
"total_spend": 86.03763403306333,
"daily_spend": 0,
"bid": 0.00015
},
{
"id": 509,
"name": "test_c_mng_dir",
"adtype":"push",
"budget": 0,
"status": "paused",
"tracking_url": "https://mybid.io/campaigns/new",
"daily_budget": 0,
"total_spend": 111.12182032043002,
"daily_spend": 0,
"bid": 0.001
},
{
"id": 510,
"name": "test_inpage_adv_direct1",
"adtype": "inpage",
"budget": 0,
"status": "paused",
"tracking_url": "https://mybid.io/campaigns/new",
"daily_budget": 0,
"total_spend": 185.07603906435966,
"daily_spend": 0,
"bid": 0.001
}]
}
GET /gateway/v1/api/campaign/status/:idYou need to pass the API key and specify the campaign ID in the request parameters to get the campaign status.
{
"code": int,
"message": text,
"data": {
"id": int,
"status": text
}
}
id - campaign IDstatus - campaign statuscurl --location 'http://api.mybid.io/gateway/v1/api/campaign/status/382' \ --header 'X-Auth-Token: *****MRCP'
{
"code": 200,
"message": "",
"data": {
"id": 382,
"status": "active"
}
}
curl --location 'http://api.mybid.io/gateway/v1/api/campaign/status/3820000' \ --header 'X-Auth-Token: *****MRCP'
{
"code": 204,
"message": "content not found",
"data": null
}
GET /gateway/v1/api/campaign/:idYou need to pass the API key and specify the campaign ID in the request parameters to get the campaign data.
{
"code": int,
"message": text,
"data": {
"id": int,
"name": text,
"adtype" : text,
"budget": float,
"status": text,
"tracking_url": text,
"os_type_familie_version_whitelist": {"os_type": {"family": [1,2,3 ("version")]}},
"os_type_familie_version_blacklist": {"os_type": {"family": [1,2,3 ("version")]}},
"capping_settings": [text],
"capping_unique_settings": string,
"daily_budget": float,
"bid": float,
"bid_by_source": {text: float, text: float}
"black_list": [text],
"white_list":[text],
"smart_purchase": boolean
}
}
id - campaign IDname - campaign nameadtype - campaign ad formatbudget - campaign budgetstatus - campaign statustracking_url - tracking URLos_type_familie_version_whitelist - whitelist for OS type, family, and version filteringos_type_familie_version_blacklist - blacklist for OS type, family, and version filteringcapping_settings - capping settingscapping_unique_settings - type of user uniqueness determination (“ip“ or “ip+ua“)daily_budget - daily campaign budgetbid - campaign bidbid_by_source - campaign bid by source listblack_list - blacklist sourcewhite_list - whitelist sourcesmart_purchase - SmartCPC traffic purchase. Use only for adtype: popunder, inpagecurl --location 'http://api.mybid.io/gateway/v1/api/campaign/15964' \ --header 'X-Auth-Token: *****MRCP'
{
"code": 200,
"message": "",
"data": {
"id": 15964,
"name": "test_push",
"adtype":"push",
"budget": 0,
"status": "paused",
"tracking_url": "https://mybid.io/campaigns",
"os_type_familie_version_whitelist": {
"mobile": {
"android": [
3,
5,
7
]
}
},
"os_type_familie_version_blacklist": {
},
"capping_settings": [
{
"type": "impression",
"limit": 1,
"duration": 2
},
{
"type": "click",
"limit": 1,
"duration": 2
}
],
"capping_unique_settings": "ip+ua",
"daily_budget": 95.07,
"bid": 0.4,
"bid_by_source": {
"123": 0.1,
"124": 0.1
},
"black_list": [ "11", "12", "14", "15”, "16"],
"white_list": [“1”, “2”]
"smart_purchase": false
}
}
curl --location 'http://api.mybid.io/gateway/v1/api/campaign/15964000' \ --header 'X-Auth-Token: *****MRCP'
{
"code": 204,
"message": "content not found",
"data": null
}
POST /gateway/v1/api/statisticPass the required fields in the request body:
{
"campaigns": [int],
"ad_types": [text],
"countries": [text],
"os_types": [text],
"os_families": [text],
"date_from": "YYYY-MM-DD",
"date_to": "YYYY-MM-DD",
"group_by": text
}
campaigns - list of campaign IDsad_types - list of ad types ("push", "native", "popunder", "inpage", "banner", "video")countries - list of countries (ISO 3166-1 alpha-2)os_types - list of operating system types ("computer", "tablet", "mobile", "console", "wearable", "smarttv") limitation with group_by (see the last point)os_families - list of operating system families ("windowsphone", "windows", "macosx", "ios", "android", "blackberry", "chromeos", "kindle", "webos", "playstation", "xbox", "nintendo", "linux") limitation with group_by (see the last point) date_from - start date of the statistic (format: YYYY-MM-DD)date_to - end date of the statistic (format: YYYY-MM-DD)group_by - how the data should be grouped (options: "campaign", "os", "country", "day", "source", "spot", "creative")group_by with os_types or os_families filter - how the data should be grouped (options: "os", "spot", "creative"){
"code": 200,
"message": "ok",
"data": {
"goals": [],
"stats": [
{
"campaign_id": int,
"clicks": int,
"conversions": int,
"cr": float,
"ctr": float,
"cpl": float,// deprecated
"impressions": int,
"platform": text,
"revenue": float,
"spent": float,
"cv": float,
"roi": float,
"ecpa": float
"goals": [
{
"id": int,
"conversions": float,
"ecpa": float,
"cr": float,
"cv": float,
"revenue": float,
"roi": float
}
]
}
],
"summary": {
"clicks": int,
"conversions": int,
"cr": float,
"ctr": float,
"cpl": float,// deprecated
"impressions": int,
"revenue": float,
"spent": float,
"cv": float,
"roi": float,
"ecpa": float
}
}
}
stats - List of statistics based on the group_by parametersummary - Summary statistics of the entire responsecurl --location --request POST 'http://api.mybid.io/gateway/v1/api/statistic' \
--header 'X-Auth-Token: *****MRCP' \
--header 'Content-Type: application/json' \
--data '{
"campaigns": [480],
"ad_types": ["push", "inpage"],
"countries": ["LK", "US"],
"os_types": ["mobile", "computer"],
"os_families": ["android", "ios"],
"date_from": "2024-09-01",
"date_to": "2024-09-20",
"group_by": "country"
}'
{
"code": 200,
"message": "ok",
"data": {
"goals": [],
"stats": [
{
"campaign_id": 480,
"clicks": 1508488,
"conversions": 2494,
"cr": 0.165,
"ctr": 4.42,
"cpl": 0.028,
"impressions": 34125286,
"platform": "ios",
"revenue": 0,
"spent": 3207.648458369033,
"cv": 0,
"roi": -100,
"goals": [
{
"id": 1,
"conversions": 0.02,
"ecpa": 0.3,
"cr": 0.001,
"cv": 0.01,
"revenue": 0.001,
"roi": 0.5
}
]
}
],
"summary": {
"clicks": 1508488,
"conversions": 2494,
"cr": 0.165,
"ctr": 4.42,
"cpl": 0.028,
"impressions": 34125286,
"revenue": 0,
"spent": 3207.648458369033,
"cv": 1,
"roi": -99
}
}
}
curl --location --request POST 'http://api.mybid.io/gateway/v1/api/statistic' \
--header 'X-Auth-Token: *****MRCP' \
--header 'Content-Type: application/json' \
--data '{
"campaigns": [480, 490],
"ad_types": ["push", "inpage"],
"countries": ["LK", "US"],
"os_types": ["mobile" , "computer"],
"os_families": ["android", "ios"],
"date_from": "2024-09-01",
"date_to": "2024-09-20",
"output_format": "csv",
"group_by": "country"
}'
{
"code": 200,
"message": "ok",
"data": {
"filename": "assets/uploads/by_country_from_2024-09-01_to_2024-09-19_report_time_2024-09-23T07:37:38Z.csv"
}
}
PUT /gateway/v1/api/campaign/statusYou need to pass the API key and:
{
"id": int,
"status": text
}
id - campaign ID for which you need to change the statusstatus - campaign status to set (only 'active' and 'paused' statuses can be set){
"code": int,
"message": text,
"data": null
}
curl --location --request PUT 'http://api.mybid.io/gateway/v1/api/campaign/status' \
--header 'X-Auth-Token: *****MRCP' \
--header 'Content-Type: application/json' \
--data '{
"id": 382,
"status": "active"
}'
{
"code": 200,
"message": "Ok",
"data": null
}
curl --location --request PUT 'http://api.mybid.io/gateway/v1/api/campaign/status' \
--header 'X-Auth-Token: *****MRCP' \
--header 'Content-Type: application/json' \
--data '{
"id": 382,
"status": "blabla"
}'
{
"code": 400,
"message": "status is not valid",
"data": null
}
curl --location --request PUT 'http://api.mybid.io/gateway/v1/api/campaign/status' \
--header 'X-Auth-Token: *****MRCP' \
--header 'Content-Type: application/json' \
--data '{
"id": 382,
"status": "blabla"
}'
{
"code": 500,
"message": "try again later",
"data": null
}
PUT /gateway/v1/api/campaign/:idYou need to pass the API key, specify the campaign ID in the request parameters, and pass in the Body:
{
"bid": float,
"black_list": [text],
"white_list": [text],
"bid_by_source": {text: float, text: float},
"smart_purchase": boolean
}
bid - campaign bidblack_list - blacklist setting (only numbers, "-". Example: 132, 543-123)white_list - whitelist setting (only numbers, "-". Example: 823, 452-33)bid_by_source - bid by source settingsmart_purchase - SmartCPC traffic purchase. Use only for adtype: popunder, inpage{
"code": int,
"message": text,
"data": null
}
curl --location --request PUT 'http://api.mybid.io/gateway/v1/api/campaign/382' \
--header 'X-Auth-Token: *****MRCP' \
--header 'Content-Type: application/json' \
--data '{
"bid": 0.1,
"smart_purchase": boolean
}'
{
"code": 200,
"message": "Ok",
"data": null
}
curl --location --request PUT 'http://api.mybid.io/gateway/v1/api/campaign/15964' \
--header 'X-Auth-Token: *****MRCP' \
--header 'Content-Type: application/json' \
--data '{
"bid_by_source": {
"2": 0.1,
"3": 0.2,
"smart_purchase": true
}
}'
{
"code": 200,
"message": "Ok",
"data": null
}
curl --location --request PUT 'http://api.mybid.io/gateway/v1/api/campaign/382' \
--header 'X-Auth-Token: *****MRCP' \
--header 'Content-Type: application/json' \
--data '{
"black_list": [
"1-11",
"111",
"222"
],
"white_list": [
"6-66",
"666",
"777"],
"smart_purchase": true
}'
{
"code": 200,
"message": "Ok",
"data": null
}
GET /gateway/v1/api/change-taskPass the API key. Optional query parameters are passed through unchanged (filters, pagination, sorting, etc.). Common parameters include:
status - filter by task status; allowed values: open, rejected, approvedpagination[page] - page numberpagination[per_page] - number of items per pageJSON with code, message, and data. Example when tasks exist:
{
"code": 200,
"message": "OK",
"data": {
"data": [
{ "id": 1, "type": "create_campaign", "status": "open", ... },
...
],
"meta": { "total": 1, "total_pages": 1 }
}
}
The status field on each item in data.data is one of: open, rejected, approved.
If there is nothing to return, the HTTP status may be 404.
curl --location 'http://api.mybid.io/gateway/v1/api/change-task?status=open' \ --header 'X-Auth-Token: *****MRCP'
curl --location 'http://api.mybid.io/gateway/v1/api/change-task?status=open&pagination[page]=2&pagination[per_page]=10' \ --header 'X-Auth-Token: *****MRCP'
GET /gateway/v1/api/change-task/:idPass the API key and the numeric change-task id in the path.
Example:
{
"code": 200,
"message": "OK",
"data": {
"change_task": {
"id": 42,
"type": "create_campaign",
"status": "open",
...
}
}
}
change_task.status is one of: open, rejected, approved.
curl --location 'http://api.mybid.io/gateway/v1/api/change-task/42' \ --header 'X-Auth-Token: *****MRCP'
PUT /gateway/v1/api/change-task/reject/:idPass the API key, the numeric change-task id in the path, and a JSON body:
{
"status": "rejected",
"reject_reason": text (optional)
}
status - must be exactly "rejected"reject_reason - optional; leading and trailing spaces are trimmedReturns HTTP 200 with this JSON body:
{
"code": 204,
"message": "OK",
"data": {}
}
curl --location --request PUT 'http://api.mybid.io/gateway/v1/api/change-task/reject/42' \
--header 'X-Auth-Token: *****MRCP' \
--header 'Content-Type: application/json' \
--data '{
"status": "rejected",
"reject_reason": "does not meet guidelines"
}'
POST /gateway/v1/api/change-taskCreates a change task of type create_campaign.
Pass the API key and a JSON body. The gateway validates the fields below and submits the task.
{
"name": text,
"tracking_url": text,
"bid": float,
"budget": float (optional),
"daily_budget": float (optional),
"ad_type": text,
"second_price": bool (optional),
"category": [text],
"traffic_qualities": [text],
"price_type": text,
"countries": [text] (optional),
"countries_black": [text] (optional),
"black_list": [text] (optional),
"white_list": [text] (optional),
"usage_type": [text] (optional),
"usage_type_black": [text] (optional),
"os_type_familie_version_whitelist": object (optional),
"os_type_familie_version_blacklist": object (optional),
"browser_families_versions_whitelist": object (optional),
"browser_families_versions_blacklist": object (optional),
"capping_settings": json (optional),
"work_schedule": json (optional),
"work_schedule_black": json (optional),
"capping_unique_settings": text (optional)
}
name, tracking_url, category, traffic_qualities - required; category and traffic_qualities are arrays of stringscategory - allowed values are AD (adult) and MS (mainstream)tracking_url - must be a valid URL with scheme and hostad_type - must be popunder (case-insensitive)price_type - must be cpc (case-insensitive)budget, daily_budget - if present, must be >= 0countries, countries_black - arrays of ISO 3166-1 alpha-2 country codes. Take values from GET /gateway/v1/api/application/countries (the data.countries array). Example: ["US", "DE"].usage_type, usage_type_black - arrays of strings. Take only the type field from each object returned by GET /gateway/v1/api/application/usage-types (do not send label or other fields). Example: ["mainstream"].os_type_familie_version_whitelist, os_type_familie_version_blacklist - nested object: OS type → OS family → list of OS versions. Keys at each level must use the same string codes as in GET /gateway/v1/api/application/os-platform (use value, not label, wherever the dictionary exposes them). Version entries are numeric, same shape as in Get Campaign Data.browser_families_versions_whitelist, browser_families_versions_blacklist - object: browser family → list of version strings. Family keys must use value from GET /gateway/v1/api/application/browser (not label). Each version is a string, for example "131" or "120.5".black_list, white_list - source allow/block lists (numeric source IDs and ranges, same rules as Update Campaign).os_type_familie_version_whitelist (illustrative):
{
"mobile": {
"android": [10, 11, 12]
},
"computer": {
"windows": [10, 11]
},
"tablet": {
"xbox": []
},
"smartTv": {}
}
browser_families_versions_whitelist (family keys must match value from the browser dictionary):
{
"chrome": ["120.5", "131"],
"firefox": ["115.0"],
"qq": []
}
capping_settings (array of rules; same idea as campaign capping):
[
{ "type": "impression", "limit": 1, "duration": 24 },
{ "type": "click", "limit": 2, "duration": 48 }
]
work_schedule - per weekday, list of [start, end] time ranges (HH:MM strings). Days: Monday … Sunday. Example fragment:
{
"Monday": [["09:00", "12:00"], ["13:00", "18:00"]],
"Tuesday": [["09:00", "18:00"]]
}
work_schedule_black - same shape as work_schedule; ranges listed here are excluded. Empty day arrays mean nothing blocked for that day:
{
"Monday": [],
"Saturday": [["00:00", "23:59"]]
}
capping_unique_settings - optional string: ip or ip+ua (user uniqueness for capping).
{
"name": "My popunder campaign",
"tracking_url": "https://example.com/click",
"bid": 0.05,
"budget": 1000,
"daily_budget": 100,
"ad_type": "popunder",
"second_price": true,
"category": ["AD"],
"traffic_qualities": ["all"],
"price_type": "cpc",
"countries": ["US", "DE"],
"countries_black": ["RU"],
"black_list": ["100-200"],
"white_list": ["300"],
"usage_type": ["mainstream"],
"usage_type_black": ["incentive"],
"os_type_familie_version_whitelist": {
"mobile": { "android": [11, 12, 13] }
},
"browser_families_versions_whitelist": {
"chrome": ["120.5", "131"]
},
"capping_settings": [
{ "type": "impression", "limit": 1, "duration": 24 }
],
"capping_unique_settings": "ip+ua"
}
Example:
{
"code": 200,
"message": "OK",
"data": {
"change_task": { "id": 99, "type": "create_campaign", "status": "open", ... }
}
}
curl)Optional fields omitted; for dictionary-backed arrays use codes from the /application/* endpoints as described above.
curl --location --request POST 'http://api.mybid.io/gateway/v1/api/change-task' \
--header 'X-Auth-Token: *****MRCP' \
--header 'Content-Type: application/json' \
--data '{
"name": "My popunder campaign",
"tracking_url": "https://example.com/click",
"bid": 0.05,
"ad_type": "popunder",
"category": ["MS"],
"traffic_qualities": ["all"],
"price_type": "cpc",
"countries": ["US", "DE"],
"usage_type": ["mainstream"]
}'
GET /gateway/v1/api/application/os-platformPass the API key.
Example (structure illustrative):
{
"code": 200,
"message": "OK",
"data": [
{ "value": "mobile", "label": "Mobile" },
{ "value": "computer", "label": "Desktop" },
...
]
}
Use only value in later requests, not label.
curl --location 'http://api.mybid.io/gateway/v1/api/application/os-platform' \ --header 'X-Auth-Token: *****MRCP'
GET /gateway/v1/api/application/browserPass the API key.
Example (structure illustrative):
{
"code": 200,
"message": "OK",
"data": [
{ "value": "chrome", "label": "Google Chrome" },
{ "value": "firefox", "label": "Mozilla Firefox" },
...
]
}
Use only value for browser family keys in targeting, not label. Version arrays use strings, for example ["120.5", "131"].
curl --location 'http://api.mybid.io/gateway/v1/api/application/browser' \ --header 'X-Auth-Token: *****MRCP'
GET /gateway/v1/api/application/countriesPass the API key.
Example:
{
"code": 200,
"message": "OK",
"data": {
"countries": ["AD", "AE", "AF", "US", ...]
}
}
countries is a sorted list of ISO 3166-1 alpha-2 codes for use in API requests.
curl --location 'http://api.mybid.io/gateway/v1/api/application/countries' \ --header 'X-Auth-Token: *****MRCP'
GET /gateway/v1/api/application/usage-typesPass the API key. The list is returned for the authenticated account.
Example (structure illustrative):
{
"code": 200,
"message": "OK",
"data": [
{ "type": "mainstream", "label": "Mainstream" },
{ "type": "incentive", "label": "Incentive" },
...
]
}
When you send usage_type or usage_type_black elsewhere, use only the type field of each object, for example "usage_type": ["mainstream"].
curl --location 'http://api.mybid.io/gateway/v1/api/application/usage-types' \ --header 'X-Auth-Token: *****MRCP'