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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMvYXBpL3VzZXJzL2xvZ2luIiwiaWF0IjoxNzcwOTE0MDg5LCJleHAiOjE3NzA5MTc2ODksIm5iZiI6MTc3MDkxNDA4OSwianRpIjoiQ0FHSFpzUkdmdkZiWlNBaCIsInN1YiI6IjE4IiwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyJ9.ZRpt78cY1lptE47vdhTz1kMrC5V1KCqwYgMfnObNqTI",
"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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiJ6VnIwVzB0cENZZzFDUE44Iiwic3ViIjoiMTkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.6NmAdLLtsu6GazoM6ahc_o3y7nuAoqxcW843FXdYoYI
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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiJ6VnIwVzB0cENZZzFDUE44Iiwic3ViIjoiMTkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.6NmAdLLtsu6GazoM6ahc_o3y7nuAoqxcW843FXdYoYI' \
-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. Assign Time Targeting to Campaigns
2.1. Get Campaign Time Targeting
A `GET` request with Campaign Id in url will return time targeting mapped to the campaign.
2.1.1. HTTP Request
URL
GET api/campaigns/42/time-targeting HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
2.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/42/time-targeting' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
2.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.dayOfWeek |
integer |
Day of week (0..6) |
data.*.hour |
integer |
Hour of day (0..23) |
2.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"dayOfWeek": 0,
"hour": 0
},
{
"dayOfWeek": 6,
"hour": 23
}
]
}
2.2. Replace Campaign Time Targeting
A `POST` request replaces all time targeting settings for the campaign. Provide array of day/hour combinations (dayOfWeek: 0-6, hour: 0-23). Optional `timeZone` offset for conversion. All existing time targeting will be removed and replaced with new data.
2.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
items.*.dayOfWeek |
integer |
Day of week (0..6) |
+ |
items.*.hour |
integer |
Hour of day (0..23) |
+ |
timeZone |
float |
Timezone offset for conversion of day/hour to internal timestamps |
2.2.2. HTTP Request
URL
POST api/campaigns/43/time-targeting 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
{
"items": [
{
"dayOfWeek": 3,
"hour": 12
}
],
"timeZone": 0
}
2.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/43/time-targeting' -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 '{
"items": [
{
"dayOfWeek": 3,
"hour": 12
}
],
"timeZone": 0
}'
2.2.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
2.2.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Replaced."
}
2.3. Append Campaign Time Targeting
A `PATCH` request with Campaign Id in url will append time targeting mapped to the campaign.
2.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
items.*.dayOfWeek |
integer |
Day of week (0..6) |
+ |
items.*.hour |
integer |
Hour of day (0..23) |
+ |
2.3.2. HTTP Request
URL
PATCH api/campaigns/44/time-targeting HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
"items": [
{
"dayOfWeek": 3,
"hour": 12
}
]
}
2.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/44/time-targeting' -i -X PATCH \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{
"items": [
{
"dayOfWeek": 3,
"hour": 12
}
]
}'
2.3.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
2.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Appended."
}
2.4. Delete Campaign Time Targeting
A `DELETE` request with Campaign Id in url will remove time targeting mapped to the campaign.
2.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
items.*.dayOfWeek |
integer |
Day of week (0..6). If empty, deletes all items. |
|
items.*.hour |
integer |
Hour of day (0..23). If empty, deletes all items. |
2.4.2. HTTP Request
URL
DELETE api/campaigns/45/time-targeting 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
{
"items": [
{
"dayOfWeek": 0,
"hour": 0
}
]
}
2.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/45/time-targeting' -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 '{
"items": [
{
"dayOfWeek": 0,
"hour": 0
}
]
}'
2.4.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
2.4.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Deleted."
}
3. Statistic
3.1. Statistic
A `POST` request will return statistic.
3.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.* |
string |
Group by field name |
+ |
agregatedFields.* |
string |
Agregated field name |
+ |
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) |
3.1.2. HTTP Request
URL
POST api/statistic HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTksImV4cCI6MTc3MDkxNzY5OSwibmJmIjoxNzcwOTE0MDk5LCJqdGkiOiJ2U1ZMQTJEV0NuZGdLQUNrIiwic3ViIjoiMTA2IiwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyJ9.gRnHBA9oMdBMhpgE8OUiew7SfxHhwRTPB8Rw8wUNBwE
DATA
{
"timezone": "Etc\/GMT+10",
"from": "2026-02-10",
"to": "2026-02-12",
"groupBy": [
"YMD",
"campaignId",
"creativeId"
],
"agregatedFields": [
"bids",
"wins",
"impressions",
"clicks",
"dspSpend",
"winrate",
"ctr"
],
"orderField": "YMD",
"orderDir": "desc",
"page": 1,
"rowsOnPage": 25
}
3.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTksImV4cCI6MTc3MDkxNzY5OSwibmJmIjoxNzcwOTE0MDk5LCJqdGkiOiJ2U1ZMQTJEV0NuZGdLQUNrIiwic3ViIjoiMTA2IiwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyJ9.gRnHBA9oMdBMhpgE8OUiew7SfxHhwRTPB8Rw8wUNBwE' \
-d '{
"timezone": "Etc\/GMT+10",
"from": "2026-02-10",
"to": "2026-02-12",
"groupBy": [
"YMD",
"campaignId",
"creativeId"
],
"agregatedFields": [
"bids",
"wins",
"impressions",
"clicks",
"dspSpend",
"winrate",
"ctr"
],
"orderField": "YMD",
"orderDir": "desc",
"page": 1,
"rowsOnPage": 25
}'
3.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 |
3.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-10",
"campaignId": 1,
"creativeId": 11,
"campaignId_dict": "UA | Pay Master | US | iOS | CPC | #1",
"creativeId_dict": "CR | Idle Empire | Video 1080x1920 15s | iOS | V1 | #11",
"bids": 277163,
"wins": 52974,
"impressions": 52963,
"clicks": 1711,
"dspSpend": 229.50605086,
"ctr": 3.230557,
"winrate": 19.112941
},
{
"YMD": "2026-02-10",
"campaignId": 1,
"creativeId": 12,
"campaignId_dict": "UA | Pay Master | US | iOS | CPC | #1",
"creativeId_dict": "CR | Podcast Hub | Video 1920x1080 30s | iOS | V2 | #12",
"bids": 717626,
"wins": 181133,
"impressions": 167331,
"clicks": 932,
"dspSpend": 617.58726277,
"ctr": 0.55698,
"winrate": 25.240585
},
{
"YMD": "2026-02-10",
"campaignId": 2,
"creativeId": 11,
"campaignId_dict": "UA | Battery Saver Pro | GB | iOS | CPC | #2",
"creativeId_dict": "CR | Idle Empire | Video 1080x1920 15s | iOS | V1 | #11",
"bids": 1044356,
"wins": 298382,
"impressions": 279435,
"clicks": 8376,
"dspSpend": 634.72905776,
"ctr": 2.997477,
"winrate": 28.570909
},
{
"YMD": "2026-02-10",
"campaignId": 2,
"creativeId": 12,
"campaignId_dict": "UA | Battery Saver Pro | GB | iOS | CPC | #2",
"creativeId_dict": "CR | Podcast Hub | Video 1920x1080 30s | iOS | V2 | #12",
"bids": 844484,
"wins": 27785,
"impressions": 27596,
"clicks": 915,
"dspSpend": 133.44763296,
"ctr": 3.315698,
"winrate": 3.290175
},
{
"YMD": "2026-02-11",
"campaignId": 1,
"creativeId": 11,
"campaignId_dict": "UA | Pay Master | US | iOS | CPC | #1",
"creativeId_dict": "CR | Idle Empire | Video 1080x1920 15s | iOS | V1 | #11",
"bids": 202742,
"wins": 25300,
"impressions": 25052,
"clicks": 488,
"dspSpend": 19.95000989,
"ctr": 1.947948,
"winrate": 12.478914
},
{
"YMD": "2026-02-11",
"campaignId": 1,
"creativeId": 12,
"campaignId_dict": "UA | Pay Master | US | iOS | CPC | #1",
"creativeId_dict": "CR | Podcast Hub | Video 1920x1080 30s | iOS | V2 | #12",
"bids": 1606372,
"wins": 135383,
"impressions": 135248,
"clicks": 1686,
"dspSpend": 146.85579485,
"ctr": 1.246599,
"winrate": 8.427873
},
{
"YMD": "2026-02-11",
"campaignId": 2,
"creativeId": 11,
"campaignId_dict": "UA | Battery Saver Pro | GB | iOS | CPC | #2",
"creativeId_dict": "CR | Idle Empire | Video 1080x1920 15s | iOS | V1 | #11",
"bids": 717344,
"wins": 53167,
"impressions": 50461,
"clicks": 671,
"dspSpend": 72.42737975,
"ctr": 1.32974,
"winrate": 7.411646
},
{
"YMD": "2026-02-11",
"campaignId": 2,
"creativeId": 12,
"campaignId_dict": "UA | Battery Saver Pro | GB | iOS | CPC | #2",
"creativeId_dict": "CR | Podcast Hub | Video 1920x1080 30s | iOS | V2 | #12",
"bids": 1268777,
"wins": 122665,
"impressions": 120997,
"clicks": 1701,
"dspSpend": 318.48225355,
"ctr": 1.40582,
"winrate": 9.667972
},
{
"YMD": "2026-02-12",
"campaignId": 1,
"creativeId": 11,
"campaignId_dict": "UA | Pay Master | US | iOS | CPC | #1",
"creativeId_dict": "CR | Idle Empire | Video 1080x1920 15s | iOS | V1 | #11",
"bids": 1217798,
"wins": 96051,
"impressions": 92728,
"clicks": 1091,
"dspSpend": 403.20304235,
"ctr": 1.176559,
"winrate": 7.887269
},
{
"YMD": "2026-02-12",
"campaignId": 1,
"creativeId": 12,
"campaignId_dict": "UA | Pay Master | US | iOS | CPC | #1",
"creativeId_dict": "CR | Podcast Hub | Video 1920x1080 30s | iOS | V2 | #12",
"bids": 1320344,
"wins": 130795,
"impressions": 127185,
"clicks": 3133,
"dspSpend": 588.41249955,
"ctr": 2.463341,
"winrate": 9.906131
},
{
"YMD": "2026-02-12",
"campaignId": 2,
"creativeId": 11,
"campaignId_dict": "UA | Battery Saver Pro | GB | iOS | CPC | #2",
"creativeId_dict": "CR | Idle Empire | Video 1080x1920 15s | iOS | V1 | #11",
"bids": 861026,
"wins": 236452,
"impressions": 218080,
"clicks": 2536,
"dspSpend": 1071.76310128,
"ctr": 1.162876,
"winrate": 27.461656
},
{
"YMD": "2026-02-12",
"campaignId": 2,
"creativeId": 12,
"campaignId_dict": "UA | Battery Saver Pro | GB | iOS | CPC | #2",
"creativeId_dict": "CR | Podcast Hub | Video 1920x1080 30s | iOS | V2 | #12",
"bids": 888304,
"wins": 204590,
"impressions": 194892,
"clicks": 5587,
"dspSpend": 769.92591319,
"ctr": 2.866716,
"winrate": 23.03153
}
],
"totals": {
"YMD": "",
"campaignId": 0,
"creativeId": 0,
"campaignId_dict": "",
"creativeId_dict": "",
"bids": 10966336,
"wins": 1564677,
"impressions": 1491968,
"clicks": 28827,
"dspSpend": 5006.28999876,
"ctr": 1.9750259166666666,
"winrate": 15.207300083333337
},
"pagination": {
"page": 1,
"per_page": 25,
"total": 12
}
}
3.2. Filtering statistic
A `POST` request will return statistic.
3.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.* |
string |
Group by field name |
+ |
agregatedFields.* |
string |
Agregated field name |
+ |
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) |
3.2.2. HTTP Request
URL
POST api/statistic HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTksImV4cCI6MTc3MDkxNzY5OSwibmJmIjoxNzcwOTE0MDk5LCJqdGkiOiJqNG9veEdIYU1FZWNPUFVDIiwic3ViIjoiMTA3IiwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyJ9.eDDIabNSwhvZBa29pxakYAGbEcEq121M_Z-RK4OEybg
DATA
{
"timezone": "UTC",
"from": "2026-02-10",
"to": "2026-02-12",
"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
}
3.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTksImV4cCI6MTc3MDkxNzY5OSwibmJmIjoxNzcwOTE0MDk5LCJqdGkiOiJqNG9veEdIYU1FZWNPUFVDIiwic3ViIjoiMTA3IiwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyJ9.eDDIabNSwhvZBa29pxakYAGbEcEq121M_Z-RK4OEybg' \
-d '{
"timezone": "UTC",
"from": "2026-02-10",
"to": "2026-02-12",
"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
}'
3.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 |
3.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-10",
"campaignId": 1,
"creativeId": 11,
"campaignId_dict": "UA | Photo Editor Pro | US | iOS | CPC | #1",
"creativeId_dict": "CR | Call Recorder | Video 1080x1920 15s | iOS | V1 | #11",
"bids": 1305997,
"wins": 304453,
"impressions": 293219,
"clicks": 5968,
"dspSpend": 404.36160942,
"ctr": 2.035339,
"winrate": 23.311922
},
{
"YMD": "2026-02-10",
"campaignId": 1,
"creativeId": 12,
"campaignId_dict": "UA | Photo Editor Pro | US | iOS | CPC | #1",
"creativeId_dict": "CR | Coupon Hunter | Video 1920x1080 30s | iOS | V2 | #12",
"bids": 294204,
"wins": 26059,
"impressions": 25947,
"clicks": 486,
"dspSpend": 74.02564933,
"ctr": 1.873049,
"winrate": 8.857459
},
{
"YMD": "2026-02-10",
"campaignId": 2,
"creativeId": 11,
"campaignId_dict": "UA | Word Connect | GB | iOS | CPC | #2",
"creativeId_dict": "CR | Call Recorder | Video 1080x1920 15s | iOS | V1 | #11",
"bids": 1061797,
"wins": 164070,
"impressions": 159476,
"clicks": 3565,
"dspSpend": 204.24649486,
"ctr": 2.235446,
"winrate": 15.452106
},
{
"YMD": "2026-02-10",
"campaignId": 2,
"creativeId": 12,
"campaignId_dict": "UA | Word Connect | GB | iOS | CPC | #2",
"creativeId_dict": "CR | Coupon Hunter | Video 1920x1080 30s | iOS | V2 | #12",
"bids": 1939908,
"wins": 408756,
"impressions": 394123,
"clicks": 10995,
"dspSpend": 1011.83670738,
"ctr": 2.789738,
"winrate": 21.070896
},
{
"YMD": "2026-02-11",
"campaignId": 1,
"creativeId": 11,
"campaignId_dict": "UA | Photo Editor Pro | US | iOS | CPC | #1",
"creativeId_dict": "CR | Call Recorder | Video 1080x1920 15s | iOS | V1 | #11",
"bids": 1369008,
"wins": 118768,
"impressions": 114706,
"clicks": 2697,
"dspSpend": 424.38753821,
"ctr": 2.351228,
"winrate": 8.675479
},
{
"YMD": "2026-02-11",
"campaignId": 1,
"creativeId": 12,
"campaignId_dict": "UA | Photo Editor Pro | US | iOS | CPC | #1",
"creativeId_dict": "CR | Coupon Hunter | Video 1920x1080 30s | iOS | V2 | #12",
"bids": 939225,
"wins": 98762,
"impressions": 92678,
"clicks": 1633,
"dspSpend": 113.11868897,
"ctr": 1.762015,
"winrate": 10.515265
},
{
"YMD": "2026-02-11",
"campaignId": 2,
"creativeId": 11,
"campaignId_dict": "UA | Word Connect | GB | iOS | CPC | #2",
"creativeId_dict": "CR | Call Recorder | Video 1080x1920 15s | iOS | V1 | #11",
"bids": 1756341,
"wins": 493177,
"impressions": 459937,
"clicks": 6753,
"dspSpend": 1902.66094248,
"ctr": 1.468245,
"winrate": 28.079798
},
{
"YMD": "2026-02-11",
"campaignId": 2,
"creativeId": 12,
"campaignId_dict": "UA | Word Connect | GB | iOS | CPC | #2",
"creativeId_dict": "CR | Coupon Hunter | Video 1920x1080 30s | iOS | V2 | #12",
"bids": 1828510,
"wins": 488049,
"impressions": 471455,
"clicks": 5450,
"dspSpend": 1297.28292239,
"ctr": 1.155996,
"winrate": 26.691076
},
{
"YMD": "2026-02-12",
"campaignId": 1,
"creativeId": 11,
"campaignId_dict": "UA | Photo Editor Pro | US | iOS | CPC | #1",
"creativeId_dict": "CR | Call Recorder | Video 1080x1920 15s | iOS | V1 | #11",
"bids": 1212720,
"wins": 282091,
"impressions": 274700,
"clicks": 2205,
"dspSpend": 1055.0993505,
"ctr": 0.802694,
"winrate": 23.261017
},
{
"YMD": "2026-02-12",
"campaignId": 1,
"creativeId": 12,
"campaignId_dict": "UA | Photo Editor Pro | US | iOS | CPC | #1",
"creativeId_dict": "CR | Coupon Hunter | Video 1920x1080 30s | iOS | V2 | #12",
"bids": 405105,
"wins": 13732,
"impressions": 13490,
"clicks": 341,
"dspSpend": 10.01136068,
"ctr": 2.527798,
"winrate": 3.389738
},
{
"YMD": "2026-02-12",
"campaignId": 2,
"creativeId": 11,
"campaignId_dict": "UA | Word Connect | GB | iOS | CPC | #2",
"creativeId_dict": "CR | Call Recorder | Video 1080x1920 15s | iOS | V1 | #11",
"bids": 1702464,
"wins": 426224,
"impressions": 400693,
"clicks": 11362,
"dspSpend": 463.21673503,
"ctr": 2.835587,
"winrate": 25.035713
},
{
"YMD": "2026-02-12",
"campaignId": 2,
"creativeId": 12,
"campaignId_dict": "UA | Word Connect | GB | iOS | CPC | #2",
"creativeId_dict": "CR | Coupon Hunter | Video 1920x1080 30s | iOS | V2 | #12",
"bids": 1448135,
"wins": 149187,
"impressions": 143727,
"clicks": 4967,
"dspSpend": 558.98736021,
"ctr": 3.455857,
"winrate": 10.302009
}
],
"totals": {
"YMD": "",
"campaignId": 0,
"creativeId": 0,
"campaignId_dict": "",
"creativeId_dict": "",
"bids": 15263414,
"wins": 2973328,
"impressions": 2844151,
"clicks": 56422,
"dspSpend": 7519.235359459998,
"ctr": 2.107749333333333,
"winrate": 17.053539833333332
},
"pagination": {
"page": 1,
"per_page": 25,
"total": 12
}
}
4. Agency
4.1. Deposit to advert
A `POST` request
4.1.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
userId |
integer |
user id |
+ |
transactionAmount |
integer |
transaction amount |
+ |
4.1.2. HTTP Request
URL
POST api/deposit-agency-user HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODcsImV4cCI6MTc3MDkxNzY4NywibmJmIjoxNzcwOTE0MDg3LCJqdGkiOiJKUUFrSmppWndidjVhSmgwIiwic3ViIjoiMSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.lrcRPYk4zlqkUc374zWI2sSys7H4lZKXWz0We7X-WS0
DATA
{
"userId": 2,
"transactionAmount": 10
}
4.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODcsImV4cCI6MTc3MDkxNzY4NywibmJmIjoxNzcwOTE0MDg3LCJqdGkiOiJKUUFrSmppWndidjVhSmgwIiwic3ViIjoiMSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.lrcRPYk4zlqkUc374zWI2sSys7H4lZKXWz0We7X-WS0' \
-d '{
"userId": 2,
"transactionAmount": 10
}'
4.1.4. Response Body
| Path | Type | Description |
|---|---|---|
status |
string |
Result status |
balance |
float |
balance |
4.1.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
{
"status": "success",
"balance": "33282.00000"
}
4.2. Withdraw to advert
A `POST` request
4.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
userId |
integer |
user id |
+ |
transactionAmount |
integer |
transaction amount |
+ |
4.2.2. HTTP Request
URL
POST api/withdraw-agency-user HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODgsImV4cCI6MTc3MDkxNzY4OCwibmJmIjoxNzcwOTE0MDg4LCJqdGkiOiI0ZTI3OFhVeFNUNjZKU3dwIiwic3ViIjoiMyIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.A4KvZbP4OXC5RcPjrhbzN2Yi-d3V45ghwbOxXDWBz2k
DATA
{
"userId": 4,
"transactionAmount": 10
}
4.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODgsImV4cCI6MTc3MDkxNzY4OCwibmJmIjoxNzcwOTE0MDg4LCJqdGkiOiI0ZTI3OFhVeFNUNjZKU3dwIiwic3ViIjoiMyIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.A4KvZbP4OXC5RcPjrhbzN2Yi-d3V45ghwbOxXDWBz2k' \
-d '{
"userId": 4,
"transactionAmount": 10
}'
4.2.4. Response Body
| Path | Type | Description |
|---|---|---|
status |
string |
Result status |
balance |
float |
balance |
4.2.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
{
"status": "success",
"balance": "29338.00000"
}
4.3. User list with campaigns
A `GET` request
4.3.1. HTTP Request
URL
GET api/get-agency-users-with-campaigns HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODgsImV4cCI6MTc3MDkxNzY4OCwibmJmIjoxNzcwOTE0MDg4LCJqdGkiOiJrdUxrZ1NEeU1CSTZXQXdjIiwic3ViIjoiNSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.6MIGtwSBcLg3f87NCoWoX3I4gWyNUnjoighERPyjVyE
DATA
{
"where": "userId;5"
}
4.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODgsImV4cCI6MTc3MDkxNzY4OCwibmJmIjoxNzcwOTE0MDg4LCJqdGkiOiJrdUxrZ1NEeU1CSTZXQXdjIiwic3ViIjoiNSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.6MIGtwSBcLg3f87NCoWoX3I4gWyNUnjoighERPyjVyE' \
-d '{
"where": "userId;5"
}'
4.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.* |
string |
Connection type (wifi, ethernet, cellular_all, cellular_3g, cellular_4g, cellular_5g) |
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 |
4.3.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
Access-control-allow-origin: *
{
"data": [
{
"id": 5,
"email": null,
"firstName": "Lucious",
"lastName": "Prosacco",
"balance": null,
"bidResTotalCounter": null,
"bidResDailyCounter": null,
"winsTotalCounter": null,
"winsDailyCounter": null,
"impressionsTotalCounter": null,
"impressionsDailyCounter": null,
"clicksTotalCounter": null,
"clicksDailyCounter": null,
"spentDailyLimit": "731",
"spentDailyCounter": null,
"spentTotalLimit": "11981",
"spentTotalCounter": null,
"impressionsDailyLimit": "554858",
"impressionsTotalLimit": "1167265",
"campaigns": [
{
"id": 1,
"userId": 5,
"isActive": true,
"isRunning": false,
"type": "audio",
"name": "quam",
"isRewarded": false,
"isDesktopWeb": true,
"isMobileApp": false,
"isMobileWeb": false,
"isSmartphone": false,
"isTablet": false,
"isCTV": false,
"isDOOH": false,
"aDomain": "dickens.com",
"dateStart": "2024-06-28",
"dateEnd": "2027-02-06",
"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": 286,
"spentTotalLimit": 2425,
"impressionsDailyLimit": 269971,
"impressionsTotalLimit": 673482,
"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-12",
"updatedAt": "2026-02-12",
"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": "banner",
"name": "unde",
"isRewarded": false,
"isDesktopWeb": false,
"isMobileApp": true,
"isMobileWeb": false,
"isSmartphone": false,
"isTablet": true,
"isCTV": false,
"isDOOH": true,
"aDomain": "mcglynn.org",
"dateStart": "2024-12-12",
"dateEnd": "2026-12-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": 445,
"spentTotalLimit": 9556,
"impressionsDailyLimit": 284887,
"impressionsTotalLimit": 493783,
"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-12",
"updatedAt": "2026-02-12",
"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": []
}
}
}
5. Assign GEO Targeting (GPS) to Campaigns
5.1. Get Campaign GEO Targeting (GPS)
A `GET` request with Campaign Id in url will return GPS targeting mapped to the campaign.
5.1.1. HTTP Request
URL
GET api/campaigns/34/geo-targeting HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
5.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/34/geo-targeting' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
5.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.lat |
float |
Latitude |
data.*.lng |
float |
Longitude |
data.*.radius |
float |
Radius |
data.*.include |
boolean |
Include/exclude flag |
meta.pagination.total |
integer |
Total items count |
meta.pagination.count |
integer |
Current page items count |
meta.pagination.per_page |
integer |
Items per page |
meta.pagination.current_page |
integer |
Current page number |
meta.pagination.total_pages |
integer |
Total pages count |
meta.pagination.links.prev |
string |
URL to previous page |
meta.pagination.links.next |
string |
URL to next page |
5.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"lat": 50.4501,
"lng": 30.5234,
"radius": 10,
"include": true
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 1000,
"current_page": 1,
"total_pages": 1,
"links": {
"prev": null,
"next": null
}
}
}
}
5.2. Replace Campaign GEO Targeting (GPS)
A `POST` request with Campaign Id in url will replace GPS targeting mapped to the campaign.
5.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
items.*.lat |
float |
Latitude |
+ |
items.*.lng |
float |
Longitude |
+ |
items.*.radius |
float |
Radius |
+ |
items.*.include |
boolean |
Include/exclude |
+ |
5.2.2. HTTP Request
URL
POST api/campaigns/35/geo-targeting 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
{
"items": [
{
"lat": 50.4501,
"lng": 30.5234,
"radius": 10,
"include": true
}
]
}
5.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/35/geo-targeting' -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 '{
"items": [
{
"lat": 50.4501,
"lng": 30.5234,
"radius": 10,
"include": true
}
]
}'
5.2.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
5.2.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Replaced."
}
5.3. Append Campaign GEO Targeting (GPS)
A `PATCH` request with Campaign Id in url will append GPS targeting mapped to the campaign.
5.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
items.*.lat |
float |
Latitude |
+ |
items.*.lng |
float |
Longitude |
+ |
items.*.radius |
float |
Radius |
+ |
items.*.include |
boolean |
Include/exclude |
+ |
5.3.2. HTTP Request
URL
PATCH api/campaigns/36/geo-targeting HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
"items": [
{
"lat": 50.4501,
"lng": 30.5234,
"radius": 10,
"include": true
}
]
}
5.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/36/geo-targeting' -i -X PATCH \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{
"items": [
{
"lat": 50.4501,
"lng": 30.5234,
"radius": 10,
"include": true
}
]
}'
5.3.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
5.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Appended."
}
5.4. Delete Campaign GEO Targeting (GPS)
A `DELETE` request with Campaign Id in url will remove GPS targeting mapped to the campaign.
5.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
message |
string |
Result message |
+ |
5.4.2. HTTP Request
URL
DELETE api/campaigns/37/geo-targeting 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
{
"message": "Deleted."
}
5.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/37/geo-targeting' -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 '{
"message": "Deleted."
}'
5.4.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
5.4.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Deleted."
}
6. Assign GEO Targeting (ZipCode) to Campaigns
6.1. Get Campaign GEO Targeting (ZipCode)
A `GET` request with Campaign Id in url will return ZipCode geo targeting mapped to the campaign.
6.1.1. HTTP Request
URL
GET api/campaigns/38/geo-targeting-zip-code HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
6.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/38/geo-targeting-zip-code' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
6.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.lat |
float |
Latitude |
data.*.lng |
float |
Longitude |
data.*.zip |
string |
Zip code |
data.*.iso2 |
string |
Country ISO2 code |
data.*.countryName |
string |
Country name |
data.*.include |
boolean |
Include/exclude flag |
meta.pagination.total |
integer |
Total items count |
meta.pagination.count |
integer |
Current page items count |
meta.pagination.per_page |
integer |
Items per page |
meta.pagination.current_page |
integer |
Current page number |
meta.pagination.total_pages |
integer |
Total pages count |
meta.pagination.links.prev |
string |
URL to previous page |
meta.pagination.links.next |
string |
URL to next page |
6.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"lat": 50.4501,
"lng": 30.5234,
"zip": "01001",
"iso2": "UA",
"countryName": "Ukraine",
"include": true
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 1000,
"current_page": 1,
"total_pages": 1,
"links": {
"prev": null,
"next": null
}
}
}
}
6.2. Replace Campaign GEO Targeting (ZipCode)
A `POST` request with Campaign Id in url will replace ZipCode geo targeting mapped to the campaign.
6.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
items.*.lat |
float |
Latitude |
+ |
items.*.lng |
float |
Longitude |
+ |
items.*.zip |
string |
Zip code |
+ |
items.*.iso2 |
string |
Country ISO2 code |
+ |
items.*.include |
boolean |
Include/exclude |
+ |
6.2.2. HTTP Request
URL
POST api/campaigns/39/geo-targeting-zip-code 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
{
"items": [
{
"lat": 50.4501,
"lng": 30.5234,
"zip": "01001",
"iso2": "UA",
"include": true
}
]
}
6.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/39/geo-targeting-zip-code' -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 '{
"items": [
{
"lat": 50.4501,
"lng": 30.5234,
"zip": "01001",
"iso2": "UA",
"include": true
}
]
}'
6.2.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
6.2.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Replaced."
}
6.3. Append Campaign GEO Targeting (ZipCode)
A `PATCH` request with Campaign Id in url will append ZipCode geo targeting mapped to the campaign.
6.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
items.*.lat |
float |
Latitude |
+ |
items.*.lng |
float |
Longitude |
+ |
items.*.zip |
string |
Zip code |
+ |
items.*.iso2 |
string |
Country ISO2 code |
+ |
items.*.include |
boolean |
Include/exclude |
+ |
6.3.2. HTTP Request
URL
PATCH api/campaigns/40/geo-targeting-zip-code HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
"items": [
{
"lat": 50.4501,
"lng": 30.5234,
"zip": "01001",
"iso2": "UA",
"include": true
}
]
}
6.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/40/geo-targeting-zip-code' -i -X PATCH \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{
"items": [
{
"lat": 50.4501,
"lng": 30.5234,
"zip": "01001",
"iso2": "UA",
"include": true
}
]
}'
6.3.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
6.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Appended."
}
6.4. Delete Campaign GEO Targeting (ZipCode)
A `DELETE` request with Campaign Id in url will remove ZipCode geo targeting mapped to the campaign.
6.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
message |
string |
Result message |
+ |
6.4.2. HTTP Request
URL
DELETE api/campaigns/41/geo-targeting-zip-code 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
{
"message": "Deleted."
}
6.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/41/geo-targeting-zip-code' -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 '{
"message": "Deleted."
}'
6.4.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
6.4.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Deleted."
}
7. Assign Audiences to Campaigns
7.1. Get list of Audiences assigned to Campaign
A `GET` request returns paginated list of audiences assigned to the campaign. Each audience has a `type` field: `collect` (first-party retargeting), `trade` (lookalike/similar audiences), or `thirdParty` (external data provider audiences).
7.1.1. HTTP Request
URL
GET api/campaigns/15/audiences HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
7.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/15/audiences' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
7.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.type |
string |
Audience relation type (collect, trade, thirdParty) |
data.*.audience.id |
integer |
Audience id |
data.*.audience.title |
string |
Audience title |
data.*.audience.userId |
integer |
Audience owner user id |
data.*.audience.isIncludeDateRange |
boolean |
Is include date range |
data.*.audience.dateFrom |
datetime |
Date from |
data.*.audience.dateTo |
datetime |
Date to |
data.*.audience.usersTtlInDays |
integer |
Users TTL in days |
data.*.audience.collectionType |
string |
Collection type |
data.*.audience.hashTag |
string |
Hash tag |
data.*.audience.allUsers |
boolean |
All users |
data.*.audience.isActive |
boolean |
Audience active status |
data.*.audience.providerList |
array |
Provider list |
data.*.audience.providerId |
integer |
Provider id |
data.*.audience.isInclude |
boolean |
Audience isInclude flag |
data.*.audience.createdAt |
date |
Created at |
data.*.audience.updatedAt |
date |
Updated at |
meta.pagination.total |
integer |
Total items count |
meta.pagination.count |
integer |
Current page items count |
meta.pagination.per_page |
integer |
Items per page |
meta.pagination.current_page |
integer |
Current page number |
meta.pagination.total_pages |
integer |
Total pages count |
meta.pagination.links.prev |
string |
URL to previous page |
meta.pagination.links.next |
string |
URL to next page |
7.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"type": "collect",
"audience": {
"id": 1,
"title": "Audience #1",
"userId": 31,
"isIncludeDateRange": false,
"dateFrom": null,
"dateTo": null,
"usersTtlInDays": 30,
"collectionType": null,
"hashTag": null,
"allUsers": false,
"isActive": true,
"providerList": [],
"providerId": null,
"isInclude": true,
"createdAt": "2026-02-12",
"updatedAt": "2026-02-12"
}
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 100,
"current_page": 1,
"total_pages": 1,
"links": {
"prev": null,
"next": null
}
}
}
}
7.2. Replace Audiences assigned to Campaign
A `POST` request with Campaign Id in url will replace Audiences assigned to Campaign.
7.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
items.*.id |
integer |
Audience id |
+ |
items.*.type |
string |
Audience relation type (collect, trade, thirdParty) |
+ |
7.2.2. HTTP Request
URL
POST api/campaigns/16/audiences 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
{
"items": [
{
"id": 1,
"type": "collect"
}
]
}
7.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/16/audiences' -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 '{
"items": [
{
"id": 1,
"type": "collect"
}
]
}'
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
{
"message": "Replaced."
}
7.3. Append Audiences assigned to Campaign
A `PATCH` request with Campaign Id in url will append Audiences assigned to Campaign.
7.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
items.*.id |
integer |
Audience id |
+ |
items.*.type |
string |
Audience relation type (collect, trade, thirdParty) |
+ |
7.3.2. HTTP Request
URL
PATCH api/campaigns/17/audiences HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
"items": [
{
"id": 1,
"type": "collect"
}
]
}
7.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/17/audiences' -i -X PATCH \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{
"items": [
{
"id": 1,
"type": "collect"
}
]
}'
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
{
"message": "Appended."
}
7.4. Delete Audiences assigned to Campaign
A `DELETE` request with Campaign Id in url will remove Audiences assigned to Campaign.
7.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
ids.* |
integer |
Audience id. If empty, deletes all items. |
7.4.2. HTTP Request
URL
DELETE api/campaigns/18/audiences 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": [
1
]
}
7.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/18/audiences' -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": [
1
]
}'
7.4.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
7.4.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Deleted."
}
8. Assign Deals to Campaigns
8.1. Get list of Deals assigned to Campaign
A `GET` request returns paginated list of PMP (Private Marketplace) deals assigned to the campaign. Each deal has custom `bidPrice` that overrides campaign default bid for that specific deal inventory.
8.1.1. HTTP Request
URL
GET api/campaigns/27/deals 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/campaigns/27/deals' -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 |
Deal record id |
data.*.campaignId |
integer |
Campaign id |
data.*.dealId |
string |
Deal identifier |
data.*.bidPrice |
string |
Bid price |
data.*.createdAt |
datetime |
Created at |
data.*.updatedAt |
datetime |
Updated at |
meta.pagination.total |
integer |
Total items count |
meta.pagination.count |
integer |
Current page items count |
meta.pagination.per_page |
integer |
Items per page |
meta.pagination.current_page |
integer |
Current page number |
meta.pagination.total_pages |
integer |
Total pages count |
meta.pagination.links.prev |
string |
URL to previous page |
meta.pagination.links.next |
string |
URL to next page |
8.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"id": 1,
"campaignId": 27,
"dealId": "DEAL-1",
"bidPrice": "1.00",
"createdAt": "2026-02-12 16:34:51",
"updatedAt": "2026-02-12 16:34:51"
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 1000,
"current_page": 1,
"total_pages": 1,
"links": {
"prev": null,
"next": null
}
}
}
}
8.2. Get all Deals assigned to Campaign
A `GET` request with Campaign Id in url will get all Deals assigned to Campaign.
8.2.1. HTTP Request
URL
GET api/campaigns/28/deals-all 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/campaigns/28/deals-all' -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 |
Deal record id |
data.*.campaignId |
integer |
Campaign id |
data.*.dealId |
string |
Deal identifier |
data.*.bidPrice |
string |
Bid price |
data.*.createdAt |
datetime |
Created at |
data.*.updatedAt |
datetime |
Updated at |
8.2.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"id": 1,
"campaignId": 28,
"dealId": "DEAL-1",
"bidPrice": "1.00",
"createdAt": "2026-02-12 16:34:51",
"updatedAt": "2026-02-12 16:34:51"
}
]
}
8.3. Replace Deals assigned to Campaign
A `POST` request with Campaign Id in url will replace Deals assigned to Campaign.
8.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
deals.*.dealId |
string |
Deal identifier |
+ |
deals.*.bidPrice |
string |
Bid price |
+ |
8.3.2. HTTP Request
URL
POST api/campaigns/29/deals 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
{
"deals": [
{
"dealId": "DEAL-1",
"bidPrice": "1.00"
}
]
}
8.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/29/deals' -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 '{
"deals": [
{
"dealId": "DEAL-1",
"bidPrice": "1.00"
}
]
}'
8.3.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
8.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Replaced."
}
8.4. Delete Deals assigned to Campaign
A `DELETE` request with Campaign Id in url will remove Deals assigned to Campaign.
8.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
deals.*.id |
integer |
Deal record id |
8.4.2. HTTP Request
URL
DELETE api/campaigns/30/deals 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
{
"deals": [
{
"id": 1
}
]
}
8.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/30/deals' -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 '{
"deals": [
{
"id": 1
}
]
}'
8.4.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
8.4.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Deleted."
}
9. Assign Contextual Targeting to Campaigns
9.1. Get Campaign Contextual Targeting
A `GET` request with Campaign Id in url will return contextual targeting ids mapped to the campaign.
9.1.1. HTTP Request
URL
GET api/campaigns/19/contextual-targeting 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/19/contextual-targeting' -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 |
|---|---|---|
* |
any |
9.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
1,
2,
3
]
}
9.2. Replace Campaign Contextual Targeting
A `POST` request with Campaign Id in url will replace contextual targeting mapped to the campaign.
9.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
targetIds.* |
integer |
Contextual targeting id |
+ |
9.2.2. HTTP Request
URL
POST api/campaigns/20/contextual-targeting 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
{
"targetIds": [
1,
2,
3
]
}
9.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/20/contextual-targeting' -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 '{
"targetIds": [
1,
2,
3
]
}'
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": "Replaced."
}
9.3. Append Campaign Contextual Targeting
A `PATCH` request with Campaign Id in url will append contextual targeting mapped to the campaign.
9.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
targetIds.* |
integer |
Contextual targeting id |
+ |
9.3.2. HTTP Request
URL
PATCH api/campaigns/21/contextual-targeting HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
"targetIds": [
1,
2,
3
]
}
9.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/21/contextual-targeting' -i -X PATCH \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{
"targetIds": [
1,
2,
3
]
}'
9.3.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
9.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Replaced."
}
9.4. Delete Campaign Contextual Targeting
A `DELETE` request with Campaign Id in url will remove contextual targeting mapped to the campaign.
9.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
deleted |
boolean |
Delete result |
+ |
9.4.2. HTTP Request
URL
DELETE api/campaigns/22/contextual-targeting 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
{
"deleted": true
}
9.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/22/contextual-targeting' -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 '{
"deleted": true
}'
9.4.4. Response Body
| Path | Type | Description |
|---|---|---|
deleted |
boolean |
Delete result |
9.4.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"deleted": true
}
10. CTR Booster Settings
10.1. Get CTR Booster setting for Campaign
A `GET` request returns CTR booster status for the campaign (boolean). CTR booster automatically optimizes campaign performance by adjusting bids based on predicted click-through rates.
10.1.1. HTTP Request
URL
GET api/booster-settings/3 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/booster-settings/3' -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 |
boolean |
True if CTR Booster setting exists for the campaign |
10.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": true
}
10.2. Enable CTR Booster setting for Campaign
A `POST` request will enable CTR Booster for the campaign by creating a record.
10.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
cid |
integer |
Campaign id |
+ |
10.2.2. HTTP Request
URL
POST api/booster-settings 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
{
"cid": 4
}
10.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/booster-settings' -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 '{
"cid": 4
}'
10.2.4. Response Body
| Path | Type | Description |
|---|---|---|
id |
integer |
Booster setting record id |
cid |
integer |
Campaign id |
createdAt |
string |
Created at date |
10.2.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"id": 1,
"cid": 4,
"createdAt": "2026-02-12"
}
10.3. Disable CTR Booster setting for Campaign
A `DELETE` request with Campaign Id in url will disable CTR Booster for the campaign.
10.3.1. HTTP Request
URL
DELETE api/booster-settings/5 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.3.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/booster-settings/5' -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.3.3. Response Body
| Path | Type | Description |
|---|---|---|
deleted |
boolean |
Delete result |
10.3.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"deleted": true
}
11. Campaigns
11.1. Campaigns list
A `GET` request will return a list of an campaigns.
11.1.1. HTTP Request
URL
GET api/campaigns HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiJNZXpZd0xMcU5nVm9BMW95Iiwic3ViIjoiMjMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.R78pTBif0CanJygfuPJ-v2SPcQmFhiDVAzteOmfBo6Q
DATA
{}
11.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiJNZXpZd0xMcU5nVm9BMW95Iiwic3ViIjoiMjMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.R78pTBif0CanJygfuPJ-v2SPcQmFhiDVAzteOmfBo6Q' \
-d '{}'
11.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. |
string |
Connection type (wifi, ethernet, cellular_all, cellular_3g, cellular_4g, cellular_5g) |
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 |
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": 6,
"userId": 23,
"isActive": true,
"isRunning": false,
"type": "audio",
"name": "ullam",
"isRewarded": false,
"isDesktopWeb": false,
"isMobileApp": true,
"isMobileWeb": false,
"isSmartphone": false,
"isTablet": false,
"isCTV": false,
"isDOOH": true,
"aDomain": "corwin.com",
"dateStart": "2024-12-05",
"dateEnd": "2026-08-19",
"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": 216,
"spentTotalLimit": 6693,
"impressionsDailyLimit": 267665,
"impressionsTotalLimit": 407022,
"clicksDailyLimit": 0,
"clicksTotalLimit": 0,
"budgetUse": "fast",
"allSources": true,
"cpm": 0,
"adaptiveCpm": false,
"useCpm": false,
"extendedStatus": "Low Balance",
"createdAt": "2026-02-12",
"updatedAt": "2026-02-12",
"deletedAt": null
},
{
"id": 7,
"userId": 23,
"isActive": true,
"isRunning": false,
"type": "banner",
"name": "unde",
"isRewarded": false,
"isDesktopWeb": true,
"isMobileApp": true,
"isMobileWeb": true,
"isSmartphone": true,
"isTablet": false,
"isCTV": true,
"isDOOH": true,
"aDomain": "bogan.com",
"dateStart": "2025-07-12",
"dateEnd": "2026-08-15",
"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": 293,
"spentTotalLimit": 3206,
"impressionsDailyLimit": 292755,
"impressionsTotalLimit": 676864,
"clicksDailyLimit": 0,
"clicksTotalLimit": 0,
"budgetUse": "fast",
"allSources": true,
"cpm": 0,
"adaptiveCpm": false,
"useCpm": false,
"extendedStatus": "Low Balance",
"createdAt": "2026-02-12",
"updatedAt": "2026-02-12",
"deletedAt": null
}
],
"meta": {
"pagination": {
"total": 2,
"count": 2,
"per_page": 15,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
11.2. Get by ID
A `GET` request with a path parameter of the id will return the campaign with that id.
11.2.1. HTTP Request
URL
GET api/campaigns/8 HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiJ2a1dyaU4zcm84bnFwS0NSIiwic3ViIjoiMjQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0._zzpNys_Hye_UXPmE8Mg2E_9qIu_V5dtKf9aWDyWEgM
DATA
{}
11.2.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/8' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiJ2a1dyaU4zcm84bnFwS0NSIiwic3ViIjoiMjQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0._zzpNys_Hye_UXPmE8Mg2E_9qIu_V5dtKf9aWDyWEgM' \
-d '{}'
11.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.* |
string |
Connection type (wifi, ethernet, cellular_all, cellular_3g, cellular_4g, cellular_5g) |
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 |
11.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": 8,
"userId": 24,
"isActive": true,
"isRunning": false,
"type": "video",
"name": "Test Campaign #1",
"isRewarded": false,
"isDesktopWeb": true,
"isMobileApp": false,
"isMobileWeb": false,
"isSmartphone": false,
"isTablet": false,
"isCTV": false,
"isDOOH": false,
"aDomain": "marks.net",
"dateStart": "2024-12-31",
"dateEnd": "2027-01-09",
"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": 438,
"spentTotalLimit": 8677,
"impressionsDailyLimit": 262243,
"impressionsTotalLimit": 723002,
"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-12",
"updatedAt": "2026-02-12",
"deletedAt": null,
"pretarget": null,
"pretargets": [],
"audiences": []
}
}
11.3. Create a Custom Banner/Native/Video/Audio Campaigns
A `POST` request will create new campaign.
11.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
type |
string |
Campaign type: banner, native, video, audio |
+ |
name |
string |
Campaign name |
+ |
aDomain |
string |
Top level domain |
+ |
isRewarded |
boolean |
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.* |
string |
IAB Category ID |
|
contentCategoriesIsInclude |
boolean |
Targeting: IAB Categories list type (true: whitelist, false: blacklist) |
|
userAgeMin |
integer |
Targeting: Age range from |
|
userAgeMax |
integer |
Targeting: Age range to |
|
connectionTypes.* |
string |
Connection type (wifi, ethernet, cellular_all, cellular_3g, cellular_4g, cellular_5g) |
|
deviceCarrier.* |
string |
Network operator name |
|
deviceCarrierIsInclude |
boolean |
Targeting: List of network operators type (true: whitelist, false: blacklist) |
|
OS.* |
string |
Operating system name |
|
OSIsInclude |
boolean |
Targeting: The operating system of user's device list type (true: whitelist, false: blacklist) |
|
browser.* |
string |
Browser name |
|
browserIsInclude |
boolean |
Targeting: The user's browsers list type (true: whitelist, false: blacklist) |
|
deviceLanguage.* |
string |
Language code (ISO-like, 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 |
string |
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 |
11.3.2. HTTP Request
URL
POST api/campaigns HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiIxS3dldzBTVGlMa29XVGtjIiwic3ViIjoiMjUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.4jHGtluyNFkM_rxiIaiys_zrWg4XxCU9P_9N7ZQsktg
DATA
{
"type": "banner",
"name": "New Campaign #2",
"aDomain": "gusikowski.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": "2024-08-05",
"dateEnd": "2026-05-22"
}
11.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiIxS3dldzBTVGlMa29XVGtjIiwic3ViIjoiMjUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.4jHGtluyNFkM_rxiIaiys_zrWg4XxCU9P_9N7ZQsktg' \
-d '{
"type": "banner",
"name": "New Campaign #2",
"aDomain": "gusikowski.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": "2024-08-05",
"dateEnd": "2026-05-22"
}'
11.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.* |
string |
Connection type (wifi, ethernet, cellular_all, cellular_3g, cellular_4g, cellular_5g) |
data.clickedInventoryCategories |
array |
Сlicked Inventory Categories |
data.deviceCarrier.* |
string |
Network operator name |
data.deviceCarrierIsInclude |
boolean |
Targeting: List of network operators type (true: whitelist, false: blacklist) |
data.OS.* |
string |
Operating system name |
data.OSIsInclude |
boolean |
Targeting: The operating system of user's device list type (true: whitelist, false: blacklist) |
data.browser.* |
string |
Browser name |
data.browserIsInclude |
boolean |
Targeting: The user's browsers list type (true: whitelist, false: blacklist) |
data.deviceLanguage.* |
string |
Language code (ISO-like, e.g. "en", "ru") |
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 |
11.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": 9,
"userId": 25,
"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": "gusikowski.com",
"dateStart": "2024-08-05",
"dateEnd": "2026-05-22",
"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-12",
"updatedAt": "2026-02-12",
"deletedAt": null,
"pretarget": null,
"pretargets": [],
"audiences": []
}
}
11.4. Update a Custom Campaign
A `PATCH` request will update campaign.
11.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. |
11.4.2. HTTP Request
URL
PATCH api/campaigns/10 HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiIwaWpRd0EzUmtqUzM3d1UyIiwic3ViIjoiMjYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.KlU7-HCF3nsgw256iejZ2WlimynCGTGyJ3_FPdDFRO8
DATA
{
"name": "Updated Campaign #3",
"geoCountries": [],
"geoCountriesIsInclude": true,
"geoRegions": [],
"geoRegionsIsInclude": true,
"geoCities": [],
"geoCitiesIsInclude": true,
"frequency": true,
"frequencyType": "user",
"frequencyCap": 3,
"frequencyPeriod": 1
}
11.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/10' -i -X PATCH \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiIwaWpRd0EzUmtqUzM3d1UyIiwic3ViIjoiMjYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.KlU7-HCF3nsgw256iejZ2WlimynCGTGyJ3_FPdDFRO8' \
-d '{
"name": "Updated Campaign #3",
"geoCountries": [],
"geoCountriesIsInclude": true,
"geoRegions": [],
"geoRegionsIsInclude": true,
"geoCities": [],
"geoCitiesIsInclude": true,
"frequency": true,
"frequencyType": "user",
"frequencyCap": 3,
"frequencyPeriod": 1
}'
11.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.* |
string |
Connection type (wifi, ethernet, cellular_all, cellular_3g, cellular_4g, cellular_5g) |
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 |
11.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": 10,
"userId": 26,
"isActive": false,
"isRunning": false,
"type": "audio",
"name": "Updated Campaign #3",
"isRewarded": false,
"isDesktopWeb": true,
"isMobileApp": true,
"isMobileWeb": false,
"isSmartphone": false,
"isTablet": true,
"isCTV": false,
"isDOOH": true,
"aDomain": "sporer.com",
"dateStart": "2025-06-22",
"dateEnd": "2026-08-27",
"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": 472,
"spentTotalLimit": 7775,
"impressionsDailyLimit": 226038,
"impressionsTotalLimit": 542375,
"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": "Campaign is not active",
"createdAt": "2026-02-12",
"updatedAt": "2026-02-12",
"deletedAt": null,
"pretarget": null,
"pretargets": [],
"audiences": []
}
}
11.5. Delete a Custom Campaign
A `DELETE` request will delete campaign.
11.5.1. HTTP Request
URL
DELETE api/campaigns/11 HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiI3c2UyWjZzUWlUaHp1ZDI0Iiwic3ViIjoiMjciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.hIh_A99r-ccdOdxmSUpa-oHIUcxXsA_OGEIDqdPFwfo Content-type: application/x-www-form-urlencoded
DATA
{}
11.5.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/11' -i -X DELETE \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiI3c2UyWjZzUWlUaHp1ZDI0Iiwic3ViIjoiMjciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.hIh_A99r-ccdOdxmSUpa-oHIUcxXsA_OGEIDqdPFwfo' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{}'
11.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
{}
12. Audiences
12.1. Get list of Audiences
A `GET` request returns paginated list of first-party audiences owned by current user. First-party audiences are custom audiences created from user data (clicks, conversions, pixels, video events).
12.1.1. HTTP Request
URL
GET api/audiences HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
12.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/audiences' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
12.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.id |
integer |
Audience id |
data.*.title |
string |
Audience title |
data.*.userId |
integer |
Audience owner user id |
data.*.isIncludeDateRange |
boolean |
Is include date range |
data.*.dateFrom |
datetime |
Date from |
data.*.dateTo |
datetime |
Date to |
data.*.usersTtlInDays |
integer |
Users TTL in days |
data.*.collectionType |
string |
Collection type (click, conversion, pixel, liveRamp, eyeota, impression, videoStart, videoFirstQuartile, videoMidpoint, videoThirdQuartile, videoComplete) |
data.*.hashTag |
string |
Hash tag |
data.*.allUsers |
boolean |
All users |
data.*.isActive |
boolean |
Audience active status |
data.*.providerList |
array |
Provider list |
data.*.providerId |
integer |
Provider id |
data.*.isInclude |
boolean |
Audience isInclude flag |
data.*.createdAt |
date |
Created at |
data.*.updatedAt |
date |
Updated at |
meta.pagination.total |
integer |
Total items count |
meta.pagination.count |
integer |
Current page items count |
meta.pagination.per_page |
integer |
Items per page |
meta.pagination.current_page |
integer |
Current page number |
meta.pagination.total_pages |
integer |
Total pages count |
meta.pagination.links.prev |
string |
URL to previous page |
meta.pagination.links.next |
string |
URL to next page |
12.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"id": 1,
"title": "Audience #1",
"userId": 6,
"isIncludeDateRange": false,
"dateFrom": null,
"dateTo": null,
"usersTtlInDays": 30,
"collectionType": "pixel",
"hashTag": null,
"allUsers": false,
"isActive": true,
"providerList": [],
"providerId": null,
"isInclude": true,
"createdAt": "2026-02-12",
"updatedAt": "2026-02-12"
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 100,
"current_page": 1,
"total_pages": 1,
"links": {
"prev": null,
"next": null
}
}
}
}
12.2. Get Audience by ID
A `GET` request with Audience Id in url will return audience details.
12.2.1. HTTP Request
URL
GET api/audiences/1 HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
12.2.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/audiences/1' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
12.2.3. Response Body
| Path | Type | Description |
|---|---|---|
data.id |
integer |
Audience id |
data.title |
string |
Audience title |
data.userId |
integer |
Audience owner user id |
data.isIncludeDateRange |
boolean |
Is include date range |
data.dateFrom |
datetime |
Date from |
data.dateTo |
datetime |
Date to |
data.usersTtlInDays |
integer |
Users TTL in days |
data.collectionType |
string |
Collection type |
data.hashTag |
string |
Hash tag |
data.allUsers |
boolean |
All users |
data.isActive |
boolean |
Audience active status |
data.providerList |
array |
Provider list |
data.providerId |
integer |
Provider id |
data.isInclude |
boolean |
Audience isInclude flag |
data.createdAt |
date |
Created at |
data.updatedAt |
date |
Updated at |
12.2.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": {
"id": 1,
"title": "Audience #1",
"userId": 7,
"isIncludeDateRange": false,
"dateFrom": null,
"dateTo": null,
"usersTtlInDays": 30,
"collectionType": "pixel",
"hashTag": null,
"allUsers": false,
"isActive": true,
"providerList": [],
"providerId": null,
"isInclude": true,
"createdAt": "2026-02-12",
"updatedAt": "2026-02-12"
}
}
12.3. Create Audience
A `POST` request creates a new first-party audience. Required fields: `title` (unique per user) and `collectionType`. Audience will be owned by current authenticated user.
12.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
title |
string |
Audience title (unique per user, 2-50 chars) |
+ |
collectionType |
string |
Collection type (click, conversion, pixel, liveRamp, eyeota, impression, videoStart, videoFirstQuartile, videoMidpoint, videoThirdQuartile, videoComplete) |
+ |
usersTtlInDays |
integer |
Users TTL in days |
|
isActive |
integer |
Audience active status (0 or 1) |
12.3.2. HTTP Request
URL
POST api/audiences 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": "New Audience",
"collectionType": "pixel",
"usersTtlInDays": 30,
"isActive": 1
}
12.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/audiences' -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": "New Audience",
"collectionType": "pixel",
"usersTtlInDays": 30,
"isActive": 1
}'
12.3.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Audience id |
data.title |
string |
Audience title |
data.userId |
integer |
Audience owner user id |
data.isIncludeDateRange |
boolean |
Is include date range |
data.dateFrom |
datetime |
Date from |
data.dateTo |
datetime |
Date to |
data.usersTtlInDays |
integer |
Users TTL in days |
data.collectionType |
string |
Collection type |
data.hashTag |
string |
Hash tag |
data.allUsers |
boolean |
All users |
data.isActive |
boolean |
Audience active status |
data.providerList |
array |
Provider list |
data.providerId |
integer |
Provider id |
data.isInclude |
boolean |
Audience isInclude flag |
data.createdAt |
date |
Created at |
data.updatedAt |
date |
Updated at |
12.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Audience created.",
"data": {
"id": 1,
"title": "New Audience",
"userId": 8,
"isIncludeDateRange": false,
"dateFrom": null,
"dateTo": null,
"usersTtlInDays": 30,
"collectionType": "pixel",
"hashTag": null,
"allUsers": false,
"isActive": true,
"providerList": [],
"providerId": null,
"isInclude": true,
"createdAt": "2026-02-12",
"updatedAt": "2026-02-12"
}
}
12.4. Update Audience
A `PUT/PATCH` request with Audience Id in url will update audience.
12.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
title |
string |
Audience title (unique per user, 2-50 chars) |
|
isActive |
integer |
Audience active status (0 or 1) |
12.4.2. HTTP Request
URL
PUT api/audiences/1 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": "Updated Audience",
"isActive": 0
}
12.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/audiences/1' -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": "Updated Audience",
"isActive": 0
}'
12.4.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Audience id |
data.title |
string |
Audience title |
data.userId |
integer |
Audience owner user id |
data.isIncludeDateRange |
boolean |
Is include date range |
data.dateFrom |
datetime |
Date from |
data.dateTo |
datetime |
Date to |
data.usersTtlInDays |
integer |
Users TTL in days |
data.collectionType |
string |
Collection type |
data.hashTag |
string |
Hash tag |
data.allUsers |
boolean |
All users |
data.isActive |
boolean |
Audience active status |
data.providerList |
array |
Provider list |
data.providerId |
integer |
Provider id |
data.isInclude |
boolean |
Audience isInclude flag |
data.createdAt |
date |
Created at |
data.updatedAt |
date |
Updated at |
12.4.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Audience updated.",
"data": {
"id": 1,
"title": "Updated Audience",
"userId": 9,
"isIncludeDateRange": false,
"dateFrom": null,
"dateTo": null,
"usersTtlInDays": 30,
"collectionType": "pixel",
"hashTag": null,
"allUsers": false,
"isActive": false,
"providerList": [],
"providerId": null,
"isInclude": true,
"createdAt": "2026-02-12",
"updatedAt": "2026-02-12"
}
}
12.5. Delete Audience
A `DELETE` request with Audience Id in url will delete audience.
12.5.1. HTTP Request
URL
DELETE api/audiences/1 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
{}
12.5.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/audiences/1' -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 '{}'
12.5.3. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
deleted |
boolean |
Delete result |
12.5.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Audience deleted.",
"deleted": true
}
12.6. Get list of Third-Party Audiences
A `GET` request returns paginated list of third-party audiences owned by current user. Third-party audiences are purchased from external data providers (LiveRamp, Eyeota, etc.).
12.6.1. HTTP Request
URL
GET api/audiences/third-parties HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
12.6.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/audiences/third-parties' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
12.6.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.id |
integer |
Audience id |
data.*.title |
string |
Audience title |
data.*.userId |
integer |
Audience owner user id |
data.*.isActive |
boolean |
Audience active status |
data.*.providerList |
array |
Provider list |
data.*.providerId |
integer |
Provider id |
data.*.providerName |
string |
Provider name |
data.*.isInclude |
boolean |
Audience isInclude flag |
data.*.segments |
integer |
Segments count |
data.*.createdAt |
date |
Created at |
meta.pagination.total |
integer |
Total items count |
meta.pagination.count |
integer |
Current page items count |
meta.pagination.per_page |
integer |
Items per page |
meta.pagination.current_page |
integer |
Current page number |
meta.pagination.total_pages |
integer |
Total pages count |
meta.pagination.links.prev |
string |
URL to previous page |
meta.pagination.links.next |
string |
URL to next page |
12.6.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"id": 1,
"title": "Third-Party Audience #1",
"userId": 11,
"isActive": true,
"providerList": [],
"providerId": 1,
"providerName": "Provider Name",
"isInclude": true,
"segments": 5,
"createdAt": "2026-02-12"
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 100,
"current_page": 1,
"total_pages": 1,
"links": {
"prev": null,
"next": null
}
}
}
}
12.7. Create Third-Party Audience
A `POST` request will create a new third-party audience.
12.7.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
title |
string |
Audience title (unique per user, 2-50 chars) |
+ |
userID |
integer |
User ID (owner) |
+ |
providerID |
integer |
Provider ID |
+ |
segments.* |
integer |
Segment ID |
+ |
type |
string |
Type (include/exclude) |
+ |
12.7.2. HTTP Request
URL
POST api/audiences/third-parties 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": "New Third-Party Audience",
"userID": 12,
"providerID": 1,
"segments": [
1,
2,
3
],
"type": "include"
}
12.7.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/audiences/third-parties' -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": "New Third-Party Audience",
"userID": 12,
"providerID": 1,
"segments": [
1,
2,
3
],
"type": "include"
}'
12.7.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Audience id |
data.title |
string |
Audience title |
data.userId |
integer |
Audience owner user id |
data.isActive |
boolean |
Audience active status |
data.providerList |
array |
Provider list |
data.providerId |
integer |
Provider id |
data.providerName |
string |
Provider name |
data.isInclude |
boolean |
Audience isInclude flag |
data.segments |
integer |
Segments count |
data.createdAt |
date |
Created at |
12.7.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Audience created.",
"data": {
"id": 1,
"title": "New Third-Party Audience",
"userId": 12,
"isActive": true,
"providerList": [],
"providerId": 1,
"providerName": "Provider Name",
"isInclude": true,
"segments": 3,
"createdAt": "2026-02-12"
}
}
12.8. Update Third-Party Audience
A `PUT/PATCH` request with Audience Id in url will update third-party audience.
12.8.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
id |
integer |
Audience ID |
+ |
title |
string |
Audience title (unique per user, 2-50 chars) |
+ |
segments.* |
integer |
Segment ID |
+ |
type |
string |
Type (include/exclude) |
+ |
12.8.2. HTTP Request
URL
PUT api/audiences/third-parties/1 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
{
"id": 1,
"title": "Updated Third-Party Audience",
"segments": [
1,
2,
3,
4
],
"type": "exclude"
}
12.8.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/audiences/third-parties/1' -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 '{
"id": 1,
"title": "Updated Third-Party Audience",
"segments": [
1,
2,
3,
4
],
"type": "exclude"
}'
12.8.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Audience id |
data.title |
string |
Audience title |
data.userId |
integer |
Audience owner user id |
data.isActive |
boolean |
Audience active status |
data.providerList |
array |
Provider list |
data.providerId |
integer |
Provider id |
data.providerName |
string |
Provider name |
data.isInclude |
boolean |
Audience isInclude flag |
data.segments |
integer |
Segments count |
data.createdAt |
date |
Created at |
12.8.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Audience updated.",
"data": {
"id": 1,
"title": "Updated Third-Party Audience",
"userId": 13,
"isActive": true,
"providerList": [],
"providerId": 1,
"providerName": "Provider Name",
"isInclude": false,
"segments": 4,
"createdAt": "2026-02-12"
}
}
13. Contextual Targeting
13.1. Get list of Contextual Targeting
A `GET` request returns paginated list of contextual targeting rules owned by current user. Contextual targeting allows filtering traffic by keywords or IAB categories for web/in-app inventory.
13.1.1. HTTP Request
URL
GET api/contextual-targeting HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
13.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/contextual-targeting' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
13.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.id |
integer |
Target id |
data.*.name |
string |
Target name |
data.*.type |
string |
Target type (web, inApp) |
data.*.rule |
string |
Target rule (include, exclude) |
data.*.userId |
integer |
Target owner user id |
data..keywords..* |
string |
Keyword data |
data.*.iabCategories |
array |
IAB categories array |
data.*.keywordsCount |
integer |
Keywords/categories count |
data..campaigns. |
integer |
Campaign ID |
data.*.createdAt |
datetime |
Created at |
data.*.updatedAt |
datetime |
Updated at |
meta.pagination.total |
integer |
Total items count |
meta.pagination.count |
integer |
Current page items count |
meta.pagination.per_page |
integer |
Items per page |
meta.pagination.current_page |
integer |
Current page number |
meta.pagination.total_pages |
integer |
Total pages count |
meta.pagination.links.prev |
string |
URL to previous page |
meta.pagination.links.next |
string |
URL to next page |
13.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"id": 1,
"name": "Target #1",
"type": "web",
"rule": "include",
"userId": 62,
"keywords": [
[
"keyword1",
"keyword2"
]
],
"iabCategories": [],
"keywordsCount": 2,
"campaigns": [
1,
2
],
"createdAt": "2026-02-12 16:34:52",
"updatedAt": "2026-02-12 16:34:52"
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 1000,
"current_page": 1,
"total_pages": 1,
"links": {
"prev": null,
"next": null
}
}
}
}
13.2. Get Contextual Targeting by ID
A `GET` request with Target Id in url will return target details.
13.2.1. HTTP Request
URL
GET api/contextual-targeting/1 HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
13.2.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/contextual-targeting/1' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
13.2.3. Response Body
| Path | Type | Description |
|---|---|---|
data.id |
integer |
Target id |
data.name |
string |
Target name |
data.type |
string |
Target type (web, inApp) |
data.rule |
string |
Target rule (include, exclude) |
data.userId |
integer |
Target owner user id |
data.keywords.. |
string |
Keyword data |
data.iabCategories |
array |
IAB categories array |
data.keywordsCount |
integer |
Keywords/categories count |
data.campaigns.* |
integer |
Campaign ID |
data.createdAt |
datetime |
Created at |
data.updatedAt |
datetime |
Updated at |
13.2.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": {
"id": 1,
"name": "Target #1",
"type": "web",
"rule": "include",
"userId": 63,
"keywords": [
[
"keyword1",
"keyword2"
]
],
"iabCategories": [],
"keywordsCount": 2,
"campaigns": [
1,
2
],
"createdAt": "2026-02-12 16:34:52",
"updatedAt": "2026-02-12 16:34:52"
}
}
13.3. Create Contextual Targeting
A `POST` request creates a new contextual targeting rule. Required fields: `name`, `type` (web/inApp), `rule` (include/exclude). Must provide either `keywords` or `iabCategories` (at least one is required).
13.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
name |
string |
Target name (min 2 chars) |
+ |
type |
string |
Target type (web, inApp) |
+ |
rule |
string |
Target rule (include, exclude) |
+ |
keywords.. |
string |
Keyword data |
|
iabCategories |
array |
IAB categories array (required if keywords empty) |
13.3.2. HTTP Request
URL
POST api/contextual-targeting 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": "New Target",
"type": "web",
"rule": "include",
"keywords": [
[
"keyword1",
"keyword2"
]
],
"iabCategories": []
}
13.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/contextual-targeting' -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": "New Target",
"type": "web",
"rule": "include",
"keywords": [
[
"keyword1",
"keyword2"
]
],
"iabCategories": []
}'
13.3.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Target id |
data.name |
string |
Target name |
data.type |
string |
Target type |
data.rule |
string |
Target rule |
data.userId |
integer |
Target owner user id |
data.keywords.. |
string |
Keyword data |
data.iabCategories |
array |
IAB categories array |
data.keywordsCount |
integer |
Keywords/categories count |
data.campaigns |
array |
Array of campaign IDs |
data.createdAt |
datetime |
Created at |
data.updatedAt |
datetime |
Updated at |
13.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Target created.",
"data": {
"id": 1,
"name": "New Target",
"type": "web",
"rule": "include",
"userId": 64,
"keywords": [
[
"keyword1",
"keyword2"
]
],
"iabCategories": [],
"keywordsCount": 2,
"campaigns": [],
"createdAt": "2026-02-12 16:34:53",
"updatedAt": "2026-02-12 16:34:53"
}
}
13.4. Update Contextual Targeting
A `PUT/PATCH` request with Target Id in url will update contextual targeting rule.
13.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
name |
string |
Target name (min 2 chars) |
+ |
keywords.. |
string |
Keyword data |
13.4.2. HTTP Request
URL
PUT api/contextual-targeting/1 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": "Updated Target",
"keywords": [
[
"keyword1",
"keyword2",
"keyword3"
]
]
}
13.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/contextual-targeting/1' -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": "Updated Target",
"keywords": [
[
"keyword1",
"keyword2",
"keyword3"
]
]
}'
13.4.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Target id |
data.name |
string |
Target name |
data.type |
string |
Target type |
data.rule |
string |
Target rule |
data.userId |
integer |
Target owner user id |
data.keywords.. |
string |
Keyword data |
data.iabCategories |
array |
IAB categories array |
data.keywordsCount |
integer |
Keywords/categories count |
data.campaigns |
array |
Array of campaign IDs |
data.createdAt |
datetime |
Created at |
data.updatedAt |
datetime |
Updated at |
13.4.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Target updated.",
"data": {
"id": 1,
"name": "Updated Target",
"type": "web",
"rule": "include",
"userId": 65,
"keywords": [
[
"keyword1",
"keyword2",
"keyword3"
]
],
"iabCategories": [],
"keywordsCount": 3,
"campaigns": [],
"createdAt": "2026-02-12 16:34:53",
"updatedAt": "2026-02-12 16:34:53"
}
}
13.5. Delete Contextual Targeting
A `DELETE` request with Target Id in url will delete contextual targeting rule.
13.5.1. HTTP Request
URL
DELETE api/contextual-targeting/1 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
{}
13.5.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/contextual-targeting/1' -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 '{}'
13.5.3. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
deleted |
boolean |
Delete result |
13.5.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Target deleted.",
"deleted": true
}
13.6. Get IAB Categories
A `GET` request will return IAB categories and subcategories dictionary.
13.6.1. HTTP Request
URL
GET api/get-iab-categories HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
13.6.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/get-iab-categories' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
13.6.3. Response Body
| Path | Type | Description |
|---|---|---|
categories.*.id |
string |
Category ID |
categories.*.name |
string |
Category name |
subCategories.*.id |
string |
Subcategory ID |
subCategories.*.parentId |
string |
Parent category ID |
subCategories.*.name |
string |
Subcategory name |
13.6.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"categories": [
{
"id": 1,
"name": "Arts & Entertainment"
},
{
"id": 2,
"name": "Automotive"
}
],
"subCategories": [
{
"id": 101,
"parentId": 1,
"name": "Books & Literature"
},
{
"id": 102,
"parentId": 1,
"name": "Celebrity Fan\/Gossip"
}
]
}
13.7. Search Keywords
A `POST` request searches and returns keyword suggestions based on provided search text. Used for autocomplete when creating contextual targeting rules. Supports language filtering and web/inApp type filtering.
13.7.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
searchText |
string |
Search text (min 2, max 255 chars) |
+ |
language |
string |
Language code (optional, 2-10 chars) |
|
type |
string |
Type: web or inApp (optional, default: web) |
13.7.2. HTTP Request
URL
POST api/contextual-targeting/search-keywords 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
{
"searchText": "technology",
"language": "en",
"type": "web"
}
13.7.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/contextual-targeting/search-keywords' -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 '{
"searchText": "technology",
"language": "en",
"type": "web"
}'
13.7.4. Response Body
| Path | Type | Description |
|---|---|---|
* |
any |
13.7.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
"technology",
"tech news",
"technology trends",
"tech gadgets"
]
}
14. Third-Party Audiences
14.1. Get list of Third-Party Audiences
A `GET` request returns paginated list of third-party audiences owned by current user. Third-party audiences are purchased from external data providers (LiveRamp, Eyeota, etc.).
14.1.1. HTTP Request
URL
GET api/audiences/third-parties HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
14.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/audiences/third-parties' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
14.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.id |
integer |
Audience id |
data.*.title |
string |
Audience title |
data.*.userId |
integer |
Audience owner user id |
data.*.isActive |
boolean |
Audience active status |
data.*.providerList |
array |
Provider list |
data.*.providerId |
integer |
Provider id |
data.*.providerName |
string |
Provider name |
data.*.isInclude |
boolean |
Audience isInclude flag |
data.*.segments |
integer |
Segments count |
data.*.createdAt |
date |
Created at |
meta.pagination.total |
integer |
Total items count |
meta.pagination.count |
integer |
Current page items count |
meta.pagination.per_page |
integer |
Items per page |
meta.pagination.current_page |
integer |
Current page number |
meta.pagination.total_pages |
integer |
Total pages count |
meta.pagination.links |
object |
Pagination links |
14.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"id": 1,
"title": "Third-Party Audience #1",
"userId": 1,
"isActive": true,
"providerList": [],
"providerId": 1,
"providerName": "eyeota",
"isInclude": true,
"segments": 5,
"createdAt": "2024-01-01"
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 100,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
14.2. Create Third-Party Audience
A `POST` request will create a new third-party audience.
14.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
title |
string |
Audience title (unique per user, 2-50 chars) |
+ |
userID |
integer |
User ID (owner) |
+ |
providerID |
integer |
Provider ID |
+ |
segments.* |
integer |
Segment ID |
+ |
type |
string |
Type (include/exclude) |
+ |
14.2.2. HTTP Request
URL
POST api/audiences/third-parties 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": "New Third-Party Audience",
"userID": 1,
"providerID": 1,
"segments": [
1,
2,
3
],
"type": "include"
}
14.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/audiences/third-parties' -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": "New Third-Party Audience",
"userID": 1,
"providerID": 1,
"segments": [
1,
2,
3
],
"type": "include"
}'
14.2.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Audience id |
data.title |
string |
Audience title |
data.userId |
integer |
Audience owner user id |
data.isActive |
boolean |
Audience active status |
data.providerList |
array |
Provider list |
data.providerId |
integer |
Provider id |
data.providerName |
string |
Provider name |
data.isInclude |
boolean |
Audience isInclude flag |
data.segments |
integer |
Segments count |
data.createdAt |
date |
Created at |
14.2.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Audience created.",
"data": {
"id": 1,
"title": "New Third-Party Audience",
"userId": 1,
"isActive": true,
"providerList": [],
"providerId": 1,
"providerName": "eyeota",
"isInclude": true,
"segments": 3,
"createdAt": "2024-01-01"
}
}
14.3. Update Third-Party Audience
A `PUT/PATCH` request with Audience Id in url will update third-party audience.
14.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
id |
integer |
Audience ID |
+ |
title |
string |
Audience title (unique per user, 2-50 chars) |
+ |
segments.* |
integer |
Segment ID |
+ |
type |
string |
Type (include/exclude) |
+ |
14.3.2. HTTP Request
URL
PUT api/audiences/third-parties/1 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
{
"id": 1,
"title": "Updated Third-Party Audience",
"segments": [
1,
2,
3,
4
],
"type": "exclude"
}
14.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/audiences/third-parties/1' -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 '{
"id": 1,
"title": "Updated Third-Party Audience",
"segments": [
1,
2,
3,
4
],
"type": "exclude"
}'
14.3.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
data.id |
integer |
Audience id |
data.title |
string |
Audience title |
data.userId |
integer |
Audience owner user id |
data.isActive |
boolean |
Audience active status |
data.providerList |
array |
Provider list |
data.providerId |
integer |
Provider id |
data.providerName |
string |
Provider name |
data.isInclude |
boolean |
Audience isInclude flag |
data.segments |
integer |
Segments count |
data.createdAt |
date |
Created at |
14.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Audience updated.",
"data": {
"id": 1,
"title": "Updated Third-Party Audience",
"userId": 1,
"isActive": true,
"providerList": [],
"providerId": 1,
"providerName": "eyeota",
"isInclude": false,
"segments": 4,
"createdAt": "2024-01-01"
}
}
15. Geo Dictionaries
15.1. Get list of Countries
A `GET` request returns paginated list of all available countries for geo targeting. Countries are sorted alphabetically by name. Use ISO3 codes for selecting countries in campaigns.
15.1.1. HTTP Request
URL
GET api/geo/countries HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
15.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/geo/countries' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
15.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.id |
integer |
Country id |
data.*.country_name |
string |
Country name |
data.*.country_iso2 |
string |
Country ISO2 code |
data.*.country_iso3 |
string |
Country ISO3 code |
meta.pagination.total |
integer |
Total items count |
meta.pagination.count |
integer |
Current page items count |
meta.pagination.per_page |
integer |
Items per page |
meta.pagination.current_page |
integer |
Current page number |
meta.pagination.total_pages |
integer |
Total pages count |
meta.pagination.links.prev |
string |
URL to previous page |
meta.pagination.links.next |
string |
URL to next page |
15.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"id": 1,
"country_name": "Ukraine",
"country_iso2": "UA",
"country_iso3": "UKR"
},
{
"id": 2,
"country_name": "United States",
"country_iso2": "US",
"country_iso3": "USA"
}
],
"meta": {
"pagination": {
"total": 2,
"count": 2,
"per_page": 300,
"current_page": 1,
"total_pages": 1,
"links": {
"prev": null,
"next": null
}
}
}
}
15.2. Get list of Regions
A `GET` request returns list of regions/states for selected countries. Required parameter: `selectedCountries` (comma-separated ISO3 codes). Optional: `selectedRegions` to move already selected regions to the top of the list.
15.2.1. HTTP Request
URL
GET api/geo/regions HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
"selectedCountries": "USA,UKR",
"selectedRegions": ""
}
15.2.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/geo/regions' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{
"selectedCountries": "USA,UKR",
"selectedRegions": ""
}'
15.2.3. Response Body
| Path | Type | Description |
|---|---|---|
*.country_iso3 |
any |
|
*.state |
any |
|
*.state_iso2 |
any |
15.2.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"country_iso3": "USA",
"state": "California",
"state_iso2": "CA"
},
{
"country_iso3": "UKR",
"state": "Kyiv",
"state_iso2": "KV"
}
]
}
15.3. Get list of Cities
A `GET` request returns list of cities for selected countries and optionally filtered by regions. Required: `selectedCountries` (ISO3 codes). Optional: `selectedRegions` (ISO2 codes) to filter cities by regions, `selectedCities` to move already selected cities to the top.
15.3.1. HTTP Request
URL
GET api/geo/cities HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
"selectedCountries": "USA",
"selectedRegions": "CA",
"selectedCities": ""
}
15.3.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/geo/cities' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{
"selectedCountries": "USA",
"selectedRegions": "CA",
"selectedCities": ""
}'
15.3.3. Response Body
| Path | Type | Description |
|---|---|---|
*.country_iso3 |
any |
|
*.state |
any |
|
*.state_iso2 |
any |
|
*.city_name |
any |
|
*.geoname_id |
any |
15.3.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"country_iso3": "USA",
"state": "California",
"state_iso2": "CA",
"city_name": "Los Angeles",
"geoname_id": "5368361"
},
{
"country_iso3": "USA",
"state": "California",
"state_iso2": "CA",
"city_name": "San Francisco",
"geoname_id": "5391959"
}
]
}
16. Conversion Pixels
16.1. Get list of Conversion Pixels
A `GET` request returns paginated list of conversion pixels owned by current user. Conversion pixels track user actions (conversions) and can be attached to campaigns for optimization.
16.1.1. HTTP Request
URL
GET api/conversion-pixel HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
16.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/conversion-pixel' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
16.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.id |
integer |
Conversion pixel id |
data.*.isActive |
boolean |
Is active |
data.*.userId |
integer |
User id |
data.*.name |
string |
Conversion pixel name |
data.*.conversionType |
string |
Conversion type |
data.*.repeatConversionsType |
string |
Repeat conversions type |
data.*.frequency |
integer |
Frequency |
data.*.code |
string |
Pixel code |
data.*.createdAt |
datetime |
Created at |
data.*.updatedAt |
datetime |
Updated at |
meta.pagination.total |
integer |
Total items count |
meta.pagination.count |
integer |
Current page items count |
meta.pagination.per_page |
integer |
Items per page |
meta.pagination.current_page |
integer |
Current page number |
meta.pagination.total_pages |
integer |
Total pages count |
meta.pagination.links.prev |
string |
URL to previous page |
meta.pagination.links.next |
string |
URL to next page |
16.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"id": 1,
"isActive": true,
"userId": 69,
"name": "Conversion Pixel #1",
"conversionType": "postback",
"repeatConversionsType": "once",
"frequency": 0,
"code": "pixel-code-123",
"createdAt": "2026-02-12 16:34:53",
"updatedAt": "2026-02-12 16:34:53"
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 100,
"current_page": 1,
"total_pages": 1,
"links": {
"prev": null,
"next": null
}
}
}
}
16.2. Get Conversion Pixel by ID
A `GET` request with Conversion Pixel Id in url will return pixel details.
16.2.1. HTTP Request
URL
GET api/conversion-pixel/1 HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
16.2.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/conversion-pixel/1' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
16.2.3. Response Body
| Path | Type | Description |
|---|---|---|
id |
integer |
Conversion pixel id |
isActive |
boolean |
Is active |
userId |
integer |
User id |
name |
string |
Conversion pixel name |
conversionType |
string |
Conversion type |
repeatConversionsType |
string |
Repeat conversions type |
frequency |
integer |
Frequency |
code |
string |
Pixel code |
createdAt |
datetime |
Created at |
updatedAt |
datetime |
Updated at |
16.2.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"id": 1,
"isActive": true,
"userId": 70,
"name": "Conversion Pixel #1",
"conversionType": "postback",
"repeatConversionsType": "once",
"frequency": 0,
"code": "pixel-code-123",
"createdAt": "2026-02-12 16:34:53",
"updatedAt": "2026-02-12 16:34:53"
}
16.3. Create Conversion Pixel
A `POST` request creates a new conversion pixel. Required fields: `name`, `conversionType`, `repeatConversionsType`. Pixel will be owned by current authenticated user and can be attached to campaigns.
16.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
name |
string |
Conversion pixel name |
+ |
isActive |
boolean |
Is active |
|
conversionType |
string |
Conversion type |
+ |
repeatConversionsType |
string |
Repeat conversions type |
+ |
frequency |
integer |
Frequency |
|
code |
string |
Pixel code |
16.3.2. HTTP Request
URL
POST api/conversion-pixel 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": "New Conversion Pixel",
"isActive": true,
"conversionType": "postback",
"repeatConversionsType": "once",
"frequency": 0,
"code": "pixel-code-456"
}
16.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/conversion-pixel' -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": "New Conversion Pixel",
"isActive": true,
"conversionType": "postback",
"repeatConversionsType": "once",
"frequency": 0,
"code": "pixel-code-456"
}'
16.3.4. Response Body
| Path | Type | Description |
|---|---|---|
id |
integer |
Conversion pixel id |
isActive |
boolean |
Is active |
userId |
integer |
User id |
name |
string |
Conversion pixel name |
conversionType |
string |
Conversion type |
repeatConversionsType |
string |
Repeat conversions type |
frequency |
integer |
Frequency |
code |
string |
Pixel code |
createdAt |
datetime |
Created at |
updatedAt |
datetime |
Updated at |
16.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"id": 1,
"isActive": true,
"userId": 71,
"name": "New Conversion Pixel",
"conversionType": "postback",
"repeatConversionsType": "once",
"frequency": 0,
"code": "pixel-code-456",
"createdAt": "2026-02-12 16:34:53",
"updatedAt": "2026-02-12 16:34:53"
}
16.4. Update Conversion Pixel
A `PUT/PATCH` request with Conversion Pixel Id in url will update pixel.
16.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
name |
string |
Conversion pixel name |
|
isActive |
boolean |
Is active |
16.4.2. HTTP Request
URL
PUT api/conversion-pixel/1 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": "Updated Conversion Pixel",
"isActive": false
}
16.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/conversion-pixel/1' -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": "Updated Conversion Pixel",
"isActive": false
}'
16.4.4. Response Body
| Path | Type | Description |
|---|---|---|
id |
integer |
Conversion pixel id |
isActive |
boolean |
Is active |
userId |
integer |
User id |
name |
string |
Conversion pixel name |
conversionType |
string |
Conversion type |
repeatConversionsType |
string |
Repeat conversions type |
frequency |
integer |
Frequency |
code |
string |
Pixel code |
createdAt |
datetime |
Created at |
updatedAt |
datetime |
Updated at |
16.4.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"id": 1,
"isActive": false,
"userId": 72,
"name": "Updated Conversion Pixel",
"conversionType": "postback",
"repeatConversionsType": "once",
"frequency": 0,
"code": "pixel-code-456",
"createdAt": "2026-02-12 16:34:53",
"updatedAt": "2026-02-12 16:34:53"
}
16.5. Delete Conversion Pixel
A `DELETE` request with Conversion Pixel Id and Campaign Id in url will delete pixel.
16.5.1. HTTP Request
URL
DELETE api/conversion-pixel/1/1 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
{}
16.5.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/conversion-pixel/1/1' -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 '{}'
16.5.3. Response Body
| Path | Type | Description |
|---|---|---|
deleted |
boolean |
Delete result |
16.5.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"deleted": true
}
17. Upload media
17.1. Store Image
A `POST` request will upload image
17.1.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
media_assets |
file |
Array of files to upload |
+ |
17.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTgsImV4cCI6MTc3MDkxNzY5OCwibmJmIjoxNzcwOTE0MDk4LCJqdGkiOiIzaWZrSWd2dnJ0NjM0ZnZvIiwic3ViIjoiOTYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.KSXErZl4iCjBkQqElPr17VKxjzqDIwimxpJj-LZ11tM
DATA
{
"media_assets": [
<Binary file>
]
}
17.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTgsImV4cCI6MTc3MDkxNzY5OCwibmJmIjoxNzcwOTE0MDk4LCJqdGkiOiIzaWZrSWd2dnJ0NjM0ZnZvIiwic3ViIjoiOTYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.KSXErZl4iCjBkQqElPr17VKxjzqDIwimxpJj-LZ11tM' \
-d '{
"media_assets": [
<Binary file>
]
}'
17.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 |
17.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": 96,
"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-12 16:34:58",
"updatedAt": "2026-02-12 16:34:58"
}
]
}
17.2. Store video
A `POST` request will upload video
17.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
media_assets |
file |
Array of files to upload |
+ |
17.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTgsImV4cCI6MTc3MDkxNzY5OCwibmJmIjoxNzcwOTE0MDk4LCJqdGkiOiJCcDh0Y2g1WmlORE83NjYxIiwic3ViIjoiOTciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.PWjKGQV09bmSdYb_g_dUl6Bc6YQQXnhr9Gw0tbZ-7zM
DATA
{
"media_assets": [
<Binary file>
]
}
17.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTgsImV4cCI6MTc3MDkxNzY5OCwibmJmIjoxNzcwOTE0MDk4LCJqdGkiOiJCcDh0Y2g1WmlORE83NjYxIiwic3ViIjoiOTciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.PWjKGQV09bmSdYb_g_dUl6Bc6YQQXnhr9Gw0tbZ-7zM' \
-d '{
"media_assets": [
<Binary file>
]
}'
17.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 |
17.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": 97,
"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-12 16:34:58",
"updatedAt": "2026-02-12 16:34:58"
}
]
}
17.3. Store HTML
A `POST` request will upload HTML
17.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
media_assets |
file |
Array of files to upload |
+ |
17.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTgsImV4cCI6MTc3MDkxNzY5OCwibmJmIjoxNzcwOTE0MDk4LCJqdGkiOiI1M2t5a0xzRkZURnlBTzVuIiwic3ViIjoiOTgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.mM0PiZtbMDqRqhCsVaXeyD25Pu69EOzZm287bdrQJlw
DATA
{
"media_assets": [
<Binary file>
]
}
17.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTgsImV4cCI6MTc3MDkxNzY5OCwibmJmIjoxNzcwOTE0MDk4LCJqdGkiOiI1M2t5a0xzRkZURnlBTzVuIiwic3ViIjoiOTgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.mM0PiZtbMDqRqhCsVaXeyD25Pu69EOzZm287bdrQJlw' \
-d '{
"media_assets": [
<Binary file>
]
}'
17.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 |
17.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": 98,
"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-12 16:34:58",
"updatedAt": "2026-02-12 16:34:58"
}
]
}
17.4. Store filter list
A `POST` request will upload video
17.4.1. HTTP Request
URL
POST api/parsefile HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTgsImV4cCI6MTc3MDkxNzY5OCwibmJmIjoxNzcwOTE0MDk4LCJqdGkiOiJ2NEhXaDRSSDhBVmhqdE1DIiwic3ViIjoiOTkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.6uk-eIyQa9ZolLJ17W0ntWxCTE_dWqMtzpK8XlplLck
DATA
{
"file": <Binary file>
}
17.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTgsImV4cCI6MTc3MDkxNzY5OCwibmJmIjoxNzcwOTE0MDk4LCJqdGkiOiJ2NEhXaDRSSDhBVmhqdE1DIiwic3ViIjoiOTkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.6uk-eIyQa9ZolLJ17W0ntWxCTE_dWqMtzpK8XlplLck' \
-d '{
"file": <Binary file>
}'
17.4.3. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
items.* |
string |
List item (domain, bundle, IP, etc.) |
fileName |
string |
File name |
countItems |
integer |
Count items |
17.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": "1770914098_test-filter.csv",
"countItems": 0
}
18. Creatives
18.1. Creatives list
A `GET` request will return a list of an creatives.
18.1.1. HTTP Request
URL
GET api/creatives HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTMsImV4cCI6MTc3MDkxNzY5MywibmJmIjoxNzcwOTE0MDkzLCJqdGkiOiJwZEt3NzR1bTVETXFsRkdyIiwic3ViIjoiNzQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.9AnXYgt-Dw12ClAPD0Np2w0r8sLYuk9ZjUuiNP8cQQo
DATA
{}
18.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTMsImV4cCI6MTc3MDkxNzY5MywibmJmIjoxNzcwOTE0MDkzLCJqdGkiOiJwZEt3NzR1bTVETXFsRkdyIiwic3ViIjoiNzQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.9AnXYgt-Dw12ClAPD0Np2w0r8sLYuk9ZjUuiNP8cQQo' \
-d '{}'
18.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. |
string |
MIME type (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 |
18.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": 74,
"isActive": 0,
"approved": "pending",
"creativeType": "banner",
"name": "Banner creative #1",
"frequencyType": "ip",
"frequency": 0,
"frequencyCap": 4,
"frequencyPeriod": 1,
"bidPrice": "16.46",
"autoresize": 0,
"adaptiveCpm": false,
"size": "365 x 281",
"weight": "0.37 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-12 16:34:53",
"updatedAt": "2026-02-12 16:34:53",
"pendingAt": null,
"deletedAt": null,
"media": {
"id": 8,
"userId": 74,
"mediaType": "image",
"originName": "video.mp4",
"name": "74_c40085229064044ad4aa104f7b1723ca.mp4",
"extension": "mp4",
"url": "http:\/\/rempel.com\/\/74_c40085229064044ad4aa104f7b1723ca.mp4",
"width": 395,
"height": 244,
"weight": 388628
},
"relation": {
"banner": {
"apiFramework": 0,
"admBody": "<a target=\"_blank\" href=\"http:\/\/www.kautzer.org\/et-sequi-et-voluptatem-fugit-dicta-optio-ullam\" ><img src=\"http:\/\/klein.net\/sit-deserunt-inventore-ipsa-modi-doloribus-non-nam\/10.jpg\"\/><\/a>",
"bannerType": "banner",
"clickUrl": "http:\/\/kreiger.com\/",
"width": 365,
"height": 281,
"childrenCreative": null,
"statusChildrenCreative": [],
"main": 1
}
},
"status": "pending"
},
{
"id": 9,
"userId": 74,
"isActive": 0,
"approved": "pending",
"creativeType": "native",
"name": "Native creative #1",
"frequencyType": "ip",
"frequency": 0,
"frequencyCap": 6,
"frequencyPeriod": 1,
"bidPrice": "12.80",
"autoresize": 0,
"adaptiveCpm": false,
"size": "185 x 278",
"weight": "-",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-12 16:34:53",
"updatedAt": "2026-02-12 16:34:53",
"pendingAt": null,
"deletedAt": null,
"media": {
"id": 9,
"userId": 74,
"mediaType": "image",
"originName": "richmedia.zip",
"name": "74_c40085229064044ad4aa104f7b1723ca\/index.html",
"extension": "zip",
"url": "http:\/\/carroll.org\/eos-vitae-non-ratione-enim-sed\/74_c40085229064044ad4aa104f7b1723ca\/index.html",
"width": 449,
"height": 426,
"weight": 247139
},
"relation": {
"native": {
"smallImageId": 9,
"largeImageId": 10,
"smallImage": {
"id": 9,
"folderId": null,
"userId": 74,
"width": 449,
"height": 426,
"name": "74_c40085229064044ad4aa104f7b1723ca\/index.html",
"url": "http:\/\/carroll.org\/eos-vitae-non-ratione-enim-sed\/74_c40085229064044ad4aa104f7b1723ca\/index.html",
"href": null,
"originName": "richmedia.zip",
"path": null,
"extension": "zip",
"mediaType": "image",
"createdAt": "2026-02-12T16:34:53.000000Z",
"updatedAt": "2026-02-12T16:34:53.000000Z",
"deletedAt": null,
"weight": 247139
},
"largeImage": {
"id": 10,
"folderId": null,
"userId": 74,
"width": 185,
"height": 278,
"name": "74_c40085229064044ad4aa104f7b1723ca.mp4",
"url": "http:\/\/www.okon.com\/qui-delectus-unde-molestiae-blanditiis-non-at-illum-itaque\/74_c40085229064044ad4aa104f7b1723ca.mp4",
"href": null,
"originName": "video.mp4",
"path": null,
"extension": "mp4",
"mediaType": "image",
"createdAt": "2026-02-12T16:34:53.000000Z",
"updatedAt": "2026-02-12T16:34:53.000000Z",
"deletedAt": null,
"weight": 421342
},
"assetDataDesc": "Sequi non culpa quasi.",
"assetTitle": "Quam quia quo harum.",
"assetDataSponsored": "Ut praesentium est optio tempora.",
"assetCtaText": "Sequi voluptas at hic.",
"clickUrl": "https:\/\/www.tremblay.com\/sapiente-ut-sint-harum-voluptas-pariatur-harum-placeat",
"displayUrl": "http:\/\/www.abbott.org\/ullam-aut-architecto-consequatur-blanditiis-velit-perferendis-non-temporibus",
"impTracker": null
}
},
"status": "pending"
},
{
"id": 10,
"userId": 74,
"isActive": 0,
"approved": "pending",
"creativeType": "video",
"name": "Video creative #1",
"frequencyType": "ip",
"frequency": 0,
"frequencyCap": 9,
"frequencyPeriod": 1,
"bidPrice": "0.85",
"autoresize": 0,
"adaptiveCpm": false,
"size": "262 x 429",
"weight": "0.40 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-12 16:34:53",
"updatedAt": "2026-02-12 16:34:53",
"pendingAt": null,
"deletedAt": null,
"media": {
"id": 11,
"userId": 74,
"mediaType": "video",
"originName": "image.jpg",
"name": "74_c40085229064044ad4aa104f7b1723ca.jpg",
"extension": "jpg",
"url": "http:\/\/waelchi.org\/\/74_c40085229064044ad4aa104f7b1723ca.jpg",
"width": 151,
"height": 353,
"weight": 417718
},
"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\/mp4"
],
"width": 262,
"height": 429,
"duration": 7,
"clickUrl": "http:\/\/lesch.info\/dolor-voluptatem-nulla-corporis-non",
"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": []
}
}
}
18.2. Get by ID (Banner creative)
A `GET` request with a path parameter of the id will return the creative with that id.
18.2.1. HTTP Request
URL
GET api/creatives/11 HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTMsImV4cCI6MTc3MDkxNzY5MywibmJmIjoxNzcwOTE0MDkzLCJqdGkiOiJ1ZDFiTW15eWhMR3lUQW94Iiwic3ViIjoiNzUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.ODK2OKMlxrKc19UbXQdGq0hheCkBZ2zJwqGx-z1mHMo
DATA
{}
18.2.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives/11' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTMsImV4cCI6MTc3MDkxNzY5MywibmJmIjoxNzcwOTE0MDkzLCJqdGkiOiJ1ZDFiTW15eWhMR3lUQW94Iiwic3ViIjoiNzUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.ODK2OKMlxrKc19UbXQdGq0hheCkBZ2zJwqGx-z1mHMo' \
-d '{}'
18.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 |
18.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": 75,
"isActive": 0,
"approved": "pending",
"creativeType": "banner",
"name": "Banner creative #2",
"frequencyType": "user",
"frequency": 0,
"frequencyCap": 9,
"frequencyPeriod": 1,
"bidPrice": "1.36",
"autoresize": 0,
"adaptiveCpm": false,
"size": "357 x 385",
"weight": "0.43 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-12 16:34:53",
"updatedAt": "2026-02-12 16:34:53",
"pendingAt": null,
"deletedAt": null,
"relation": {
"banner": {
"apiFramework": 0,
"admBody": "<a target=\"_blank\" href=\"http:\/\/spencer.com\/\" ><img src=\"http:\/\/okuneva.com\/odio-alias-iste-veniam-cum-ea-est-consectetur\/10.jpg\"\/><\/a>",
"bannerType": "banner",
"clickUrl": "https:\/\/www.carroll.com\/et-impedit-placeat-occaecati",
"width": 357,
"height": 385
}
},
"sizes": []
}
}
18.3. Get by ID (Native creative)
A `GET` request with a path parameter of the id will return the creative with that id.
18.3.1. HTTP Request
URL
GET api/creatives/12 HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJTY2NOSk15QTFHUzdIc0RWIiwic3ViIjoiNzYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.kW6QUjus9x4wgI0ntVM4rJZi61HVYjSffmlIWFPt334
DATA
{}
18.3.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives/12' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJTY2NOSk15QTFHUzdIc0RWIiwic3ViIjoiNzYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.kW6QUjus9x4wgI0ntVM4rJZi61HVYjSffmlIWFPt334' \
-d '{}'
18.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 |
18.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": 76,
"isActive": 1,
"approved": "pending",
"creativeType": "native",
"name": "Native creative #2",
"frequencyType": "ip",
"frequency": 0,
"frequencyCap": 3,
"frequencyPeriod": 1,
"bidPrice": "11.63",
"autoresize": 0,
"adaptiveCpm": false,
"size": "455 x 210",
"weight": "-",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-12 16:34:54",
"updatedAt": "2026-02-12 16:34:54",
"pendingAt": null,
"deletedAt": null,
"relation": {
"native": {
"smallImageId": 13,
"largeImageId": 14,
"smallImage": {
"id": 13,
"folderId": null,
"userId": 76,
"width": 294,
"height": 357,
"name": "76_a839ae565986c487992cd05f3b4ad86c.mp4",
"url": "http:\/\/www.sanford.com\/magnam-et-vel-deleniti-est-et-eos-eum-delectus\/76_a839ae565986c487992cd05f3b4ad86c.mp4",
"href": null,
"originName": "video.mp4",
"path": null,
"extension": "mp4",
"mediaType": "image",
"createdAt": "2026-02-12T16:34:54.000000Z",
"updatedAt": "2026-02-12T16:34:54.000000Z",
"deletedAt": null,
"weight": 344153
},
"largeImage": {
"id": 14,
"folderId": null,
"userId": 76,
"width": 455,
"height": 210,
"name": "76_a839ae565986c487992cd05f3b4ad86c.jpg",
"url": "http:\/\/prosacco.org\/\/76_a839ae565986c487992cd05f3b4ad86c.jpg",
"href": null,
"originName": "image.jpg",
"path": null,
"extension": "jpg",
"mediaType": "image",
"createdAt": "2026-02-12T16:34:54.000000Z",
"updatedAt": "2026-02-12T16:34:54.000000Z",
"deletedAt": null,
"weight": 412832
},
"assetDataDesc": "Et iusto unde tempore.",
"assetTitle": "Ipsa aut aliquam sed.",
"assetDataSponsored": "Sit inventore ea quam quia.",
"assetCtaText": "Quis quas eum ut.",
"clickUrl": "http:\/\/www.bradtke.com\/",
"displayUrl": "http:\/\/www.hirthe.net\/et-consequatur-doloremque-est-dolor-excepturi-minima-molestiae",
"impTracker": null
}
},
"sizes": []
}
}
18.4. Get by ID (Video creative)
A `GET` request with a path parameter of the id will return the creative with that id.
18.4.1. HTTP Request
URL
GET api/creatives/13 HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJlOGU5WTI4cU1MakJHSWw4Iiwic3ViIjoiNzciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.l45yq9rTvI2_o7NjuvJvEzMIl-v581gFqVZFwydDc6o
DATA
{}
18.4.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives/13' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJlOGU5WTI4cU1MakJHSWw4Iiwic3ViIjoiNzciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.l45yq9rTvI2_o7NjuvJvEzMIl-v581gFqVZFwydDc6o' \
-d '{}'
18.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.* |
string |
MIME type (video/mpeg, video/mp4, etc.) |
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 |
18.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": 77,
"isActive": 0,
"approved": "pending",
"creativeType": "video",
"name": "Video creative #2",
"frequencyType": "user",
"frequency": 0,
"frequencyCap": 4,
"frequencyPeriod": 1,
"bidPrice": "10.73",
"autoresize": 0,
"adaptiveCpm": false,
"size": "342 x 498",
"weight": "0.16 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-12 16:34:54",
"updatedAt": "2026-02-12 16:34:54",
"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": [
"application\/javascript"
],
"width": 342,
"height": 498,
"duration": 9,
"clickUrl": "http:\/\/schuster.info\/ad-mollitia-quas-tempore-commodi-quis-dicta",
"partyTagFormat": 0,
"apiFramework": null,
"autoStoreEndCard": 0,
"autoStoreEndCardOption": "appStore",
"politicalLabelEnabled": false,
"politicalTooltip": []
}
},
"sizes": []
}
}
18.5. Create a Custom Banner Creative with Third-party tag
A `POST` request will create new creative.
18.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.* |
string |
SubCategory ID |
+ |
18.5.2. HTTP Request
URL
POST api/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJOU2pHa1hoeDRUenR5OXZwIiwic3ViIjoiNzgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.1a0Y-7bJPhScW4fj999bgd2pbAeG6JfkzkCf5hTio6w
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"
]
}
}
18.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJOU2pHa1hoeDRUenR5OXZwIiwic3ViIjoiNzgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.1a0Y-7bJPhScW4fj999bgd2pbAeG6JfkzkCf5hTio6w' \
-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"
]
}
}'
18.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 |
18.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": 78,
"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-12 16:34:54",
"updatedAt": "2026-02-12 16:34:54",
"pendingAt": null,
"deletedAt": null,
"relation": {
"banner": {
"apiFramework": 0,
"admBody": "<iframe src=\"url.to.script\"><\/iframe>",
"bannerType": null,
"clickUrl": null,
"width": 320,
"height": 200
}
},
"sizes": []
}
}
18.6. Create a Custom Banner Creative with Media image
A `POST` request will create new creative.
18.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.* |
string |
SubCategory ID |
+ |
categories.IAB1 |
array |
Categories (required if subCategories is empty) |
+ |
18.6.2. HTTP Request
URL
POST api/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJmTXRWNHBoeDdrbzNEclhSIiwic3ViIjoiNzkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.caGdgGwjh0U8cn9RbFjqC76BoWFRAj_WD6x0CMKb1AQ
DATA
{
"name": "Banner creative #4",
"creativeType": "banner",
"mediaId": 16,
"frequency": 0,
"bidPrice": 0.5,
"banner": {
"apiFramework": 0,
"width": 320,
"height": 200,
"clickUrl": "http:\/\/www.deckow.biz\/"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}
18.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJmTXRWNHBoeDdrbzNEclhSIiwic3ViIjoiNzkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.caGdgGwjh0U8cn9RbFjqC76BoWFRAj_WD6x0CMKb1AQ' \
-d '{
"name": "Banner creative #4",
"creativeType": "banner",
"mediaId": 16,
"frequency": 0,
"bidPrice": 0.5,
"banner": {
"apiFramework": 0,
"width": 320,
"height": 200,
"clickUrl": "http:\/\/www.deckow.biz\/"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}'
18.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 |
18.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": 79,
"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": "438 x 219",
"weight": "0.35 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-12 16:34:54",
"updatedAt": "2026-02-12 16:34:54",
"pendingAt": null,
"deletedAt": null,
"relation": {
"banner": {
"apiFramework": 0,
"admBody": "<img src=\"http:\/\/www.bartoletti.org\/quasi-et-magni-non-quas-necessitatibus-repellendus.html\/79_a839ae565986c487992cd05f3b4ad86c.jpg\" crossorigin=\"anonymous\"\/>",
"bannerType": null,
"clickUrl": "http:\/\/www.deckow.biz\/",
"width": 438,
"height": 219
}
},
"sizes": []
}
}
18.7. Create a Custom Banner Creative with Rich Media Html
A `POST` request will create new creative.
18.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.* |
string |
SubCategory ID |
+ |
categories.IAB1 |
array |
Categories (required if subCategories is empty) |
+ |
18.7.2. HTTP Request
URL
POST api/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJZYWVHb0JqWkptUGtsMlNCIiwic3ViIjoiODAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.RHuu_0NusqUyojw4MRWDbTramNa9xLma6Yje_8qPctU
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
}
}
18.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJZYWVHb0JqWkptUGtsMlNCIiwic3ViIjoiODAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.RHuu_0NusqUyojw4MRWDbTramNa9xLma6Yje_8qPctU' \
-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
}
}'
18.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 |
18.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": 80,
"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.19 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-12 16:34:54",
"updatedAt": "2026-02-12 16:34:54",
"pendingAt": null,
"deletedAt": null,
"relation": {
"banner": {
"apiFramework": 3,
"admBody": "<iframe src=\"http:\/\/www.greenholt.com\/\/80_a839ae565986c487992cd05f3b4ad86c\/index.html\" style=\"border:0; width:100%; height:100%;\"><\/iframe>",
"bannerType": null,
"clickUrl": null,
"width": 320,
"height": 200
}
},
"sizes": []
}
}
18.8. Create a Custom Native Creative
A `POST` request will create new creative.
18.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.* |
string |
SubCategory ID |
+ |
categories.IAB1 |
array |
Categories (required if subCategories is empty) |
+ |
18.8.2. HTTP Request
URL
POST api/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJRTEdKSFJxY0hQdW1MUndFIiwic3ViIjoiODEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.C9dgON8hTJrVFquZx0MMm3b0r_f7_gGQGcjGmqJ4Gng
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": "Eos ut ea debitis.",
"assetTitle": "Et nihil.",
"assetDataSponsored": "Qui et rem sit sed.",
"assetCtaText": "Magnam omnis.",
"clickUrl": "http:\/\/cormier.com\/",
"displayUrl": "http:\/\/schneider.net\/dolorem-officia-et-et-doloribus"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}
18.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJRTEdKSFJxY0hQdW1MUndFIiwic3ViIjoiODEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.C9dgON8hTJrVFquZx0MMm3b0r_f7_gGQGcjGmqJ4Gng' \
-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": "Eos ut ea debitis.",
"assetTitle": "Et nihil.",
"assetDataSponsored": "Qui et rem sit sed.",
"assetCtaText": "Magnam omnis.",
"clickUrl": "http:\/\/cormier.com\/",
"displayUrl": "http:\/\/schneider.net\/dolorem-officia-et-et-doloribus"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}'
18.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 |
18.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": 81,
"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": "109 x 176",
"weight": "-",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-12 16:34:54",
"updatedAt": "2026-02-12 16:34:54",
"pendingAt": null,
"deletedAt": null,
"relation": {
"native": {
"smallImageId": 18,
"largeImageId": 18,
"smallImage": {
"id": 18,
"folderId": null,
"userId": 81,
"width": 109,
"height": 176,
"name": "81_a839ae565986c487992cd05f3b4ad86c.mp4",
"url": "https:\/\/www.cole.net\/officia-adipisci-autem-aut-vitae-magnam-minima\/81_a839ae565986c487992cd05f3b4ad86c.mp4",
"href": null,
"originName": "video.mp4",
"path": null,
"extension": "mp4",
"mediaType": "image",
"createdAt": "2026-02-12T16:34:54.000000Z",
"updatedAt": "2026-02-12T16:34:54.000000Z",
"deletedAt": null,
"weight": 118018
},
"largeImage": {
"id": 18,
"folderId": null,
"userId": 81,
"width": 109,
"height": 176,
"name": "81_a839ae565986c487992cd05f3b4ad86c.mp4",
"url": "https:\/\/www.cole.net\/officia-adipisci-autem-aut-vitae-magnam-minima\/81_a839ae565986c487992cd05f3b4ad86c.mp4",
"href": null,
"originName": "video.mp4",
"path": null,
"extension": "mp4",
"mediaType": "image",
"createdAt": "2026-02-12T16:34:54.000000Z",
"updatedAt": "2026-02-12T16:34:54.000000Z",
"deletedAt": null,
"weight": 118018
},
"assetDataDesc": "Eos ut ea debitis.",
"assetTitle": "Et nihil.",
"assetDataSponsored": "Qui et rem sit sed.",
"assetCtaText": "Magnam omnis.",
"clickUrl": "http:\/\/cormier.com\/",
"displayUrl": "http:\/\/schneider.net\/dolorem-officia-et-et-doloribus",
"impTracker": null
}
},
"sizes": []
}
}
18.9. Create a Custom Video Creative with Third-party tag
A `POST` request will create new creative.
18.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.* |
string |
MIME type (video/mpeg, video/mp4, etc.) |
+ |
video.admBody |
string |
Third-party tag |
+ |
subCategories.IAB1.* |
string |
SubCategory ID |
+ |
categories.IAB1 |
array |
Categories (required if subCategories is empty) |
+ |
18.9.2. HTTP Request
URL
POST api/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJJV3A3ZDJNS2FxUkJQMHJiIiwic3ViIjoiODIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.k-hsC0LLuhSU9S3r1ceruXlkumvAvnB7a2BDddh1APA
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
}
}
18.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJJV3A3ZDJNS2FxUkJQMHJiIiwic3ViIjoiODIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.k-hsC0LLuhSU9S3r1ceruXlkumvAvnB7a2BDddh1APA' \
-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
}
}'
18.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.* |
string |
MIME type (video/mpeg, video/mp4, etc.) |
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 |
18.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": 82,
"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-12 16:34:54",
"updatedAt": "2026-02-12 16:34:54",
"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": []
}
}
18.10. Create a Custom Video Creative with Media image
A `POST` request will create new creative.
18.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.* |
string |
SubCategory ID |
+ |
categories.IAB1 |
array |
Categories (required if subCategories is empty) |
+ |
18.10.2. HTTP Request
URL
POST api/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJuamVJR1pHamxWa3ptQXBvIiwic3ViIjoiODMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.FQlR9CILwpVwDsdqQKDXLlMU8zdzOxQgW2ZCv_JhlJA
DATA
{
"name": "Video creative #4",
"creativeType": "video",
"frequencyType": "user",
"frequencyCap": 1,
"frequencyPeriod": 1,
"frequency": 1,
"mediaId": 19,
"bidPrice": 100,
"video": {
"clickUrl": "http:\/\/collins.com\/a-sed-dolores-voluptatibus-quibusdam-iusto"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}
18.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJuamVJR1pHamxWa3ptQXBvIiwic3ViIjoiODMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.FQlR9CILwpVwDsdqQKDXLlMU8zdzOxQgW2ZCv_JhlJA' \
-d '{
"name": "Video creative #4",
"creativeType": "video",
"frequencyType": "user",
"frequencyCap": 1,
"frequencyPeriod": 1,
"frequency": 1,
"mediaId": 19,
"bidPrice": 100,
"video": {
"clickUrl": "http:\/\/collins.com\/a-sed-dolores-voluptatibus-quibusdam-iusto"
},
"subCategories": {
"IAB1": [
"IAB1-1"
]
},
"categories": {
"IAB1": true
}
}'
18.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.* |
string |
MIME type (video/mpeg, video/mp4, etc.) |
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 |
18.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": 83,
"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": "328 x 289",
"weight": "0.17 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-12 16:34:54",
"updatedAt": "2026-02-12 16:34:54",
"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:08<\/Duration>\n <VideoClicks>\n <ClickThrough><![CDATA[https:\/\/collins.com\/a-sed-dolores-voluptatibus-quibusdam-iusto]]><\/ClickThrough>\n <\/VideoClicks>\n <MediaFiles>\n <MediaFile delivery=\"progressive\" type=\"video\/mp4\" width=\"328\" height=\"289\"><![CDATA[http:\/\/www.erdman.info\/cumque-ullam-modi-consequatur-fuga-ullam\/83_a839ae565986c487992cd05f3b4ad86c.mp4]]><\/MediaFile>\n <\/MediaFiles>\n <\/Linear>\n <\/Creative>\n <\/Creatives>\n <\/InLine>\n <\/Ad>\n<\/VAST>",
"mimeType": [
"video\/mp4"
],
"width": 328,
"height": 289,
"duration": 8,
"clickUrl": "https:\/\/collins.com\/a-sed-dolores-voluptatibus-quibusdam-iusto",
"partyTagFormat": null,
"apiFramework": null,
"autoStoreEndCard": null,
"autoStoreEndCardOption": null,
"politicalLabelEnabled": false,
"politicalTooltip": {
"text": "",
"link": "",
"position": "top-left"
}
}
},
"sizes": []
}
}
18.11. Update a Custom Creative
A `PATCH` request will update creative.
18.11.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
isActive |
boolean |
Creative status |
18.11.2. HTTP Request
URL
PUT api/creatives/20 HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJTek5PaXh3NWs0VzNESGlrIiwic3ViIjoiODQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.NrRuKcBHChghgmd6vj1oUE2yCObuV580Pi6x0-wTv6I
DATA
{
"isActive": true
}
18.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJTek5PaXh3NWs0VzNESGlrIiwic3ViIjoiODQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.NrRuKcBHChghgmd6vj1oUE2yCObuV580Pi6x0-wTv6I' \
-d '{
"isActive": true
}'
18.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 |
18.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": 84,
"isActive": true,
"approved": "pending",
"creativeType": "banner",
"name": "culpa dolor",
"frequencyType": "user",
"frequency": 0,
"frequencyCap": 4,
"frequencyPeriod": 1,
"bidPrice": "14.29",
"autoresize": 0,
"adaptiveCpm": false,
"size": " x ",
"weight": "-",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-12 16:34:54",
"updatedAt": "2026-02-12 16:34:55",
"pendingAt": null,
"deletedAt": null,
"relation": {
"banner": {
"apiFramework": null,
"admBody": null,
"bannerType": null,
"clickUrl": null,
"width": null,
"height": null
}
},
"sizes": []
}
}
18.12. Delete a Custom Creative
A `DELETE` request will delete creative.
18.12.1. HTTP Request
URL
DELETE api/creatives/21 HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTUsImV4cCI6MTc3MDkxNzY5NSwibmJmIjoxNzcwOTE0MDk1LCJqdGkiOiJjMnh1MkFMelNqUDM3N1lmIiwic3ViIjoiODUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.oFa5Z5tgLpQyq0PbU5SugkTGQq1AalF-9BKfYxJsiik Content-type: application/x-www-form-urlencoded
DATA
{}
18.12.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/creatives/21' -i -X DELETE \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTUsImV4cCI6MTc3MDkxNzY5NSwibmJmIjoxNzcwOTE0MDk1LCJqdGkiOiJjMnh1MkFMelNqUDM3N1lmIiwic3ViIjoiODUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.oFa5Z5tgLpQyq0PbU5SugkTGQq1AalF-9BKfYxJsiik' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{}'
18.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
{}
19. Assign Creatives to Campaigns
19.1. Get list of Creatives assigned to Campaign
A `GET` request with Campaign Id in url will get list of Creatives assigned to Campaign
19.1.1. HTTP Request
URL
GET api/campaigns/23/creatives HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJRQnpaRXBBZVNCdmVBUE40Iiwic3ViIjoiMzkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.mAD9c_s41fd8NJk8TIBSIO98hRjUFyhnWkFMI2vbh0U
DATA
{}
19.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/23/creatives' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJRQnpaRXBBZVNCdmVBUE40Iiwic3ViIjoiMzkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.mAD9c_s41fd8NJk8TIBSIO98hRjUFyhnWkFMI2vbh0U' \
-d '{}'
19.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 |
19.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": 39,
"isActive": 1,
"approved": "pending",
"creativeType": "banner",
"name": "Test Creative #1",
"frequencyType": "user",
"frequency": 0,
"frequencyCap": 2,
"frequencyPeriod": 1,
"bidPrice": "16.90",
"autoresize": 0,
"adaptiveCpm": false,
"size": "228 x 447",
"weight": "0.22 MB",
"thumbnail": null,
"folderId": null,
"createdAt": "2026-02-12 16:34:50",
"updatedAt": "2026-02-12 16:34:50",
"pendingAt": null,
"deletedAt": null,
"media": {
"id": 1,
"userId": 39,
"mediaType": "image",
"originName": "image.jpg",
"name": "39_469440b344d1fb162886fcec01aa5360.jpg",
"extension": "jpg",
"url": "https:\/\/carter.biz\/quo-voluptatem-magni-id-et-libero-voluptatem.html\/39_469440b344d1fb162886fcec01aa5360.jpg",
"width": 224,
"height": 155,
"weight": 231956
},
"relation": {
"banner": {
"apiFramework": 0,
"admBody": "<a target=\"_blank\" href=\"https:\/\/www.bogan.com\/illo-modi-vel-unde-placeat-quos-nulla\" ><img src=\"http:\/\/nader.com\/\/10.jpg\"\/><\/a>",
"bannerType": "banner",
"clickUrl": "https:\/\/hamill.com\/ipsam-necessitatibus-quos-qui-quam-ab.html",
"width": 228,
"height": 447,
"childrenCreative": null,
"statusChildrenCreative": [],
"main": 1
}
},
"status": ""
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 1000,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
19.2. Replace Creatives assigned to Campaign
A `POST` request with Campaign Id in url will replace Creatives assigned to Campaign
19.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
ids.* |
integer |
Creative id |
+ |
19.2.2. HTTP Request
URL
POST api/campaigns/24/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJTUERqZDk4QlJ4Y0ZDZjMxIiwic3ViIjoiNDAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.K8Y-t1K36WwKUSrgo36AdyvJ-t-t31YZl_KgkYKn46s
DATA
{
"ids": [
2,
3
]
}
19.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/24/creatives' -i -X POST \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJTUERqZDk4QlJ4Y0ZDZjMxIiwic3ViIjoiNDAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.K8Y-t1K36WwKUSrgo36AdyvJ-t-t31YZl_KgkYKn46s' \
-d '{
"ids": [
2,
3
]
}'
19.2.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
19.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."
}
19.3. Append Creatives assigned to Campaign
A `PATCH` request with Campaign Id in url will append Creatives assigned to Campaign
19.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
ids.* |
integer |
Creative id |
+ |
19.3.2. HTTP Request
URL
PATCH api/campaigns/25/creatives HTTP/1.1
HEADER
Accept: application/json Content-type: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTEsImV4cCI6MTc3MDkxNzY5MSwibmJmIjoxNzcwOTE0MDkxLCJqdGkiOiJJWW9kdjJ2NFBWRlM5S2ozIiwic3ViIjoiNDEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.iSe3PPjTQ3iQlfqqAw1didMrgoT1VN12S-q2pI-hjt8
DATA
{
"ids": [
5
]
}
19.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/25/creatives' -i -X PATCH \
-H 'Accept: application/json' \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTEsImV4cCI6MTc3MDkxNzY5MSwibmJmIjoxNzcwOTE0MDkxLCJqdGkiOiJJWW9kdjJ2NFBWRlM5S2ozIiwic3ViIjoiNDEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.iSe3PPjTQ3iQlfqqAw1didMrgoT1VN12S-q2pI-hjt8' \
-d '{
"ids": [
5
]
}'
19.3.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
19.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."
}
19.4. Remove Creatives assigned to Campaign
A `DELETE` request with Campaign Id in url will remove Creatives assigned to Campaign
19.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
ids.* |
integer |
Creative id |
+ |
19.4.2. HTTP Request
URL
DELETE api/campaigns/26/creatives HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTEsImV4cCI6MTc3MDkxNzY5MSwibmJmIjoxNzcwOTE0MDkxLCJqdGkiOiJVOHVHUE1JNFpyU0kxQk5HIiwic3ViIjoiNDIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.4_6_l3u8M2keJNgxgZTrtp7Z7uJmToK03R61e7e7eU0 Content-type: application/x-www-form-urlencoded
DATA
{
"ids": [
7
]
}
19.4.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/26/creatives' -i -X DELETE \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTEsImV4cCI6MTc3MDkxNzY5MSwibmJmIjoxNzcwOTE0MDkxLCJqdGkiOiJVOHVHUE1JNFpyU0kxQk5HIiwic3ViIjoiNDIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.4_6_l3u8M2keJNgxgZTrtp7Z7uJmToK03R61e7e7eU0' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{
"ids": [
7
]
}'
19.4.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
deleted |
boolean |
Deleting result |
19.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
}
20. Filterlists
20.1. Filter lists
A `GET` request will return a filter lists
20.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
{}
20.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 '{}'
20.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 |
20.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-12 16:34:55",
"updatedAt": "2026-02-12 16:34:55"
},
{
"id": 2,
"userId": 10,
"isInclude": false,
"title": "Test Filter list #2",
"type": "ipAdresses",
"createdAt": "2026-02-12 16:34:55",
"updatedAt": "2026-02-12 16:34:55"
}
],
"meta": {
"pagination": {
"total": 2,
"count": 2,
"per_page": 15,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
20.2. Get filter lists by ID
A `GET` request will return a filter list by ID
20.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
{}
20.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 '{}'
20.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.* |
string |
List item (domain, bundle, IP, etc.) |
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 |
20.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-12 16:34:56",
"updatedAt": "2026-02-12 16:34:56"
}
}
20.3. Create a filter lists
A `POST` request will set new filter list
20.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.* |
string |
List item (domain, bundle, IP, etc.) |
|
fileName |
string |
null |
File name from upload file - Store filter list |
20.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": [
"31.172.51.49",
"208.216.148.181",
"127.202.158.229",
"242.76.248.251",
"10.175.11.90"
],
"fileName": null
}
20.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": [
"31.172.51.49",
"208.216.148.181",
"127.202.158.229",
"242.76.248.251",
"10.175.11.90"
],
"fileName": null
}'
20.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 |
20.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-12 16:34:56",
"updatedAt": "2026-02-12 16:34:56"
}
}
20.4. Filter lists update
A `PATCH` request will update filter lists
20.4.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
title |
string |
List title |
|
isInclude |
bool |
white/black |
|
items.* |
string |
List item (domain, bundle, IP, etc.) |
|
fileName |
string |
null |
File name from upload file - Store filter list |
20.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": [
"https:\/\/schroeder.info\/itaque-illo-ullam-eveniet-sit-est-sunt-culpa-enim.html",
"http:\/\/bailey.com\/",
"http:\/\/www.wiza.biz\/"
],
"fileName": null
}
20.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": [
"https:\/\/schroeder.info\/itaque-illo-ullam-eveniet-sit-est-sunt-culpa-enim.html",
"http:\/\/bailey.com\/",
"http:\/\/www.wiza.biz\/"
],
"fileName": null
}'
20.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 |
20.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-12 16:34:57",
"updatedAt": "2026-02-12 16:34:57"
}
}
20.5. Filter lists delete
A `DELETE` request will delete a filter lists
20.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
{}
20.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 '{}'
20.5.3. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
deleted |
boolean |
is deleted |
20.5.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Deleted",
"deleted": true
}
21. Assign Filterlists to Campaigns
21.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
21.1.1. HTTP Request
URL
GET api/campaigns/31/filterlists HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
21.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/31/filterlists' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
21.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 |
21.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": []
}
}
}
21.2. Replace Filter Lists assigned to Campaign
A `POST` request with Campaign Id in url will replace Filter Lists assigned to Campaign
21.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
items.*.id |
integer |
Filter list id |
+ |
21.2.2. HTTP Request
URL
POST api/campaigns/32/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
{
"items": [
{
"id": 4
},
{
"id": 5
}
]
}
21.2.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/32/filterlists' -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 '{
"items": [
{
"id": 4
},
{
"id": 5
}
]
}'
21.2.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
21.2.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Replaced."
}
21.3. Remove Filter Lists assigned to Campaign
A `DELETE` request with Campaign Id in url will remove Filter Lists assigned to Campaign
21.3.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
ids.* |
integer |
FilterList id |
+ |
21.3.2. HTTP Request
URL
DELETE api/campaigns/33/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": [
7
]
}
21.3.3. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaigns/33/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": [
7
]
}'
21.3.4. Response Body
| Path | Type | Description |
|---|---|---|
message |
string |
Result message |
21.3.5. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"message": "Deleted."
}
22. Optimization Rule
22.1. Rule
A `GET` request will return a optimization rules
22.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
{}
22.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 '{}'
22.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 |
22.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-12 16:34:58",
"updatedAt": "2026-02-12 16:34:58"
}
],
"meta": {
"pagination": {
"total": 1,
"count": 1,
"per_page": 15,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
22.2. Get rule by ID
A `GET` request will return a optimization rule
22.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
{}
22.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 '{}'
22.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 |
22.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-12 16:34:58",
"updatedAt": "2026-02-12 16:34:58"
}
}
22.3. Create a rule
A `POST` request will return a optimization rule
22.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 |
+ |
22.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"
}
]
}
22.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"
}
]
}'
22.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 |
22.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-12 16:34:58",
"updatedAt": "2026-02-12 16:34:58"
}
}
22.4. Rule update
A `PATCH` request will return a optimization rule
22.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 |
+ |
22.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"
}
]
}
22.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"
}
]
}'
22.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 |
22.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-12 16:34:59",
"updatedAt": "2026-02-12 16:34:59"
}
}
22.5. Remove Rule assigned to Campaign
A `DELETE` request will delete a Optimization rule relation
22.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
{}
22.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 '{}'
22.5.3. Response Body
| Path | Type | Description |
|---|---|---|
deleted |
boolean |
is deleted |
22.5.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"deleted": true
}
23. Providers
23.1. Get list of Third-Party Data Providers
A `GET` request returns paginated list of available third-party data providers (Eyeota, LiveRamp, etc.). These providers supply audience segments for targeting.
23.1.1. HTTP Request
URL
GET api/providers HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
23.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/providers' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
23.1.3. Response Body
| Path | Type | Description |
|---|---|---|
data.*.id |
integer |
Provider id |
data.*.name |
string |
Provider name (eyeota, liveramp, etc.) |
meta.pagination.total |
integer |
Total items count |
meta.pagination.count |
integer |
Current page items count |
meta.pagination.per_page |
integer |
Items per page |
meta.pagination.current_page |
integer |
Current page number |
meta.pagination.total_pages |
integer |
Total pages count |
meta.pagination.links |
object |
Pagination links |
23.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"data": [
{
"id": 1,
"name": "eyeota"
},
{
"id": 2,
"name": "liveramp"
},
{
"id": 3,
"name": "oracle"
}
],
"meta": {
"pagination": {
"total": 3,
"count": 3,
"per_page": 15,
"current_page": 1,
"total_pages": 1,
"links": []
}
}
}
24. Assign Optimization rules to Campaigns
24.1. Get Rule assigned to Campaign
A `GET` request will return a optimization rule relation
24.1.1. HTTP Request
URL
GET api/campaign/12/optimization-rule-relation HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJrbjM5WEZpTUh3S1NiRTJsIiwic3ViIjoiMjgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.PuG2UaN8uhjBMBHD5qkbzz0mb0Br2eJfrI__yWvSHvw
DATA
{}
24.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaign/12/optimization-rule-relation' -i -X GET \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJrbjM5WEZpTUh3S1NiRTJsIiwic3ViIjoiMjgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.PuG2UaN8uhjBMBHD5qkbzz0mb0Br2eJfrI__yWvSHvw' \
-d '{}'
24.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 |
24.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": 28,
"ownerCampaignId": 12,
"name": "TEST Rule#1",
"timeRange": "last_day",
"then": "whitelist_source",
"targetFilterListId": 1,
"conditions": [
{
"condition": "or",
"action": "ctr",
"comparison": "=",
"value": 1
}
],
"createdAt": "2026-02-12T16:34:50.000000Z",
"updatedAt": "2026-02-12T16:34:50.000000Z"
}
}
24.2. Replace Rule assigned to Campaign
A `POST` request will return a optimization rule relation
24.2.1. Request Body
| Path | Type | Description | Required |
|---|---|---|---|
campaignId |
integer |
campaignId |
+ |
ruleId |
integer |
ruleId |
+ |
24.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJPcURxcFFzQWNydW5Wdk9HIiwic3ViIjoiMjkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.mLheCxGxFEnQbn1XsBy8Dh0uFr08t4IV0RuUr8ny3lY
DATA
{
"campaignId": 13,
"ruleId": 2
}
24.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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJPcURxcFFzQWNydW5Wdk9HIiwic3ViIjoiMjkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.mLheCxGxFEnQbn1XsBy8Dh0uFr08t4IV0RuUr8ny3lY' \
-d '{
"campaignId": 13,
"ruleId": 2
}'
24.2.4. Response Body
| Path | Type | Description |
|---|---|---|
campaignId |
integer |
campaignId |
ruleId |
integer |
ruleId |
24.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
}
24.3. Remove Rule assigned to Campaign
A `DELETE` request will delete a Optimization rule relation
24.3.1. HTTP Request
URL
DELETE api/campaign/14/optimization-rule-relation HTTP/1.1
HEADER
Accept: application/json Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJCanNuSUlCVE96dHphV3BnIiwic3ViIjoiMzAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.AJmhipg0I46WX-n8RcS1fICPZIf6oOaL48O6L9r9x20 Content-type: application/x-www-form-urlencoded
DATA
{}
24.3.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/campaign/14/optimization-rule-relation' -i -X DELETE \
-H 'Accept: application/json' \
-H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJCanNuSUlCVE96dHphV3BnIiwic3ViIjoiMzAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.AJmhipg0I46WX-n8RcS1fICPZIf6oOaL48O6L9r9x20' \
-H 'Content-type: application/x-www-form-urlencoded' \
-d '{}'
24.3.3. Response Body
| Path | Type | Description |
|---|---|---|
deleted |
boolean |
is deleted |
24.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
}
25. Eyeota Segments
25.1. Get Eyeota segments (hierarchical structure)
A `GET` request returns hierarchical structure of Eyeota audience segments organized in layers (0-8). Used for building segment selection tree in UI. Optional search by segment name.
25.1.1. HTTP Request
URL
GET api/eyeota HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
25.1.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/eyeota' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
25.1.3. Response Body
| Path | Type | Description |
|---|---|---|
items |
object |
Hierarchical items structure |
layer0.*.index |
string |
Category index/key |
layer0.*.name |
string |
Category name |
layer1 |
object |
Second level categories |
layer2 |
object |
Third level categories |
layer3 |
object |
Fourth level categories |
layer4 |
object |
Fifth level categories |
layer5 |
object |
Sixth level categories |
layer6 |
object |
Seventh level categories |
layer7 |
object |
Eighth level categories (usually empty) |
layer8 |
object |
Ninth level categories (usually empty) |
25.1.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"items": [],
"layer0": [
{
"index": "automotive",
"name": "Automotive"
},
{
"index": "business",
"name": "Business"
}
],
"layer1": [],
"layer2": [],
"layer3": [],
"layer4": [],
"layer5": [],
"layer6": [],
"layer7": [],
"layer8": []
}
25.2. Get Eyeota segments (inline format)
A `GET` request returns flat list of all Eyeota segments in format: `segmentId => "#ID | Name | CPM$"`. Useful for quick segment lookup and autocomplete.
25.2.1. HTTP Request
URL
GET api/eyeota/inline HTTP/1.1
HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}
25.2.2. Curl request
$ curl 'https://dsp-api.smartyads.com/api/eyeota/inline' -i -X GET \
-H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
-d '{}'
25.2.3. Response Body
| Path | Type | Description |
|---|---|---|
* |
string |
Formatted segment string: "#ID |
25.2.4. HTTP Response
HTTP/1.0 200 OK
Content-type: application/json
{
"12345": "#12345 | Automotive Enthusiasts | 2.5$",
"67890": "#67890 | Business Professionals | 3.0$"
}
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 11.4
-
iOS 12.0
-
iOS 12.1
-
iOS 12.2
-
iOS 12.3
-
iOS 12.4
-
iOS 12.5
-
iOS 13.0
-
iOS 13.1
-
iOS 13.2
-
iOS 13.3
-
iOS 13.4
-
iOS 13.5
-
iOS 13.6
-
iOS 13.7
-
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 15.8
-
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 17.7
-
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
-
iOS 26.2
-
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