1. Authorization
1.1. Login
This `POST` request will return result login and token
1.1.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
string |
User email |
+ |
|
password |
string |
User password |
+ |
1.1.2. HTTP Request
URL
POST api/users/login HTTP/1.1
HEADER
Accept: application/json Content-type: application/json
DATA
{
"email": "test@example.org",
"password": "password"
}
1.1.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/users/login' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-d '{
"email": "test@example.org",
"password": "password"
}'
1.1.4. Response Body
| Path | Type | Description |
|---|---|---|
access_token |
string |
This token is used in queries. HEADER: "Authorization: Bearer <this token>" |
token_type |
string |
Token type |
expires_in |
int |
Time token live in seconds |
1.1.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
X-ratelimit-limit: 10
X-ratelimit-remaining: 9
Access-control-allow-origin: *
{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMvYXBpL3VzZXJzL2xvZ2luIiwiaWF0IjoxNzcwNjQxNzYzLCJleHAiOjE3NzA2NDUzNjMsIm5iZiI6MTc3MDY0MTc2MywianRpIjoicmdjb05CQWRZS1M1TFFvdCIsInN1YiI6IjciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.S0BI9yPXhuWRfBaPKcAlFKyIH2Mnx5nRdWwOQkQclQ4",
"token_type": "bearer",
"expires_in": "60"
}
1.2. Log out
A `POST` request will return result logout
1.2.1. HTTP Request
URL
POST api/logout HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjMsImV4cCI6MTc3MDY0NTM2MywibmJmIjoxNzcwNjQxNzYzLCJqdGkiOiJ3NFUwQjA0YUxxOHFvUmVJIiwic3ViIjoiOCIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.Mj8PCmOweGcbsAM_kubj50ukSiS_mWzfnlqo5mQeQGE
DATA
{}
1.2.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/logout' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjMsImV4cCI6MTc3MDY0NTM2MywibmJmIjoxNzcwNjQxNzYzLCJqdGkiOiJ3NFUwQjA0YUxxOHFvUmVJIiwic3ViIjoiOCIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.Mj8PCmOweGcbsAM_kubj50ukSiS_mWzfnlqo5mQeQGE' \
-d '{}'
1.2.3. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
1.2.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
{
"message": "Successfully logged out"
}
2. Statistic
2.1. Statistic
A `POST` request will return statistic.
2.1.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
timezone |
integer |
Timezone |
|
from |
date |
Start date (yyyy-mm-dd) |
+ |
to |
date |
End date (yyyy-mm-dd) |
+ |
groupBy |
array |
Grouping fields: |
+ |
agregatedFields |
array |
Agregated fields: |
+ |
orderField |
string |
Sorting field |
|
orderDir |
string |
Sort order: "asc" or "desc" |
|
page |
integer |
Pagination: page number |
|
rowsOnPage |
integer |
Pagination: rows on page (min:10, max:50000) |
2.1.2. HTTP Request
URL
POST api/statistic HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NzAsImV4cCI6MTc3MDY0NTM3MCwibmJmIjoxNzcwNjQxNzcwLCJqdGkiOiJSTHJJVEszRFc2eFRCTDJ0Iiwic3ViIjoiNDkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.JB0PJAZD2cKtJ4DV_QMYeeSKJqnTrZIeJkp3mCtOgsc
DATA
{
"timezone": "Etc\/GMT+10",
"from": "2026-02-07",
"to": "2026-02-09",
"groupBy": [
"YMD",
"campaignId",
"creativeId"
],
"agregatedFields": [
"bids",
"wins",
"impressions",
"clicks",
"dspSpend",
"winrate",
"ctr"
],
"orderField": "YMD",
"orderDir": "desc",
"page": 1,
"rowsOnPage": 25
}
2.1.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/statistic' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NzAsImV4cCI6MTc3MDY0NTM3MCwibmJmIjoxNzcwNjQxNzcwLCJqdGkiOiJSTHJJVEszRFc2eFRCTDJ0Iiwic3ViIjoiNDkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.JB0PJAZD2cKtJ4DV_QMYeeSKJqnTrZIeJkp3mCtOgsc' \
-d '{
"timezone": "Etc\/GMT+10",
"from": "2026-02-07",
"to": "2026-02-09",
"groupBy": [
"YMD",
"campaignId",
"creativeId"
],
"agregatedFields": [
"bids",
"wins",
"impressions",
"clicks",
"dspSpend",
"winrate",
"ctr"
],
"orderField": "YMD",
"orderDir": "desc",
"page": 1,
"rowsOnPage": 25
}'
2.1.4. Response Body
| Path | Type | Description |
|---|---|---|
status |
string |
Report status |
data.*.YMD |
date |
Date |
data.*.campaignId |
integer |
Campaign id |
data.*.creativeId |
integer |
Creative id |
data.*.campaignId_dict |
string |
Campaign name |
data.*.creativeId_dict |
string |
Creative name |
data.*.bids |
integer |
Bids |
data.*.wins |
integer |
Wins |
data.*.impressions |
integer |
Impressions |
data.*.clicks |
integer |
Clicks |
data.*.dspSpend |
float |
Spend, $ |
data.*.ctr |
float |
CTR, % |
data.*.winrate |
float |
Win Rate, % |
totals.YMD |
date |
Date |
totals.campaignId |
integer |
Campaign id |
totals.creativeId |
integer |
Creative id |
totals.campaignId_dict |
string |
Campaign name |
totals.creativeId_dict |
string |
Creative name |
totals.bids |
integer |
Bids |
totals.wins |
integer |
Wins |
totals.impressions |
integer |
Impressions |
totals.clicks |
integer |
Clicks |
totals.dspSpend |
float |
Spend, $ |
totals.ctr |
float |
CTR, % |
totals.winrate |
float |
Win Rate, % |
pagination.page |
integer |
Pagination: current page number |
pagination.per_page |
integer |
Pagination: items per page |
pagination.total |
integer |
Pagination: total items count |
2.1.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"status": "success",
"data": [
{
"YMD": "2026-02-07",
"campaignId": 1,
"creativeId": 11,
"campaignId_dict": "UA | Local Bazaar | US | Android | CPC | #1",
"creativeId_dict": "CR | City Builder 3D | Video 1080x1920 15s | Android | V1 | #11",
"bids": 195646,
"wins": 7373,
"impressions": 6977,
"clicks": 78,
"dspSpend": 32.46031808,
"ctr": 1.117959,
"winrate": 3.768541
},
{
"YMD": "2026-02-07",
"campaignId": 1,
"creativeId": 12,
"campaignId_dict": "UA | Local Bazaar | US | Android | CPC | #1",
"creativeId_dict": "CR | Translator Go | Video 1920x1080 30s | Android | V2 | #12",
"bids": 1341976,
"wins": 260000,
"impressions": 249548,
"clicks": 4377,
"dspSpend": 995.06117079,
"ctr": 1.753971,
"winrate": 19.374415
},
{
"YMD": "2026-02-07",
"campaignId": 2,
"creativeId": 11,
"campaignId_dict": "UA | Invoice Maker | GB | Android | CPC | #2",
"creativeId_dict": "CR | City Builder 3D | Video 1080x1920 15s | Android | V1 | #11",
"bids": 203756,
"wins": 53506,
"impressions": 52382,
"clicks": 884,
"dspSpend": 246.49109639,
"ctr": 1.687603,
"winrate": 26.25984
},
{
"YMD": "2026-02-07",
"campaignId": 2,
"creativeId": 12,
"campaignId_dict": "UA | Invoice Maker | GB | Android | CPC | #2",
"creativeId_dict": "CR | Translator Go | Video 1920x1080 30s | Android | V2 | #12",
"bids": 1519715,
"wins": 419195,
"impressions": 385995,
"clicks": 3815,
"dspSpend": 553.20687602,
"ctr": 0.988355,
"winrate": 27.58379
},
{
"YMD": "2026-02-08",
"campaignId": 1,
"creativeId": 11,
"campaignId_dict": "UA | Local Bazaar | US | Android | CPC | #1",
"creativeId_dict": "CR | City Builder 3D | Video 1080x1920 15s | Android | V1 | #11",
"bids": 1771905,
"wins": 318994,
"impressions": 314432,
"clicks": 6927,
"dspSpend": 198.52639059,
"ctr": 2.20302,
"winrate": 18.002884
},
{
"YMD": "2026-02-08",
"campaignId": 1,
"creativeId": 12,
"campaignId_dict": "UA | Local Bazaar | US | Android | CPC | #1",
"creativeId_dict": "CR | Translator Go | Video 1920x1080 30s | Android | V2 | #12",
"bids": 282216,
"wins": 71612,
"impressions": 69256,
"clicks": 527,
"dspSpend": 180.56978368,
"ctr": 0.760945,
"winrate": 25.37489
},
{
"YMD": "2026-02-08",
"campaignId": 2,
"creativeId": 11,
"campaignId_dict": "UA | Invoice Maker | GB | Android | CPC | #2",
"creativeId_dict": "CR | City Builder 3D | Video 1080x1920 15s | Android | V1 | #11",
"bids": 1903824,
"wins": 131813,
"impressions": 123746,
"clicks": 1316,
"dspSpend": 233.79517399,
"ctr": 1.063469,
"winrate": 6.923592
},
{
"YMD": "2026-02-08",
"campaignId": 2,
"creativeId": 12,
"campaignId_dict": "UA | Invoice Maker | GB | Android | CPC | #2",
"creativeId_dict": "CR | Translator Go | Video 1920x1080 30s | Android | V2 | #12",
"bids": 1120415,
"wins": 91462,
"impressions": 89834,
"clicks": 2176,
"dspSpend": 184.31394498,
"ctr": 2.422245,
"winrate": 8.163225
},
{
"YMD": "2026-02-09",
"campaignId": 1,
"creativeId": 11,
"campaignId_dict": "UA | Local Bazaar | US | Android | CPC | #1",
"creativeId_dict": "CR | City Builder 3D | Video 1080x1920 15s | Android | V1 | #11",
"bids": 296515,
"wins": 66135,
"impressions": 62974,
"clicks": 943,
"dspSpend": 42.75361537,
"ctr": 1.497443,
"winrate": 22.304099
},
{
"YMD": "2026-02-09",
"campaignId": 1,
"creativeId": 12,
"campaignId_dict": "UA | Local Bazaar | US | Android | CPC | #1",
"creativeId_dict": "CR | Translator Go | Video 1920x1080 30s | Android | V2 | #12",
"bids": 1406672,
"wins": 124661,
"impressions": 119463,
"clicks": 606,
"dspSpend": 206.10521323,
"ctr": 0.50727,
"winrate": 8.862123
},
{
"YMD": "2026-02-09",
"campaignId": 2,
"creativeId": 11,
"campaignId_dict": "UA | Invoice Maker | GB | Android | CPC | #2",
"creativeId_dict": "CR | City Builder 3D | Video 1080x1920 15s | Android | V1 | #11",
"bids": 1298639,
"wins": 257179,
"impressions": 243857,
"clicks": 983,
"dspSpend": 1114.84421704,
"ctr": 0.403105,
"winrate": 19.803733
},
{
"YMD": "2026-02-09",
"campaignId": 2,
"creativeId": 12,
"campaignId_dict": "UA | Invoice Maker | GB | Android | CPC | #2",
"creativeId_dict": "CR | Translator Go | Video 1920x1080 30s | Android | V2 | #12",
"bids": 1403969,
"wins": 62404,
"impressions": 61131,
"clicks": 1528,
"dspSpend": 162.2460143,
"ctr": 2.49955,
"winrate": 4.444827
}
],
"totals": {
"YMD": "",
"campaignId": 0,
"creativeId": 0,
"campaignId_dict": "",
"creativeId_dict": "",
"bids": 12745248,
"wins": 1864334,
"impressions": 1779595,
"clicks": 24160,
"dspSpend": 4150.37381446,
"ctr": 1.4087445833333334,
"winrate": 15.905496583333331
},
"pagination": {
"page": 1,
"per_page": 25,
"total": 12
}
}
2.2. Filtering statistic
A `POST` request will return statistic.
2.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
timezone |
integer |
Timezone |
|
from |
date |
Start date (yyyy-mm-dd) |
+ |
to |
date |
End date (yyyy-mm-dd) |
+ |
groupBy |
array |
Grouping fields: |
+ |
agregatedFields |
array |
Agregated fields: |
+ |
filter.campaignId |
integer |
Filtering by Campaign Id(cid) |
|
filter.creativeId |
integer |
Filtering by Creative Id(bid) |
|
orderField |
string |
Sorting field |
|
orderDir |
string |
Sort order: "asc" or "desc" |
|
page |
integer |
Pagination: page number |
|
rowsOnPage |
integer |
Pagination: rows on page (min:10, max:50000) |
2.2.2. HTTP Request
URL
POST api/statistic HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NzAsImV4cCI6MTc3MDY0NTM3MCwibmJmIjoxNzcwNjQxNzcwLCJqdGkiOiJQTE1qdTVkUHVoY2VEYmNHIiwic3ViIjoiNTAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.birGzOY5UEk0FS0MF2ovkFwlCF8pYpfMSqg4D8byZfE
DATA
{
"timezone": "UTC",
"from": "2026-02-07",
"to": "2026-02-09",
"groupBy": [
"YMD",
"campaignId",
"creativeId"
],
"agregatedFields": [
"bids",
"wins",
"impressions",
"clicks",
"dspSpend",
"winrate",
"ctr"
],
"filter": {
"campaignId": 1,
"creativeId": 10
},
"orderField": "YMD",
"orderDir": "desc",
"page": 1,
"rowsOnPage": 25
}
2.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/statistic' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NzAsImV4cCI6MTc3MDY0NTM3MCwibmJmIjoxNzcwNjQxNzcwLCJqdGkiOiJQTE1qdTVkUHVoY2VEYmNHIiwic3ViIjoiNTAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.birGzOY5UEk0FS0MF2ovkFwlCF8pYpfMSqg4D8byZfE' \
-d '{
"timezone": "UTC",
"from": "2026-02-07",
"to": "2026-02-09",
"groupBy": [
"YMD",
"campaignId",
"creativeId"
],
"agregatedFields": [
"bids",
"wins",
"impressions",
"clicks",
"dspSpend",
"winrate",
"ctr"
],
"filter": {
"campaignId": 1,
"creativeId": 10
},
"orderField": "YMD",
"orderDir": "desc",
"page": 1,
"rowsOnPage": 25
}'
2.2.4. Response Body
| Path | Type | Description |
|---|---|---|
status |
string |
Report status |
data.*.YMD |
date |
Date |
data.*.campaignId |
integer |
Campaign id |
data.*.creativeId |
integer |
Creative id |
data.*.campaignId_dict |
string |
Campaign name |
data.*.creativeId_dict |
string |
Creative name |
data.*.bids |
integer |
Bids |
data.*.wins |
integer |
Wins |
data.*.impressions |
integer |
Impressions |
data.*.clicks |
integer |
Clicks |
data.*.dspSpend |
float |
Spend, $ |
data.*.ctr |
float |
CTR, % |
data.*.winrate |
float |
Win Rate, % |
totals.YMD |
date |
Date |
totals.campaignId |
integer |
Campaign id |
totals.creativeId |
integer |
Creative id |
totals.campaignId_dict |
string |
Campaign name |
totals.creativeId_dict |
string |
Creative name |
totals.bids |
integer |
Bids |
totals.wins |
integer |
Wins |
totals.impressions |
integer |
Impressions |
totals.clicks |
integer |
Clicks |
totals.dspSpend |
float |
Spend, $ |
totals.ctr |
float |
CTR, % |
totals.winrate |
float |
Win Rate, % |
pagination.page |
integer |
Pagination: current page number |
pagination.per_page |
integer |
Pagination: items per page |
pagination.total |
integer |
Pagination: total items count |
2.2.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"status": "success",
"data": [
{
"YMD": "2026-02-07",
"campaignId": 1,
"creativeId": 11,
"campaignId_dict": "UA | Survival Island | US | Android | CPI | #1",
"creativeId_dict": "CR | Daily Deals | Video 1080x1920 15s | Android | V1 | #11",
"bids": 512934,
"wins": 76606,
"impressions": 73986,
"clicks": 942,
"dspSpend": 244.86991049,
"ctr": 1.273214,
"winrate": 14.934865
},
{
"YMD": "2026-02-07",
"campaignId": 1,
"creativeId": 12,
"campaignId_dict": "UA | Survival Island | US | Android | CPI | #1",
"creativeId_dict": "CR | Royal Match | Video 1920x1080 30s | Android | V2 | #12",
"bids": 480396,
"wins": 53359,
"impressions": 49202,
"clicks": 1257,
"dspSpend": 167.89951251,
"ctr": 2.554774,
"winrate": 11.107295
},
{
"YMD": "2026-02-07",
"campaignId": 2,
"creativeId": 11,
"campaignId_dict": "UA | Battery Saver Pro | GB | Android | CPI | #2",
"creativeId_dict": "CR | Daily Deals | Video 1080x1920 15s | Android | V1 | #11",
"bids": 1339102,
"wins": 210804,
"impressions": 205070,
"clicks": 6757,
"dspSpend": 613.86761178,
"ctr": 3.294972,
"winrate": 15.742191
},
{
"YMD": "2026-02-07",
"campaignId": 2,
"creativeId": 12,
"campaignId_dict": "UA | Battery Saver Pro | GB | Android | CPI | #2",
"creativeId_dict": "CR | Royal Match | Video 1920x1080 30s | Android | V2 | #12",
"bids": 87844,
"wins": 17722,
"impressions": 16976,
"clicks": 298,
"dspSpend": 39.52477942,
"ctr": 1.755419,
"winrate": 20.1744
},
{
"YMD": "2026-02-08",
"campaignId": 1,
"creativeId": 11,
"campaignId_dict": "UA | Survival Island | US | Android | CPI | #1",
"creativeId_dict": "CR | Daily Deals | Video 1080x1920 15s | Android | V1 | #11",
"bids": 1689338,
"wins": 245687,
"impressions": 236867,
"clicks": 4865,
"dspSpend": 621.04466657,
"ctr": 2.053895,
"winrate": 14.543389
},
{
"YMD": "2026-02-08",
"campaignId": 1,
"creativeId": 12,
"campaignId_dict": "UA | Survival Island | US | Android | CPI | #1",
"creativeId_dict": "CR | Royal Match | Video 1920x1080 30s | Android | V2 | #12",
"bids": 374662,
"wins": 37813,
"impressions": 37159,
"clicks": 767,
"dspSpend": 96.87120914,
"ctr": 2.064103,
"winrate": 10.092563
},
{
"YMD": "2026-02-08",
"campaignId": 2,
"creativeId": 11,
"campaignId_dict": "UA | Battery Saver Pro | GB | Android | CPI | #2",
"creativeId_dict": "CR | Daily Deals | Video 1080x1920 15s | Android | V1 | #11",
"bids": 557247,
"wins": 89330,
"impressions": 84765,
"clicks": 2644,
"dspSpend": 264.20928393,
"ctr": 3.119212,
"winrate": 16.030593
},
{
"YMD": "2026-02-08",
"campaignId": 2,
"creativeId": 12,
"campaignId_dict": "UA | Battery Saver Pro | GB | Android | CPI | #2",
"creativeId_dict": "CR | Royal Match | Video 1920x1080 30s | Android | V2 | #12",
"bids": 1665836,
"wins": 493904,
"impressions": 472962,
"clicks": 15327,
"dspSpend": 1021.32549389,
"ctr": 3.240641,
"winrate": 29.649017
},
{
"YMD": "2026-02-09",
"campaignId": 1,
"creativeId": 11,
"campaignId_dict": "UA | Survival Island | US | Android | CPI | #1",
"creativeId_dict": "CR | Daily Deals | Video 1080x1920 15s | Android | V1 | #11",
"bids": 1337887,
"wins": 160989,
"impressions": 153487,
"clicks": 3386,
"dspSpend": 686.53476507,
"ctr": 2.20605,
"winrate": 12.033079
},
{
"YMD": "2026-02-09",
"campaignId": 1,
"creativeId": 12,
"campaignId_dict": "UA | Survival Island | US | Android | CPI | #1",
"creativeId_dict": "CR | Royal Match | Video 1920x1080 30s | Android | V2 | #12",
"bids": 1734681,
"wins": 216922,
"impressions": 212432,
"clicks": 4189,
"dspSpend": 424.86803621,
"ctr": 1.971925,
"winrate": 12.505008
},
{
"YMD": "2026-02-09",
"campaignId": 2,
"creativeId": 11,
"campaignId_dict": "UA | Battery Saver Pro | GB | Android | CPI | #2",
"creativeId_dict": "CR | Daily Deals | Video 1080x1920 15s | Android | V1 | #11",
"bids": 1271753,
"wins": 55019,
"impressions": 53919,
"clicks": 565,
"dspSpend": 100.46824324,
"ctr": 1.047868,
"winrate": 4.326233
},
{
"YMD": "2026-02-09",
"campaignId": 2,
"creativeId": 12,
"campaignId_dict": "UA | Battery Saver Pro | GB | Android | CPI | #2",
"creativeId_dict": "CR | Royal Match | Video 1920x1080 30s | Android | V2 | #12",
"bids": 425683,
"wins": 40387,
"impressions": 39369,
"clicks": 1001,
"dspSpend": 11.91746873,
"ctr": 2.54261,
"winrate": 9.487576
}
],
"totals": {
"YMD": "",
"campaignId": 0,
"creativeId": 0,
"campaignId_dict": "",
"creativeId_dict": "",
"bids": 11477363,
"wins": 1698542,
"impressions": 1636194,
"clicks": 41998,
"dspSpend": 4293.400980980001,
"ctr": 2.26039025,
"winrate": 14.21885075
},
"pagination": {
"page": 1,
"per_page": 25,
"total": 12
}
}
3. Agency
3.1. Deposit to advert
A `POST` request
3.1.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
userId |
integer |
user id |
+ |
transactionAmount |
integer |
transaction amount |
+ |
3.1.2. HTTP Request
URL
POST api/deposit-agency-user HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjMsImV4cCI6MTc3MDY0NTM2MywibmJmIjoxNzcwNjQxNzYzLCJqdGkiOiJydjJtRnBMd2Z4bzBBZWtCIiwic3ViIjoiMSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.-IyuJN2MBzhlw7_mdhXf6VhxmWp3TtXWGMJpvL4bspQ
DATA
{
"userId": 2,
"transactionAmount": 10
}
3.1.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/deposit-agency-user' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjMsImV4cCI6MTc3MDY0NTM2MywibmJmIjoxNzcwNjQxNzYzLCJqdGkiOiJydjJtRnBMd2Z4bzBBZWtCIiwic3ViIjoiMSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.-IyuJN2MBzhlw7_mdhXf6VhxmWp3TtXWGMJpvL4bspQ' \
-d '{
"userId": 2,
"transactionAmount": 10
}'
3.1.4. Response Body
| Path | Type | Description |
|---|---|---|
status |
string |
Result status |
balance |
float |
balance |
3.1.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
{
"status": "success",
"balance": "45504.00000"
}
3.2. Withdraw to advert
A `POST` request
3.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
userId |
integer |
user id |
+ |
transactionAmount |
integer |
transaction amount |
+ |
3.2.2. HTTP Request
URL
POST api/withdraw-agency-user HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjMsImV4cCI6MTc3MDY0NTM2MywibmJmIjoxNzcwNjQxNzYzLCJqdGkiOiJVOHo4QUpxdWRvQVhnWU5mIiwic3ViIjoiMyIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.U42tMF2qs8s11d_fLWi4cZP1sMhkPQ4akYCfWGjadks
DATA
{
"userId": 4,
"transactionAmount": 10
}
3.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/withdraw-agency-user' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjMsImV4cCI6MTc3MDY0NTM2MywibmJmIjoxNzcwNjQxNzYzLCJqdGkiOiJVOHo4QUpxdWRvQVhnWU5mIiwic3ViIjoiMyIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.U42tMF2qs8s11d_fLWi4cZP1sMhkPQ4akYCfWGjadks' \
-d '{
"userId": 4,
"transactionAmount": 10
}'
3.2.4. Response Body
| Path | Type | Description |
|---|---|---|
status |
string |
Result status |
balance |
float |
balance |
3.2.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
{
"status": "success",
"balance": "67623.00000"
}
3.3. User list with campaigns
A `GET` request
3.3.1. HTTP Request
URL
GET api/get-agency-users-with-campaigns HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjMsImV4cCI6MTc3MDY0NTM2MywibmJmIjoxNzcwNjQxNzYzLCJqdGkiOiJ6STU1MUFEMDlMa0dPQWl4Iiwic3ViIjoiNSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.4jwnIJwWZY-YphT6O7HLzKQIEXvLT6MgGZHvlSGz-Lw
DATA
{
"where": "userId;5"
}
3.3.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/get-agency-users-with-campaigns' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjMsImV4cCI6MTc3MDY0NTM2MywibmJmIjoxNzcwNjQxNzYzLCJqdGkiOiJ6STU1MUFEMDlMa0dPQWl4Iiwic3ViIjoiNSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.4jwnIJwWZY-YphT6O7HLzKQIEXvLT6MgGZHvlSGz-Lw' \
-d '{
"where": "userId;5"
}'
3.3.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.id |
integer |
user id |
data.*.email |
string |
|
data.*.firstName |
string |
First name |
data.*.lastName |
string |
Last name |
data.*.balance |
float |
balance |
data.*.bidResTotalCounter |
integer |
Bid total counter |
data.*.bidResDailyCounter |
integer |
Bid daily counter |
data.*.winsTotalCounter |
integer |
Wins total counter |
data.*.winsDailyCounter |
integer |
Wins daily counter |
data.*.impressionsTotalCounter |
integer |
Impressions total counter |
data.*.impressionsDailyCounter |
integer |
Impressions daily counter |
data.*.clicksTotalCounter |
integer |
Click total counter |
data.*.clicksDailyCounter |
integer |
Click daily counter |
data.*.spentDailyLimit |
integer |
Spent daily limit |
data.*.spentDailyCounter |
integer |
Spent daily counter |
data.*.spentTotalLimit |
integer |
Spent total limit |
data.*.spentTotalCounter |
integer |
Spent total counter |
data.*.impressionsDailyLimit |
integer |
impressions daily limit |
data.*.impressionsTotalLimit |
integer |
impressions total limit |
data..campaigns..id |
integer |
campaign id |
data..campaigns..userId |
integer |
user id |
data..campaigns..isActive |
boolean |
isActive |
data..campaigns..isRunning |
boolean |
Campaign running status |
data..campaigns..type |
string |
Campaign type: banner, native, video, audio |
data..campaigns..name |
string |
Campaign name |
data..campaigns..isRewarded |
integer |
Rewarded video (for video creatives) |
data..campaigns..isDesktopWeb |
boolean |
Traffic Type: Desktop Websites |
data..campaigns..isMobileApp |
boolean |
Traffic Type: Mobile Applications |
data..campaigns..isMobileWeb |
boolean |
Traffic Type: Mobile Websites |
data..campaigns..isSmartphone |
boolean |
Traffic Type: Smartphones |
data..campaigns..isTablet |
boolean |
Traffic Type: Tablets |
data..campaigns..isCTV |
boolean |
Traffic Type: CTV |
data..campaigns..isDOOH |
boolean |
Traffic Type: DOOH |
data..campaigns..aDomain |
integer |
Top level domain |
data..campaigns..dateStart |
date |
Date start |
data..campaigns..dateEnd |
date |
Date end |
data..campaigns..geoCountries |
array |
GEO Targeting: countries list |
data..campaigns..geoCountriesIsInclude |
boolean |
GEO Targeting: countries list type (true: whitelist, false: blacklist) |
data..campaigns..geoRegions |
array |
GEO Targeting: regions list |
data..campaigns..geoRegionsIsInclude |
boolean |
GEO Targeting: regions list type (true: whitelist, false: blacklist) |
data..campaigns..geoCities |
array |
GEO Targeting: cities list |
data..campaigns..geoCitiesIsInclude |
boolean |
GEO Targeting: cities list type (true: whitelist, false: blacklist) |
data..campaigns..contentCategories |
array |
Targeting: IAB Categories list |
data..campaigns..contentCategoriesIsInclude |
boolean |
Targeting: IAB Categories list type (true: whitelist, false: blacklist) |
data..campaigns..userAgeMin |
integer |
Targeting: Age range from |
data..campaigns..userAgeMax |
integer |
Targeting: Age range to |
data..campaigns..connectionTypes |
array |
Targeting: Connection types list |
data..campaigns..clickedInventoryCategories |
array |
Сlicked Inventory Categories |
data..campaigns..deviceCarrier |
array |
Targeting: List of network operators. |
data..campaigns..deviceCarrierIsInclude |
boolean |
Targeting: List of network operators type (true: whitelist, false: blacklist) |
data..campaigns..OS |
array |
Targeting: The operating system of user's device |
data..campaigns..OSIsInclude |
boolean |
Targeting: The operating system of user's device list type (true: whitelist, false: blacklist) |
data..campaigns..browser |
array |
Targeting: The user's browsers list |
data..campaigns..browserIsInclude |
boolean |
Targeting: The user's browsers list type (true: whitelist, false: blacklist) |
data..campaigns..deviceLanguage |
array |
Targeting: The languages of user's browser |
data..campaigns..deviceLanguageIsInclude |
boolean |
Targeting: The languages of user's browser list type (true: whitelist, false: blacklist) |
data..campaigns..spentDailyLimit |
integer |
Daily spent limit |
data..campaigns..spentTotalLimit |
integer |
Total spent limit |
data..campaigns..impressionsDailyLimit |
integer |
Daily impressions limit |
data..campaigns..impressionsTotalLimit |
integer |
Total impressions limit |
data..campaigns..clicksDailyLimit |
integer |
Daily clicks limit |
data..campaigns..clicksTotalLimit |
integer |
Total clicks limit |
data..campaigns..budgetUse |
integer |
Distribution: pacer, fast pacer - Evenly distribution fast - ASAP distribution |
data..campaigns..allSources |
boolean |
Inventory: Use all SSP endpoints |
data..campaigns..cpm |
float |
cpm |
data..campaigns..adaptiveCpm |
boolean |
adaptiveCpm |
data..campaigns..useCpm |
boolean |
use cpm |
data..campaigns..googleAnalyticsTrackingCode |
string |
Google Analytics tracking code - PUSH Campaigns |
data..campaigns..dynamicTargeting |
array |
SmartCPC: Dynamic targeting - only for CPC Pricing model |
data..campaigns..subscriptionAge |
array |
Subscription Age - only for CPC Pricing model |
data..campaigns..frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data..campaigns..frequency |
boolean |
Frequency on/off. |
data..campaigns..frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data..campaigns..frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data..campaigns..extendedStatus |
string |
Campaign extended status |
data..campaigns..createdAt |
datetime |
Date of creation |
data..campaigns..updatedAt |
datetime |
Date of last modification |
data..campaigns..deletedAt |
datetime |
Date of deletion |
data..campaigns..counters.bidResDailyCounter |
integer |
Bid daily counter |
data..campaigns..counters.winsDailyCounter |
integer |
Wins daily counter |
data..campaigns..counters.conversionDailyCounter |
integer |
Conversion daily counter |
data..campaigns..counters.clicksDailyCounter |
integer |
Click daily counter |
data..campaigns..counters.impressionsTotalCounter |
integer |
Impressions total counter |
data..campaigns..counters.impressionsDailyCounter |
integer |
Impressions daily counter |
data..campaigns..counters.winRate |
integer |
Winrate counter |
data..campaigns..counters.spentDailyCounter |
integer |
Spent daily counter |
data..campaigns..counters.spentTotalCounter |
integer |
Spent total counter |
data..campaigns..pretarget |
int |
pretarget |
data..campaigns..pretargets |
array |
pretargets |
data..campaigns..audiences |
array |
audiences |
meta.pagination.total |
integer |
Pagination: total items count |
meta.pagination.count |
integer |
Pagination: page items count |
meta.pagination.per_page |
integer |
Pagination: items per page |
meta.pagination.current_page |
integer |
Pagination: current page number |
meta.pagination.total_pages |
integer |
Pagination: total pages count |
meta.pagination.links |
string |
Pagination: url links |
3.3.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
{
"data": [
{
"id": 5,
"email": null,
"firstName": "Trevor",
"lastName": "Feeney",
"balance": null,
"bidResTotalCounter": null,
"bidResDailyCounter": null,
"winsTotalCounter": null,
"winsDailyCounter": null,
"impressionsTotalCounter": null,
"impressionsDailyCounter": null,
"clicksTotalCounter": null,
"clicksDailyCounter": null,
"spentDailyLimit": "477",
"spentDailyCounter": null,
"spentTotalLimit": "7124",
"spentTotalCounter": null,
"impressionsDailyLimit": "499674",
"impressionsTotalLimit": "1185235",
"campaigns": [
{
"id": 1,
"userId": 5,
"isActive": true,
"isRunning": false,
"type": "native",
"name": "occaecati",
"isRewarded": false,
"isDesktopWeb": true,
"isMobileApp": false,
"isMobileWeb": false,
"isSmartphone": false,
"isTablet": false,
"isCTV": false,
"isDOOH": false,
"aDomain": "reilly.info",
"dateStart": "2024-05-14",
"dateEnd": "2027-01-04",
"geoCountries": [],
"geoCountriesIsInclude": true,
"geoRegions": [],
"geoRegionsIsInclude": true,
"geoCities": [],
"geoCitiesIsInclude": true,
"contentCategories": [],
"contentCategoriesIsInclude": true,
"userAgeMin": 0,
"userAgeMax": 0,
"connectionTypes": [
"wifi"
],
"clickedInventoryCategories": [],
"deviceCarrier": [],
"deviceCarrierIsInclude": true,
"OS": [],
"OSIsInclude": true,
"browser": [],
"browserIsInclude": true,
"deviceLanguage": [],
"deviceLanguageIsInclude": true,
"spentDailyLimit": 359,
"spentTotalLimit": 5677,
"impressionsDailyLimit": 218373,
"impressionsTotalLimit": 538209,
"clicksDailyLimit": 0,
"clicksTotalLimit": 0,
"budgetUse": "fast",
"allSources": true,
"cpm": 0,
"adaptiveCpm": false,
"useCpm": false,
"googleAnalyticsTrackingCode": null,
"dynamicTargeting": [],
"subscriptionAge": [],
"frequencyType": "user",
"frequency": 0,
"frequencyCap": 1,
"frequencyPeriod": 1,
"extendedStatus": "Low Balance",
"createdAt": "2026-02-09",
"updatedAt": "2026-02-09",
"deletedAt": null,
"counters": {
"bidResDailyCounter": 0,
"winsDailyCounter": 0,
"conversionDailyCounter": 0,
"clicksDailyCounter": null,
"impressionsTotalCounter": 0,
"impressionsDailyCounter": 0,
"winRate": 0,
"spentDailyCounter": 0,
"spentTotalCounter": 0
},
"pretarget": null,
"pretargets": [],
"audiences": []
},
{
"id": 2,
"userId": 5,
"isActive": true,
"isRunning": false,
"type": "video",
"name": "ipsa",
"isRewarded": false,
"isDesktopWeb": false,
"isMobileApp": false,
"isMobileWeb": true,
"isSmartphone": true,
"isTablet": true,
"isCTV": true,
"isDOOH": false,
"aDomain": "mcdermott.net",
"dateStart": "2025-10-12",
"dateEnd": "2026-07-11",
"geoCountries": [],
"geoCountriesIsInclude": true,
"geoRegions": [],
"geoRegionsIsInclude": true,
"geoCities": [],
"geoCitiesIsInclude": true,
"contentCategories": [],
"contentCategoriesIsInclude": true,
"userAgeMin": 0,
"userAgeMax": 0,
"connectionTypes": [
"wifi"
],
"clickedInventoryCategories": [],
"deviceCarrier": [],
"deviceCarrierIsInclude": true,
"OS": [],
"OSIsInclude": true,
"browser": [],
"browserIsInclude": true,
"deviceLanguage": [],
"deviceLanguageIsInclude": true,
"spentDailyLimit": 118,
"spentTotalLimit": 1447,
"impressionsDailyLimit": 281301,
"impressionsTotalLimit": 647026,
"clicksDailyLimit": 0,
"clicksTotalLimit": 0,
"budgetUse": "fast",
"allSources": true,
"cpm": 0,
"adaptiveCpm": false,
"useCpm": false,
"googleAnalyticsTrackingCode": null,
"dynamicTargeting": [],
"subscriptionAge": [],
"frequencyType": "user",
"frequency": 0,
"frequencyCap": 1,
"frequencyPeriod": 1,
"extendedStatus": "Low Balance",
"createdAt": "2026-02-09",
"updatedAt": "2026-02-09",
"deletedAt": null,
"counters": {
"bidResDailyCounter": 0,
"winsDailyCounter": 0,
"conversionDailyCounter": 0,
"clicksDailyCounter": null,
"impressionsTotalCounter": 0,
"impressionsDailyCounter": 0,
"winRate": 0,
"spentDailyCounter": 0,
"spentTotalCounter": 0
},
"pretarget": null,
"pretargets": [],
"audiences": []
}
]
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 15,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
4. Campaigns
4.1. Campaigns list
A `GET` request will return a list of an campaigns.
4.1.1. HTTP Request
URL
GET api/campaigns HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjMsImV4cCI6MTc3MDY0NTM2MywibmJmIjoxNzcwNjQxNzYzLCJqdGkiOiJDckZxOW5YUFJuTHBMUzF3Iiwic3ViIjoiOSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.XLukN9SnkoaHrVxNE1vAursQ32Ab0UiCE38tGdprw9M
DATA
{}
4.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjMsImV4cCI6MTc3MDY0NTM2MywibmJmIjoxNzcwNjQxNzYzLCJqdGkiOiJDckZxOW5YUFJuTHBMUzF3Iiwic3ViIjoiOSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.XLukN9SnkoaHrVxNE1vAursQ32Ab0UiCE38tGdprw9M' \
-d '{}'
4.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.id |
integer |
Campaign Id(test) |
data.*.userId |
integer |
User Id |
data.*.isActive |
boolean |
Campaign On/Off |
data.*.isRunning |
boolean |
Campaign running status |
data.*.type |
string |
Campaign type: banner, native, video, audio |
data.*.name |
string |
Campaign name |
data.*.isRewarded |
integer |
Rewarded video (for video creatives) |
data.*.isDesktopWeb |
boolean |
Traffic Type: Desktop Websites |
data.*.isMobileApp |
boolean |
Traffic Type: Mobile Applications |
data.*.isMobileWeb |
boolean |
Traffic Type: Mobile Websites |
data.*.isSmartphone |
boolean |
Traffic Type: Smartphones |
data.*.isTablet |
boolean |
Traffic Type: Tablets |
data.*.isCTV |
boolean |
Traffic Type: CTVs |
data.*.isDOOH |
boolean |
Traffic Type: DOOH |
data.*.aDomain |
integer |
Top level domain |
data.*.dateStart |
date |
Date start |
data.*.dateEnd |
date |
Date end |
data.*.geoCountries |
array |
GEO Targeting: countries list |
data.*.geoCountriesIsInclude |
boolean |
GEO Targeting: countries list type (true: whitelist, false: blacklist) |
data.*.geoRegions |
array |
GEO Targeting: regions list |
data.*.geoRegionsIsInclude |
boolean |
GEO Targeting: regions list type (true: whitelist, false: blacklist) |
data.*.geoCities |
array |
GEO Targeting: cities list |
data.*.geoCitiesIsInclude |
boolean |
GEO Targeting: cities list type (true: whitelist, false: blacklist) |
data.*.contentCategories |
array |
Targeting: IAB Categories list |
data.*.contentCategoriesIsInclude |
boolean |
Targeting: IAB Categories list type (true: whitelist, false: blacklist) |
data.*.userAgeMin |
integer |
Targeting: Age range from |
data.*.userAgeMax |
integer |
Targeting: Age range to |
data.*.connectionTypes |
array |
Targeting: Connection types list |
data.*.clickedInventoryCategories |
array |
Сlicked Inventory Categories |
data.*.deviceCarrier |
array |
Targeting: List of network operators. |
data.*.deviceCarrierIsInclude |
boolean |
Targeting: List of network operators type (true: whitelist, false: blacklist) |
data.*.OS |
array |
Targeting: The operating system of user's device |
data.*.OSIsInclude |
boolean |
Targeting: The operating system of user's device list type (true: whitelist, false: blacklist) |
data.*.browser |
array |
Targeting: The user's browsers list |
data.*.browserIsInclude |
boolean |
Targeting: The user's browsers list type (true: whitelist, false: blacklist) |
data.*.deviceLanguage |
array |
Targeting: The languages of user's browser |
data.*.deviceLanguageIsInclude |
boolean |
Targeting: The languages of user's browser list type (true: whitelist, false: blacklist) |
data.*.spentDailyLimit |
integer |
Daily spent limit |
data.*.spentTotalLimit |
integer |
Total spent limit |
data.*.impressionsDailyLimit |
integer |
Daily impressions limit |
data.*.impressionsTotalLimit |
integer |
Total impressions limit |
data.*.clicksDailyLimit |
integer |
Daily clicks limit |
data.*.clicksTotalLimit |
integer |
Total clicks limit |
data.*.budgetUse |
integer |
Distribution: pacer, fast pacer - Evenly distribution fast - ASAP distribution |
data.*.allSources |
boolean |
Inventory: Use all SSP endpoints |
data.*.cpm |
float |
cpm |
data.*.adaptiveCpm |
boolean |
adaptiveCpm |
data.*.useCpm |
boolean |
use cpm |
data.*.extendedStatus |
string |
Campaign extended status |
data.*.createdAt |
datetime |
Date of creation |
data.*.updatedAt |
datetime |
Date of last modification |
data.*.deletedAt |
datetime |
Date of deletion |
meta.pagination.total |
integer |
Pagination: total items count |
meta.pagination.count |
integer |
Pagination: page items count |
meta.pagination.per_page |
integer |
Pagination: items per page |
meta.pagination.current_page |
integer |
Pagination: current page number |
meta.pagination.total_pages |
integer |
Pagination: total pages count |
meta.pagination.links |
array |
Pagination: urls to next,prev page |
4.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"data": [
{
"id": 3,
"userId": 9,
"isActive": true,
"isRunning": false,
"type": "banner",
"name": "eaque",
"isRewarded": false,
"isDesktopWeb": false,
"isMobileApp": false,
"isMobileWeb": true,
"isSmartphone": false,
"isTablet": true,
"isCTV": false,
"isDOOH": false,
"aDomain": "kunde.biz",
"dateStart": "2024-07-01",
"dateEnd": "2026-06-05",
"geoCountries": [],
"geoCountriesIsInclude": true,
"geoRegions": [],
"geoRegionsIsInclude": true,
"geoCities": [],
"geoCitiesIsInclude": true,
"contentCategories": [],
"contentCategoriesIsInclude": true,
"userAgeMin": 0,
"userAgeMax": 0,
"connectionTypes": [
"wifi"
],
"clickedInventoryCategories": [],
"deviceCarrier": [],
"deviceCarrierIsInclude": true,
"OS": [],
"OSIsInclude": true,
"browser": [],
"browserIsInclude": true,
"deviceLanguage": [],
"deviceLanguageIsInclude": true,
"spentDailyLimit": 315,
"spentTotalLimit": 1096,
"impressionsDailyLimit": 213213,
"impressionsTotalLimit": 790504,
"clicksDailyLimit": 0,
"clicksTotalLimit": 0,
"budgetUse": "fast",
"allSources": true,
"cpm": 0,
"adaptiveCpm": false,
"useCpm": false,
"extendedStatus": "Low Balance",
"createdAt": "2026-02-09",
"updatedAt": "2026-02-09",
"deletedAt": null
},
{
"id": 4,
"userId": 9,
"isActive": true,
"isRunning": false,
"type": "audio",
"name": "vitae",
"isRewarded": false,
"isDesktopWeb": false,
"isMobileApp": true,
"isMobileWeb": false,
"isSmartphone": true,
"isTablet": false,
"isCTV": false,
"isDOOH": true,
"aDomain": "jerde.biz",
"dateStart": "2025-01-27",
"dateEnd": "2026-09-23",
"geoCountries": [],
"geoCountriesIsInclude": true,
"geoRegions": [],
"geoRegionsIsInclude": true,
"geoCities": [],
"geoCitiesIsInclude": true,
"contentCategories": [],
"contentCategoriesIsInclude": true,
"userAgeMin": 0,
"userAgeMax": 0,
"connectionTypes": [
"wifi"
],
"clickedInventoryCategories": [],
"deviceCarrier": [],
"deviceCarrierIsInclude": true,
"OS": [],
"OSIsInclude": true,
"browser": [],
"browserIsInclude": true,
"deviceLanguage": [],
"deviceLanguageIsInclude": true,
"spentDailyLimit": 236,
"spentTotalLimit": 1610,
"impressionsDailyLimit": 260124,
"impressionsTotalLimit": 681008,
"clicksDailyLimit": 0,
"clicksTotalLimit": 0,
"budgetUse": "fast",
"allSources": true,
"cpm": 0,
"adaptiveCpm": false,
"useCpm": false,
"extendedStatus": "Low Balance",
"createdAt": "2026-02-09",
"updatedAt": "2026-02-09",
"deletedAt": null
}
],
"meta": {
"pagination": {
"total": 2,
"count": 2,
"per_page": 15,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
4.2. Get by ID
A `GET` request with a path parameter of the id will return the campaign with that id.
4.2.1. HTTP Request
URL
GET api/campaigns/5 HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiJRZUtWTXRBYXJoVHJnQVMwIiwic3ViIjoiMTAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.tisJqpSnCq8QB4JKsE0lwgfqDgxuoztD59dPrpLZFMw
DATA
{}
4.2.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/5' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiJRZUtWTXRBYXJoVHJnQVMwIiwic3ViIjoiMTAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.tisJqpSnCq8QB4JKsE0lwgfqDgxuoztD59dPrpLZFMw' \
-d '{}'
4.2.3. Response Body
| Path | Type | Description |
|---|---|---|
data.id |
integer |
Campaign Id |
data.userId |
integer |
User Id |
data.isActive |
boolean |
Campaign On/Off |
data.isRunning |
boolean |
Campaign running status |
data.type |
string |
Campaign type: banner, native, video, audio |
data.name |
string |
Campaign name |
data.isRewarded |
integer |
Rewarded video (for video creatives) |
data.isDesktopWeb |
boolean |
Traffic Type: Desktop Websites |
data.isMobileApp |
boolean |
Traffic Type: Mobile Applications |
data.isMobileWeb |
boolean |
Traffic Type: Mobile Websites |
data.isSmartphone |
boolean |
Traffic Type: Smartphones |
data.isTablet |
boolean |
Traffic Type: Tablets |
data.isCTV |
boolean |
Traffic Type: CTV |
data.isDOOH |
boolean |
Traffic Type: DOOH |
data.aDomain |
integer |
Top level domain |
data.dateStart |
date |
Date start |
data.dateEnd |
date |
Date end |
data.geoCountries |
array |
GEO Targeting: countries list |
data.geoCountriesIsInclude |
boolean |
GEO Targeting: countries list type (true: whitelist, false: blacklist) |
data.geoRegions |
array |
GEO Targeting: regions list |
data.geoRegionsIsInclude |
boolean |
GEO Targeting: regions list type (true: whitelist, false: blacklist) |
data.geoCities |
array |
GEO Targeting: cities list |
data.geoCitiesIsInclude |
boolean |
GEO Targeting: cities list type (true: whitelist, false: blacklist) |
data.contentCategories |
array |
Targeting: IAB Categories list |
data.contentCategoriesIsInclude |
boolean |
Targeting: IAB Categories list type (true: whitelist, false: blacklist) |
data.userAgeMin |
integer |
Targeting: Age range from |
data.userAgeMax |
integer |
Targeting: Age range to |
data.connectionTypes |
array |
Targeting: Connection types list |
data.clickedInventoryCategories |
array |
Сlicked Inventory Categories |
data.deviceCarrier |
array |
Targeting: List of network operators. |
data.deviceCarrierIsInclude |
boolean |
Targeting: List of network operators type (true: whitelist, false: blacklist) |
data.OS |
array |
Targeting: The operating system of user's device |
data.OSIsInclude |
boolean |
Targeting: The operating system of user's device list type (true: whitelist, false: blacklist) |
data.browser |
array |
Targeting: The user's browsers list |
data.browserIsInclude |
boolean |
Targeting: The user's browsers list type (true: whitelist, false: blacklist) |
data.deviceLanguage |
array |
Targeting: The languages of user's browser |
data.deviceLanguageIsInclude |
boolean |
Targeting: The languages of user's browser list type (true: whitelist, false: blacklist) |
data.spentDailyLimit |
integer |
Daily spent limit |
data.spentTotalLimit |
integer |
Total spent limit |
data.impressionsDailyLimit |
integer |
Daily impressions limit |
data.impressionsTotalLimit |
integer |
Total impressions limit |
data.clicksDailyLimit |
integer |
Daily clicks limit |
data.clicksTotalLimit |
integer |
Total clicks limit |
data.budgetUse |
integer |
Distribution: pacer, fast pacer - Evenly distribution fast - ASAP distribution |
data.allSources |
boolean |
Inventory: Use all SSP endpoints |
data.cpm |
float |
cpm |
data.adaptiveCpm |
boolean |
adaptiveCpm |
data.useCpm |
boolean |
use cpm |
data.googleAnalyticsTrackingCode |
string |
Google Analytics tracking code - PUSH Campaigns |
data.dynamicTargeting |
array |
SmartCPC: Dynamic targeting - only for CPC Pricing model |
data.subscriptionAge |
array |
Subscription Age - only for CPC Pricing model |
data.frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data.frequency |
boolean |
Frequency on/off. |
data.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data.frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data.extendedStatus |
string |
Campaign extended status |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
data.deletedAt |
datetime |
Date of deletion |
data.pretarget |
int |
pretarget |
data.pretargets |
array |
pretargets |
data.audiences |
array |
audiences |
4.2.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"data": {
"id": 5,
"userId": 10,
"isActive": true,
"isRunning": false,
"type": "banner",
"name": "Test Campaign #1",
"isRewarded": false,
"isDesktopWeb": false,
"isMobileApp": false,
"isMobileWeb": false,
"isSmartphone": false,
"isTablet": false,
"isCTV": false,
"isDOOH": false,
"aDomain": "bayer.com",
"dateStart": "2025-05-09",
"dateEnd": "2026-10-04",
"geoCountries": [],
"geoCountriesIsInclude": true,
"geoRegions": [],
"geoRegionsIsInclude": true,
"geoCities": [],
"geoCitiesIsInclude": true,
"contentCategories": [],
"contentCategoriesIsInclude": true,
"userAgeMin": 0,
"userAgeMax": 0,
"connectionTypes": [
"wifi"
],
"clickedInventoryCategories": [],
"deviceCarrier": [],
"deviceCarrierIsInclude": true,
"OS": [],
"OSIsInclude": true,
"browser": [],
"browserIsInclude": true,
"deviceLanguage": [],
"deviceLanguageIsInclude": true,
"spentDailyLimit": 484,
"spentTotalLimit": 1847,
"impressionsDailyLimit": 207687,
"impressionsTotalLimit": 718703,
"clicksDailyLimit": 0,
"clicksTotalLimit": 0,
"budgetUse": "fast",
"allSources": true,
"cpm": 0,
"adaptiveCpm": false,
"useCpm": false,
"googleAnalyticsTrackingCode": null,
"dynamicTargeting": [],
"subscriptionAge": [],
"frequencyType": "user",
"frequency": 0,
"frequencyCap": 1,
"frequencyPeriod": 1,
"extendedStatus": "Low Balance",
"createdAt": "2026-02-09",
"updatedAt": "2026-02-09",
"deletedAt": null,
"pretarget": null,
"pretargets": [],
"audiences": []
}
}
4.3. Create a Custom Banner/Native/Video/Audio Campaigns
A `POST` request will create new campaign.
4.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
type |
string |
Campaign type: banner, native, video, audio |
+ |
name |
string |
Campaign name |
+ |
aDomain |
integer |
Top level domain |
+ |
isRewarded |
integer |
Rewarded video (for video creatives) |
|
isDesktopWeb |
boolean |
Traffic Type: Desktop Websites |
|
isMobileApp |
boolean |
Traffic Type: Mobile Applications |
|
isMobileWeb |
boolean |
Traffic Type: Mobile Websites |
|
isSmartphone |
boolean |
Traffic Type: Smartphones |
|
isTablet |
boolean |
Traffic Type: Tablets |
|
contentCategories |
array |
Targeting: IAB Categories list |
|
contentCategoriesIsInclude |
boolean |
Targeting: IAB Categories list type (true: whitelist, false: blacklist) |
|
userAgeMin |
integer |
Targeting: Age range from |
|
userAgeMax |
integer |
Targeting: Age range to |
|
connectionTypes |
array |
Targeting: Connection types list |
|
deviceCarrier |
array |
Targeting: List of network operators. |
|
deviceCarrierIsInclude |
boolean |
Targeting: List of network operators type (true: whitelist, false: blacklist) |
|
OS |
array |
Targeting: The operating system of user's device |
|
OSIsInclude |
boolean |
Targeting: The operating system of user's device list type (true: whitelist, false: blacklist) |
|
browser |
array |
Targeting: The user's browsers list |
|
browserIsInclude |
boolean |
Targeting: The user's browsers list type (true: whitelist, false: blacklist) |
|
deviceLanguage |
array |
Targeting: The languages of user's browser. Allowed values: CampaignUpdateRequest::LANGUAGES (ISO-like language codes, e.g. "en", "ru"). |
|
deviceLanguageIsInclude |
boolean |
Targeting: The languages of user's browser list type (true: whitelist, false: blacklist) |
|
spentDailyLimit |
integer |
Daily spent limit |
|
spentTotalLimit |
integer |
Total spent limit |
|
impressionsDailyLimit |
integer |
Daily impressions limit |
|
impressionsTotalLimit |
integer |
Total impressions limit |
|
clicksDailyLimit |
integer |
Daily clicks limit |
|
clicksTotalLimit |
integer |
Total clicks limit |
|
budgetUse |
integer |
Distribution: pacer, fast pacer - Evenly distribution fast - ASAP distribution |
|
geoCountries |
array |
GEO Targeting: countries list. Use GET /geo/countries (response field: iso3). |
|
geoCountriesIsInclude |
boolean |
GEO Targeting: countries list type (true: whitelist, false: blacklist) |
|
geoRegions |
array |
GEO Targeting: regions list. Use GET /geo/regions?selectedCountries=USA,CAN (response field: state_iso2). Note: API may return multiple codes joined with a vertical bar. |
|
geoRegionsIsInclude |
boolean |
GEO Targeting: regions list type (true: whitelist, false: blacklist) |
|
geoCities |
array |
GEO Targeting: cities list. Use GET /geo/cities?selectedCountries=USA&selectedRegions=US-CA (response field: geoname_id). Note: API may return multiple ids joined with a vertical bar. |
|
geoCitiesIsInclude |
boolean |
GEO Targeting: cities list type (true: whitelist, false: blacklist) |
|
frequency |
boolean |
Frequency capping on/off. |
|
frequencyType |
string |
Frequency capping type (user, ip). Required if frequency is on. |
|
frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period". Required if frequency is on. |
|
frequencyPeriod |
integer |
Frequency period (days). Required if frequency is on. |
|
dateStart |
date |
Date start |
|
dateEnd |
date |
Date end |
4.3.2. HTTP Request
URL
POST api/campaigns HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiJwd3pLTlV4RGJSTVg4Wlo3Iiwic3ViIjoiMTEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.DJWBUuKhrDfc1pSzMcOnSkYNwdJOIJOx4vRIctVwjNY
DATA
{
"type": "banner",
"name": "New Campaign #2",
"aDomain": "sanford.com",
"isRewarded": true,
"isDesktopWeb": true,
"isMobileApp": true,
"isMobileWeb": true,
"isSmartphone": true,
"isTablet": true,
"contentCategories": [
"IAB1",
"IAB3"
],
"contentCategoriesIsInclude": false,
"userAgeMin": 18,
"userAgeMax": 50,
"connectionTypes": [
"ethernet",
"cellular_all",
"cellular_3g",
"cellular_4g",
"wifi"
],
"deviceCarrier": [
"ISP Green-Stiedemann",
"ISP Simonis Inc"
],
"deviceCarrierIsInclude": false,
"OS": [
"Android 8.0",
"Android 8.1",
"Android 9.0",
"Android 10.0",
"Android 11.0",
"Android 12.0",
"Android 13.0",
"iOS"
],
"OSIsInclude": true,
"browser": [
"Chrome",
"IE",
"Edge"
],
"browserIsInclude": true,
"deviceLanguage": [
"ab",
"aa"
],
"deviceLanguageIsInclude": true,
"spentDailyLimit": 200,
"spentTotalLimit": 1000,
"impressionsDailyLimit": 100000,
"impressionsTotalLimit": 1000000,
"clicksDailyLimit": 500,
"clicksTotalLimit": 1000,
"budgetUse": "fast",
"geoCountries": [],
"geoCountriesIsInclude": true,
"geoRegions": [],
"geoRegionsIsInclude": true,
"geoCities": [],
"geoCitiesIsInclude": true,
"frequency": true,
"frequencyType": "user",
"frequencyCap": 3,
"frequencyPeriod": 1,
"dateStart": "2025-07-19",
"dateEnd": "2026-05-05"
}
4.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiJwd3pLTlV4RGJSTVg4Wlo3Iiwic3ViIjoiMTEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.DJWBUuKhrDfc1pSzMcOnSkYNwdJOIJOx4vRIctVwjNY' \
-d '{
"type": "banner",
"name": "New Campaign #2",
"aDomain": "sanford.com",
"isRewarded": true,
"isDesktopWeb": true,
"isMobileApp": true,
"isMobileWeb": true,
"isSmartphone": true,
"isTablet": true,
"contentCategories": [
"IAB1",
"IAB3"
],
"contentCategoriesIsInclude": false,
"userAgeMin": 18,
"userAgeMax": 50,
"connectionTypes": [
"ethernet",
"cellular_all",
"cellular_3g",
"cellular_4g",
"wifi"
],
"deviceCarrier": [
"ISP Green-Stiedemann",
"ISP Simonis Inc"
],
"deviceCarrierIsInclude": false,
"OS": [
"Android 8.0",
"Android 8.1",
"Android 9.0",
"Android 10.0",
"Android 11.0",
"Android 12.0",
"Android 13.0",
"iOS"
],
"OSIsInclude": true,
"browser": [
"Chrome",
"IE",
"Edge"
],
"browserIsInclude": true,
"deviceLanguage": [
"ab",
"aa"
],
"deviceLanguageIsInclude": true,
"spentDailyLimit": 200,
"spentTotalLimit": 1000,
"impressionsDailyLimit": 100000,
"impressionsTotalLimit": 1000000,
"clicksDailyLimit": 500,
"clicksTotalLimit": 1000,
"budgetUse": "fast",
"geoCountries": [],
"geoCountriesIsInclude": true,
"geoRegions": [],
"geoRegionsIsInclude": true,
"geoCities": [],
"geoCitiesIsInclude": true,
"frequency": true,
"frequencyType": "user",
"frequencyCap": 3,
"frequencyPeriod": 1,
"dateStart": "2025-07-19",
"dateEnd": "2026-05-05"
}'
4.3.4. Response Body
| Path | Type | Description |
|---|---|---|
data.id |
integer |
Campaign Id |
data.userId |
integer |
User Id |
data.isActive |
boolean |
Campaign On/Off |
data.isRunning |
boolean |
Campaign running status |
data.type |
string |
Campaign type: banner, native, video, audio |
data.name |
string |
Campaign name |
data.isRewarded |
integer |
Rewarded video (for video creatives) |
data.isDesktopWeb |
boolean |
Traffic Type: Desktop Websites |
data.isMobileApp |
boolean |
Traffic Type: Mobile Applications |
data.isMobileWeb |
boolean |
Traffic Type: Mobile Websites |
data.isSmartphone |
boolean |
Traffic Type: Smartphones |
data.isTablet |
boolean |
Traffic Type: Tablets |
data.isCTV |
boolean |
Traffic Type: CTV |
data.isDOOH |
boolean |
Traffic Type: DOOH |
data.aDomain |
integer |
Top level domain |
data.dateStart |
date |
Date start |
data.dateEnd |
date |
Date end |
data.geoCountries |
array |
GEO Targeting: countries list |
data.geoCountriesIsInclude |
boolean |
GEO Targeting: countries list type (true: whitelist, false: blacklist) |
data.geoRegions |
array |
GEO Targeting: regions list |
data.geoRegionsIsInclude |
boolean |
GEO Targeting: regions list type (true: whitelist, false: blacklist) |
data.geoCities |
array |
GEO Targeting: cities list |
data.geoCitiesIsInclude |
boolean |
GEO Targeting: cities list type (true: whitelist, false: blacklist) |
data.contentCategories |
array |
Targeting: IAB Categories list |
data.contentCategoriesIsInclude |
boolean |
Targeting: IAB Categories list type (true: whitelist, false: blacklist) |
data.userAgeMin |
integer |
Targeting: Age range from |
data.userAgeMax |
integer |
Targeting: Age range to |
data.connectionTypes |
array |
Targeting: Connection types list |
data.clickedInventoryCategories |
array |
Сlicked Inventory Categories |
data.deviceCarrier |
array |
Targeting: List of network operators. |
data.deviceCarrierIsInclude |
boolean |
Targeting: List of network operators type (true: whitelist, false: blacklist) |
data.OS |
array |
Targeting: The operating system of user's device |
data.OSIsInclude |
boolean |
Targeting: The operating system of user's device list type (true: whitelist, false: blacklist) |
data.browser |
array |
Targeting: The user's browsers list |
data.browserIsInclude |
boolean |
Targeting: The user's browsers list type (true: whitelist, false: blacklist) |
data.deviceLanguage |
array |
Targeting: The languages of user's browser |
data.deviceLanguageIsInclude |
boolean |
Targeting: The languages of user's browser list type (true: whitelist, false: blacklist) |
data.spentDailyLimit |
integer |
Daily spent limit |
data.spentTotalLimit |
integer |
Total spent limit |
data.impressionsDailyLimit |
integer |
Daily impressions limit |
data.impressionsTotalLimit |
integer |
Total impressions limit |
data.clicksDailyLimit |
integer |
Daily clicks limit |
data.clicksTotalLimit |
integer |
Total clicks limit |
data.budgetUse |
integer |
Distribution: pacer, fast pacer - Evenly distribution fast - ASAP distribution |
data.allSources |
boolean |
Inventory: Use all SSP endpoints |
data.cpm |
float |
cpm |
data.adaptiveCpm |
boolean |
adaptiveCpm |
data.useCpm |
boolean |
use cpm |
data.googleAnalyticsTrackingCode |
string |
Google Analytics tracking code - PUSH Campaigns |
data.dynamicTargeting |
array |
SmartCPC: Dynamic targeting - only for CPC Pricing model |
data.subscriptionAge |
array |
Subscription Age - only for CPC Pricing model |
data.frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data.frequency |
boolean |
Frequency on/off. |
data.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data.frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data.extendedStatus |
string |
Campaign extended status |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
data.deletedAt |
datetime |
Date of deletion |
data.pretarget |
int |
pretarget |
data.pretargets |
array |
pretargets |
data.audiences |
array |
audiences |
4.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"data": {
"id": 6,
"userId": 11,
"isActive": null,
"isRunning": false,
"type": "banner",
"name": "New Campaign #2",
"isRewarded": true,
"isDesktopWeb": true,
"isMobileApp": true,
"isMobileWeb": true,
"isSmartphone": true,
"isTablet": true,
"isCTV": true,
"isDOOH": true,
"aDomain": "sanford.com",
"dateStart": "2025-07-19",
"dateEnd": "2026-05-05",
"geoCountries": [],
"geoCountriesIsInclude": true,
"geoRegions": [],
"geoRegionsIsInclude": true,
"geoCities": [],
"geoCitiesIsInclude": true,
"contentCategories": [],
"contentCategoriesIsInclude": null,
"userAgeMin": 18,
"userAgeMax": 50,
"connectionTypes": [
"ethernet",
"cellular_all",
"cellular_3g",
"cellular_4g",
"wifi"
],
"clickedInventoryCategories": [],
"deviceCarrier": [
"ISP Green-Stiedemann",
"ISP Simonis Inc"
],
"deviceCarrierIsInclude": false,
"OS": [
"Android 8.0",
"Android 8.1",
"Android 9.0",
"Android 10.0",
"Android 11.0",
"Android 12.0",
"Android 13.0",
"iOS"
],
"OSIsInclude": true,
"browser": [
"Chrome",
"IE",
"Edge"
],
"browserIsInclude": true,
"deviceLanguage": [
"ab",
"aa"
],
"deviceLanguageIsInclude": true,
"spentDailyLimit": 200,
"spentTotalLimit": 1000,
"impressionsDailyLimit": 100000,
"impressionsTotalLimit": 1000000,
"clicksDailyLimit": 500,
"clicksTotalLimit": 1000,
"budgetUse": "fast",
"allSources": false,
"cpm": null,
"adaptiveCpm": null,
"useCpm": null,
"googleAnalyticsTrackingCode": null,
"dynamicTargeting": [],
"subscriptionAge": [],
"frequencyType": "user",
"frequency": true,
"frequencyCap": 3,
"frequencyPeriod": 1,
"extendedStatus": "Campaign is not active",
"createdAt": "2026-02-09",
"updatedAt": "2026-02-09",
"deletedAt": null,
"pretarget": null,
"pretargets": [],
"audiences": []
}
}
4.4. Update a Custom Campaign
A `PATCH` request will update campaign.
4.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
name |
string |
Campaign name |
+ |
geoCountries |
array |
GEO Targeting: countries list. Use GET /geo/countries (response field: iso3). |
|
geoCountriesIsInclude |
boolean |
GEO Targeting: countries list type (true: whitelist, false: blacklist) |
|
geoRegions |
array |
GEO Targeting: regions list. Use GET /geo/regions?selectedCountries=USA,CAN (response field: state_iso2). Note: API may return multiple codes joined with a vertical bar. |
|
geoRegionsIsInclude |
boolean |
GEO Targeting: regions list type (true: whitelist, false: blacklist) |
|
geoCities |
array |
GEO Targeting: cities list. Use GET /geo/cities?selectedCountries=USA&selectedRegions=US-CA (response field: geoname_id). Note: API may return multiple ids joined with a vertical bar. |
|
geoCitiesIsInclude |
boolean |
GEO Targeting: cities list type (true: whitelist, false: blacklist) |
|
frequency |
boolean |
Frequency capping on/off. |
|
frequencyType |
string |
Frequency capping type (user, ip). Required if frequency is on. |
|
frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period". Required if frequency is on. |
|
frequencyPeriod |
integer |
Frequency period (days). Required if frequency is on. |
4.4.2. HTTP Request
URL
PATCH api/campaigns/7 HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiJrbW1xS25ZSzJDSHVFOFJEIiwic3ViIjoiMTIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.qCdiD1hqnH0RF2F8N6-zZya5FYR7FG5CUs4Ps673O7I
DATA
{
"name": "Updated Campaign #3",
"geoCountries": [],
"geoCountriesIsInclude": true,
"geoRegions": [],
"geoRegionsIsInclude": true,
"geoCities": [],
"geoCitiesIsInclude": true,
"frequency": true,
"frequencyType": "user",
"frequencyCap": 3,
"frequencyPeriod": 1
}
4.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/7' -i -X PATCH \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiJrbW1xS25ZSzJDSHVFOFJEIiwic3ViIjoiMTIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.qCdiD1hqnH0RF2F8N6-zZya5FYR7FG5CUs4Ps673O7I' \
-d '{
"name": "Updated Campaign #3",
"geoCountries": [],
"geoCountriesIsInclude": true,
"geoRegions": [],
"geoRegionsIsInclude": true,
"geoCities": [],
"geoCitiesIsInclude": true,
"frequency": true,
"frequencyType": "user",
"frequencyCap": 3,
"frequencyPeriod": 1
}'
4.4.4. Response Body
| Path | Type | Description |
|---|---|---|
data.id |
integer |
Campaign Id |
data.userId |
integer |
User Id |
data.isActive |
boolean |
Campaign On/Off |
data.isRunning |
boolean |
Campaign running status |
data.type |
string |
Campaign type: banner, native, video, audio |
data.name |
string |
Campaign name |
data.isRewarded |
integer |
Rewarded video (for video creatives) |
data.isDesktopWeb |
boolean |
Traffic Type: Desktop Websites |
data.isMobileApp |
boolean |
Traffic Type: Mobile Applications |
data.isMobileWeb |
boolean |
Traffic Type: Mobile Websites |
data.isSmartphone |
boolean |
Traffic Type: Smartphones |
data.isTablet |
boolean |
Traffic Type: Tablets |
data.isCTV |
boolean |
Traffic Type: CTV |
data.isDOOH |
boolean |
Traffic Type: DOOH |
data.aDomain |
integer |
Top level domain |
data.dateStart |
date |
Date start |
data.dateEnd |
date |
Date end |
data.geoCountries |
array |
GEO Targeting: countries list |
data.geoCountriesIsInclude |
boolean |
GEO Targeting: countries list type (true: whitelist, false: blacklist) |
data.geoRegions |
array |
GEO Targeting: regions list |
data.geoRegionsIsInclude |
boolean |
GEO Targeting: regions list type (true: whitelist, false: blacklist) |
data.geoCities |
array |
GEO Targeting: cities list |
data.geoCitiesIsInclude |
boolean |
GEO Targeting: cities list type (true: whitelist, false: blacklist) |
data.contentCategories |
array |
Targeting: IAB Categories list |
data.contentCategoriesIsInclude |
boolean |
Targeting: IAB Categories list type (true: whitelist, false: blacklist) |
data.userAgeMin |
integer |
Targeting: Age range from |
data.userAgeMax |
integer |
Targeting: Age range to |
data.connectionTypes |
array |
Targeting: Connection types list |
data.clickedInventoryCategories |
array |
Сlicked Inventory Categories |
data.deviceCarrier |
array |
Targeting: List of network operators. |
data.deviceCarrierIsInclude |
boolean |
Targeting: List of network operators type (true: whitelist, false: blacklist) |
data.OS |
array |
Targeting: The operating system of user's device |
data.OSIsInclude |
boolean |
Targeting: The operating system of user's device list type (true: whitelist, false: blacklist) |
data.browser |
array |
Targeting: The user's browsers list |
data.browserIsInclude |
boolean |
Targeting: The user's browsers list type (true: whitelist, false: blacklist) |
data.deviceLanguage |
array |
Targeting: The languages of user's browser |
data.deviceLanguageIsInclude |
boolean |
Targeting: The languages of user's browser list type (true: whitelist, false: blacklist) |
data.spentDailyLimit |
integer |
Daily spent limit |
data.spentTotalLimit |
integer |
Total spent limit |
data.impressionsDailyLimit |
integer |
Daily impressions limit |
data.impressionsTotalLimit |
integer |
Total impressions limit |
data.clicksDailyLimit |
integer |
Daily clicks limit |
data.clicksTotalLimit |
integer |
Total clicks limit |
data.budgetUse |
integer |
Distribution: pacer, fast pacer - Evenly distribution fast - ASAP distribution |
data.allSources |
boolean |
Inventory: Use all SSP endpoints |
data.cpm |
float |
cpm |
data.adaptiveCpm |
boolean |
adaptiveCpm |
data.useCpm |
boolean |
use cpm |
data.googleAnalyticsTrackingCode |
string |
Google Analytics tracking code - PUSH Campaigns |
data.dynamicTargeting |
array |
SmartCPC: Dynamic targeting - only for CPC Pricing model |
data.subscriptionAge |
array |
Subscription Age - only for CPC Pricing model |
data.frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data.frequency |
boolean |
Frequency on/off. |
data.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data.frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data.extendedStatus |
string |
Campaign extended status |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
data.deletedAt |
datetime |
Date of deletion |
data.pretarget |
int |
pretarget |
data.pretargets |
array |
pretargets |
data.audiences |
array |
audiences |
4.4.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"data": {
"id": 7,
"userId": 12,
"isActive": true,
"isRunning": false,
"type": "native",
"name": "Updated Campaign #3",
"isRewarded": false,
"isDesktopWeb": false,
"isMobileApp": true,
"isMobileWeb": true,
"isSmartphone": true,
"isTablet": true,
"isCTV": true,
"isDOOH": false,
"aDomain": "heaney.biz",
"dateStart": "2024-11-26",
"dateEnd": "2026-08-25",
"geoCountries": [],
"geoCountriesIsInclude": true,
"geoRegions": [],
"geoRegionsIsInclude": true,
"geoCities": [],
"geoCitiesIsInclude": true,
"contentCategories": [],
"contentCategoriesIsInclude": true,
"userAgeMin": 0,
"userAgeMax": 0,
"connectionTypes": [
"wifi"
],
"clickedInventoryCategories": [],
"deviceCarrier": [],
"deviceCarrierIsInclude": true,
"OS": [],
"OSIsInclude": true,
"browser": [],
"browserIsInclude": true,
"deviceLanguage": [],
"deviceLanguageIsInclude": true,
"spentDailyLimit": 414,
"spentTotalLimit": 5165,
"impressionsDailyLimit": 298555,
"impressionsTotalLimit": 617654,
"clicksDailyLimit": 0,
"clicksTotalLimit": 0,
"budgetUse": "fast",
"allSources": true,
"cpm": 0,
"adaptiveCpm": false,
"useCpm": false,
"googleAnalyticsTrackingCode": null,
"dynamicTargeting": [],
"subscriptionAge": [],
"frequencyType": "user",
"frequency": true,
"frequencyCap": 3,
"frequencyPeriod": 1,
"extendedStatus": "Low Balance",
"createdAt": "2026-02-09",
"updatedAt": "2026-02-09",
"deletedAt": null,
"pretarget": null,
"pretargets": [],
"audiences": []
}
}
4.5. Delete a Custom Campaign
A `DELETE` request will delete campaign.
4.5.1. HTTP Request
URL
DELETE api/campaigns/8 HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiJ5MkEzd200NHBvUWFCZ3JyIiwic3ViIjoiMTMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.Y52eMpas7q-F72H7uEKrFjnpszept0NCRw3rUh4goOs Content-type: application/x-www-form-urlencoded
DATA
{}
4.5.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/8' -i -X DELETE \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiJ5MkEzd200NHBvUWFCZ3JyIiwic3ViIjoiMTMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.Y52eMpas7q-F72H7uEKrFjnpszept0NCRw3rUh4goOs' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{}'
4.5.3. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{}
5. Upload media
5.1. Store Image
A `POST` request will upload image
5.1.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
media_assets |
file |
Array of files to upload |
+ |
5.1.2. HTTP Request
URL
POST api/media-asset/upload/image HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjksImV4cCI6MTc3MDY0NTM2OSwibmJmIjoxNzcwNjQxNzY5LCJqdGkiOiJwVEhrWHBZYXRkNmliR2Y2Iiwic3ViIjoiNDAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.WHI_zSmGdL9NBiuVDbyo4wRjY6ql7IkjmsyTHxkWK5c
DATA
{
"media_assets": [
<Binary file>
]
}
5.1.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/media-asset/upload/image' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjksImV4cCI6MTc3MDY0NTM2OSwibmJmIjoxNzcwNjQxNzY5LCJqdGkiOiJwVEhrWHBZYXRkNmliR2Y2Iiwic3ViIjoiNDAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.WHI_zSmGdL9NBiuVDbyo4wRjY6ql7IkjmsyTHxkWK5c' \
-d '{
"media_assets": [
<Binary file>
]
}'
5.1.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.*.id |
integer |
Media id |
data.*.userId |
integer |
User Id |
data.*.mediaType |
string |
Media type (html, image, video) |
data.*.originName |
string |
Original file name |
data.*.name |
string |
Uploaded file name |
data.*.extension |
string |
Uploaded file extension |
data.*.url |
string |
Uploaded file url |
data.*.width |
integer |
Uploaded file image width |
data.*.height |
integer |
Uploaded file image height |
data.*.weight |
integer |
Uploaded file size kB |
data.*.createdAt |
datetime |
Date of creation |
data.*.updatedAt |
datetime |
Date of last modification |
5.1.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "MediaAsset created.",
"data": [
{
"id": 20,
"userId": 40,
"mediaType": "image",
"originName": "test-image.png",
"name": "test-image.png",
"extension": "png",
"url": "\/storage\/test-image.png",
"width": 10,
"height": 10,
"weight": 91,
"createdAt": "2026-02-09 12:56:09",
"updatedAt": "2026-02-09 12:56:09"
}
]
}
5.2. Store video
A `POST` request will upload video
5.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
media_assets |
file |
Array of files to upload |
+ |
5.2.2. HTTP Request
URL
POST api/media-asset/upload/video HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjksImV4cCI6MTc3MDY0NTM2OSwibmJmIjoxNzcwNjQxNzY5LCJqdGkiOiJSVzJYSDVuSm9XcEpuQzJaIiwic3ViIjoiNDEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.HtLbw_5XR5Dx13crs4Sy5lywHuQsvCbtUW32iXwtm9k
DATA
{
"media_assets": [
<Binary file>
]
}
5.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/media-asset/upload/video' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjksImV4cCI6MTc3MDY0NTM2OSwibmJmIjoxNzcwNjQxNzY5LCJqdGkiOiJSVzJYSDVuSm9XcEpuQzJaIiwic3ViIjoiNDEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.HtLbw_5XR5Dx13crs4Sy5lywHuQsvCbtUW32iXwtm9k' \
-d '{
"media_assets": [
<Binary file>
]
}'
5.2.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.*.id |
integer |
Media id |
data.*.userId |
integer |
User Id |
data.*.mediaType |
string |
Media type (html, image, video) |
data.*.originName |
string |
Original file name |
data.*.name |
string |
Uploaded file name |
data.*.extension |
string |
Uploaded file extension |
data.*.url |
string |
Uploaded file url |
data.*.width |
integer |
Uploaded file image width |
data.*.height |
integer |
Uploaded file image height |
data.*.weight |
integer |
Uploaded file size kB |
data.*.mimeType |
string |
Video mime type |
data.*.bitrate |
integer |
Video bitrate |
data.*.duration |
integer |
Video duration (in seconds) |
data.*.durationTime |
string |
Video duration (in text format) |
data.*.playtime |
integer |
Video playtime |
data.*.createdAt |
datetime |
Date of creation |
data.*.updatedAt |
datetime |
Date of last modification |
5.2.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "MediaAsset created.",
"data": [
{
"id": 21,
"userId": 41,
"mediaType": "video",
"originName": "test-video.mp4",
"name": "test-video.mp4",
"extension": "mp4",
"url": "\/storage\/test-video.mp4",
"width": 320,
"height": 240,
"weight": 5312,
"mimeType": "video\/quicktime",
"bitrate": 201493,
"duration": 0,
"durationTime": "00:00:00",
"playtime": "00:00:00",
"createdAt": "2026-02-09 12:56:09",
"updatedAt": "2026-02-09 12:56:09"
}
]
}
5.3. Store HTML
A `POST` request will upload HTML
5.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
media_assets |
file |
Array of files to upload |
+ |
5.3.2. HTTP Request
URL
POST api/media-asset/upload/html HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjksImV4cCI6MTc3MDY0NTM2OSwibmJmIjoxNzcwNjQxNzY5LCJqdGkiOiJIczV6UnFqR0NTa1EzMmxSIiwic3ViIjoiNDIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.-U-tvzEXE945UK8JUpNhSjixN_EOed5df3diYgmF_MI
DATA
{
"media_assets": [
<Binary file>
]
}
5.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/media-asset/upload/html' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjksImV4cCI6MTc3MDY0NTM2OSwibmJmIjoxNzcwNjQxNzY5LCJqdGkiOiJIczV6UnFqR0NTa1EzMmxSIiwic3ViIjoiNDIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.-U-tvzEXE945UK8JUpNhSjixN_EOed5df3diYgmF_MI' \
-d '{
"media_assets": [
<Binary file>
]
}'
5.3.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.*.id |
integer |
Media id |
data.*.userId |
integer |
User Id |
data.*.mediaType |
string |
Media type (html, image, video) |
data.*.originName |
string |
Original file name |
data.*.name |
string |
Uploaded file name |
data.*.extension |
string |
Uploaded file extension |
data.*.url |
string |
Uploaded file url |
data.*.width |
integer |
Uploaded file image width |
data.*.height |
integer |
Uploaded file image height |
data.*.weight |
integer |
Uploaded file size kB |
data.*.createdAt |
datetime |
Date of creation |
data.*.updatedAt |
datetime |
Date of last modification |
5.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "MediaAsset created.",
"data": [
{
"id": 22,
"userId": 42,
"mediaType": "html",
"originName": "test-html.zip",
"name": "TEST\/index.html",
"extension": "zip",
"url": "\/storage\/TEST\/index.html",
"width": 0,
"height": 0,
"weight": 0,
"createdAt": "2026-02-09 12:56:09",
"updatedAt": "2026-02-09 12:56:09"
}
]
}
5.4. Store filter list
A `POST` request will upload video
5.4.1. HTTP Request
URL
POST api/parsefile HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjksImV4cCI6MTc3MDY0NTM2OSwibmJmIjoxNzcwNjQxNzY5LCJqdGkiOiJiemI2UUNkUWVPN2pPUnluIiwic3ViIjoiNDMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.KXZJaOibWGwgdYPPXVqaJgL1mrupDHeqVVkqiVbgzqs
DATA
{
"file": <Binary file>
}
5.4.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/parsefile' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjksImV4cCI6MTc3MDY0NTM2OSwibmJmIjoxNzcwNjQxNzY5LCJqdGkiOiJiemI2UUNkUWVPN2pPUnluIiwic3ViIjoiNDMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.KXZJaOibWGwgdYPPXVqaJgL1mrupDHeqVVkqiVbgzqs' \
-d '{
"file": <Binary file>
}'
5.4.3. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
items |
array |
List array items |
fileName |
string |
File name |
countItems |
integer |
Count items |
5.4.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "success",
"items": [
"test.com"
],
"fileName": "1770641769_test-filter.csv",
"countItems": 0
}
6. Creatives
6.1. Creatives list
A `GET` request will return a list of an creatives.
6.1.1. HTTP Request
URL
GET api/creatives HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiJNUENzaEF2bTNjMHpnZEZzIiwic3ViIjoiMjMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.tDzmr6zjec-TP005rQtoIIhq5XtmZIg0v7qp0pKBQXE
DATA
{}
6.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiJNUENzaEF2bTNjMHpnZEZzIiwic3ViIjoiMjMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.tDzmr6zjec-TP005rQtoIIhq5XtmZIg0v7qp0pKBQXE' \
-d '{}'
6.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.id |
integer |
Creative Id |
data.*.userId |
integer |
User Id |
data.*.isActive |
boolean |
Creative status |
data.*.approved |
string |
Creative approval status (approved, pending, disapproved) |
data.*.creativeType |
string |
Creative type: banner, native, video, audio |
data.*.name |
string |
Creative name |
data.*.frequencyType |
string |
Identify the user to limit the number of the ad shows for the specific user (user, ip). Required if frequency is on. |
data.*.frequency |
string |
Frequency on/off |
data.*.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period". Required if frequency is on. |
data.*.frequencyPeriod |
integer |
Frequency period in days (min-1,max-3). Required if frequency is on. |
data.*.bidPrice |
float |
CPM |
data.*.autoresize |
boolean |
autoresize |
data.*.adaptiveCpm |
bool |
adaptiveCpm |
data.*.size |
string |
Image width and height |
data.*.weight |
string |
File size |
data.*.thumbnail |
string |
Thumbnail URL |
data.*.folderId |
string |
Folder Id |
data.*.createdAt |
datetime |
Date of creation |
data.*.updatedAt |
datetime |
Date of last modification |
data.*.pendingAt |
datetime |
Date of pending start |
data.*.deletedAt |
datetime |
Date of deletion |
data.*.media.id |
integer |
Media Id |
data.*.media.userId |
string |
User Id |
data.*.media.mediaType |
string |
Media type (html, image, video) |
data.*.media.originName |
string |
Uploaded file original name |
data.*.media.name |
string |
Uploaded file name |
data.*.media.extension |
string |
Uploaded file extention |
data.*.media.url |
string |
Uploaded file URL |
data.*.media.width |
integer |
Uploaded file image width |
data.*.media.height |
integer |
Uploaded file image height |
data.*.media.weight |
integer |
Uploaded file size |
data.*.relation.banner.apiFramework |
integer |
Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID |
data.*.relation.banner.admBody |
string |
Third-party tag |
data.*.relation.banner.bannerType |
String |
Banner type (banner,inBannerVideo) |
data.*.relation.banner.clickUrl |
string |
Click URL |
data.*.relation.banner.width |
integer |
Banner width |
data.*.relation.banner.height |
integer |
Banner height |
data.*.relation.banner.childrenCreative |
string |
childrenCreative |
data.*.relation.banner.statusChildrenCreative |
string |
statusChildrenCreative |
data.*.relation.banner.main |
boolean |
Main creative |
data.*.status |
string |
Status |
data.*.relation.native.smallImageId |
integer |
Logo media id |
data.*.relation.native.largeImageId |
integer |
Image media id |
data.*.relation.native.smallImage.id |
integer |
Logo media id |
data.*.relation.native.smallImage.folderId |
string |
Folder id |
data.*.relation.native.smallImage.userId |
integer |
User id |
data.*.relation.native.smallImage.width |
string |
width |
data.*.relation.native.smallImage.height |
string |
height |
data.*.relation.native.smallImage.name |
string |
name |
data.*.relation.native.smallImage.url |
string |
url |
data.*.relation.native.smallImage.href |
string |
href |
data.*.relation.native.smallImage.originName |
string |
originName |
data.*.relation.native.smallImage.path |
string |
path |
data.*.relation.native.smallImage.extension |
string |
extension |
data.*.relation.native.smallImage.mediaType |
string |
mediaType |
data.*.relation.native.smallImage.createdAt |
string |
createdAt |
data.*.relation.native.smallImage.updatedAt |
string |
updatedAt |
data.*.relation.native.smallImage.deletedAt |
string |
updatedAt |
data.*.relation.native.smallImage.weight |
string |
weight |
data.*.relation.native.largeImage.id |
integer |
Image media id |
data.*.relation.native.largeImage.folderId |
string |
Folder id |
data.*.relation.native.largeImage.userId |
integer |
User id |
data.*.relation.native.largeImage.width |
string |
width |
data.*.relation.native.largeImage.height |
string |
height |
data.*.relation.native.largeImage.name |
string |
name |
data.*.relation.native.largeImage.url |
string |
url |
data.*.relation.native.largeImage.href |
string |
href |
data.*.relation.native.largeImage.originName |
string |
originName |
data.*.relation.native.largeImage.path |
string |
path |
data.*.relation.native.largeImage.extension |
string |
extension |
data.*.relation.native.largeImage.mediaType |
string |
mediaType |
data.*.relation.native.largeImage.createdAt |
string |
createdAt |
data.*.relation.native.largeImage.updatedAt |
string |
updatedAt |
data.*.relation.native.largeImage.deletedAt |
string |
updatedAt |
data.*.relation.native.largeImage.weight |
string |
weight |
data.*.relation.native.assetDataDesc |
string |
Ad text |
data.*.relation.native.assetTitle |
string |
Ad title |
data.*.relation.native.assetDataSponsored |
string |
Brand name |
data.*.relation.native.assetCtaText |
string |
CTA button text |
data.*.relation.native.clickUrl |
string |
Click URL |
data.*.relation.native.displayUrl |
string |
Display URL |
data.*.relation.native.impTracker |
string |
Impression Tracker |
data.*.relation.video.admBody |
string |
Third-party tag |
data.*.relation.video.mimeType |
array |
MIME types ("[video/mpeg, video/mp4, video/quicktime, video/x-flv, application/x-shockwave-flash, application/javascript, video/x-ms-wmv, video/webm]") |
data.*.relation.video.width |
integer |
Video width |
data.*.relation.video.height |
integer |
Video height |
data.*.relation.video.duration |
integer |
Video duration |
data.*.relation.video.clickUrl |
string |
Click URL |
data.*.relation.video.partyTagFormat |
integer |
3 party tag format (0-NO VPAID, 1-VPAID 1, 2-VPAID 2, 3-ALL VPAID) |
data.*.relation.video.apiFramework |
integer |
apiFramework |
data.*.relation.video.autoStoreEndCard |
boolean |
autoStoreEndCard |
data.*.relation.video.autoStoreEndCardOption |
string |
autoStoreEndCardOption |
data.*.relation.video.politicalLabelEnabled |
boolean |
Political label enabled flag |
data.*.relation.video.politicalTooltip |
array |
Political label tooltip data {text, link, position} |
meta.pagination.total |
integer |
Pagination: total items count |
meta.pagination.count |
integer |
Pagination: page items count |
meta.pagination.per_page |
integer |
Pagination: items per page |
meta.pagination.current_page |
integer |
Pagination: current page number |
meta.pagination.total_pages |
integer |
Pagination: total pages count |
meta.pagination.links |
object |
Pagination links |
6.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"data": [
{
"id": 8,
"userId": 23,
"isActive": 0,
"approved": "pending",
"creativeType": "banner",
"name": "Banner creative #1",
"frequencyType": "ip",
"frequency": 0,
"frequencyCap": 4,
"frequencyPeriod": 1,
"bidPrice": "16.75",
"autoresize": 0,
"adaptiveCpm": false,
"size": "640 x 454",
"weight": "0.37 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:05",
"updatedAt": "2026-02-09 12:56:05",
"pendingAt": null,
"deletedAt": null,
"media": {
"id": 8,
"userId": 23,
"mediaType": "image",
"originName": "richmedia.zip",
"name": "23_fa83edc3c50473fc4f3700478f8ad2f7\/index.html",
"extension": "zip",
"url": "https:\/\/www.harber.com\/ex-autem-quia-officiis-nostrum-maiores-iste\/23_fa83edc3c50473fc4f3700478f8ad2f7\/index.html",
"width": 227,
"height": 295,
"weight": 388929
},
"relation": {
"banner": {
"apiFramework": 0,
"admBody": "<a target=\"_blank\" href=\"http:\/\/www.mcglynn.com\/aut-qui-et-qui-et.html\" ><img src=\"http:\/\/monahan.com\/architecto-odit-ut-beatae-sint-officia\/10.jpg\"\/><\/a>",
"bannerType": "banner",
"clickUrl": "https:\/\/www.heller.com\/sint-et-cum-numquam-quam-nihil-sed",
"width": 640,
"height": 454,
"childrenCreative": null,
"statusChildrenCreative": [],
"main": 1
}
},
"status": "pending"
},
{
"id": 9,
"userId": 23,
"isActive": 1,
"approved": "pending",
"creativeType": "native",
"name": "Native creative #1",
"frequencyType": "ip",
"frequency": 0,
"frequencyCap": 0,
"frequencyPeriod": 1,
"bidPrice": "1.20",
"autoresize": 0,
"adaptiveCpm": false,
"size": "238 x 122",
"weight": "-",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:05",
"updatedAt": "2026-02-09 12:56:05",
"pendingAt": null,
"deletedAt": null,
"media": {
"id": 9,
"userId": 23,
"mediaType": "image",
"originName": "image.jpg",
"name": "23_fa83edc3c50473fc4f3700478f8ad2f7.jpg",
"extension": "jpg",
"url": "http:\/\/wolf.net\/eius-laudantium-dolores-assumenda-maiores-dolores.html\/23_fa83edc3c50473fc4f3700478f8ad2f7.jpg",
"width": 138,
"height": 453,
"weight": 151799
},
"relation": {
"native": {
"smallImageId": 9,
"largeImageId": 10,
"smallImage": {
"id": 9,
"folderId": null,
"userId": 23,
"width": 138,
"height": 453,
"name": "23_fa83edc3c50473fc4f3700478f8ad2f7.jpg",
"url": "http:\/\/wolf.net\/eius-laudantium-dolores-assumenda-maiores-dolores.html\/23_fa83edc3c50473fc4f3700478f8ad2f7.jpg",
"href": null,
"originName": "image.jpg",
"path": null,
"extension": "jpg",
"mediaType": "image",
"createdAt": "2026-02-09T12:56:05.000000Z",
"updatedAt": "2026-02-09T12:56:05.000000Z",
"deletedAt": null,
"weight": 151799
},
"largeImage": {
"id": 10,
"folderId": null,
"userId": 23,
"width": 238,
"height": 122,
"name": "23_fa83edc3c50473fc4f3700478f8ad2f7.mp4",
"url": "http:\/\/schimmel.com\/explicabo-velit-qui-molestiae\/23_fa83edc3c50473fc4f3700478f8ad2f7.mp4",
"href": null,
"originName": "video.mp4",
"path": null,
"extension": "mp4",
"mediaType": "image",
"createdAt": "2026-02-09T12:56:05.000000Z",
"updatedAt": "2026-02-09T12:56:05.000000Z",
"deletedAt": null,
"weight": 163346
},
"assetDataDesc": "Aut quia illo ipsa.",
"assetTitle": "Et corrupti voluptas et.",
"assetDataSponsored": "Expedita impedit laborum voluptas et ipsum.",
"assetCtaText": "Sunt quisquam nisi quia.",
"clickUrl": "http:\/\/kunze.info\/doloremque-facilis-aut-iste-tempora-architecto-aut-assumenda",
"displayUrl": "http:\/\/www.crona.org\/debitis-eos-dolor-aliquid-aut-magni-excepturi",
"impTracker": null
}
},
"status": "pending"
},
{
"id": 10,
"userId": 23,
"isActive": 0,
"approved": "pending",
"creativeType": "video",
"name": "Video creative #1",
"frequencyType": "ip",
"frequency": 0,
"frequencyCap": 1,
"frequencyPeriod": 1,
"bidPrice": "8.56",
"autoresize": 0,
"adaptiveCpm": false,
"size": "502 x 297",
"weight": "0.28 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:05",
"updatedAt": "2026-02-09 12:56:05",
"pendingAt": null,
"deletedAt": null,
"media": {
"id": 11,
"userId": 23,
"mediaType": "video",
"originName": "video.mp4",
"name": "23_fa83edc3c50473fc4f3700478f8ad2f7.mp4",
"extension": "mp4",
"url": "http:\/\/www.brekke.com\/et-quia-officia-minus-temporibus-ducimus\/23_fa83edc3c50473fc4f3700478f8ad2f7.mp4",
"width": 402,
"height": 411,
"weight": 298449
},
"relation": {
"video": {
"admBody": " <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<VAST version=\"2.0\">\n<Ad id=\"[HASH]\">\n <InLine>\n <AdSystem>DSP<\/AdSystem>\n <AdTitle>Smartyads<\/AdTitle>\n <Description>RTB<\/Description>\n <Creatives>\n <Creative AdID=\"572\">\n <Linear>\n <Duration>00:00:09<\/Duration>\n <VideoClicks>\n <ClickThrough><![CDATA[https:\/\/picsum.photos\/]]><\/ClickThrough>\n <\/VideoClicks>\n <MediaFiles>\n <MediaFile delivery=\"streaming\" type=\"video\/quicktime\" width=\"640\" height=\"360\"><![CDATA[http:\/\/72.mp4]]><\/MediaFile>\n <\/MediaFiles>\n <\/Linear>\n <\/Creative>\n <\/Creatives>\n <\/InLine>\n<\/Ad>\n<\/VAST>",
"mimeType": [
"application\/x-shockwave-flash"
],
"width": 502,
"height": 297,
"duration": 4,
"clickUrl": "http:\/\/lehner.com\/rerum-autem-laborum-ut-delectus-ut.html",
"partyTagFormat": 0,
"apiFramework": null,
"autoStoreEndCard": 0,
"autoStoreEndCardOption": "appStore",
"politicalLabelEnabled": false,
"politicalTooltip": []
}
},
"status": "pending"
}
],
"meta": {
"pagination": {
"total": 3,
"count": 3,
"per_page": 15,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
6.2. Get by ID (Banner creative)
A `GET` request with a path parameter of the id will return the creative with that id.
6.2.1. HTTP Request
URL
GET api/creatives/11 HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiJSbmxSNER2TmR4MnoxUWxRIiwic3ViIjoiMjQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.3d7chtBfOJjIpyXho_bNNlQ-Agwah8ju061VUCaOQUw
DATA
{}
6.2.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives/11' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiJSbmxSNER2TmR4MnoxUWxRIiwic3ViIjoiMjQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.3d7chtBfOJjIpyXho_bNNlQ-Agwah8ju061VUCaOQUw' \
-d '{}'
6.2.3. Response Body
| Path | Type | Description |
|---|---|---|
data.id |
integer |
Creative Id |
data.userId |
integer |
User Id |
data.isActive |
boolean |
Creative status |
data.approved |
string |
Creative approval status (approved, pending, disapproved) |
data.creativeType |
string |
Creative type: banner, native, video, audio |
data.name |
string |
Creative name |
data.frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data.frequency |
boolean |
Frequency on/off. |
data.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data.frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data.bidPrice |
float |
CPM |
data.autoresize |
boolean |
autoresize |
data.adaptiveCpm |
bool |
adaptiveCpm |
data.size |
string |
Image width and height |
data.weight |
string |
File size |
data.thumbnail |
string |
Thumbnail URL |
data.folderId |
string |
Folder Id |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
data.pendingAt |
datetime |
Date of pending start |
data.deletedAt |
datetime |
Date of deletion |
data.media.id |
integer |
Media Id |
data.media.userId |
string |
User Id |
data.media.mediaType |
string |
Media type (html, image, video) |
data.media.originName |
string |
Uploaded file original name |
data.media.name |
string |
Uploaded file name |
data.media.extension |
string |
Uploaded file extention |
data.media.url |
string |
Uploaded file URL |
data.media.width |
integer |
Uploaded file image width |
data.media.height |
integer |
Uploaded file image height |
data.media.weight |
integer |
Uploaded file size |
data.media.modifiedUrl |
any |
|
data.relation.banner.apiFramework |
integer |
Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID |
data.relation.banner.admBody |
string |
Third-party tag |
data.relation.banner.bannerType |
String |
Banner type (banner,inBannerVideo) |
data.relation.banner.clickUrl |
string |
Click URL |
data.relation.banner.width |
integer |
Banner width |
data.relation.banner.height |
integer |
Banner height |
data.sizes |
string |
size |
6.2.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"data": {
"id": 11,
"userId": 24,
"isActive": 1,
"approved": "pending",
"creativeType": "banner",
"name": "Banner creative #2",
"frequencyType": "user",
"frequency": 0,
"frequencyCap": 2,
"frequencyPeriod": 1,
"bidPrice": "18.64",
"autoresize": 0,
"adaptiveCpm": false,
"size": "509 x 391",
"weight": "0.45 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:05",
"updatedAt": "2026-02-09 12:56:05",
"pendingAt": null,
"deletedAt": null,
"relation": {
"banner": {
"apiFramework": 0,
"admBody": "<a target=\"_blank\" href=\"http:\/\/smith.com\/cum-voluptas-et-aut\" ><img src=\"http:\/\/www.windler.biz\/est-exercitationem-aut-sequi-aspernatur\/10.jpg\"\/><\/a>",
"bannerType": "banner",
"clickUrl": "http:\/\/www.dicki.biz\/unde-et-maxime-deleniti",
"width": 509,
"height": 391
}
},
"sizes": []
}
}
6.3. Get by ID (Native creative)
A `GET` request with a path parameter of the id will return the creative with that id.
6.3.1. HTTP Request
URL
GET api/creatives/12 HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiI2dXl4TlY0bWdrN1ZkRHl3Iiwic3ViIjoiMjUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.JUhnS_Twivf6hMQ1H8EzME1vaUuLFwSVAaH46FGZy0Y
DATA
{}
6.3.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives/12' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiI2dXl4TlY0bWdrN1ZkRHl3Iiwic3ViIjoiMjUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.JUhnS_Twivf6hMQ1H8EzME1vaUuLFwSVAaH46FGZy0Y' \
-d '{}'
6.3.3. Response Body
| Path | Type | Description |
|---|---|---|
data.id |
integer |
Creative Id |
data.userId |
integer |
User Id |
data.isActive |
boolean |
Creative status |
data.approved |
string |
Creative approval status (approved, pending, disapproved) |
data.creativeType |
string |
Creative type: banner, native, video, audio |
data.name |
string |
Creative name |
data.frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data.frequency |
boolean |
Frequency on/off. |
data.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data.frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data.bidPrice |
float |
CPM |
data.autoresize |
boolean |
autoresize |
data.adaptiveCpm |
bool |
adaptiveCpm |
data.size |
string |
Image width and height |
data.weight |
string |
File size |
data.thumbnail |
string |
Thumbnail URL |
data.folderId |
string |
Folder Id |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
data.pendingAt |
datetime |
Date of pending start |
data.deletedAt |
datetime |
Date of deletion |
data.media.id |
integer |
Media Id |
data.media.userId |
string |
User Id |
data.media.mediaType |
string |
Media type (html, image, video) |
data.media.originName |
string |
Uploaded file original name |
data.media.name |
string |
Uploaded file name |
data.media.extension |
string |
Uploaded file extention |
data.media.url |
string |
Uploaded file URL |
data.media.width |
integer |
Uploaded file image width |
data.media.height |
integer |
Uploaded file image height |
data.media.weight |
integer |
Uploaded file size |
data.media.modifiedUrl |
any |
|
data.relation.native.smallImageId |
integer |
Logo media id |
data.relation.native.largeImageId |
integer |
Image media id |
data.relation.native.smallImage.id |
integer |
Logo media id |
data.relation.native.smallImage.folderId |
string |
Folder id |
data.relation.native.smallImage.userId |
integer |
User id |
data.relation.native.smallImage.width |
string |
width |
data.relation.native.smallImage.height |
string |
height |
data.relation.native.smallImage.name |
string |
name |
data.relation.native.smallImage.url |
string |
url |
data.relation.native.smallImage.href |
string |
href |
data.relation.native.smallImage.originName |
string |
originName |
data.relation.native.smallImage.path |
string |
path |
data.relation.native.smallImage.extension |
string |
extension |
data.relation.native.smallImage.mediaType |
string |
mediaType |
data.relation.native.smallImage.createdAt |
string |
createdAt |
data.relation.native.smallImage.updatedAt |
string |
updatedAt |
data.relation.native.smallImage.deletedAt |
string |
updatedAt |
data.relation.native.smallImage.weight |
string |
weight |
data.relation.native.largeImage.id |
integer |
Image media id |
data.relation.native.largeImage.folderId |
string |
Folder id |
data.relation.native.largeImage.userId |
integer |
User id |
data.relation.native.largeImage.width |
string |
width |
data.relation.native.largeImage.height |
string |
height |
data.relation.native.largeImage.name |
string |
name |
data.relation.native.largeImage.url |
string |
url |
data.relation.native.largeImage.href |
string |
href |
data.relation.native.largeImage.originName |
string |
originName |
data.relation.native.largeImage.path |
string |
path |
data.relation.native.largeImage.extension |
string |
extension |
data.relation.native.largeImage.mediaType |
string |
mediaType |
data.relation.native.largeImage.createdAt |
string |
createdAt |
data.relation.native.largeImage.updatedAt |
string |
updatedAt |
data.relation.native.largeImage.deletedAt |
string |
updatedAt |
data.relation.native.largeImage.weight |
string |
weight |
data.relation.native.assetDataDesc |
string |
Ad text |
data.relation.native.assetTitle |
string |
Ad title |
data.relation.native.assetDataSponsored |
string |
Brand name |
data.relation.native.assetCtaText |
string |
CTA button text |
data.relation.native.clickUrl |
string |
Click URL |
data.relation.native.displayUrl |
string |
Display URL |
data.relation.native.impTracker |
string |
Impression tracker |
data.sizes |
string |
size |
6.3.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"data": {
"id": 12,
"userId": 25,
"isActive": 1,
"approved": "pending",
"creativeType": "native",
"name": "Native creative #2",
"frequencyType": "user",
"frequency": 0,
"frequencyCap": 6,
"frequencyPeriod": 1,
"bidPrice": "18.94",
"autoresize": 0,
"adaptiveCpm": false,
"size": "263 x 499",
"weight": "-",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:05",
"updatedAt": "2026-02-09 12:56:05",
"pendingAt": null,
"deletedAt": null,
"relation": {
"native": {
"smallImageId": 13,
"largeImageId": 14,
"smallImage": {
"id": 13,
"folderId": null,
"userId": 25,
"width": 316,
"height": 167,
"name": "25_fa83edc3c50473fc4f3700478f8ad2f7.jpg",
"url": "http:\/\/bergnaum.info\/rerum-numquam-asperiores-omnis\/25_fa83edc3c50473fc4f3700478f8ad2f7.jpg",
"href": null,
"originName": "image.jpg",
"path": null,
"extension": "jpg",
"mediaType": "image",
"createdAt": "2026-02-09T12:56:05.000000Z",
"updatedAt": "2026-02-09T12:56:05.000000Z",
"deletedAt": null,
"weight": 420107
},
"largeImage": {
"id": 14,
"folderId": null,
"userId": 25,
"width": 263,
"height": 499,
"name": "25_fa83edc3c50473fc4f3700478f8ad2f7.jpg",
"url": "https:\/\/lakin.com\/veniam-doloremque-repudiandae-atque-dolorum.html\/25_fa83edc3c50473fc4f3700478f8ad2f7.jpg",
"href": null,
"originName": "image.jpg",
"path": null,
"extension": "jpg",
"mediaType": "image",
"createdAt": "2026-02-09T12:56:05.000000Z",
"updatedAt": "2026-02-09T12:56:05.000000Z",
"deletedAt": null,
"weight": 486133
},
"assetDataDesc": "Aut minima minus illum.",
"assetTitle": "Velit in ipsa quis.",
"assetDataSponsored": "Quibusdam ad et laborum corporis quo.",
"assetCtaText": "Rerum beatae sed id.",
"clickUrl": "http:\/\/beier.com\/vel-qui-consectetur-modi-iusto",
"displayUrl": "https:\/\/schoen.org\/error-consequatur-corrupti-ut-culpa-at-natus.html",
"impTracker": null
}
},
"sizes": []
}
}
6.4. Get by ID (Video creative)
A `GET` request with a path parameter of the id will return the creative with that id.
6.4.1. HTTP Request
URL
GET api/creatives/13 HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiJucDVaS2p3em82cmR5RVVrIiwic3ViIjoiMjYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.FjUPkO5j681UxKVrDKEn0GIcWluEiEzJS-C-6uHGxto
DATA
{}
6.4.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives/13' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiJucDVaS2p3em82cmR5RVVrIiwic3ViIjoiMjYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.FjUPkO5j681UxKVrDKEn0GIcWluEiEzJS-C-6uHGxto' \
-d '{}'
6.4.3. Response Body
| Path | Type | Description |
|---|---|---|
data.id |
integer |
Creative Id |
data.userId |
integer |
User Id |
data.isActive |
boolean |
Creative status |
data.approved |
string |
Creative approval status (approved, pending, disapproved) |
data.creativeType |
string |
Creative type: banner, native, video, audio |
data.name |
string |
Creative name |
data.frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data.frequency |
boolean |
Frequency on/off. |
data.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data.frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data.bidPrice |
float |
CPM |
data.autoresize |
boolean |
autoresize |
data.adaptiveCpm |
bool |
adaptiveCpm |
data.size |
string |
Image width and height |
data.weight |
string |
File size |
data.thumbnail |
string |
Thumbnail URL |
data.folderId |
string |
Folder Id |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
data.pendingAt |
datetime |
Date of pending start |
data.deletedAt |
datetime |
Date of deletion |
data.media.id |
integer |
Media Id |
data.media.userId |
string |
User Id |
data.media.mediaType |
string |
Media type (html, image, video) |
data.media.originName |
string |
Uploaded file original name |
data.media.name |
string |
Uploaded file name |
data.media.extension |
string |
Uploaded file extention |
data.media.url |
string |
Uploaded file URL |
data.media.width |
integer |
Uploaded file image width |
data.media.height |
integer |
Uploaded file image height |
data.media.weight |
integer |
Uploaded file size |
data.media.modifiedUrl |
any |
|
data.relation.video.admBody |
string |
Third-party tag |
data.relation.video.mimeType |
array |
MIME types |
data.relation.video.width |
integer |
Video width |
data.relation.video.height |
integer |
Video height |
data.relation.video.duration |
integer |
Video duration |
data.relation.video.clickUrl |
string |
Click URL |
data.relation.video.partyTagFormat |
integer |
3 party tag format (0-NO VPAID, 1-VPAID 1, 2-VPAID 2, 3-ALL VPAID) |
data.relation.video.apiFramework |
integer |
apiFramework |
data.relation.video.autoStoreEndCard |
boolean |
autoStoreEndCard |
data.relation.video.autoStoreEndCardOption |
string |
autoStoreEndCardOption |
data.relation.video.politicalLabelEnabled |
boolean |
Political label enabled flag |
data.relation.video.politicalTooltip |
array |
Political label tooltip data {text, link, position} |
data.sizes |
string |
size |
6.4.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"data": {
"id": 13,
"userId": 26,
"isActive": 1,
"approved": "pending",
"creativeType": "video",
"name": "Video creative #2",
"frequencyType": "ip",
"frequency": 0,
"frequencyCap": 9,
"frequencyPeriod": 1,
"bidPrice": "17.08",
"autoresize": 0,
"adaptiveCpm": false,
"size": "324 x 222",
"weight": "0.27 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:05",
"updatedAt": "2026-02-09 12:56:05",
"pendingAt": null,
"deletedAt": null,
"relation": {
"video": {
"admBody": " <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<VAST version=\"2.0\">\n<Ad id=\"[HASH]\">\n <InLine>\n <AdSystem>DSP<\/AdSystem>\n <AdTitle>Smartyads<\/AdTitle>\n <Description>RTB<\/Description>\n <Creatives>\n <Creative AdID=\"572\">\n <Linear>\n <Duration>00:00:09<\/Duration>\n <VideoClicks>\n <ClickThrough><![CDATA[https:\/\/picsum.photos\/]]><\/ClickThrough>\n <\/VideoClicks>\n <MediaFiles>\n <MediaFile delivery=\"streaming\" type=\"video\/quicktime\" width=\"640\" height=\"360\"><![CDATA[http:\/\/72.mp4]]><\/MediaFile>\n <\/MediaFiles>\n <\/Linear>\n <\/Creative>\n <\/Creatives>\n <\/InLine>\n<\/Ad>\n<\/VAST>",
"mimeType": [
"video\/x-flv"
],
"width": 324,
"height": 222,
"duration": 6,
"clickUrl": "https:\/\/www.larson.com\/ducimus-minus-vitae-veritatis-velit-reprehenderit-eos-sunt",
"partyTagFormat": 0,
"apiFramework": null,
"autoStoreEndCard": 0,
"autoStoreEndCardOption": "appStore",
"politicalLabelEnabled": false,
"politicalTooltip": []
}
},
"sizes": []
}
}
6.5. Create a Custom Banner Creative with Third-party tag
A `POST` request will create new creative.
6.5.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
name |
string |
Creative name |
+ |
creativeType |
string |
Creative type: banner, native, video, audio |
+ |
frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
|
frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
|
frequency |
boolean |
Frequency on/off. |
|
frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
|
bidPrice |
float |
CPM |
+ |
banner.apiFramework |
integer |
Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID |
|
banner.width |
integer |
Banner width |
+ |
banner.height |
integer |
Banner height |
+ |
banner.admBody |
string |
Third-party tag |
+ |
categories.IAB1 |
array |
Categories (required if subCategories is empty) |
+ |
subCategories.IAB1 |
array |
SubCategories (required if categories is empty) |
+ |
6.5.2. HTTP Request
URL
POST api/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiJ0ZG5od1pMdllEdHdBM3VFIiwic3ViIjoiMjciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.wGuYAMWMs4W7n5Y5asQsFQxwX_Z4iOdJKtTe7AbumM8
DATA
{
"name": "Banner creative #3",
"creativeType": "banner",
"frequencyType": "user",
"frequencyCap": 1,
"frequency": 1,
"frequencyPeriod": 1,
"bidPrice": 0.5,
"banner": {
"apiFramework": 0,
"width": 320,
"height": 200,
"admBody": "<iframe src=\"url.to.script\"><\/iframe>"
},
"categories": {
"IAB1": true
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
}
}
6.5.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiJ0ZG5od1pMdllEdHdBM3VFIiwic3ViIjoiMjciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.wGuYAMWMs4W7n5Y5asQsFQxwX_Z4iOdJKtTe7AbumM8' \
-d '{
"name": "Banner creative #3",
"creativeType": "banner",
"frequencyType": "user",
"frequencyCap": 1,
"frequency": 1,
"frequencyPeriod": 1,
"bidPrice": 0.5,
"banner": {
"apiFramework": 0,
"width": 320,
"height": 200,
"admBody": "<iframe src=\"url.to.script\"><\/iframe>"
},
"categories": {
"IAB1": true
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
}
}'
6.5.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Creative Id |
data.userId |
integer |
User Id |
data.isActive |
boolean |
Creative status |
data.approved |
string |
Creative approval status (approved, pending, disapproved) |
data.creativeType |
string |
Creative type: banner, native, video, audio |
data.name |
string |
Creative name |
data.frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data.frequency |
boolean |
Frequency on/off. |
data.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data.frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data.bidPrice |
float |
CPM |
data.autoresize |
boolean |
autoresize |
data.adaptiveCpm |
bool |
adaptiveCpm |
data.size |
string |
Image width and height |
data.weight |
string |
File size |
data.thumbnail |
string |
Thumbnail URL |
data.folderId |
string |
Folder Id |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
data.pendingAt |
datetime |
Date of pending start |
data.deletedAt |
datetime |
Date of deletion |
data.relation.banner.apiFramework |
integer |
Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID |
data.relation.banner.admBody |
string |
Third-party tag |
data.relation.banner.bannerType |
String |
Banner type (banner,inBannerVideo) |
data.relation.banner.clickUrl |
string |
Click URL |
data.relation.banner.width |
integer |
Banner width |
data.relation.banner.height |
integer |
Banner height |
data.sizes |
string |
size |
6.5.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "Creative created.",
"data": {
"id": 14,
"userId": 27,
"isActive": null,
"approved": null,
"creativeType": "banner",
"name": "Banner creative #3",
"frequencyType": "user",
"frequency": 1,
"frequencyCap": 1,
"frequencyPeriod": 1,
"bidPrice": 0.5,
"autoresize": null,
"adaptiveCpm": null,
"size": "320 x 200",
"weight": "-",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:05",
"updatedAt": "2026-02-09 12:56:05",
"pendingAt": null,
"deletedAt": null,
"relation": {
"banner": {
"apiFramework": 0,
"admBody": "<iframe src=\"url.to.script\"><\/iframe>",
"bannerType": null,
"clickUrl": null,
"width": 320,
"height": 200
}
},
"sizes": []
}
}
6.6. Create a Custom Banner Creative with Media image
A `POST` request will create new creative.
6.6.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
name |
string |
Creative name |
+ |
creativeType |
string |
Creative type: banner, native, video, audio |
+ |
mediaId |
array |
Media image Id |
+ |
frequency |
boolean |
Frequency on/off. |
|
bidPrice |
float |
CPM |
+ |
banner.apiFramework |
integer |
Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID |
|
banner.width |
integer |
Banner width |
+ |
banner.height |
integer |
Banner height |
+ |
banner.clickUrl |
string |
Click URL |
+ |
subCategories.IAB1 |
array |
SubCategories (required if categories is empty) |
+ |
categories.IAB1 |
array |
Categories (required if subCategories is empty) |
+ |
6.6.2. HTTP Request
URL
POST api/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiJmZk1sejN0U2wwaUlEdTBqIiwic3ViIjoiMjgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.qPoXOHr8d18qv1ISpvEhVNEN-9oN19UOv-DHd0jtkq0
DATA
{
"name": "Banner creative #4",
"creativeType": "banner",
"mediaId": 16,
"frequency": 0,
"bidPrice": 0.5,
"banner": {
"apiFramework": 0,
"width": 320,
"height": 200,
"clickUrl": "http:\/\/www.lehner.com\/"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}
6.6.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiJmZk1sejN0U2wwaUlEdTBqIiwic3ViIjoiMjgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.qPoXOHr8d18qv1ISpvEhVNEN-9oN19UOv-DHd0jtkq0' \
-d '{
"name": "Banner creative #4",
"creativeType": "banner",
"mediaId": 16,
"frequency": 0,
"bidPrice": 0.5,
"banner": {
"apiFramework": 0,
"width": 320,
"height": 200,
"clickUrl": "http:\/\/www.lehner.com\/"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}'
6.6.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Creative Id |
data.userId |
integer |
User Id |
data.isActive |
boolean |
Creative status |
data.approved |
string |
Creative approval status (approved, pending, disapproved) |
data.creativeType |
string |
Creative type: banner, native, video, audio |
data.name |
string |
Creative name |
data.frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data.frequency |
boolean |
Frequency on/off. |
data.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data.frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data.bidPrice |
float |
CPM |
data.autoresize |
boolean |
autoresize |
data.adaptiveCpm |
bool |
adaptiveCpm |
data.size |
string |
Image width and height |
data.weight |
string |
File size |
data.thumbnail |
string |
Thumbnail URL |
data.folderId |
string |
Folder Id |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
data.pendingAt |
datetime |
Date of pending start |
data.deletedAt |
datetime |
Date of deletion |
data.media.id |
integer |
Media Id |
data.media.userId |
string |
User Id |
data.media.mediaType |
string |
Media type (html, image, video) |
data.media.originName |
string |
Uploaded file original name |
data.media.name |
string |
Uploaded file name |
data.media.extension |
string |
Uploaded file extention |
data.media.url |
string |
Uploaded file URL |
data.media.width |
integer |
Uploaded file image width |
data.media.height |
integer |
Uploaded file image height |
data.media.weight |
integer |
Uploaded file size |
data.media.modifiedUrl |
any |
|
data.relation.banner.apiFramework |
integer |
Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID |
data.relation.banner.admBody |
string |
Third-party tag |
data.relation.banner.bannerType |
String |
Banner type (banner,inBannerVideo) |
data.relation.banner.clickUrl |
string |
Click URL |
data.relation.banner.width |
integer |
Banner width |
data.relation.banner.height |
integer |
Banner height |
data.sizes |
string |
size |
6.6.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "Creative created.",
"data": {
"id": 15,
"userId": 28,
"isActive": null,
"approved": null,
"creativeType": "banner",
"name": "Banner creative #4",
"frequencyType": null,
"frequency": 0,
"frequencyCap": null,
"frequencyPeriod": null,
"bidPrice": 0.5,
"autoresize": null,
"adaptiveCpm": null,
"size": "410 x 256",
"weight": "0.33 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:05",
"updatedAt": "2026-02-09 12:56:06",
"pendingAt": null,
"deletedAt": null,
"relation": {
"banner": {
"apiFramework": 0,
"admBody": "<img src=\"http:\/\/www.botsford.com\/\/28_fa83edc3c50473fc4f3700478f8ad2f7.mp4\" crossorigin=\"anonymous\"\/>",
"bannerType": null,
"clickUrl": "http:\/\/www.lehner.com\/",
"width": 410,
"height": 256
}
},
"sizes": []
}
}
6.7. Create a Custom Banner Creative with Rich Media Html
A `POST` request will create new creative.
6.7.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
name |
string |
Creative name |
+ |
creativeType |
string |
Creative type: banner, native, video, audio |
+ |
mediaId |
array |
HTML Media Id |
+ |
frequency |
boolean |
Frequency on/off. |
|
bidPrice |
float |
CPM |
+ |
banner.apiFramework |
integer |
Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID |
|
banner.width |
integer |
Banner width |
+ |
banner.height |
integer |
Banner height |
+ |
subCategories.IAB1 |
array |
SubCategories (required if categories is empty) |
+ |
categories.IAB1 |
array |
Categories (required if subCategories is empty) |
+ |
6.7.2. HTTP Request
URL
POST api/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjYsImV4cCI6MTc3MDY0NTM2NiwibmJmIjoxNzcwNjQxNzY2LCJqdGkiOiJzbjhaOEpxRE9MWHhzaUdwIiwic3ViIjoiMjkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.lsMhxKooWAS5-G4Uf3LC4NNtd4mwgx3gEXOxG2Bfxxw
DATA
{
"name": "Banner creative #5",
"creativeType": "banner",
"mediaId": 17,
"frequency": 0,
"bidPrice": 0.5,
"banner": {
"apiFramework": 3,
"width": 320,
"height": 200
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}
6.7.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjYsImV4cCI6MTc3MDY0NTM2NiwibmJmIjoxNzcwNjQxNzY2LCJqdGkiOiJzbjhaOEpxRE9MWHhzaUdwIiwic3ViIjoiMjkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.lsMhxKooWAS5-G4Uf3LC4NNtd4mwgx3gEXOxG2Bfxxw' \
-d '{
"name": "Banner creative #5",
"creativeType": "banner",
"mediaId": 17,
"frequency": 0,
"bidPrice": 0.5,
"banner": {
"apiFramework": 3,
"width": 320,
"height": 200
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}'
6.7.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Creative Id |
data.userId |
integer |
User Id |
data.isActive |
boolean |
Creative status |
data.approved |
string |
Creative approval status (approved, pending, disapproved) |
data.creativeType |
string |
Creative type: banner, native, video, audio |
data.name |
string |
Creative name |
data.frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data.frequency |
boolean |
Frequency on/off. |
data.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data.frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data.bidPrice |
float |
CPM |
data.autoresize |
boolean |
autoresize |
data.adaptiveCpm |
bool |
adaptiveCpm |
data.size |
string |
Image width and height |
data.weight |
string |
File size |
data.thumbnail |
string |
Thumbnail URL |
data.folderId |
string |
Folder Id |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
data.pendingAt |
datetime |
Date of pending start |
data.deletedAt |
datetime |
Date of deletion |
data.media.id |
integer |
Media Id |
data.media.userId |
string |
User Id |
data.media.mediaType |
string |
Media type (html, image, video) |
data.media.originName |
string |
Uploaded file original name |
data.media.name |
string |
Uploaded file name |
data.media.extension |
string |
Uploaded file extention |
data.media.url |
string |
Uploaded file URL |
data.media.width |
integer |
Uploaded file image width |
data.media.height |
integer |
Uploaded file image height |
data.media.weight |
integer |
Uploaded file size |
data.media.modifiedUrl |
any |
|
data.relation.banner.apiFramework |
integer |
Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID |
data.relation.banner.admBody |
string |
Third-party tag |
data.relation.banner.bannerType |
String |
Banner type (banner,inBannerVideo) |
data.relation.banner.clickUrl |
string |
Click URL |
data.relation.banner.width |
integer |
Banner width |
data.relation.banner.height |
integer |
Banner height |
data.sizes |
string |
size |
6.7.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "Creative created.",
"data": {
"id": 16,
"userId": 29,
"isActive": null,
"approved": null,
"creativeType": "banner",
"name": "Banner creative #5",
"frequencyType": null,
"frequency": 0,
"frequencyCap": null,
"frequencyPeriod": null,
"bidPrice": 0.5,
"autoresize": null,
"adaptiveCpm": null,
"size": "320 x 200",
"weight": "0.18 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:06",
"updatedAt": "2026-02-09 12:56:06",
"pendingAt": null,
"deletedAt": null,
"relation": {
"banner": {
"apiFramework": 3,
"admBody": "<iframe src=\"https:\/\/roberts.com\/voluptatem-ducimus-praesentium-odio-nesciunt-corrupti.html\/29_83c9732fe10130f025e5d4f9b4c5cec2\/index.html\" style=\"border:0; width:100%; height:100%;\"><\/iframe>",
"bannerType": null,
"clickUrl": null,
"width": 320,
"height": 200
}
},
"sizes": []
}
}
6.8. Create a Custom Native Creative
A `POST` request will create new creative.
6.8.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
name |
string |
Creative name |
+ |
creativeType |
string |
Creative type: banner, native, video, audio |
+ |
frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
|
frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
|
frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
|
frequency |
boolean |
Frequency on/off. |
|
bidPrice |
float |
CPM |
+ |
folderId |
string |
Folder Id |
|
native.smallImageId |
integer |
Logo media id |
|
native.largeImageId |
integer |
Image media id |
+ |
native.assetDataDesc |
string |
Ad text |
|
native.assetTitle |
string |
Ad title |
|
native.assetDataSponsored |
string |
Brand name |
|
native.assetCtaText |
string |
CTA button text |
|
native.clickUrl |
string |
Click URL |
+ |
native.displayUrl |
string |
Display URL |
|
subCategories.IAB1 |
array |
SubCategories (required if categories is empty) |
+ |
categories.IAB1 |
array |
Categories (required if subCategories is empty) |
+ |
6.8.2. HTTP Request
URL
POST api/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjYsImV4cCI6MTc3MDY0NTM2NiwibmJmIjoxNzcwNjQxNzY2LCJqdGkiOiJ3b1podmI0VG5sRjFxSEhMIiwic3ViIjoiMzAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.cIVHFvJF256EajzWkFOiUYU8oUhUHKefmf-cvo5D448
DATA
{
"name": "Native creative #3",
"creativeType": "native",
"frequencyType": "user",
"frequencyCap": 1,
"frequencyPeriod": 1,
"frequency": 1,
"bidPrice": 0.5,
"folderId": null,
"native": {
"smallImageId": 18,
"largeImageId": 18,
"assetDataDesc": "Soluta asperiores.",
"assetTitle": "Sapiente.",
"assetDataSponsored": "Et velit amet est.",
"assetCtaText": "Unde nostrum.",
"clickUrl": "https:\/\/www.johns.biz\/eveniet-qui-velit-corrupti-iste-nulla-quaerat",
"displayUrl": "https:\/\/www.bartoletti.com\/quo-placeat-sequi-eveniet-natus"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}
6.8.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjYsImV4cCI6MTc3MDY0NTM2NiwibmJmIjoxNzcwNjQxNzY2LCJqdGkiOiJ3b1podmI0VG5sRjFxSEhMIiwic3ViIjoiMzAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.cIVHFvJF256EajzWkFOiUYU8oUhUHKefmf-cvo5D448' \
-d '{
"name": "Native creative #3",
"creativeType": "native",
"frequencyType": "user",
"frequencyCap": 1,
"frequencyPeriod": 1,
"frequency": 1,
"bidPrice": 0.5,
"folderId": null,
"native": {
"smallImageId": 18,
"largeImageId": 18,
"assetDataDesc": "Soluta asperiores.",
"assetTitle": "Sapiente.",
"assetDataSponsored": "Et velit amet est.",
"assetCtaText": "Unde nostrum.",
"clickUrl": "https:\/\/www.johns.biz\/eveniet-qui-velit-corrupti-iste-nulla-quaerat",
"displayUrl": "https:\/\/www.bartoletti.com\/quo-placeat-sequi-eveniet-natus"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}'
6.8.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Creative Id |
data.userId |
integer |
User Id |
data.isActive |
boolean |
Creative status |
data.approved |
string |
Creative approval status (approved, pending, disapproved) |
data.creativeType |
string |
Creative type: banner, native, video, audio |
data.name |
string |
Creative name |
data.frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data.frequency |
boolean |
Frequency on/off. |
data.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data.frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data.bidPrice |
float |
CPM |
data.autoresize |
boolean |
autoresize |
data.adaptiveCpm |
bool |
adaptiveCpm |
data.size |
string |
Image width and height |
data.weight |
string |
File size |
data.thumbnail |
string |
Thumbnail URL |
data.folderId |
string |
Folder Id |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
data.pendingAt |
datetime |
Date of pending start |
data.deletedAt |
datetime |
Date of deletion |
data.media.id |
integer |
Media Id |
data.media.userId |
string |
User Id |
data.media.mediaType |
string |
Media type (html, image, video) |
data.media.originName |
string |
Uploaded file original name |
data.media.name |
string |
Uploaded file name |
data.media.extension |
string |
Uploaded file extention |
data.media.url |
string |
Uploaded file URL |
data.media.width |
integer |
Uploaded file image width |
data.media.height |
integer |
Uploaded file image height |
data.media.weight |
integer |
Uploaded file size |
data.media.modifiedUrl |
any |
|
data.relation.native.smallImageId |
integer |
Logo media id |
data.relation.native.largeImageId |
integer |
Image media id |
data.relation.native.smallImage.id |
integer |
Logo media id |
data.relation.native.smallImage.folderId |
string |
Folder id |
data.relation.native.smallImage.userId |
integer |
User id |
data.relation.native.smallImage.width |
string |
width |
data.relation.native.smallImage.height |
string |
height |
data.relation.native.smallImage.name |
string |
name |
data.relation.native.smallImage.url |
string |
url |
data.relation.native.smallImage.href |
string |
href |
data.relation.native.smallImage.originName |
string |
originName |
data.relation.native.smallImage.path |
string |
path |
data.relation.native.smallImage.extension |
string |
extension |
data.relation.native.smallImage.mediaType |
string |
mediaType |
data.relation.native.smallImage.createdAt |
string |
createdAt |
data.relation.native.smallImage.updatedAt |
string |
updatedAt |
data.relation.native.smallImage.deletedAt |
string |
updatedAt |
data.relation.native.smallImage.weight |
string |
weight |
data.relation.native.largeImage.id |
integer |
Image media id |
data.relation.native.largeImage.folderId |
string |
Folder id |
data.relation.native.largeImage.userId |
integer |
User id |
data.relation.native.largeImage.width |
string |
width |
data.relation.native.largeImage.height |
string |
height |
data.relation.native.largeImage.name |
string |
name |
data.relation.native.largeImage.url |
string |
url |
data.relation.native.largeImage.href |
string |
href |
data.relation.native.largeImage.originName |
string |
originName |
data.relation.native.largeImage.path |
string |
path |
data.relation.native.largeImage.extension |
string |
extension |
data.relation.native.largeImage.mediaType |
string |
mediaType |
data.relation.native.largeImage.createdAt |
string |
createdAt |
data.relation.native.largeImage.updatedAt |
string |
updatedAt |
data.relation.native.largeImage.deletedAt |
string |
updatedAt |
data.relation.native.largeImage.weight |
string |
weight |
data.relation.native.assetDataDesc |
string |
Ad text |
data.relation.native.assetTitle |
string |
Ad title |
data.relation.native.assetDataSponsored |
string |
Brand name |
data.relation.native.assetCtaText |
string |
CTA button text |
data.relation.native.clickUrl |
string |
Click URL |
data.relation.native.displayUrl |
string |
Display URL |
data.relation.native.impTracker |
string |
Impression tracker |
data.sizes |
string |
size |
6.8.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "Creative created.",
"data": {
"id": 17,
"userId": 30,
"isActive": null,
"approved": null,
"creativeType": "native",
"name": "Native creative #3",
"frequencyType": "user",
"frequency": 1,
"frequencyCap": 1,
"frequencyPeriod": 1,
"bidPrice": 0.5,
"autoresize": null,
"adaptiveCpm": null,
"size": "456 x 151",
"weight": "-",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:06",
"updatedAt": "2026-02-09 12:56:06",
"pendingAt": null,
"deletedAt": null,
"relation": {
"native": {
"smallImageId": 18,
"largeImageId": 18,
"smallImage": {
"id": 18,
"folderId": null,
"userId": 30,
"width": 456,
"height": 151,
"name": "30_83c9732fe10130f025e5d4f9b4c5cec2.mp4",
"url": "http:\/\/wiegand.com\/\/30_83c9732fe10130f025e5d4f9b4c5cec2.mp4",
"href": null,
"originName": "video.mp4",
"path": null,
"extension": "mp4",
"mediaType": "image",
"createdAt": "2026-02-09T12:56:06.000000Z",
"updatedAt": "2026-02-09T12:56:06.000000Z",
"deletedAt": null,
"weight": 203153
},
"largeImage": {
"id": 18,
"folderId": null,
"userId": 30,
"width": 456,
"height": 151,
"name": "30_83c9732fe10130f025e5d4f9b4c5cec2.mp4",
"url": "http:\/\/wiegand.com\/\/30_83c9732fe10130f025e5d4f9b4c5cec2.mp4",
"href": null,
"originName": "video.mp4",
"path": null,
"extension": "mp4",
"mediaType": "image",
"createdAt": "2026-02-09T12:56:06.000000Z",
"updatedAt": "2026-02-09T12:56:06.000000Z",
"deletedAt": null,
"weight": 203153
},
"assetDataDesc": "Soluta asperiores.",
"assetTitle": "Sapiente.",
"assetDataSponsored": "Et velit amet est.",
"assetCtaText": "Unde nostrum.",
"clickUrl": "https:\/\/www.johns.biz\/eveniet-qui-velit-corrupti-iste-nulla-quaerat",
"displayUrl": "https:\/\/www.bartoletti.com\/quo-placeat-sequi-eveniet-natus",
"impTracker": null
}
},
"sizes": []
}
}
6.9. Create a Custom Video Creative with Third-party tag
A `POST` request will create new creative.
6.9.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
name |
string |
Creative name |
+ |
creativeType |
string |
Creative type: banner, native, video, audio |
+ |
frequency |
boolean |
Frequency on/off. |
|
bidPrice |
float |
CPM |
+ |
video.mimeType |
array |
MIME types |
+ |
video.admBody |
string |
Third-party tag |
+ |
subCategories.IAB1 |
array |
SubCategories (required if categories is empty) |
+ |
categories.IAB1 |
array |
Categories (required if subCategories is empty) |
+ |
6.9.2. HTTP Request
URL
POST api/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjYsImV4cCI6MTc3MDY0NTM2NiwibmJmIjoxNzcwNjQxNzY2LCJqdGkiOiJjMTladEswbUxPMjI0ZkRYIiwic3ViIjoiMzEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.IJt2T4KQ7Np1QyyJcAWp3Z9vtcrDs_tC8stZUk3GMBo
DATA
{
"name": "Video creative #3",
"creativeType": "video",
"frequency": 0,
"bidPrice": 100,
"video": {
"mimeType": [
"video\/mp4"
],
"admBody": "<iframe src=\"url.to.script\"><\/iframe>"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}
6.9.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjYsImV4cCI6MTc3MDY0NTM2NiwibmJmIjoxNzcwNjQxNzY2LCJqdGkiOiJjMTladEswbUxPMjI0ZkRYIiwic3ViIjoiMzEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.IJt2T4KQ7Np1QyyJcAWp3Z9vtcrDs_tC8stZUk3GMBo' \
-d '{
"name": "Video creative #3",
"creativeType": "video",
"frequency": 0,
"bidPrice": 100,
"video": {
"mimeType": [
"video\/mp4"
],
"admBody": "<iframe src=\"url.to.script\"><\/iframe>"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}'
6.9.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Creative Id |
data.userId |
integer |
User Id |
data.isActive |
boolean |
Creative status |
data.approved |
string |
Creative approval status (approved, pending, disapproved) |
data.creativeType |
string |
Creative type: banner, native, video, audio |
data.name |
string |
Creative name |
data.frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data.frequency |
boolean |
Frequency on/off. |
data.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data.frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data.bidPrice |
float |
CPM |
data.autoresize |
boolean |
autoresize |
data.adaptiveCpm |
bool |
adaptiveCpm |
data.size |
string |
Image width and height |
data.weight |
string |
File size |
data.thumbnail |
string |
Thumbnail URL |
data.folderId |
string |
Folder Id |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
data.pendingAt |
datetime |
Date of pending start |
data.deletedAt |
datetime |
Date of deletion |
data.relation.video.admBody |
string |
Third-party tag |
data.relation.video.mimeType |
array |
MIME types |
data.relation.video.width |
integer |
Video width |
data.relation.video.height |
integer |
Video height |
data.relation.video.duration |
integer |
Video duration |
data.relation.video.clickUrl |
string |
Click URL |
data.relation.video.partyTagFormat |
integer |
3 party tag format (0-NO VPAID, 1-VPAID 1, 2-VPAID 2, 3-ALL VPAID) |
data.relation.video.apiFramework |
integer |
apiFramework |
data.relation.video.autoStoreEndCard |
boolean |
autoStoreEndCard |
data.relation.video.autoStoreEndCardOption |
string |
autoStoreEndCardOption |
data.relation.video.politicalLabelEnabled |
boolean |
Political label enabled flag |
data.relation.video.politicalTooltip |
array |
Political label tooltip data {text, link, position} |
data.sizes |
string |
size |
6.9.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "Creative created.",
"data": {
"id": 18,
"userId": 31,
"isActive": null,
"approved": null,
"creativeType": "video",
"name": "Video creative #3",
"frequencyType": null,
"frequency": 0,
"frequencyCap": null,
"frequencyPeriod": null,
"bidPrice": 100,
"autoresize": null,
"adaptiveCpm": null,
"size": "0 x 0",
"weight": "-",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:06",
"updatedAt": "2026-02-09 12:56:06",
"pendingAt": null,
"deletedAt": null,
"relation": {
"video": {
"admBody": "<iframe src=\"url.to.script\"><\/iframe>",
"mimeType": [
"video\/mp4"
],
"width": 0,
"height": 0,
"duration": 0,
"clickUrl": "",
"partyTagFormat": null,
"apiFramework": null,
"autoStoreEndCard": null,
"autoStoreEndCardOption": null,
"politicalLabelEnabled": false,
"politicalTooltip": []
}
},
"sizes": []
}
}
6.10. Create a Custom Video Creative with Media image
A `POST` request will create new creative.
6.10.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
name |
string |
Creative name |
+ |
creativeType |
string |
Creative type: banner, native, video, audio |
+ |
frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
|
frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
|
frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
|
frequency |
boolean |
Frequency on/off. |
|
mediaId |
array |
Media video Id |
+ |
bidPrice |
float |
CPM |
+ |
video.clickUrl |
string |
Click URL |
+ |
subCategories.IAB1 |
array |
SubCategories (required if categories is empty) |
+ |
categories.IAB1 |
array |
Categories (required if subCategories is empty) |
+ |
6.10.2. HTTP Request
URL
POST api/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjYsImV4cCI6MTc3MDY0NTM2NiwibmJmIjoxNzcwNjQxNzY2LCJqdGkiOiIwY0t0a2p1TlBaRTZaemQ1Iiwic3ViIjoiMzIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.74-vsMx1Y0hydciZKLheim_n500cu_WqzN7mrvHc7N8
DATA
{
"name": "Video creative #4",
"creativeType": "video",
"frequencyType": "user",
"frequencyCap": 1,
"frequencyPeriod": 1,
"frequency": 1,
"mediaId": 19,
"bidPrice": 100,
"video": {
"clickUrl": "http:\/\/deckow.com\/"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}
6.10.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjYsImV4cCI6MTc3MDY0NTM2NiwibmJmIjoxNzcwNjQxNzY2LCJqdGkiOiIwY0t0a2p1TlBaRTZaemQ1Iiwic3ViIjoiMzIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.74-vsMx1Y0hydciZKLheim_n500cu_WqzN7mrvHc7N8' \
-d '{
"name": "Video creative #4",
"creativeType": "video",
"frequencyType": "user",
"frequencyCap": 1,
"frequencyPeriod": 1,
"frequency": 1,
"mediaId": 19,
"bidPrice": 100,
"video": {
"clickUrl": "http:\/\/deckow.com\/"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}'
6.10.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Creative Id |
data.userId |
integer |
User Id |
data.isActive |
boolean |
Creative status |
data.approved |
string |
Creative approval status (approved, pending, disapproved) |
data.creativeType |
string |
Creative type: banner, native, video, audio |
data.name |
string |
Creative name |
data.frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data.frequency |
boolean |
Frequency on/off. |
data.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data.frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data.bidPrice |
float |
CPM |
data.autoresize |
boolean |
autoresize |
data.adaptiveCpm |
bool |
adaptiveCpm |
data.size |
string |
Image width and height |
data.weight |
string |
File size |
data.thumbnail |
string |
Thumbnail URL |
data.folderId |
string |
Folder Id |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
data.pendingAt |
datetime |
Date of pending start |
data.deletedAt |
datetime |
Date of deletion |
data.media.id |
integer |
Media Id |
data.media.userId |
string |
User Id |
data.media.mediaType |
string |
Media type (html, image, video) |
data.media.originName |
string |
Uploaded file original name |
data.media.name |
string |
Uploaded file name |
data.media.extension |
string |
Uploaded file extention |
data.media.url |
string |
Uploaded file URL |
data.media.width |
integer |
Uploaded file image width |
data.media.height |
integer |
Uploaded file image height |
data.media.weight |
integer |
Uploaded file size |
data.media.modifiedUrl |
any |
|
data.relation.video.admBody |
string |
Third-party tag |
data.relation.video.mimeType |
array |
MIME types |
data.relation.video.width |
integer |
Video width |
data.relation.video.height |
integer |
Video height |
data.relation.video.duration |
integer |
Video duration |
data.relation.video.clickUrl |
string |
Click URL |
data.relation.video.partyTagFormat |
integer |
3 party tag format (0-NO VPAID, 1-VPAID 1, 2-VPAID 2, 3-ALL VPAID) |
data.relation.video.apiFramework |
integer |
apiFramework |
data.relation.video.autoStoreEndCard |
boolean |
autoStoreEndCard |
data.relation.video.autoStoreEndCardOption |
string |
autoStoreEndCardOption |
data.relation.video.politicalLabelEnabled |
boolean |
Political label enabled flag |
data.relation.video.politicalTooltip.text |
string |
Political tooltip text |
data.relation.video.politicalTooltip.link |
string |
Political tooltip link |
data.relation.video.politicalTooltip.position |
string |
Political tooltip position |
data.sizes |
string |
size |
6.10.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "Creative created.",
"data": {
"id": 19,
"userId": 32,
"isActive": null,
"approved": null,
"creativeType": "video",
"name": "Video creative #4",
"frequencyType": "user",
"frequency": 1,
"frequencyCap": 1,
"frequencyPeriod": 1,
"bidPrice": 100,
"autoresize": null,
"adaptiveCpm": null,
"size": "337 x 163",
"weight": "0.46 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:06",
"updatedAt": "2026-02-09 12:56:06",
"pendingAt": null,
"deletedAt": null,
"relation": {
"video": {
"admBody": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<VAST version=\"2.0\">\n <Ad id=\"[HASH]\">\n <InLine>\n <AdSystem>DSP<\/AdSystem>\n <AdTitle>Smartyads<\/AdTitle>\n <Description>RTB<\/Description>\n <Creatives>\n <Creative AdID=\"19\">\n <Linear>\n <Duration>00:00:07<\/Duration>\n <VideoClicks>\n <ClickThrough><![CDATA[https:\/\/deckow.com\/]]><\/ClickThrough>\n <\/VideoClicks>\n <MediaFiles>\n <MediaFile delivery=\"progressive\" type=\"video\/mp4\" width=\"337\" height=\"163\"><![CDATA[http:\/\/www.hettinger.info\/\/32_83c9732fe10130f025e5d4f9b4c5cec2\/index.html]]><\/MediaFile>\n <\/MediaFiles>\n <\/Linear>\n <\/Creative>\n <\/Creatives>\n <\/InLine>\n <\/Ad>\n<\/VAST>",
"mimeType": [
"video\/mp4"
],
"width": 337,
"height": 163,
"duration": 7,
"clickUrl": "https:\/\/deckow.com\/",
"partyTagFormat": null,
"apiFramework": null,
"autoStoreEndCard": null,
"autoStoreEndCardOption": null,
"politicalLabelEnabled": false,
"politicalTooltip": {
"text": "",
"link": "",
"position": "top-left"
}
}
},
"sizes": []
}
}
6.11. Update a Custom Creative
A `PATCH` request will update creative.
6.11.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
isActive |
boolean |
Creative status |
6.11.2. HTTP Request
URL
PUT api/creatives/20 HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjcsImV4cCI6MTc3MDY0NTM2NywibmJmIjoxNzcwNjQxNzY3LCJqdGkiOiJYUjdpYUxtYzZwM050ZDJSIiwic3ViIjoiMzMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.a0kDezWPNNKGN9f-qAYDtAU1cuDtvxQE9yzKZ3UApzk
DATA
{
"isActive": true
}
6.11.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives/20' -i -X PUT \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjcsImV4cCI6MTc3MDY0NTM2NywibmJmIjoxNzcwNjQxNzY3LCJqdGkiOiJYUjdpYUxtYzZwM050ZDJSIiwic3ViIjoiMzMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.a0kDezWPNNKGN9f-qAYDtAU1cuDtvxQE9yzKZ3UApzk' \
-d '{
"isActive": true
}'
6.11.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Creative Id |
data.userId |
integer |
User Id |
data.isActive |
boolean |
Creative status |
data.approved |
string |
Creative approval status (approved, pending, disapproved) |
data.creativeType |
string |
Creative type: banner, native, video, audio |
data.name |
string |
Creative name |
data.frequencyType |
string |
Frequency Type (user, ip).Required if frequency is on. |
data.frequency |
boolean |
Frequency on/off. |
data.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on. |
data.frequencyPeriod |
integer |
Frequency Period (min-1,max-3). Required if frequency is on. |
data.bidPrice |
float |
CPM |
data.autoresize |
boolean |
autoresize |
data.adaptiveCpm |
bool |
adaptiveCpm |
data.size |
string |
Image width and height |
data.weight |
string |
File size |
data.thumbnail |
string |
Thumbnail URL |
data.folderId |
string |
Folder Id |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
data.pendingAt |
datetime |
Date of pending start |
data.deletedAt |
datetime |
Date of deletion |
data.relation.banner.apiFramework |
integer |
Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID |
data.relation.banner.admBody |
string |
Third-party tag |
data.relation.banner.bannerType |
String |
Banner type (banner,inBannerVideo) |
data.relation.banner.clickUrl |
string |
Click URL |
data.relation.banner.width |
integer |
Banner width |
data.relation.banner.height |
integer |
Banner height |
data.sizes |
string |
size |
6.11.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "Creative updated.",
"data": {
"id": 20,
"userId": 33,
"isActive": true,
"approved": "pending",
"creativeType": "banner",
"name": "excepturi et",
"frequencyType": "ip",
"frequency": 0,
"frequencyCap": 1,
"frequencyPeriod": 1,
"bidPrice": "16.77",
"autoresize": 0,
"adaptiveCpm": false,
"size": " x ",
"weight": "-",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:07",
"updatedAt": "2026-02-09 12:56:07",
"pendingAt": null,
"deletedAt": null,
"relation": {
"banner": {
"apiFramework": null,
"admBody": null,
"bannerType": null,
"clickUrl": null,
"width": null,
"height": null
}
},
"sizes": []
}
}
6.12. Delete a Custom Creative
A `DELETE` request will delete creative.
6.12.1. HTTP Request
URL
DELETE api/creatives/21 HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjcsImV4cCI6MTc3MDY0NTM2NywibmJmIjoxNzcwNjQxNzY3LCJqdGkiOiJSY0hDVkFZelBOUXZQSmh6Iiwic3ViIjoiMzQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.25M_peHTmxZ34QcRa_ulKSuiZUGTvsLfAqFOj00KaSg Content-type: application/x-www-form-urlencoded
DATA
{}
6.12.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives/21' -i -X DELETE \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjcsImV4cCI6MTc3MDY0NTM2NywibmJmIjoxNzcwNjQxNzY3LCJqdGkiOiJSY0hDVkFZelBOUXZQSmh6Iiwic3ViIjoiMzQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.25M_peHTmxZ34QcRa_ulKSuiZUGTvsLfAqFOj00KaSg' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{}'
6.12.3. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{}
7. Assign Creatives to Campaigns
7.1. Get list of Creatives assigned to Campaign
A `GET` request with Campaign Id in url will get list of Creatives assigned to Campaign
7.1.1. HTTP Request
URL
GET api/campaigns/12/creatives HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiI2ME5jMVV3RmtRaklBNDRKIiwic3ViIjoiMTciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.QQeAWMejoWu_I8LteTLNhPlsHKgH2HuO2BFIgEmwrX4
DATA
{}
7.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/12/creatives' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiI2ME5jMVV3RmtRaklBNDRKIiwic3ViIjoiMTciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.QQeAWMejoWu_I8LteTLNhPlsHKgH2HuO2BFIgEmwrX4' \
-d '{}'
7.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.id |
integer |
Creative Id |
data.*.userId |
integer |
User Id |
data.*.isActive |
boolean |
Creative status |
data.*.approved |
string |
Creative approval status (approved, pending, disapproved) |
data.*.creativeType |
string |
Creative type: banner, native, video, audio |
data.*.name |
string |
Creative name |
data.*.frequencyType |
string |
Identify the user to limit the number of the ad shows for the specific user (user, ip). Required if frequency is on. |
data.*.frequency |
string |
Frequency on/off |
data.*.frequencyCap |
integer |
Show ads no more than "Frequency Cap" times in "Frequency Period". Required if frequency is on. |
data.*.frequencyPeriod |
integer |
Frequency period in days (min-1,max-3). Required if frequency is on. |
data.*.bidPrice |
float |
CPM |
data.*.autoresize |
boolean |
autoresize |
data.*.adaptiveCpm |
bool |
adaptiveCpm |
data.*.size |
string |
Image width and height |
data.*.weight |
string |
File size |
data.*.thumbnail |
string |
Thumbnail URL |
data.*.folderId |
string |
Folder Id |
data.*.createdAt |
datetime |
Date of creation |
data.*.updatedAt |
datetime |
Date of last modification |
data.*.pendingAt |
datetime |
Date of pending start |
data.*.deletedAt |
datetime |
Date of deletion |
data.*.status |
string |
Status |
meta.pagination.total |
integer |
Pagination: total items count |
meta.pagination.count |
integer |
Pagination: page items count |
meta.pagination.per_page |
integer |
Pagination: items per page |
meta.pagination.current_page |
integer |
Pagination: current page number |
meta.pagination.total_pages |
integer |
Pagination: total pages count |
meta.pagination.links |
object |
Pagination links |
7.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"data": [
{
"id": 1,
"userId": 17,
"isActive": 0,
"approved": "pending",
"creativeType": "banner",
"name": "Test Creative #1",
"frequencyType": "ip",
"frequency": 0,
"frequencyCap": 5,
"frequencyPeriod": 1,
"bidPrice": "1.51",
"autoresize": 0,
"adaptiveCpm": false,
"size": "484 x 187",
"weight": "0.47 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-09 12:56:04",
"updatedAt": "2026-02-09 12:56:04",
"pendingAt": null,
"deletedAt": null,
"media": {
"id": 1,
"userId": 17,
"mediaType": "image",
"originName": "richmedia.zip",
"name": "17_42c457de63b2d0b7a13c78446c0870a8\/index.html",
"extension": "zip",
"url": "http:\/\/www.sauer.com\/et-perferendis-mollitia-et-necessitatibus-architecto-doloribus\/17_42c457de63b2d0b7a13c78446c0870a8\/index.html",
"width": 418,
"height": 334,
"weight": 489969
},
"relation": {
"banner": {
"apiFramework": 0,
"admBody": "<a target=\"_blank\" href=\"http:\/\/rowe.com\/\" ><img src=\"http:\/\/hirthe.net\/modi-quaerat-quae-omnis-sunt-dolore-officia\/10.jpg\"\/><\/a>",
"bannerType": "banner",
"clickUrl": "http:\/\/reynolds.com\/provident-quidem-et-qui.html",
"width": 484,
"height": 187,
"childrenCreative": null,
"statusChildrenCreative": [],
"main": 1
}
},
"status": ""
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 1000,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
7.2. Replace Creatives assigned to Campaign
A `POST` request with Campaign Id in url will replace Creatives assigned to Campaign
7.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
ids |
array |
array of Creative ids |
+ |
7.2.2. HTTP Request
URL
POST api/campaigns/13/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiIxT3FwVUxGem5ja0Z3OENhIiwic3ViIjoiMTgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.aKWUPwiiqI9-eLXB-TrB9kHkktyqaG2Vv_w8iHDRq24
DATA
{
"ids": [
2,
3
]
}
7.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/13/creatives' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiIxT3FwVUxGem5ja0Z3OENhIiwic3ViIjoiMTgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.aKWUPwiiqI9-eLXB-TrB9kHkktyqaG2Vv_w8iHDRq24' \
-d '{
"ids": [
2,
3
]
}'
7.2.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
7.2.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "Replaced."
}
7.3. Append Creatives assigned to Campaign
A `PATCH` request with Campaign Id in url will append Creatives assigned to Campaign
7.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
ids |
array |
array of Creative ids |
+ |
7.3.2. HTTP Request
URL
PATCH api/campaigns/14/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiJsVDc2VFBJdWJkdGJyczJ1Iiwic3ViIjoiMTkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.K2wJh4dvis8nagLQLDp1eHty38UDILxRZ2Rou5oogKI
DATA
{
"ids": [
5
]
}
7.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/14/creatives' -i -X PATCH \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiJsVDc2VFBJdWJkdGJyczJ1Iiwic3ViIjoiMTkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.K2wJh4dvis8nagLQLDp1eHty38UDILxRZ2Rou5oogKI' \
-d '{
"ids": [
5
]
}'
7.3.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
7.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "Appended."
}
7.4. Remove Creatives assigned to Campaign
A `DELETE` request with Campaign Id in url will remove Creatives assigned to Campaign
7.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
ids |
array |
array of Creative ids |
+ |
7.4.2. HTTP Request
URL
DELETE api/campaigns/15/creatives HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiJFSllnNWZHbFRQOTBEeUFWIiwic3ViIjoiMjAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.UqJeS_5FL02jLgJneuOQFUPC0N2ArRStmOF1cw5g4ek Content-type: application/x-www-form-urlencoded
DATA
{
"ids": [
7
]
}
7.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/15/creatives' -i -X DELETE \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjUsImV4cCI6MTc3MDY0NTM2NSwibmJmIjoxNzcwNjQxNzY1LCJqdGkiOiJFSllnNWZHbFRQOTBEeUFWIiwic3ViIjoiMjAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.UqJeS_5FL02jLgJneuOQFUPC0N2ArRStmOF1cw5g4ek' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{
"ids": [
7
]
}'
7.4.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
deleted |
boolean |
Deleting result |
7.4.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"message": "Deleted.",
"deleted": true
}
8. Filterlists
8.1. Filter lists
A `GET` request will return a filter lists
8.1.1. HTTP Request
URL
GET api/filterlist HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
8.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/filterlist' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
8.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.id |
integer |
List Id |
data.*.userId |
integer |
User Id |
data.*.isInclude |
boolean |
White/Black list |
data.*.title |
string |
List title |
data.*.type |
string |
Filter list type: domain, apps, bundles, deviceIfas, publishers, ipAdresses, siteAndAppsIds, urls, tagIds |
data.*.createdAt |
datetime |
Date of creation |
data.*.updatedAt |
datetime |
Date of last modification |
meta.pagination.total |
integer |
Pagination: total items count |
meta.pagination.count |
integer |
Pagination: page items count |
meta.pagination.per_page |
integer |
Pagination: items per page |
meta.pagination.current_page |
integer |
Pagination: current page number |
meta.pagination.total_pages |
integer |
Pagination: total pages count |
meta.pagination.links |
array |
Pagination: array links |
8.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"id": 1,
"userId": 10,
"isInclude": true,
"title": "Test Filter list #1",
"type": "domain",
"createdAt": "2026-02-09 12:56:07",
"updatedAt": "2026-02-09 12:56:07"
},
{
"id": 2,
"userId": 10,
"isInclude": false,
"title": "Test Filter list #2",
"type": "ipAdresses",
"createdAt": "2026-02-09 12:56:07",
"updatedAt": "2026-02-09 12:56:07"
}
],
"meta": {
"pagination": {
"total": 2,
"count": 2,
"per_page": 15,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
8.2. Get filter lists by ID
A `GET` request will return a filter list by ID
8.2.1. HTTP Request
URL
GET api/filterlist/123 HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
8.2.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/filterlist/123' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
8.2.3. Response Body
| Path | Type | Description |
|---|---|---|
data.id |
integer |
List Id |
data.userId |
integer |
User Id |
data.isInclude |
boolean |
White/Black list |
data.title |
string |
List title |
data.items |
array |
items |
data.type |
string |
Filter list type: domain, apps, bundles, deviceIfas, publishers, ipAdresses, siteAndAppsIds, urls, tagIds |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
8.2.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": {
"id": 123,
"userId": 10,
"isInclude": true,
"title": "Test Filter list #4",
"items": [
"a",
"b",
"c"
],
"type": "domain",
"createdAt": "2026-02-09 12:56:08",
"updatedAt": "2026-02-09 12:56:08"
}
}
8.3. Create a filter lists
A `POST` request will set new filter list
8.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
title |
string |
List title |
+ |
type |
string |
Filter list type: domain, apps, bundles, deviceIfas, publishers, ipAdresses, siteAndAppsIds, urls, tagIds |
+ |
isInclude |
bool |
white/black |
+ |
items |
array |
List array items (can be empty if there fileName) |
|
fileName |
string |
null |
File name from upload file - Store filter list |
8.3.2. HTTP Request
URL
POST api/filterlist HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Content-type: application/x-www-form-urlencoded
DATA
{
"title": "Test Filter list #5",
"type": "ipAdresses",
"isInclude": true,
"items": [
"150.199.211.237",
"224.45.95.83",
"173.10.193.9",
"16.132.206.173",
"2.7.2.152"
],
"fileName": null
}
8.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/filterlist' -i -X POST \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{
"title": "Test Filter list #5",
"type": "ipAdresses",
"isInclude": true,
"items": [
"150.199.211.237",
"224.45.95.83",
"173.10.193.9",
"16.132.206.173",
"2.7.2.152"
],
"fileName": null
}'
8.3.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
message |
data.id |
integer |
List Id |
data.userId |
integer |
User Id |
data.isInclude |
boolean |
White (1)/Black list(0) |
data.listCount |
integer |
list count |
data.title |
string |
List title |
data.type |
string |
Filter list type: domain, apps, bundles, deviceIfas, publishers, ipAdresses, siteAndAppsIds, urls, tagIds |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
8.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Created",
"data": {
"id": 321,
"userId": 10,
"isInclude": true,
"listCount": 5,
"title": "Test Filter list #5",
"type": "ipAdresses",
"createdAt": "2026-02-09 12:56:08",
"updatedAt": "2026-02-09 12:56:08"
}
}
8.4. Filter lists update
A `PATCH` request will update filter lists
8.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
title |
string |
List title |
|
isInclude |
bool |
white/black |
|
items |
array |
List array items (can be empty if there fileName) |
|
fileName |
string |
null |
File name from upload file - Store filter list |
8.4.2. HTTP Request
URL
PUT api/filterlist/999 HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Content-type: application/x-www-form-urlencoded
DATA
{
"title": "Test FilterList #7",
"isInclude": true,
"items": [
"http:\/\/collins.com\/repudiandae-impedit-a-eius-blanditiis-assumenda.html",
"http:\/\/www.wehner.com\/ducimus-nemo-esse-facere-corporis-explicabo-eaque",
"http:\/\/zboncak.com\/"
],
"fileName": null
}
8.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/filterlist/999' -i -X PUT \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{
"title": "Test FilterList #7",
"isInclude": true,
"items": [
"http:\/\/collins.com\/repudiandae-impedit-a-eius-blanditiis-assumenda.html",
"http:\/\/www.wehner.com\/ducimus-nemo-esse-facere-corporis-explicabo-eaque",
"http:\/\/zboncak.com\/"
],
"fileName": null
}'
8.4.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
List Id |
data.userId |
integer |
User Id |
data.isInclude |
boolean |
white/black |
data.listCount |
integer |
listCount |
data.title |
string |
List title |
data.type |
string |
Filter list type: domain, apps, bundles, deviceIfas, publishers, ipAdresses, siteAndAppsIds, urls, tagIds |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
8.4.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Updated",
"data": {
"id": 999,
"userId": 10,
"isInclude": true,
"listCount": 3,
"title": "Test FilterList #7",
"type": "urls",
"createdAt": "2026-02-09 12:56:09",
"updatedAt": "2026-02-09 12:56:09"
}
}
8.5. Filter lists delete
A `DELETE` request will delete a filter lists
8.5.1. HTTP Request
URL
DELETE api/filterlist/1001 HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Content-type: application/x-www-form-urlencoded
DATA
{}
8.5.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/filterlist/1001' -i -X DELETE \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{}'
8.5.3. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
deleted |
boolean |
is deleted |
8.5.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Deleted",
"deleted": true
}
9. Assign Filterlists to Campaigns
9.1. Get list of Filter Lists assigned to Campaign
A `GET` request with Campaign Id in url will get list of Filter Lists assigned to Campaign
9.1.1. HTTP Request
URL
GET api/campaigns/16/filterlists HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
9.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/16/filterlists' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
9.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.filterList.id |
integer |
List Id |
data.*.filterList.title |
string |
List title |
data.*.filterList.items |
array |
List items (strings). May be empty depending on endpoint or pagination mode |
meta.pagination.total |
integer |
Pagination: total items count |
meta.pagination.count |
integer |
Pagination: page items count |
meta.pagination.per_page |
integer |
Pagination: items per page |
meta.pagination.current_page |
integer |
Pagination: current page number |
meta.pagination.total_pages |
integer |
Pagination: total pages count |
meta.pagination.links |
array |
Pagination: array links |
9.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"filterList": {
"id": 1,
"title": "Test Filter list #1",
"items": []
}
},
{
"filterList": {
"id": 2,
"title": "Test Filter list #2",
"items": []
}
},
{
"filterList": {
"id": 3,
"title": "Test Filter list #3",
"items": []
}
}
],
"meta": {
"pagination": {
"total": 3,
"count": 3,
"per_page": 15,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
9.2. Remove Filter Lists assigned to Campaign
A `DELETE` request with Campaign Id in url will remove Filter Lists assigned to Campaign
9.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
ids |
array |
List id to remove |
+ |
9.2.2. HTTP Request
URL
DELETE api/campaigns/17/filterlists HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Content-type: application/x-www-form-urlencoded
DATA
{
"ids": [
5
]
}
9.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/17/filterlists' -i -X DELETE \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{
"ids": [
5
]
}'
9.2.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
9.2.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Deleted."
}
10. Optimization Rule
10.1. Rule
A `GET` request will return a optimization rules
10.1.1. HTTP Request
URL
GET api/optimization-rule HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
10.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/optimization-rule' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
10.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.id |
integer |
Id |
data.*.userId |
integer |
User Id |
data.*.ownerCampaignId |
integer |
Campaign id where it was created rule |
data.*.name |
string |
Name |
data.*.timeRange |
string |
type: last_day,last_3_days,last_week,last_month |
data.*.then |
string |
type: whitelist_source,blacklist_source |
data..conditions..condition |
string |
Condition type: (when,and,or) first condition must be - when |
data..conditions..action |
string |
Actions type: (ctr,clicks,winrate,impressions,dspSpend) |
data..conditions..comparison |
string |
Comparison type: (>,<,=) |
data..conditions..value |
string |
Value |
data.*.targetFilterListId |
integer |
Filter list id |
data.*.createdAt |
datetime |
Date of creation |
data.*.updatedAt |
datetime |
Date of last modification |
meta.pagination.total |
integer |
Pagination: total items count |
meta.pagination.count |
integer |
Pagination: page items count |
meta.pagination.per_page |
integer |
Pagination: items per page |
meta.pagination.current_page |
integer |
Pagination: current page number |
meta.pagination.total_pages |
integer |
Pagination: total pages count |
meta.pagination.links |
array |
Pagination: array links |
10.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"id": 1,
"userId": 10,
"ownerCampaignId": 100,
"name": "TEST Rule#1",
"timeRange": "last_day",
"then": "blacklist_source",
"conditions": [
{
"condition": "when",
"action": "dspSpend",
"comparison": ">",
"value": "10"
}
],
"targetFilterListId": 501,
"createdAt": "2026-02-09 12:56:10",
"updatedAt": "2026-02-09 12:56:10"
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 15,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
10.2. Get rule by ID
A `GET` request will return a optimization rule
10.2.1. HTTP Request
URL
GET api/optimization-rule/999 HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
10.2.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/optimization-rule/999' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
10.2.3. Response Body
| Path | Type | Description |
|---|---|---|
data.id |
integer |
Id |
data.userId |
integer |
User Id |
data.ownerCampaignId |
integer |
Campaign id where it was created rule |
data.name |
string |
Name |
data.timeRange |
string |
type: last_day,last_3_days,last_week,last_month |
data.then |
string |
type: whitelist_source,blacklist_source |
data.conditions.*.condition |
string |
Condition type: (when,and,or) first condition must be - when |
data.conditions.*.action |
string |
Actions type: (ctr,clicks,winrate,impressions,dspSpend) |
data.conditions.*.comparison |
string |
Comparison type: (>,<,=) |
data.conditions.*.value |
string |
Value |
data.targetFilterListId |
integer |
Filter list id |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
10.2.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": {
"id": 999,
"userId": 10,
"ownerCampaignId": 100,
"name": "TEST Rule#1",
"timeRange": "last_day",
"then": "blacklist_source",
"conditions": [
{
"condition": "when",
"action": "dspSpend",
"comparison": ">",
"value": "10"
}
],
"targetFilterListId": 501,
"createdAt": "2026-02-09 12:56:10",
"updatedAt": "2026-02-09 12:56:10"
}
}
10.3. Create a rule
A `POST` request will return a optimization rule
10.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
name |
string |
Name |
+ |
timeRange |
string |
type: (last_day,last_3_days,last_week,last_month) |
+ |
then |
string |
type: (whitelist_source,blacklist_source) |
+ |
targetFilterListId |
integer |
Filter list id |
+ |
conditions.*.condition |
string |
Condition type: (when,and,or) first condition must be - when |
+ |
conditions.*.action |
string |
Actions type: (ctr,clicks,winrate,impressions,dspSpend) |
+ |
conditions.*.comparison |
string |
Comparison type: (>,<,=) |
+ |
conditions.*.value |
string |
Value |
+ |
10.3.2. HTTP Request
URL
POST api/optimization-rule HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Content-type: application/x-www-form-urlencoded
DATA
{
"name": "Test",
"timeRange": "last_day",
"then": "blacklist_source",
"targetFilterListId": 501,
"conditions": [
{
"condition": "when",
"action": "dspPrice",
"comparison": ">",
"value": "0.5"
}
]
}
10.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/optimization-rule' -i -X POST \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{
"name": "Test",
"timeRange": "last_day",
"then": "blacklist_source",
"targetFilterListId": 501,
"conditions": [
{
"condition": "when",
"action": "dspPrice",
"comparison": ">",
"value": "0.5"
}
]
}'
10.3.4. Response Body
| Path | Type | Description |
|---|---|---|
data.id |
integer |
Id |
data.userId |
integer |
User Id |
data.ownerCampaignId |
integer |
Campaign id where it was created rule |
data.name |
string |
Name |
data.timeRange |
string |
type: (last_day,last_3_days,last_week,last_month) |
data.then |
string |
type: (whitelist_source,blacklist_source) |
data.conditions.*.condition |
string |
Condition type: (when,and,or) first condition must be - when |
data.conditions.*.action |
string |
Actions type: (ctr,clicks,winrate,impressions,dspSpend) |
data.conditions.*.comparison |
string |
Comparison type: (>,<,=) |
data.conditions.*.value |
string |
Value |
data.targetFilterListId |
integer |
Filter list id |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
10.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": {
"id": 1001,
"userId": 10,
"ownerCampaignId": 100,
"name": "Test",
"timeRange": "last_day",
"then": "blacklist_source",
"conditions": [
{
"condition": "when",
"action": "dspPrice",
"comparison": ">",
"value": "0.5"
}
],
"targetFilterListId": 501,
"createdAt": "2026-02-09 12:56:10",
"updatedAt": "2026-02-09 12:56:10"
}
}
10.4. Rule update
A `PATCH` request will return a optimization rule
10.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
name |
string |
Name |
+ |
timeRange |
string |
type: (last_day,last_3_days,last_week,last_month) |
+ |
then |
string |
type: (whitelist_source,blacklist_source) |
+ |
targetFilterListId |
integer |
Filter list id |
+ |
conditions.*.condition |
string |
Condition type: (when,and,or) first condition must be - when |
+ |
conditions.*.action |
string |
Actions type: (ctr,clicks,winrate,impressions,dspSpend) |
+ |
conditions.*.comparison |
string |
Comparison type: (>,<,=) |
+ |
conditions.*.value |
string |
Value |
+ |
10.4.2. HTTP Request
URL
PUT api/optimization-rule/2002 HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Content-type: application/x-www-form-urlencoded
DATA
{
"name": "Test#2",
"timeRange": "last_week",
"then": "whitelist_source",
"targetFilterListId": 777,
"conditions": [
{
"condition": "when",
"action": "dspPrice",
"comparison": "<",
"value": "1"
}
]
}
10.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/optimization-rule/2002' -i -X PUT \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{
"name": "Test#2",
"timeRange": "last_week",
"then": "whitelist_source",
"targetFilterListId": 777,
"conditions": [
{
"condition": "when",
"action": "dspPrice",
"comparison": "<",
"value": "1"
}
]
}'
10.4.4. Response Body
| Path | Type | Description |
|---|---|---|
data.id |
integer |
Id |
data.userId |
integer |
User Id |
data.ownerCampaignId |
integer |
Campaign id where it was created rule |
data.name |
string |
Name |
data.timeRange |
string |
type: (last_day,last_3_days,last_week,last_month) |
data.then |
string |
type: (whitelist_source,blacklist_source) |
data.conditions.*.condition |
string |
Condition type: (when,and,or) first condition must be - when |
data.conditions.*.action |
string |
Actions type: (ctr,clicks,winrate,impressions,dspSpend) |
data.conditions.*.comparison |
string |
Comparison type: (>,<,=) |
data.conditions.*.value |
string |
Value |
data.targetFilterListId |
integer |
Filter list id |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
10.4.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": {
"id": 2002,
"userId": 10,
"ownerCampaignId": 100,
"name": "Test#2",
"timeRange": "last_week",
"then": "whitelist_source",
"conditions": [
{
"condition": "when",
"action": "dspPrice",
"comparison": "<",
"value": "1"
}
],
"targetFilterListId": 777,
"createdAt": "2026-02-09 12:56:10",
"updatedAt": "2026-02-09 12:56:10"
}
}
10.5. Remove Rule assigned to Campaign
A `DELETE` request will delete a Optimization rule relation
10.5.1. HTTP Request
URL
DELETE api/optimization-rule/3003 HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8 Content-type: application/x-www-form-urlencoded
DATA
{}
10.5.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/optimization-rule/3003' -i -X DELETE \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{}'
10.5.3. Response Body
| Path | Type | Description |
|---|---|---|
deleted |
boolean |
is deleted |
10.5.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"deleted": true
}
11. Assign Optimization rules to Campaigns
11.1. Get Rule assigned to Campaign
A `GET` request will return a optimization rule relation
11.1.1. HTTP Request
URL
GET api/campaign/9/optimization-rule-relation HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiI2T2Rpa29hM3BFeEVyNTk4Iiwic3ViIjoiMTQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.pfc7O7lTnhbPHvq78STtK-gvNTRg-w1HZggI4X-G0JE
DATA
{}
11.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaign/9/optimization-rule-relation' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiI2T2Rpa29hM3BFeEVyNTk4Iiwic3ViIjoiMTQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.pfc7O7lTnhbPHvq78STtK-gvNTRg-w1HZggI4X-G0JE' \
-d '{}'
11.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.id |
integer |
Id |
data.userId |
integer |
User Id |
data.ownerCampaignId |
integer |
Campaign id where it was created rule |
data.name |
string |
Name |
data.timeRange |
string |
last_day |
last_3_days |
last_week |
last_month |
data.then |
string |
whitelist_source |
blacklist_source |
data.targetFilterListId |
integer |
Filter list id |
data.conditions.*.condition |
string |
Condition (when |
and |
or) first condition must be - when |
data.conditions.*.action |
string |
Actions (ctr |
clicks |
winrate |
impressions |
dspSpend) |
data.conditions.*.comparison |
string |
Comparison types (> |
< |
=) |
data.conditions.*.value |
string |
Value |
data.createdAt |
datetime |
Date of creation |
data.updatedAt |
datetime |
Date of last modification |
11.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"data": {
"id": 1,
"userId": 14,
"ownerCampaignId": 9,
"name": "TEST Rule#1",
"timeRange": "last_week",
"then": "blacklist_source",
"targetFilterListId": 1,
"conditions": [
{
"condition": "when",
"action": "dspSpend",
"comparison": "<",
"value": 5000
}
],
"createdAt": "2026-02-09T12:56:04.000000Z",
"updatedAt": "2026-02-09T12:56:04.000000Z"
}
}
11.2. Replace Rule assigned to Campaign
A `POST` request will return a optimization rule relation
11.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
campaignId |
integer |
campaignId |
+ |
ruleId |
integer |
ruleId |
+ |
11.2.2. HTTP Request
URL
POST api/campaign/optimization-rule-relation HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiIySmNFY0plSzVYaHo4MXd3Iiwic3ViIjoiMTUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.3ddUzfuBL_Jl8J9IpVkj8Q1nAFnB2a2ZErfWP4dwGMY
DATA
{
"campaignId": 10,
"ruleId": 2
}
11.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaign/optimization-rule-relation' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiIySmNFY0plSzVYaHo4MXd3Iiwic3ViIjoiMTUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.3ddUzfuBL_Jl8J9IpVkj8Q1nAFnB2a2ZErfWP4dwGMY' \
-d '{
"campaignId": 10,
"ruleId": 2
}'
11.2.4. Response Body
| Path | Type | Description |
|---|---|---|
campaignId |
integer |
campaignId |
ruleId |
integer |
ruleId |
11.2.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"campaignId": 0,
"ruleId": 2
}
11.3. Remove Rule assigned to Campaign
A `DELETE` request will delete a Optimization rule relation
11.3.1. HTTP Request
URL
DELETE api/campaign/11/optimization-rule-relation HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiI5Z0ZDVlZnaHhvZWduUEhSIiwic3ViIjoiMTYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.yJD4GcT6JISZyNz7mNV8F7poYYSK5dpPNsOc9VWXqc4 Content-type: application/x-www-form-urlencoded
DATA
{}
11.3.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaign/11/optimization-rule-relation' -i -X DELETE \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA2NDE3NjQsImV4cCI6MTc3MDY0NTM2NCwibmJmIjoxNzcwNjQxNzY0LCJqdGkiOiI5Z0ZDVlZnaHhvZWduUEhSIiwic3ViIjoiMTYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.yJD4GcT6JISZyNz7mNV8F7poYYSK5dpPNsOc9VWXqc4' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{}'
11.3.3. Response Body
| Path | Type | Description |
|---|---|---|
deleted |
boolean |
is deleted |
11.3.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
X-ratelimit-limit: 500
X-ratelimit-remaining: 499
{
"deleted": true
}
Request validation list
Campaign.contentCategories
-
IAB1
-
IAB2
-
IAB3
-
IAB4
-
IAB5
-
IAB6
-
IAB7
-
IAB8
-
IAB9
-
IAB10
-
IAB11
-
IAB12
-
IAB13
-
IAB14
-
IAB15
-
IAB16
-
IAB17
-
IAB18
-
IAB19
-
IAB20
-
IAB21
-
IAB22
-
IAB23
Campaign.type
-
banner
-
native
-
video
-
audio
Campaign.connectionTypes
-
wifi
-
ethernet
-
cellular_all
-
cellular_all
-
cellular_3g
-
cellular_4g
-
cellular_5g
Campaign.geoCountries
-
Use GET /geo/countries
-
Use response field: iso3
Campaign.geoRegions
-
Use GET /geo/regions?selectedCountries=USA,CAN
-
Use response field: state_iso2
Campaign.geoCities
-
Use GET /geo/cities?selectedCountries=USA&selectedRegions=US-CA
-
Use response field: geoname_id
Campaign.OS
-
Android
-
Android 8.0
-
Android 8.1
-
Android 9.0
-
Android 10.0
-
Android 11.0
-
Android 12.0
-
Android 13.0
-
Android 14.0
-
Android 15.0
-
iOS
-
iOS 10.0
-
iOS 10.1
-
iOS 10.2
-
iOS 10.3
-
iOS 11.0
-
iOS 11.1
-
iOS 11.2
-
iOS 11.3
-
iOS 12.0
-
iOS 12.1
-
iOS 12.2
-
iOS 12.3
-
iOS 12.4
-
iOS 13.1
-
iOS 13.2
-
iOS 13.3
-
iOS 13.4
-
iOS 13.5
-
iOS 13.6
-
iOS 14.0
-
iOS 14.1
-
iOS 14.2
-
iOS 14.3
-
iOS 14.4
-
iOS 14.5
-
iOS 14.6
-
iOS 14.7
-
iOS 14.8
-
iOS 15.0
-
iOS 15.1
-
iOS 15.2
-
iOS 15.3
-
iOS 15.4
-
iOS 15.5
-
iOS 15.6
-
iOS 15.7
-
iOS 16.0
-
iOS 16.1
-
iOS 16.2
-
iOS 16.3
-
iOS 16.4
-
iOS 16.5
-
iOS 16.6
-
iOS 16.7
-
iOS 17.0
-
iOS 17.1
-
iOS 17.2
-
iOS 17.3
-
iOS 17.4
-
iOS 17.5
-
iOS 17.6
-
iOS 18.0
-
iOS 18.1
-
iOS 18.2
-
iOS 18.3
-
iOS 18.4
-
iOS 18.5
-
iOS 18.6
-
iOS 18.7
-
iOS 26.0
-
iOS 26.1
-
Mac OS
-
Mac OS 10.1
-
Mac OS 10.2
-
Mac OS 10.3
-
Mac OS 10.4
-
Mac OS 10.5
-
Mac OS 10.6
-
Mac OS 10.7
-
Mac OS 10.8
-
Mac OS 10.9
-
Mac OS 10.10
-
Mac OS 10.11
-
Mac OS 10.12
-
Mac OS 10.13
-
Mac OS 10.14
-
Mac OS 10.15
-
Mac OS 11.0
-
Mac OS 11.1
-
Mac OS 11.2
-
Mac OS 11.3
-
Mac OS 11.4
-
Mac OS 11.5
-
Mac OS 11.6
-
Mac OS 12.0
-
Mac OS 12.1
-
Mac OS 12.2
-
Mac OS 12.3
-
Mac OS 12.4
-
Mac OS 12.5
-
Mac OS 12.6
-
Mac OS 13.0
-
Mac OS 13.1
-
Mac OS 13.2
-
Mac OS 13.3
-
Mac OS 13.4
-
Mac OS 13.5
-
Mac OS 13.6
-
Mac OS 14.0
-
Mac OS 14.1
-
Mac OS 14.2
-
Mac OS 14.3
-
Mac OS 14.4
-
Mac OS 14.5
-
BlackBerry
-
Linux
-
Windows
-
Windows 8.1
-
Windows 10
-
Windows 11
-
Windows Mobile
-
Symbian
-
Symbian 9.1
-
Symbian 9.2
-
Symbian 9.3
-
Symbian 9.4
Campaign.browser
-
Chrome
-
Edge
-
IE
-
Safari
-
Mozilla
-
Opera
-
UCBrowser
-
Yandex
Campaign.deviceLanguage
-
ab
-
aa
-
af
-
sq
-
am
-
ar
-
an
-
hy
-
as
-
ay
-
az
-
ba
-
eu
-
bn
-
dz
-
bh
-
bi
-
br
-
bg
-
my
-
be
-
km
-
ca
-
zh
-
zh-Hans
-
zh-Hant
-
co
-
hr
-
cs
-
da
-
nl
-
en
-
eo
-
et
-
fo
-
fa
-
fj
-
fi
-
fr
-
fy
-
gl
-
gd
-
gv
-
ka
-
de
-
el
-
kl
-
gn
-
gu
-
ht
-
ha
-
he
-
iw
-
hi
-
hu
-
is
-
io
-
id
-
in
-
ia
-
ie
-
iu
-
ik
-
ga
-
it
-
ja
-
jv
-
kn
-
ks
-
kk
-
rw
-
ky
-
rn
-
ko
-
ku
-
lo
-
la
-
lv
-
li
-
ln
-
lt
-
mk
-
mg
-
ms
-
ml
-
mt
-
mi
-
mr
-
mo
-
mn
-
na
-
ne
-
no
-
oc
-
or
-
om
-
ps
-
pl
-
pt
-
pa
-
qu
-
rm
-
ro
-
ru
-
sm
-
sg
-
sa
-
sr
-
sh
-
st
-
tn
-
sn
-
ii
-
sd
-
si
-
ss
-
sk
-
sl
-
so
-
es
-
su
-
sw
-
sv
-
tl
-
tg
-
ta
-
tt
-
te
-
th
-
bo
-
ti
-
to
-
ts
-
tr
-
tk
-
tw
-
ug
-
uk
-
ur
-
uz
-
vi
-
vo
-
wa
-
cy
-
wo
-
xh
-
yi
-
ji
-
yo
-
zu
Campaign.extention.deviceVendor
-
acer
-
alcatel
-
alcatel one touch
-
amazon
-
apple
-
asus
-
dell
-
google
-
htc
-
huawei
-
lenovo
-
lg
-
motorola
-
oneplus
-
rca
-
samsung
-
sony
-
sony ericsson
-
verizon
-
xiaomi
-
zte
Campaign.budgetUse
-
fast
-
pacer
Campaign.frequencyType
-
user
-
ip