1. Authorization

1.1. Login

This `POST` request will return result login and token

1.1.1. Request Body

Path Type Description Required

email

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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMvYXBpL3VzZXJzL2xvZ2luIiwiaWF0IjoxNzU3NDMxMjk3LCJleHAiOjE3NTc0MzQ4OTcsIm5iZiI6MTc1NzQzMTI5NywianRpIjoiM1ZRYmdRTTJSeWFXMmI3VSIsInN1YiI6IjciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.A4e1qANzxHj4lPe_BhJC-V7xQz_R4sNKtKi9Vtl2Hqk",
    "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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTcsImV4cCI6MTc1NzQzNDg5NywibmJmIjoxNzU3NDMxMjk3LCJqdGkiOiJOVXp5MG5OdzVXSEx1VjBFIiwic3ViIjoiOCIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.Gz9jWUDfEoxzUZxpRSWhxQHhyDtucSkRn7HEsJLbStE
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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTcsImV4cCI6MTc1NzQzNDg5NywibmJmIjoxNzU3NDMxMjk3LCJqdGkiOiJOVXp5MG5OdzVXSEx1VjBFIiwic3ViIjoiOCIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.Gz9jWUDfEoxzUZxpRSWhxQHhyDtucSkRn7HEsJLbStE' \
    -d '{}'

1.2.3. Response Body

Path Type Description

message

string

Result message

1.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
{
    "message": "Successfully logged out"
}

2. Statistic

2.1. Statistic

A `POST` request will return statistic.

2.1.1. Request Body

Path Type Description Required

timezone

integer

Timezone
"Etc/GMT+12"…​"Etc/GMT+1", "Etc/GMT", "Etc/GMT-1"…​"Etc/GMT-12" \n"America/Anchorage"…​"Europe/Istanbul", "Asia/Tokyo"

from

date

Start date (yyyy-mm-dd)

+

to

date

End date (yyyy-mm-dd)

+

groupBy

array

Grouping fields:
YMD - Date
YMDH - Date time. Period: 2 days max
campaignId - Campaign
creativeId - Creative
country - Country
connectionType - Connection Type
carrier - Carrier
sspId - Ssp
region - Region
city - City
browser - Browser
os - Device OS
appName - App Name
siteName - Domain Name
source - Source
originalPubId - Publisher Id
sitePage - Site Page
trafficType - Format
requestType - Traffic Type
deviceType - Device Type
language - Language
size - Width x Height
isPmpReq - Pmp

+

agregatedFields

array

Agregated fields:
bids - Bids
wins - Wins
impressions - Impressions
clicks - Clicks
conversions - Conversions
reach - Reach
dspSpend - Spend
ecpm - eCPM
ecpc - eCPC
ctr - CTR
winrate - Win Rate

+

orderField

string

Sorting field

orderDir

string

Sort order: "asc" or "desc"

page

integer

Pagination: page number

rowsOnPage

integer

Pagination: rows on page (min:10, max:50000)

2.1.2. HTTP Request

URL

POST api/statistic HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJDZXZiMTgzY1dWQ0U4aGtMIiwic3ViIjoiNDkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.oNoHZQ3mQjGs8WDsTq_rRAWD9NoCRAKcMGaBh3XWpKc
DATA
{
    "timezone": "Etc\/GMT+10",
    "from": "2025-09-07",
    "to": "2025-09-09",
    "groupBy": [
        "YMD",
        "campaignId",
        "creativeId"
    ],
    "agregatedFields": [
        "bids",
        "wins",
        "impressions",
        "clicks",
        "dspSpend",
        "winrate",
        "ctr"
    ],
    "orderField": "YMD",
    "orderDir": "desc",
    "page": 1,
    "rowsOnPage": 25
}

2.1.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/statistic' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJDZXZiMTgzY1dWQ0U4aGtMIiwic3ViIjoiNDkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.oNoHZQ3mQjGs8WDsTq_rRAWD9NoCRAKcMGaBh3XWpKc' \
    -d '{
    "timezone": "Etc\/GMT+10",
    "from": "2025-09-07",
    "to": "2025-09-09",
    "groupBy": [
        "YMD",
        "campaignId",
        "creativeId"
    ],
    "agregatedFields": [
        "bids",
        "wins",
        "impressions",
        "clicks",
        "dspSpend",
        "winrate",
        "ctr"
    ],
    "orderField": "YMD",
    "orderDir": "desc",
    "page": 1,
    "rowsOnPage": 25
}'

2.1.4. Response Body

Path Type Description

status

string

Report status

data.*.YMD

date

Date

data.*.campaignId

integer

Campaign id

data.*.creativeId

integer

Creative id

data.*.campaignId_dict

string

Campaign name

data.*.creativeId_dict

string

Creative name

data.*.bids

integer

Bids

data.*.wins

integer

Wins

data.*.impressions

integer

Impressions

data.*.clicks

integer

Clicks

data.*.dspSpend

float

Spend, $

data.*.ctr

float

CTR, %

data.*.winrate

float

Win Rate, %

totals.YMD

date

Date

totals.campaignId

integer

Campaign id

totals.creativeId

integer

Creative id

totals.campaignId_dict

string

Campaign name

totals.creativeId_dict

string

Creative name

totals.bids

integer

Bids

totals.wins

integer

Wins

totals.impressions

integer

Impressions

totals.clicks

integer

Clicks

totals.dspSpend

float

Spend, $

totals.ctr

float

CTR, %

totals.winrate

float

Win Rate, %

pagination.page

integer

Pagination: current page number

pagination.per_page

integer

Pagination: items per page

pagination.total

integer

Pagination: total items count

2.1.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "status": "success",
    "data": [
        {
            "YMD": "2025-09-07",
            "campaignId": 1,
            "creativeId": 11,
            "campaignId_dict": "UA | Call Recorder | US | Android | CPM | #1",
            "creativeId_dict": "CR | File Manager | Video 1080x1920 15s | Android | V1 | #11",
            "bids": 811035,
            "wins": 152750,
            "impressions": 148473,
            "clicks": 1052,
            "dspSpend": 323.88939531,
            "ctr": 0.708546,
            "winrate": 18.833959
        },
        {
            "YMD": "2025-09-07",
            "campaignId": 1,
            "creativeId": 12,
            "campaignId_dict": "UA | Call Recorder | US | Android | CPM | #1",
            "creativeId_dict": "CR | Flashlight X | Video 1920x1080 30s | Android | V2 | #12",
            "bids": 881658,
            "wins": 186435,
            "impressions": 182576,
            "clicks": 6353,
            "dspSpend": 542.5923197,
            "ctr": 3.479647,
            "winrate": 21.145955
        },
        {
            "YMD": "2025-09-07",
            "campaignId": 2,
            "creativeId": 11,
            "campaignId_dict": "UA | Weather Now | GB | Android | CPM | #2",
            "creativeId_dict": "CR | File Manager | Video 1080x1920 15s | Android | V1 | #11",
            "bids": 1524877,
            "wins": 190152,
            "impressions": 189620,
            "clicks": 6256,
            "dspSpend": 455.64605166,
            "ctr": 3.29923,
            "winrate": 12.469989
        },
        {
            "YMD": "2025-09-07",
            "campaignId": 2,
            "creativeId": 12,
            "campaignId_dict": "UA | Weather Now | GB | Android | CPM | #2",
            "creativeId_dict": "CR | Flashlight X | Video 1920x1080 30s | Android | V2 | #12",
            "bids": 344542,
            "wins": 35339,
            "impressions": 32703,
            "clicks": 896,
            "dspSpend": 28.6924676,
            "ctr": 2.73981,
            "winrate": 10.256805
        },
        {
            "YMD": "2025-09-08",
            "campaignId": 1,
            "creativeId": 11,
            "campaignId_dict": "UA | Call Recorder | US | Android | CPM | #1",
            "creativeId_dict": "CR | File Manager | Video 1080x1920 15s | Android | V1 | #11",
            "bids": 1591916,
            "wins": 128485,
            "impressions": 118810,
            "clicks": 3218,
            "dspSpend": 309.26326167,
            "ctr": 2.708526,
            "winrate": 8.071092
        },
        {
            "YMD": "2025-09-08",
            "campaignId": 1,
            "creativeId": 12,
            "campaignId_dict": "UA | Call Recorder | US | Android | CPM | #1",
            "creativeId_dict": "CR | Flashlight X | Video 1920x1080 30s | Android | V2 | #12",
            "bids": 828227,
            "wins": 95221,
            "impressions": 92136,
            "clicks": 2328,
            "dspSpend": 373.78460354,
            "ctr": 2.5267,
            "winrate": 11.496969
        },
        {
            "YMD": "2025-09-08",
            "campaignId": 2,
            "creativeId": 11,
            "campaignId_dict": "UA | Weather Now | GB | Android | CPM | #2",
            "creativeId_dict": "CR | File Manager | Video 1080x1920 15s | Android | V1 | #11",
            "bids": 281149,
            "wins": 9397,
            "impressions": 8832,
            "clicks": 280,
            "dspSpend": 20.77135373,
            "ctr": 3.17029,
            "winrate": 3.342356
        },
        {
            "YMD": "2025-09-08",
            "campaignId": 2,
            "creativeId": 12,
            "campaignId_dict": "UA | Weather Now | GB | Android | CPM | #2",
            "creativeId_dict": "CR | Flashlight X | Video 1920x1080 30s | Android | V2 | #12",
            "bids": 1121862,
            "wins": 51817,
            "impressions": 48594,
            "clicks": 1019,
            "dspSpend": 39.52154879,
            "ctr": 2.096967,
            "winrate": 4.618839
        },
        {
            "YMD": "2025-09-09",
            "campaignId": 1,
            "creativeId": 11,
            "campaignId_dict": "UA | Call Recorder | US | Android | CPM | #1",
            "creativeId_dict": "CR | File Manager | Video 1080x1920 15s | Android | V1 | #11",
            "bids": 1199010,
            "wins": 274851,
            "impressions": 265561,
            "clicks": 7703,
            "dspSpend": 975.15194225,
            "ctr": 2.900652,
            "winrate": 22.923162
        },
        {
            "YMD": "2025-09-09",
            "campaignId": 1,
            "creativeId": 12,
            "campaignId_dict": "UA | Call Recorder | US | Android | CPM | #1",
            "creativeId_dict": "CR | Flashlight X | Video 1920x1080 30s | Android | V2 | #12",
            "bids": 625180,
            "wins": 178592,
            "impressions": 167555,
            "clicks": 3464,
            "dspSpend": 318.99841387,
            "ctr": 2.067381,
            "winrate": 28.566493
        },
        {
            "YMD": "2025-09-09",
            "campaignId": 2,
            "creativeId": 11,
            "campaignId_dict": "UA | Weather Now | GB | Android | CPM | #2",
            "creativeId_dict": "CR | File Manager | Video 1080x1920 15s | Android | V1 | #11",
            "bids": 627833,
            "wins": 92273,
            "impressions": 88370,
            "clicks": 651,
            "dspSpend": 434.34729863,
            "ctr": 0.736675,
            "winrate": 14.697061
        },
        {
            "YMD": "2025-09-09",
            "campaignId": 2,
            "creativeId": 12,
            "campaignId_dict": "UA | Weather Now | GB | Android | CPM | #2",
            "creativeId_dict": "CR | Flashlight X | Video 1920x1080 30s | Android | V2 | #12",
            "bids": 797735,
            "wins": 145974,
            "impressions": 142179,
            "clicks": 3795,
            "dspSpend": 415.55864852,
            "ctr": 2.669171,
            "winrate": 18.298558
        }
    ],
    "totals": {
        "YMD": "",
        "campaignId": 0,
        "creativeId": 0,
        "campaignId_dict": "",
        "creativeId_dict": "",
        "bids": 10635024,
        "wins": 1541286,
        "impressions": 1485409,
        "clicks": 37015,
        "dspSpend": 4238.21730527,
        "ctr": 2.425299583333333,
        "winrate": 14.560103166666664
    },
    "pagination": {
        "page": 1,
        "per_page": 25,
        "total": 12
    }
}

2.2. Filtering statistic

A `POST` request will return statistic.

2.2.1. Request Body

Path Type Description Required

timezone

integer

Timezone
"Etc/GMT+12"…​"Etc/GMT+1", "Etc/GMT", "Etc/GMT-1"…​"Etc/GMT-12" \n"America/Anchorage"…​"Europe/Istanbul", "Asia/Tokyo"

from

date

Start date (yyyy-mm-dd)

+

to

date

End date (yyyy-mm-dd)

+

groupBy

array

Grouping fields:
YMD - Date
YMDH - Date time. Period: 2 days max
campaignId - Campaign
creativeId - Creative
country - Country
connectionType - Connection Type
carrier - Carrier
sspId - Ssp
region - Region
city - City
browser - Browser
os - Device OS
appName - App Name
siteName - Domain Name
source - Source
originalPubId - Publisher Id
sitePage - Site Page
trafficType - Format
requestType - Traffic Type
deviceType - Device Type
language - Language
size - Width x Height
isPmpReq - Pmp

+

agregatedFields

array

Agregated fields:
bids - Bids
wins - Wins
impressions - Impressions
clicks - Clicks
conversions - Conversions
reach - Reach
dspSpend - Spend
ecpm - eCPM
ecpc - eCPC
ctr - CTR
winrate - Win Rate

+

filter.campaignId

integer

Filtering by Campaign Id(cid)

filter.creativeId

integer

Filtering by Creative Id(bid)

orderField

string

Sorting field

orderDir

string

Sort order: "asc" or "desc"

page

integer

Pagination: page number

rowsOnPage

integer

Pagination: rows on page (min:10, max:50000)

2.2.2. HTTP Request

URL

POST api/statistic HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDIsImV4cCI6MTc1NzQzNDkwMiwibmJmIjoxNzU3NDMxMzAyLCJqdGkiOiIxYlRsVU5nNE5FcmRlNUx6Iiwic3ViIjoiNTAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.-u8lX5TUjG9vcF-bvIL40oRjUy_3s6J6BYPRAbAKIss
DATA
{
    "timezone": "UTC",
    "from": "2025-09-07",
    "to": "2025-09-09",
    "groupBy": [
        "YMD",
        "campaignId",
        "creativeId"
    ],
    "agregatedFields": [
        "bids",
        "wins",
        "impressions",
        "clicks",
        "dspSpend",
        "winrate",
        "ctr"
    ],
    "filter": {
        "campaignId": 1,
        "creativeId": 10
    },
    "orderField": "YMD",
    "orderDir": "desc",
    "page": 1,
    "rowsOnPage": 25
}

2.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/statistic' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDIsImV4cCI6MTc1NzQzNDkwMiwibmJmIjoxNzU3NDMxMzAyLCJqdGkiOiIxYlRsVU5nNE5FcmRlNUx6Iiwic3ViIjoiNTAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.-u8lX5TUjG9vcF-bvIL40oRjUy_3s6J6BYPRAbAKIss' \
    -d '{
    "timezone": "UTC",
    "from": "2025-09-07",
    "to": "2025-09-09",
    "groupBy": [
        "YMD",
        "campaignId",
        "creativeId"
    ],
    "agregatedFields": [
        "bids",
        "wins",
        "impressions",
        "clicks",
        "dspSpend",
        "winrate",
        "ctr"
    ],
    "filter": {
        "campaignId": 1,
        "creativeId": 10
    },
    "orderField": "YMD",
    "orderDir": "desc",
    "page": 1,
    "rowsOnPage": 25
}'

2.2.4. Response Body

Path Type Description

status

string

Report status

data.*.YMD

date

Date

data.*.campaignId

integer

Campaign id

data.*.creativeId

integer

Creative id

data.*.campaignId_dict

string

Campaign name

data.*.creativeId_dict

string

Creative name

data.*.bids

integer

Bids

data.*.wins

integer

Wins

data.*.impressions

integer

Impressions

data.*.clicks

integer

Clicks

data.*.dspSpend

float

Spend, $

data.*.ctr

float

CTR, %

data.*.winrate

float

Win Rate, %

totals.YMD

date

Date

totals.campaignId

integer

Campaign id

totals.creativeId

integer

Creative id

totals.campaignId_dict

string

Campaign name

totals.creativeId_dict

string

Creative name

totals.bids

integer

Bids

totals.wins

integer

Wins

totals.impressions

integer

Impressions

totals.clicks

integer

Clicks

totals.dspSpend

float

Spend, $

totals.ctr

float

CTR, %

totals.winrate

float

Win Rate, %

pagination.page

integer

Pagination: current page number

pagination.per_page

integer

Pagination: items per page

pagination.total

integer

Pagination: total items count

2.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "status": "success",
    "data": [
        {
            "YMD": "2025-09-07",
            "campaignId": 1,
            "creativeId": 11,
            "campaignId_dict": "UA | Podcast Hub | US | iOS | CPM | #1",
            "creativeId_dict": "CR | Royal Match | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 1738952,
            "wins": 374793,
            "impressions": 356503,
            "clicks": 7506,
            "dspSpend": 801.92141323,
            "ctr": 2.105452,
            "winrate": 21.552809
        },
        {
            "YMD": "2025-09-07",
            "campaignId": 1,
            "creativeId": 12,
            "campaignId_dict": "UA | Podcast Hub | US | iOS | CPM | #1",
            "creativeId_dict": "CR | Candy Pop Saga | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 1460454,
            "wins": 263651,
            "impressions": 262992,
            "clicks": 6036,
            "dspSpend": 1169.29767293,
            "ctr": 2.295127,
            "winrate": 18.052674
        },
        {
            "YMD": "2025-09-07",
            "campaignId": 2,
            "creativeId": 11,
            "campaignId_dict": "UA | Idle Empire | GB | iOS | CPM | #2",
            "creativeId_dict": "CR | Royal Match | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 1793943,
            "wins": 438309,
            "impressions": 416394,
            "clicks": 1723,
            "dspSpend": 1673.11023304,
            "ctr": 0.413791,
            "winrate": 24.432716
        },
        {
            "YMD": "2025-09-07",
            "campaignId": 2,
            "creativeId": 12,
            "campaignId_dict": "UA | Idle Empire | GB | iOS | CPM | #2",
            "creativeId_dict": "CR | Candy Pop Saga | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 249734,
            "wins": 33328,
            "impressions": 31515,
            "clicks": 916,
            "dspSpend": 77.69219618,
            "ctr": 2.906552,
            "winrate": 13.3454
        },
        {
            "YMD": "2025-09-08",
            "campaignId": 1,
            "creativeId": 11,
            "campaignId_dict": "UA | Podcast Hub | US | iOS | CPM | #1",
            "creativeId_dict": "CR | Royal Match | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 1243074,
            "wins": 303986,
            "impressions": 292283,
            "clicks": 3026,
            "dspSpend": 374.95115459,
            "ctr": 1.035298,
            "winrate": 24.454377
        },
        {
            "YMD": "2025-09-08",
            "campaignId": 1,
            "creativeId": 12,
            "campaignId_dict": "UA | Podcast Hub | US | iOS | CPM | #1",
            "creativeId_dict": "CR | Candy Pop Saga | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 573423,
            "wins": 30445,
            "impressions": 28320,
            "clicks": 561,
            "dspSpend": 14.22893088,
            "ctr": 1.980932,
            "winrate": 5.309344
        },
        {
            "YMD": "2025-09-08",
            "campaignId": 2,
            "creativeId": 11,
            "campaignId_dict": "UA | Idle Empire | GB | iOS | CPM | #2",
            "creativeId_dict": "CR | Royal Match | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 172190,
            "wins": 42059,
            "impressions": 39220,
            "clicks": 1324,
            "dspSpend": 23.8800775,
            "ctr": 3.375829,
            "winrate": 24.425925
        },
        {
            "YMD": "2025-09-08",
            "campaignId": 2,
            "creativeId": 12,
            "campaignId_dict": "UA | Idle Empire | GB | iOS | CPM | #2",
            "creativeId_dict": "CR | Candy Pop Saga | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 292806,
            "wins": 17387,
            "impressions": 16052,
            "clicks": 227,
            "dspSpend": 62.58531937,
            "ctr": 1.414154,
            "winrate": 5.938061
        },
        {
            "YMD": "2025-09-09",
            "campaignId": 1,
            "creativeId": 11,
            "campaignId_dict": "UA | Podcast Hub | US | iOS | CPM | #1",
            "creativeId_dict": "CR | Royal Match | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 1459492,
            "wins": 95065,
            "impressions": 94580,
            "clicks": 352,
            "dspSpend": 366.45579022,
            "ctr": 0.372172,
            "winrate": 6.513568
        },
        {
            "YMD": "2025-09-09",
            "campaignId": 1,
            "creativeId": 12,
            "campaignId_dict": "UA | Podcast Hub | US | iOS | CPM | #1",
            "creativeId_dict": "CR | Candy Pop Saga | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 263990,
            "wins": 54836,
            "impressions": 53323,
            "clicks": 1442,
            "dspSpend": 207.18678312,
            "ctr": 2.704274,
            "winrate": 20.771999
        },
        {
            "YMD": "2025-09-09",
            "campaignId": 2,
            "creativeId": 11,
            "campaignId_dict": "UA | Idle Empire | GB | iOS | CPM | #2",
            "creativeId_dict": "CR | Royal Match | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 538250,
            "wins": 97864,
            "impressions": 93167,
            "clicks": 3136,
            "dspSpend": 72.77665671,
            "ctr": 3.365999,
            "winrate": 18.181886
        },
        {
            "YMD": "2025-09-09",
            "campaignId": 2,
            "creativeId": 12,
            "campaignId_dict": "UA | Idle Empire | GB | iOS | CPM | #2",
            "creativeId_dict": "CR | Candy Pop Saga | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 1939610,
            "wins": 165660,
            "impressions": 159912,
            "clicks": 5526,
            "dspSpend": 646.40124367,
            "ctr": 3.455651,
            "winrate": 8.540892
        }
    ],
    "totals": {
        "YMD": "",
        "campaignId": 0,
        "creativeId": 0,
        "campaignId_dict": "",
        "creativeId_dict": "",
        "bids": 11725918,
        "wins": 1917383,
        "impressions": 1844261,
        "clicks": 31775,
        "dspSpend": 5490.487471440001,
        "ctr": 2.1187692499999997,
        "winrate": 15.959970916666663
    },
    "pagination": {
        "page": 1,
        "per_page": 25,
        "total": 12
    }
}

3. Agency

3.1. Deposit to advert

A `POST` request

3.1.1. Request Body

Path Type Description Required

userId

integer

user id

+

transactionAmount

integer

transaction amount

+

3.1.2. HTTP Request

URL

POST api/deposit-agency-user HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTYsImV4cCI6MTc1NzQzNDg5NiwibmJmIjoxNzU3NDMxMjk2LCJqdGkiOiJqcVRDQUZIT09IZFE4T2UwIiwic3ViIjoiMSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.N1_Vw2KcBNH8orno2CTqjZDfLRRxauw6OlZvLcZlphQ
DATA
{
    "userId": 2,
    "transactionAmount": 10
}

3.1.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/deposit-agency-user' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTYsImV4cCI6MTc1NzQzNDg5NiwibmJmIjoxNzU3NDMxMjk2LCJqdGkiOiJqcVRDQUZIT09IZFE4T2UwIiwic3ViIjoiMSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.N1_Vw2KcBNH8orno2CTqjZDfLRRxauw6OlZvLcZlphQ' \
    -d '{
    "userId": 2,
    "transactionAmount": 10
}'

3.1.4. Response Body

Path Type Description

status

string

Result status

balance

float

balance

3.1.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
{
    "status": "success",
    "balance": "40398.00000"
}

3.2. Withdraw to advert

A `POST` request

3.2.1. Request Body

Path Type Description Required

userId

integer

user id

+

transactionAmount

integer

transaction amount

+

3.2.2. HTTP Request

URL

POST api/withdraw-agency-user HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTcsImV4cCI6MTc1NzQzNDg5NywibmJmIjoxNzU3NDMxMjk3LCJqdGkiOiJ0REw5NGVwZ0lIem5xUXZkIiwic3ViIjoiMyIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.QRy-rI-wx1OMq898npqQqcu9pBa3tBHNaUXENZpgPy4
DATA
{
    "userId": 4,
    "transactionAmount": 10
}

3.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/withdraw-agency-user' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTcsImV4cCI6MTc1NzQzNDg5NywibmJmIjoxNzU3NDMxMjk3LCJqdGkiOiJ0REw5NGVwZ0lIem5xUXZkIiwic3ViIjoiMyIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.QRy-rI-wx1OMq898npqQqcu9pBa3tBHNaUXENZpgPy4' \
    -d '{
    "userId": 4,
    "transactionAmount": 10
}'

3.2.4. Response Body

Path Type Description

status

string

Result status

balance

float

balance

3.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
{
    "status": "success",
    "balance": "20056.00000"
}

3.3. User list with campaigns

A `GET` request

3.3.1. HTTP Request

URL

GET api/get-agency-users-with-campaigns HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTcsImV4cCI6MTc1NzQzNDg5NywibmJmIjoxNzU3NDMxMjk3LCJqdGkiOiI0MGtNeWZQUGIwcHI2VjJoIiwic3ViIjoiNSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.wN_VkosJ5I2TUOYM9yJnYgrzeTCPTyxQsGcHLqG5ISg
DATA
{
    "where": "userId;5"
}

3.3.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/get-agency-users-with-campaigns' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTcsImV4cCI6MTc1NzQzNDg5NywibmJmIjoxNzU3NDMxMjk3LCJqdGkiOiI0MGtNeWZQUGIwcHI2VjJoIiwic3ViIjoiNSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.wN_VkosJ5I2TUOYM9yJnYgrzeTCPTyxQsGcHLqG5ISg' \
    -d '{
    "where": "userId;5"
}'

3.3.3. Response Body

Path Type Description

data.*.id

integer

user id

data.*.email

string

Email

data.*.firstName

string

First name

data.*.lastName

string

Last name

data.*.balance

float

balance

data.*.bidResTotalCounter

integer

Bid total counter

data.*.bidResDailyCounter

integer

Bid daily counter

data.*.winsTotalCounter

integer

Wins total counter

data.*.winsDailyCounter

integer

Wins daily counter

data.*.impressionsTotalCounter

integer

Impressions total counter

data.*.impressionsDailyCounter

integer

Impressions daily counter

data.*.clicksTotalCounter

integer

Click total counter

data.*.clicksDailyCounter

integer

Click daily counter

data.*.spentDailyLimit

integer

Spent daily limit

data.*.spentDailyCounter

integer

Spent daily counter

data.*.spentTotalLimit

integer

Spent total limit

data.*.spentTotalCounter

integer

Spent total counter

data.*.impressionsDailyLimit

integer

impressions daily limit

data.*.impressionsTotalLimit

integer

impressions total limit

data..campaigns..id

integer

campaign id

data..campaigns..userId

integer

user id

data..campaigns..isActive

boolean

isActive

data..campaigns..isRunning

boolean

Campaign running status

data..campaigns..type

string

Campaign type: banner, native, video, audio

data..campaigns..name

string

Campaign name

data..campaigns..isRewarded

integer

Rewarded video (for video creatives)

data..campaigns..isDesktopWeb

boolean

Traffic Type: Desktop Websites

data..campaigns..isMobileApp

boolean

Traffic Type: Mobile Applications

data..campaigns..isMobileWeb

boolean

Traffic Type: Mobile Websites

data..campaigns..isSmartphone

boolean

Traffic Type: Smartphones

data..campaigns..isTablet

boolean

Traffic Type: Tablets

data..campaigns..isCTV

boolean

Traffic Type: CTV

data..campaigns..isDOOH

boolean

Traffic Type: DOOH

data..campaigns..aDomain

integer

Top level domain

data..campaigns..dateStart

date

Date start

data..campaigns..dateEnd

date

Date end

data..campaigns..geoCountries

array

GEO Targeting: countries list

data..campaigns..geoCountriesIsInclude

boolean

GEO Targeting: countries list type (true: whitelist, false: blacklist)

data..campaigns..geoRegions

array

GEO Targeting: regions list

data..campaigns..geoRegionsIsInclude

boolean

GEO Targeting: regions list type (true: whitelist, false: blacklist)

data..campaigns..geoCities

array

GEO Targeting: cities list

data..campaigns..geoCitiesIsInclude

boolean

GEO Targeting: cities list type (true: whitelist, false: blacklist)

data..campaigns..contentCategories

array

Targeting: IAB Categories list

data..campaigns..contentCategoriesIsInclude

boolean

Targeting: IAB Categories list type (true: whitelist, false: blacklist)

data..campaigns..userAgeMin

integer

Targeting: Age range from

data..campaigns..userAgeMax

integer

Targeting: Age range to

data..campaigns..connectionTypes

array

Targeting: Connection types list

data..campaigns..clickedInventoryCategories

array

Сlicked Inventory Categories

data..campaigns..deviceCarrier

array

Targeting: List of network operators.

data..campaigns..deviceCarrierIsInclude

boolean

Targeting: List of network operators type (true: whitelist, false: blacklist)

data..campaigns..OS

array

Targeting: The operating system of user's device

data..campaigns..OSIsInclude

boolean

Targeting: The operating system of user's device list type (true: whitelist, false: blacklist)

data..campaigns..browser

array

Targeting: The user's browsers list

data..campaigns..browserIsInclude

boolean

Targeting: The user's browsers list type (true: whitelist, false: blacklist)

data..campaigns..deviceLanguage

array

Targeting: The languages of user's browser

data..campaigns..deviceLanguageIsInclude

boolean

Targeting: The languages of user's browser list type (true: whitelist, false: blacklist)

data..campaigns..spentDailyLimit

integer

Daily spent limit

data..campaigns..spentTotalLimit

integer

Total spent limit

data..campaigns..impressionsDailyLimit

integer

Daily impressions limit

data..campaigns..impressionsTotalLimit

integer

Total impressions limit

data..campaigns..clicksDailyLimit

integer

Daily clicks limit

data..campaigns..clicksTotalLimit

integer

Total clicks limit

data..campaigns..budgetUse

integer

Distribution: pacer, fast pacer - Evenly distribution fast - ASAP distribution

data..campaigns..allSources

boolean

Inventory: Use all SSP endpoints

data..campaigns..cpm

float

cpm

data..campaigns..adaptiveCpm

boolean

adaptiveCpm

data..campaigns..useCpm

boolean

use cpm

data..campaigns..googleAnalyticsTrackingCode

string

Google Analytics tracking code - PUSH Campaigns

data..campaigns..dynamicTargeting

array

SmartCPC: Dynamic targeting - only for CPC Pricing model

data..campaigns..subscriptionAge

array

Subscription Age - only for CPC Pricing model

data..campaigns..frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data..campaigns..frequency

boolean

Frequency on/off.

data..campaigns..frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data..campaigns..frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data..campaigns..extendedStatus

string

Campaign extended status

data..campaigns..createdAt

datetime

Date of creation

data..campaigns..updatedAt

datetime

Date of last modification

data..campaigns..deletedAt

datetime

Date of deletion

data..campaigns..counters.bidResTotalCounter

integer

Bid total counter

data..campaigns..counters.bidResDailyCounter

integer

Bid daily counter

data..campaigns..counters.conversionTotalCounter

integer

Conversion total counter

data..campaigns..counters.conversionDailyCounter

integer

Conversion daily counter

data..campaigns..counters.winsTotalCounter

integer

Wins total counter

data..campaigns..counters.winsDailyCounter

integer

Wins daily counter

data..campaigns..counters.clicksTotalCounter

integer

Click total counter

data..campaigns..counters.clicksDailyCounter

integer

Click daily counter

data..campaigns..counters.impressionsTotalCounter

integer

Impressions total counter

data..campaigns..counters.impressionsDailyCounter

integer

Impressions daily counter

data..campaigns..counters.winRate

integer

Winrate counter

data..campaigns..counters.spentDailyCounter

integer

Spent daily counter

data..campaigns..counters.spentTotalCounter

integer

Spent total counter

data..campaigns..pretarget

int

pretarget

data..campaigns..pretargets

array

pretargets

data..campaigns..audiences

array

audiences

meta.pagination.total

integer

Pagination: total items count

meta.pagination.count

integer

Pagination: page items count

meta.pagination.per_page

integer

Pagination: items per page

meta.pagination.current_page

integer

Pagination: current page number

meta.pagination.total_pages

integer

Pagination: total pages count

meta.pagination.links

string

Pagination: url links

3.3.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
{
    "data": [
        {
            "id": 5,
            "email": null,
            "firstName": "Arnaldo",
            "lastName": "Littel",
            "balance": null,
            "bidResTotalCounter": null,
            "bidResDailyCounter": null,
            "winsTotalCounter": null,
            "winsDailyCounter": null,
            "impressionsTotalCounter": null,
            "impressionsDailyCounter": null,
            "clicksTotalCounter": null,
            "clicksDailyCounter": null,
            "spentDailyLimit": "444",
            "spentDailyCounter": null,
            "spentTotalLimit": "11587",
            "spentTotalCounter": null,
            "impressionsDailyLimit": "488626",
            "impressionsTotalLimit": "1356213",
            "campaigns": [
                {
                    "id": 1,
                    "userId": 5,
                    "isActive": false,
                    "isRunning": false,
                    "type": "video",
                    "name": "ipsa",
                    "isRewarded": false,
                    "isDesktopWeb": false,
                    "isMobileApp": true,
                    "isMobileWeb": false,
                    "isSmartphone": true,
                    "isTablet": false,
                    "isCTV": true,
                    "isDOOH": true,
                    "aDomain": "ernser.com",
                    "dateStart": "2025-04-28",
                    "dateEnd": "2025-09-13",
                    "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": 282,
                    "spentTotalLimit": 4677,
                    "impressionsDailyLimit": 284786,
                    "impressionsTotalLimit": 617451,
                    "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": "Campaign is not active",
                    "createdAt": "2025-09-09",
                    "updatedAt": "2025-09-09",
                    "deletedAt": null,
                    "counters": {
                        "bidResTotalCounter": 0,
                        "bidResDailyCounter": 0,
                        "conversionTotalCounter": 0,
                        "conversionDailyCounter": 0,
                        "winsTotalCounter": 0,
                        "winsDailyCounter": 0,
                        "clicksTotalCounter": null,
                        "clicksDailyCounter": null,
                        "impressionsTotalCounter": 0,
                        "impressionsDailyCounter": 0,
                        "winRate": 0,
                        "spentDailyCounter": 0,
                        "spentTotalCounter": 0
                    },
                    "pretarget": null,
                    "pretargets": [],
                    "audiences": []
                },
                {
                    "id": 2,
                    "userId": 5,
                    "isActive": true,
                    "isRunning": false,
                    "type": "video",
                    "name": "eos",
                    "isRewarded": false,
                    "isDesktopWeb": false,
                    "isMobileApp": false,
                    "isMobileWeb": true,
                    "isSmartphone": true,
                    "isTablet": true,
                    "isCTV": true,
                    "isDOOH": false,
                    "aDomain": "morar.com",
                    "dateStart": "2025-06-12",
                    "dateEnd": "2026-04-18",
                    "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": 162,
                    "spentTotalLimit": 6910,
                    "impressionsDailyLimit": 203840,
                    "impressionsTotalLimit": 738762,
                    "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": "2025-09-09",
                    "updatedAt": "2025-09-09",
                    "deletedAt": null,
                    "counters": {
                        "bidResTotalCounter": 0,
                        "bidResDailyCounter": 0,
                        "conversionTotalCounter": 0,
                        "conversionDailyCounter": 0,
                        "winsTotalCounter": 0,
                        "winsDailyCounter": 0,
                        "clicksTotalCounter": null,
                        "clicksDailyCounter": null,
                        "impressionsTotalCounter": 0,
                        "impressionsDailyCounter": 0,
                        "winRate": 0,
                        "spentDailyCounter": 0,
                        "spentTotalCounter": 0
                    },
                    "pretarget": null,
                    "pretargets": [],
                    "audiences": []
                }
            ]
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 15,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

4. Campaigns

4.1. Campaigns list

A `GET` request will return a list of an campaigns.

4.1.1. HTTP Request

URL

GET api/campaigns HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTcsImV4cCI6MTc1NzQzNDg5NywibmJmIjoxNzU3NDMxMjk3LCJqdGkiOiJ6YlVJcTNZd1VOcVlHcW5WIiwic3ViIjoiOSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.pYclHO7D4d9UKiQU4GUYpctohH4CUvKElx0mXojG2Js
DATA
{}

4.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTcsImV4cCI6MTc1NzQzNDg5NywibmJmIjoxNzU3NDMxMjk3LCJqdGkiOiJ6YlVJcTNZd1VOcVlHcW5WIiwic3ViIjoiOSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.pYclHO7D4d9UKiQU4GUYpctohH4CUvKElx0mXojG2Js' \
    -d '{}'

4.1.3. Response Body

Path Type Description

data.*.id

integer

Campaign Id(test)

data.*.userId

integer

User Id

data.*.isActive

boolean

Campaign On/Off

data.*.isRunning

boolean

Campaign running status

data.*.type

string

Campaign type: banner, native, video, audio

data.*.name

string

Campaign name

data.*.isRewarded

integer

Rewarded video (for video creatives)

data.*.isDesktopWeb

boolean

Traffic Type: Desktop Websites

data.*.isMobileApp

boolean

Traffic Type: Mobile Applications

data.*.isMobileWeb

boolean

Traffic Type: Mobile Websites

data.*.isSmartphone

boolean

Traffic Type: Smartphones

data.*.isTablet

boolean

Traffic Type: Tablets

data.*.isCTV

boolean

Traffic Type: CTVs

data.*.isDOOH

boolean

Traffic Type: DOOH

data.*.aDomain

integer

Top level domain

data.*.dateStart

date

Date start

data.*.dateEnd

date

Date end

data.*.geoCountries

array

GEO Targeting: countries list

data.*.geoCountriesIsInclude

boolean

GEO Targeting: countries list type (true: whitelist, false: blacklist)

data.*.geoRegions

array

GEO Targeting: regions list

data.*.geoRegionsIsInclude

boolean

GEO Targeting: regions list type (true: whitelist, false: blacklist)

data.*.geoCities

array

GEO Targeting: cities list

data.*.geoCitiesIsInclude

boolean

GEO Targeting: cities list type (true: whitelist, false: blacklist)

data.*.contentCategories

array

Targeting: IAB Categories list

data.*.contentCategoriesIsInclude

boolean

Targeting: IAB Categories list type (true: whitelist, false: blacklist)

data.*.userAgeMin

integer

Targeting: Age range from

data.*.userAgeMax

integer

Targeting: Age range to

data.*.connectionTypes

array

Targeting: Connection types list

data.*.clickedInventoryCategories

array

Сlicked Inventory Categories

data.*.deviceCarrier

array

Targeting: List of network operators.

data.*.deviceCarrierIsInclude

boolean

Targeting: List of network operators type (true: whitelist, false: blacklist)

data.*.OS

array

Targeting: The operating system of user's device

data.*.OSIsInclude

boolean

Targeting: The operating system of user's device list type (true: whitelist, false: blacklist)

data.*.browser

array

Targeting: The user's browsers list

data.*.browserIsInclude

boolean

Targeting: The user's browsers list type (true: whitelist, false: blacklist)

data.*.deviceLanguage

array

Targeting: The languages of user's browser

data.*.deviceLanguageIsInclude

boolean

Targeting: The languages of user's browser list type (true: whitelist, false: blacklist)

data.*.spentDailyLimit

integer

Daily spent limit

data.*.spentTotalLimit

integer

Total spent limit

data.*.impressionsDailyLimit

integer

Daily impressions limit

data.*.impressionsTotalLimit

integer

Total impressions limit

data.*.clicksDailyLimit

integer

Daily clicks limit

data.*.clicksTotalLimit

integer

Total clicks limit

data.*.budgetUse

integer

Distribution: pacer, fast pacer - Evenly distribution fast - ASAP distribution

data.*.allSources

boolean

Inventory: Use all SSP endpoints

data.*.cpm

float

cpm

data.*.adaptiveCpm

boolean

adaptiveCpm

data.*.useCpm

boolean

use cpm

data.*.extendedStatus

string

Campaign extended status

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

data.*.deletedAt

datetime

Date of deletion

meta.pagination.total

integer

Pagination: total items count

meta.pagination.count

integer

Pagination: page items count

meta.pagination.per_page

integer

Pagination: items per page

meta.pagination.current_page

integer

Pagination: current page number

meta.pagination.total_pages

integer

Pagination: total pages count

meta.pagination.links

array

Pagination: urls to next,prev page

4.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": [
        {
            "id": 3,
            "userId": 9,
            "isActive": false,
            "isRunning": false,
            "type": "audio",
            "name": "in",
            "isRewarded": false,
            "isDesktopWeb": false,
            "isMobileApp": false,
            "isMobileWeb": false,
            "isSmartphone": false,
            "isTablet": false,
            "isCTV": false,
            "isDOOH": false,
            "aDomain": "graham.org",
            "dateStart": "2024-01-29",
            "dateEnd": "2026-04-20",
            "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": 479,
            "spentTotalLimit": 6857,
            "impressionsDailyLimit": 227923,
            "impressionsTotalLimit": 771434,
            "clicksDailyLimit": 0,
            "clicksTotalLimit": 0,
            "budgetUse": "fast",
            "allSources": true,
            "cpm": 0,
            "adaptiveCpm": false,
            "useCpm": false,
            "extendedStatus": "Campaign is not active",
            "createdAt": "2025-09-09",
            "updatedAt": "2025-09-09",
            "deletedAt": null
        },
        {
            "id": 4,
            "userId": 9,
            "isActive": true,
            "isRunning": false,
            "type": "video",
            "name": "illo",
            "isRewarded": false,
            "isDesktopWeb": true,
            "isMobileApp": true,
            "isMobileWeb": true,
            "isSmartphone": false,
            "isTablet": false,
            "isCTV": false,
            "isDOOH": true,
            "aDomain": "blick.org",
            "dateStart": "2023-10-24",
            "dateEnd": "2026-06-22",
            "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": 169,
            "spentTotalLimit": 3473,
            "impressionsDailyLimit": 255212,
            "impressionsTotalLimit": 685751,
            "clicksDailyLimit": 0,
            "clicksTotalLimit": 0,
            "budgetUse": "fast",
            "allSources": true,
            "cpm": 0,
            "adaptiveCpm": false,
            "useCpm": false,
            "extendedStatus": "Low Balance",
            "createdAt": "2025-09-09",
            "updatedAt": "2025-09-09",
            "deletedAt": null
        }
    ],
    "meta": {
        "pagination": {
            "total": 2,
            "count": 2,
            "per_page": 15,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

4.2. Get by ID

A `GET` request with a path parameter of the id will return the campaign with that id.

4.2.1. HTTP Request

URL

GET api/campaigns/5 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTcsImV4cCI6MTc1NzQzNDg5NywibmJmIjoxNzU3NDMxMjk3LCJqdGkiOiJTOTg5aXVmZEN1TU5PZGR1Iiwic3ViIjoiMTAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.ZAjju1luvbjnR8BXiypEp_FWK7wNqVAD04QIWcXSd9U
DATA
{}

4.2.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/5' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTcsImV4cCI6MTc1NzQzNDg5NywibmJmIjoxNzU3NDMxMjk3LCJqdGkiOiJTOTg5aXVmZEN1TU5PZGR1Iiwic3ViIjoiMTAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.ZAjju1luvbjnR8BXiypEp_FWK7wNqVAD04QIWcXSd9U' \
    -d '{}'

4.2.3. Response Body

Path Type Description

data.id

integer

Campaign Id

data.userId

integer

User Id

data.isActive

boolean

Campaign On/Off

data.isRunning

boolean

Campaign running status

data.type

string

Campaign type: banner, native, video, audio

data.name

string

Campaign name

data.isRewarded

integer

Rewarded video (for video creatives)

data.isDesktopWeb

boolean

Traffic Type: Desktop Websites

data.isMobileApp

boolean

Traffic Type: Mobile Applications

data.isMobileWeb

boolean

Traffic Type: Mobile Websites

data.isSmartphone

boolean

Traffic Type: Smartphones

data.isTablet

boolean

Traffic Type: Tablets

data.isCTV

boolean

Traffic Type: CTV

data.isDOOH

boolean

Traffic Type: DOOH

data.aDomain

integer

Top level domain

data.dateStart

date

Date start

data.dateEnd

date

Date end

data.geoCountries

array

GEO Targeting: countries list

data.geoCountriesIsInclude

boolean

GEO Targeting: countries list type (true: whitelist, false: blacklist)

data.geoRegions

array

GEO Targeting: regions list

data.geoRegionsIsInclude

boolean

GEO Targeting: regions list type (true: whitelist, false: blacklist)

data.geoCities

array

GEO Targeting: cities list

data.geoCitiesIsInclude

boolean

GEO Targeting: cities list type (true: whitelist, false: blacklist)

data.contentCategories

array

Targeting: IAB Categories list

data.contentCategoriesIsInclude

boolean

Targeting: IAB Categories list type (true: whitelist, false: blacklist)

data.userAgeMin

integer

Targeting: Age range from

data.userAgeMax

integer

Targeting: Age range to

data.connectionTypes

array

Targeting: Connection types list

data.clickedInventoryCategories

array

Сlicked Inventory Categories

data.deviceCarrier

array

Targeting: List of network operators.

data.deviceCarrierIsInclude

boolean

Targeting: List of network operators type (true: whitelist, false: blacklist)

data.OS

array

Targeting: The operating system of user's device

data.OSIsInclude

boolean

Targeting: The operating system of user's device list type (true: whitelist, false: blacklist)

data.browser

array

Targeting: The user's browsers list

data.browserIsInclude

boolean

Targeting: The user's browsers list type (true: whitelist, false: blacklist)

data.deviceLanguage

array

Targeting: The languages of user's browser

data.deviceLanguageIsInclude

boolean

Targeting: The languages of user's browser list type (true: whitelist, false: blacklist)

data.spentDailyLimit

integer

Daily spent limit

data.spentTotalLimit

integer

Total spent limit

data.impressionsDailyLimit

integer

Daily impressions limit

data.impressionsTotalLimit

integer

Total impressions limit

data.clicksDailyLimit

integer

Daily clicks limit

data.clicksTotalLimit

integer

Total clicks limit

data.budgetUse

integer

Distribution: pacer, fast pacer - Evenly distribution fast - ASAP distribution

data.allSources

boolean

Inventory: Use all SSP endpoints

data.cpm

float

cpm

data.adaptiveCpm

boolean

adaptiveCpm

data.useCpm

boolean

use cpm

data.googleAnalyticsTrackingCode

string

Google Analytics tracking code - PUSH Campaigns

data.dynamicTargeting

array

SmartCPC: Dynamic targeting - only for CPC Pricing model

data.subscriptionAge

array

Subscription Age - only for CPC Pricing model

data.frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data.frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data.extendedStatus

string

Campaign extended status

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.deletedAt

datetime

Date of deletion

data.pretarget

int

pretarget

data.pretargets

array

pretargets

data.audiences

array

audiences

4.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 5,
        "userId": 10,
        "isActive": true,
        "isRunning": false,
        "type": "native",
        "name": "Test Campaign #1",
        "isRewarded": false,
        "isDesktopWeb": false,
        "isMobileApp": true,
        "isMobileWeb": true,
        "isSmartphone": true,
        "isTablet": false,
        "isCTV": true,
        "isDOOH": false,
        "aDomain": "braun.biz",
        "dateStart": "2024-01-29",
        "dateEnd": "2026-03-30",
        "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": 457,
        "spentTotalLimit": 2516,
        "impressionsDailyLimit": 240122,
        "impressionsTotalLimit": 493482,
        "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": "2025-09-09",
        "updatedAt": "2025-09-09",
        "deletedAt": null,
        "pretarget": null,
        "pretargets": [],
        "audiences": []
    }
}

4.3. Create a Custom Banner/Native/Video/Audio Campaigns

A `POST` request will create new campaign.

4.3.1. Request Body

Path Type Description Required

type

string

Campaign type: banner, native, video, audio

+

name

string

Campaign name

+

aDomain

integer

Top level domain

+

isRewarded

integer

Rewarded video (for video creatives)

isDesktopWeb

boolean

Traffic Type: Desktop Websites

isMobileApp

boolean

Traffic Type: Mobile Applications

isMobileWeb

boolean

Traffic Type: Mobile Websites

isSmartphone

boolean

Traffic Type: Smartphones

isTablet

boolean

Traffic Type: Tablets

contentCategories

array

Targeting: IAB Categories list

contentCategoriesIsInclude

boolean

Targeting: IAB Categories list type (true: whitelist, false: blacklist)

userAgeMin

integer

Targeting: Age range from

userAgeMax

integer

Targeting: Age range to

connectionTypes

array

Targeting: Connection types list

deviceCarrier

array

Targeting: List of network operators.

deviceCarrierIsInclude

boolean

Targeting: List of network operators type (true: whitelist, false: blacklist)

OS

array

Targeting: The operating system of user's device

OSIsInclude

boolean

Targeting: The operating system of user's device list type (true: whitelist, false: blacklist)

browser

array

Targeting: The user's browsers list

browserIsInclude

boolean

Targeting: The user's browsers list type (true: whitelist, false: blacklist)

deviceLanguage

array

Targeting: The languages of user's browser

deviceLanguageIsInclude

boolean

Targeting: The languages of user's browser list type (true: whitelist, false: blacklist)

spentDailyLimit

integer

Daily spent limit

spentTotalLimit

integer

Total spent limit

impressionsDailyLimit

integer

Daily impressions limit

impressionsTotalLimit

integer

Total impressions limit

clicksDailyLimit

integer

Daily clicks limit

clicksTotalLimit

integer

Total clicks limit

budgetUse

integer

Distribution: pacer, fast pacer - Evenly distribution fast - ASAP distribution

dateStart

date

Date start

dateEnd

date

Date end

4.3.2. HTTP Request

URL

POST api/campaigns HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJ0Nlcza3lVbkFQelNqV3VuIiwic3ViIjoiMTEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.Z-NUc4aLk2DAhGRHRIcukhv5dgpXpm4EuHBkMwMq78g
DATA
{
    "type": "banner",
    "name": "New Campaign #2",
    "aDomain": "ortiz.info",
    "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",
    "dateStart": "2024-03-16",
    "dateEnd": "2026-08-04"
}

4.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJ0Nlcza3lVbkFQelNqV3VuIiwic3ViIjoiMTEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.Z-NUc4aLk2DAhGRHRIcukhv5dgpXpm4EuHBkMwMq78g' \
    -d '{
    "type": "banner",
    "name": "New Campaign #2",
    "aDomain": "ortiz.info",
    "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",
    "dateStart": "2024-03-16",
    "dateEnd": "2026-08-04"
}'

4.3.4. Response Body

Path Type Description

data.id

integer

Campaign Id

data.userId

integer

User Id

data.isActive

boolean

Campaign On/Off

data.isRunning

boolean

Campaign running status

data.type

string

Campaign type: banner, native, video, audio

data.name

string

Campaign name

data.isRewarded

integer

Rewarded video (for video creatives)

data.isDesktopWeb

boolean

Traffic Type: Desktop Websites

data.isMobileApp

boolean

Traffic Type: Mobile Applications

data.isMobileWeb

boolean

Traffic Type: Mobile Websites

data.isSmartphone

boolean

Traffic Type: Smartphones

data.isTablet

boolean

Traffic Type: Tablets

data.isCTV

boolean

Traffic Type: CTV

data.isDOOH

boolean

Traffic Type: DOOH

data.aDomain

integer

Top level domain

data.dateStart

date

Date start

data.dateEnd

date

Date end

data.geoCountries

array

GEO Targeting: countries list

data.geoCountriesIsInclude

boolean

GEO Targeting: countries list type (true: whitelist, false: blacklist)

data.geoRegions

array

GEO Targeting: regions list

data.geoRegionsIsInclude

boolean

GEO Targeting: regions list type (true: whitelist, false: blacklist)

data.geoCities

array

GEO Targeting: cities list

data.geoCitiesIsInclude

boolean

GEO Targeting: cities list type (true: whitelist, false: blacklist)

data.contentCategories

array

Targeting: IAB Categories list

data.contentCategoriesIsInclude

boolean

Targeting: IAB Categories list type (true: whitelist, false: blacklist)

data.userAgeMin

integer

Targeting: Age range from

data.userAgeMax

integer

Targeting: Age range to

data.connectionTypes

array

Targeting: Connection types list

data.clickedInventoryCategories

array

Сlicked Inventory Categories

data.deviceCarrier

array

Targeting: List of network operators.

data.deviceCarrierIsInclude

boolean

Targeting: List of network operators type (true: whitelist, false: blacklist)

data.OS

array

Targeting: The operating system of user's device

data.OSIsInclude

boolean

Targeting: The operating system of user's device list type (true: whitelist, false: blacklist)

data.browser

array

Targeting: The user's browsers list

data.browserIsInclude

boolean

Targeting: The user's browsers list type (true: whitelist, false: blacklist)

data.deviceLanguage

array

Targeting: The languages of user's browser

data.deviceLanguageIsInclude

boolean

Targeting: The languages of user's browser list type (true: whitelist, false: blacklist)

data.spentDailyLimit

integer

Daily spent limit

data.spentTotalLimit

integer

Total spent limit

data.impressionsDailyLimit

integer

Daily impressions limit

data.impressionsTotalLimit

integer

Total impressions limit

data.clicksDailyLimit

integer

Daily clicks limit

data.clicksTotalLimit

integer

Total clicks limit

data.budgetUse

integer

Distribution: pacer, fast pacer - Evenly distribution fast - ASAP distribution

data.allSources

boolean

Inventory: Use all SSP endpoints

data.cpm

float

cpm

data.adaptiveCpm

boolean

adaptiveCpm

data.useCpm

boolean

use cpm

data.googleAnalyticsTrackingCode

string

Google Analytics tracking code - PUSH Campaigns

data.dynamicTargeting

array

SmartCPC: Dynamic targeting - only for CPC Pricing model

data.subscriptionAge

array

Subscription Age - only for CPC Pricing model

data.frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data.frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data.extendedStatus

string

Campaign extended status

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.deletedAt

datetime

Date of deletion

data.pretarget

int

pretarget

data.pretargets

array

pretargets

data.audiences

array

audiences

4.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 6,
        "userId": 11,
        "isActive": null,
        "isRunning": false,
        "type": "banner",
        "name": "New Campaign #2",
        "isRewarded": true,
        "isDesktopWeb": true,
        "isMobileApp": true,
        "isMobileWeb": true,
        "isSmartphone": true,
        "isTablet": true,
        "isCTV": true,
        "isDOOH": true,
        "aDomain": "ortiz.info",
        "dateStart": "2024-03-16",
        "dateEnd": "2026-08-04",
        "geoCountries": [],
        "geoCountriesIsInclude": false,
        "geoRegions": [],
        "geoRegionsIsInclude": null,
        "geoCities": [],
        "geoCitiesIsInclude": false,
        "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": null,
        "frequency": null,
        "frequencyCap": 0,
        "frequencyPeriod": 0,
        "extendedStatus": "Campaign is not active",
        "createdAt": "2025-09-09",
        "updatedAt": "2025-09-09",
        "deletedAt": null,
        "pretarget": null,
        "pretargets": [],
        "audiences": []
    }
}

4.4. Update a Custom Campaign

A `PATCH` request will update campaign.

4.4.1. Request Body

Path Type Description Required

name

string

Campaign name

4.4.2. HTTP Request

URL

PATCH api/campaigns/7 HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJuQk9XZDZueVRrakFVWm9IIiwic3ViIjoiMTIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.RrOofivTll0sFjdi9evx6I6OTmqvR7p0AjfmvXQH-kM
DATA
{
    "name": "Updated Campaign #3"
}

4.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/7' -i -X PATCH \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJuQk9XZDZueVRrakFVWm9IIiwic3ViIjoiMTIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.RrOofivTll0sFjdi9evx6I6OTmqvR7p0AjfmvXQH-kM' \
    -d '{
    "name": "Updated Campaign #3"
}'

4.4.4. Response Body

Path Type Description

data.id

integer

Campaign Id

data.userId

integer

User Id

data.isActive

boolean

Campaign On/Off

data.isRunning

boolean

Campaign running status

data.type

string

Campaign type: banner, native, video, audio

data.name

string

Campaign name

data.isRewarded

integer

Rewarded video (for video creatives)

data.isDesktopWeb

boolean

Traffic Type: Desktop Websites

data.isMobileApp

boolean

Traffic Type: Mobile Applications

data.isMobileWeb

boolean

Traffic Type: Mobile Websites

data.isSmartphone

boolean

Traffic Type: Smartphones

data.isTablet

boolean

Traffic Type: Tablets

data.isCTV

boolean

Traffic Type: CTV

data.isDOOH

boolean

Traffic Type: DOOH

data.aDomain

integer

Top level domain

data.dateStart

date

Date start

data.dateEnd

date

Date end

data.geoCountries

array

GEO Targeting: countries list

data.geoCountriesIsInclude

boolean

GEO Targeting: countries list type (true: whitelist, false: blacklist)

data.geoRegions

array

GEO Targeting: regions list

data.geoRegionsIsInclude

boolean

GEO Targeting: regions list type (true: whitelist, false: blacklist)

data.geoCities

array

GEO Targeting: cities list

data.geoCitiesIsInclude

boolean

GEO Targeting: cities list type (true: whitelist, false: blacklist)

data.contentCategories

array

Targeting: IAB Categories list

data.contentCategoriesIsInclude

boolean

Targeting: IAB Categories list type (true: whitelist, false: blacklist)

data.userAgeMin

integer

Targeting: Age range from

data.userAgeMax

integer

Targeting: Age range to

data.connectionTypes

array

Targeting: Connection types list

data.clickedInventoryCategories

array

Сlicked Inventory Categories

data.deviceCarrier

array

Targeting: List of network operators.

data.deviceCarrierIsInclude

boolean

Targeting: List of network operators type (true: whitelist, false: blacklist)

data.OS

array

Targeting: The operating system of user's device

data.OSIsInclude

boolean

Targeting: The operating system of user's device list type (true: whitelist, false: blacklist)

data.browser

array

Targeting: The user's browsers list

data.browserIsInclude

boolean

Targeting: The user's browsers list type (true: whitelist, false: blacklist)

data.deviceLanguage

array

Targeting: The languages of user's browser

data.deviceLanguageIsInclude

boolean

Targeting: The languages of user's browser list type (true: whitelist, false: blacklist)

data.spentDailyLimit

integer

Daily spent limit

data.spentTotalLimit

integer

Total spent limit

data.impressionsDailyLimit

integer

Daily impressions limit

data.impressionsTotalLimit

integer

Total impressions limit

data.clicksDailyLimit

integer

Daily clicks limit

data.clicksTotalLimit

integer

Total clicks limit

data.budgetUse

integer

Distribution: pacer, fast pacer - Evenly distribution fast - ASAP distribution

data.allSources

boolean

Inventory: Use all SSP endpoints

data.cpm

float

cpm

data.adaptiveCpm

boolean

adaptiveCpm

data.useCpm

boolean

use cpm

data.googleAnalyticsTrackingCode

string

Google Analytics tracking code - PUSH Campaigns

data.dynamicTargeting

array

SmartCPC: Dynamic targeting - only for CPC Pricing model

data.subscriptionAge

array

Subscription Age - only for CPC Pricing model

data.frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data.frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data.extendedStatus

string

Campaign extended status

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.deletedAt

datetime

Date of deletion

data.pretarget

int

pretarget

data.pretargets

array

pretargets

data.audiences

array

audiences

4.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 7,
        "userId": 12,
        "isActive": true,
        "isRunning": false,
        "type": "audio",
        "name": "Updated Campaign #3",
        "isRewarded": false,
        "isDesktopWeb": false,
        "isMobileApp": true,
        "isMobileWeb": false,
        "isSmartphone": false,
        "isTablet": true,
        "isCTV": false,
        "isDOOH": false,
        "aDomain": "hill.com",
        "dateStart": "2024-08-07",
        "dateEnd": "2025-12-12",
        "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": 400,
        "spentTotalLimit": 1124,
        "impressionsDailyLimit": 274045,
        "impressionsTotalLimit": 692493,
        "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": "2025-09-09",
        "updatedAt": "2025-09-09",
        "deletedAt": null,
        "pretarget": null,
        "pretargets": [],
        "audiences": []
    }
}

4.5. Delete a Custom Campaign

A `DELETE` request will delete campaign.

4.5.1. HTTP Request

URL

DELETE api/campaigns/8 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJIbER2ZDNPRDhBenVGZmt1Iiwic3ViIjoiMTMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.vTqs8UigrcW4YMJDBv62RZRfHiEPu36Xz0X4_1ntg_c
Content-type: application/x-www-form-urlencoded
DATA
{}

4.5.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/8' -i -X DELETE \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJIbER2ZDNPRDhBenVGZmt1Iiwic3ViIjoiMTMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.vTqs8UigrcW4YMJDBv62RZRfHiEPu36Xz0X4_1ntg_c' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{}'

4.5.3. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{}

5. Upload media

5.1. Store Image

A `POST` request will upload image

5.1.1. Request Body

Path Type Description Required

media_assets

file

Array of files to upload

+

5.1.2. HTTP Request

URL

POST api/media-asset/upload/image HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJaUHRTZDBZU21tR2E4RVlsIiwic3ViIjoiNDAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.oGkD90Ow8Os_j65g73lgfmk6nT8wBiSyCpX06PW__Zo
DATA
{
    "media_assets": [
        <Binary file>
    ]
}

5.1.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/media-asset/upload/image' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJaUHRTZDBZU21tR2E4RVlsIiwic3ViIjoiNDAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.oGkD90Ow8Os_j65g73lgfmk6nT8wBiSyCpX06PW__Zo' \
    -d '{
    "media_assets": [
        <Binary file>
    ]
}'

5.1.4. Response Body

Path Type Description

message

string

Result message

data.*.id

integer

Media id

data.*.userId

integer

User Id

data.*.mediaType

string

Media type (html, image, video)

data.*.originName

string

Original file name

data.*.name

string

Uploaded file name

data.*.extension

string

Uploaded file extension

data.*.url

string

Uploaded file url

data.*.width

integer

Uploaded file image width

data.*.height

integer

Uploaded file image height

data.*.weight

integer

Uploaded file size kB

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

5.1.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "MediaAsset created.",
    "data": [
        {
            "id": 20,
            "userId": 40,
            "mediaType": "image",
            "originName": "test-image.png",
            "name": "test-image.png",
            "extension": "png",
            "url": "\/storage\/test-image.png",
            "width": 10,
            "height": 10,
            "weight": 91,
            "createdAt": "2025-09-09 15:21:41",
            "updatedAt": "2025-09-09 15:21:41"
        }
    ]
}

5.2. Store video

A `POST` request will upload video

5.2.1. Request Body

Path Type Description Required

media_assets

file

Array of files to upload

+

5.2.2. HTTP Request

URL

POST api/media-asset/upload/video HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJocUkzSDNDTFdya2ZFVWEzIiwic3ViIjoiNDEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.l7Y_WHt6I82dHUgvzAtYrEkJbraXwbAT7LdWNwd_R9A
DATA
{
    "media_assets": [
        <Binary file>
    ]
}

5.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/media-asset/upload/video' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJocUkzSDNDTFdya2ZFVWEzIiwic3ViIjoiNDEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.l7Y_WHt6I82dHUgvzAtYrEkJbraXwbAT7LdWNwd_R9A' \
    -d '{
    "media_assets": [
        <Binary file>
    ]
}'

5.2.4. Response Body

Path Type Description

message

string

Result message

data.*.id

integer

Media id

data.*.userId

integer

User Id

data.*.mediaType

string

Media type (html, image, video)

data.*.originName

string

Original file name

data.*.name

string

Uploaded file name

data.*.extension

string

Uploaded file extension

data.*.url

string

Uploaded file url

data.*.width

integer

Uploaded file image width

data.*.height

integer

Uploaded file image height

data.*.weight

integer

Uploaded file size kB

data.*.mimeType

string

Video mime type

data.*.bitrate

integer

Video bitrate

data.*.duration

integer

Video duration (in seconds)

data.*.durationTime

string

Video duration (in text format)

data.*.playtime

integer

Video playtime

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

5.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "MediaAsset created.",
    "data": [
        {
            "id": 21,
            "userId": 41,
            "mediaType": "video",
            "originName": "test-video.mp4",
            "name": "test-video.mp4",
            "extension": "mp4",
            "url": "\/storage\/test-video.mp4",
            "width": 320,
            "height": 240,
            "weight": 5312,
            "mimeType": "video\/quicktime",
            "bitrate": 201493,
            "duration": 0,
            "durationTime": "00:00:00",
            "playtime": "00:00:00",
            "createdAt": "2025-09-09 15:21:41",
            "updatedAt": "2025-09-09 15:21:41"
        }
    ]
}

5.3. Store HTML

A `POST` request will upload HTML

5.3.1. Request Body

Path Type Description Required

media_assets

file

Array of files to upload

+

5.3.2. HTTP Request

URL

POST api/media-asset/upload/html HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJlejFjejROa1lJcDdmUlJKIiwic3ViIjoiNDIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.RbbTTHwkmmYOKhFKAL-F89PEfGYlD2Tusvt6hp6MhBE
DATA
{
    "media_assets": [
        <Binary file>
    ]
}

5.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/media-asset/upload/html' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJlejFjejROa1lJcDdmUlJKIiwic3ViIjoiNDIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.RbbTTHwkmmYOKhFKAL-F89PEfGYlD2Tusvt6hp6MhBE' \
    -d '{
    "media_assets": [
        <Binary file>
    ]
}'

5.3.4. Response Body

Path Type Description

message

string

Result message

data.*.id

integer

Media id

data.*.userId

integer

User Id

data.*.mediaType

string

Media type (html, image, video)

data.*.originName

string

Original file name

data.*.name

string

Uploaded file name

data.*.extension

string

Uploaded file extension

data.*.url

string

Uploaded file url

data.*.width

integer

Uploaded file image width

data.*.height

integer

Uploaded file image height

data.*.weight

integer

Uploaded file size kB

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

5.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "MediaAsset created.",
    "data": [
        {
            "id": 22,
            "userId": 42,
            "mediaType": "html",
            "originName": "test-html.zip",
            "name": "TEST\/index.html",
            "extension": "zip",
            "url": "\/storage\/TEST\/index.html",
            "width": 0,
            "height": 0,
            "weight": 0,
            "createdAt": "2025-09-09 15:21:41",
            "updatedAt": "2025-09-09 15:21:41"
        }
    ]
}

5.4. Store filter list

A `POST` request will upload video

5.4.1. HTTP Request

URL

POST api/parsefile HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJSQ1BIZTVsS1FMRFBsSnVxIiwic3ViIjoiNDMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.I0HvM757pYiXhirHfe14AY_6nLCHNO8k0qOvUjMPBrc
DATA
{
    "file": <Binary file>
}

5.4.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/parsefile' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJSQ1BIZTVsS1FMRFBsSnVxIiwic3ViIjoiNDMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.I0HvM757pYiXhirHfe14AY_6nLCHNO8k0qOvUjMPBrc' \
    -d '{
    "file": <Binary file>
}'

5.4.3. Response Body

Path Type Description

message

string

Result message

items

array

List array items

fileName

string

File name

countItems

integer

Count items

5.4.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "success",
    "items": [
        "test.com"
    ],
    "fileName": "1757431301_test-filter.csv",
    "countItems": 0
}

6. Creatives

6.1. Creatives list

A `GET` request will return a list of an creatives.

6.1.1. HTTP Request

URL

GET api/creatives HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiIxa2hoNUNNcGtQWXdyUlJEIiwic3ViIjoiMjMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.eQjU9lDcxlFmz9gBNTDEX9mvhg1d5hHBWVEt9C7Tg8E
DATA
{}

6.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiIxa2hoNUNNcGtQWXdyUlJEIiwic3ViIjoiMjMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.eQjU9lDcxlFmz9gBNTDEX9mvhg1d5hHBWVEt9C7Tg8E' \
    -d '{}'

6.1.3. Response Body

Path Type Description

data.*.id

integer

Creative Id

data.*.userId

integer

User Id

data.*.isActive

boolean

Creative status

data.*.approved

string

Creative approval status (approved, pending, disapproved)

data.*.creativeType

string

Creative type: banner, native, video, audio

data.*.name

string

Creative name

data.*.frequencyType

string

Identify the user to limit the number of the ad shows for the specific user (user, ip). Required if frequency is on.

data.*.frequency

string

Frequency on/off

data.*.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period". Required if frequency is on.

data.*.frequencyPeriod

integer

Frequency period in days (min-1,max-3). Required if frequency is on.

data.*.bidPrice

float

CPM

data.*.autoresize

boolean

autoresize

data.*.adaptiveCpm

bool

adaptiveCpm

data.*.size

string

Image width and height

data.*.weight

string

File size

data.*.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.sizes

string

Player size

data.*.relation.video.admBody

string

Third-party tag

data.*.relation.video.mimeType

array

MIME types ("[video/mpeg, video/mp4, video/quicktime, video/x-flv, application/x-shockwave-flash, application/javascript, video/x-ms-wmv, video/webm]")

data.*.relation.video.width

integer

Video width

data.*.relation.video.height

integer

Video height

data.*.relation.video.duration

integer

Video duration

data.*.relation.video.clickUrl

string

Click URL

data.*.relation.video.partyTagFormat

integer

3 party tag format (0-NO VPAID, 1-VPAID 1, 2-VPAID 2, 3-ALL VPAID)

data.*.relation.video.apiFramework

integer

apiFramework

data.*.relation.video.autoStoreEndCard

boolean

autoStoreEndCard

data.*.relation.video.autoStoreEndCardOption

string

autoStoreEndCardOption

meta.pagination.total

integer

Pagination: total items count

meta.pagination.count

integer

Pagination: page items count

meta.pagination.per_page

integer

Pagination: items per page

meta.pagination.current_page

integer

Pagination: current page number

meta.pagination.total_pages

integer

Pagination: total pages count

meta.pagination.links

object

Pagination links

6.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": [
        {
            "id": 8,
            "userId": 23,
            "isActive": 0,
            "approved": "pending",
            "creativeType": "banner",
            "name": "Banner creative #1",
            "frequencyType": "user",
            "frequency": 0,
            "frequencyCap": 7,
            "frequencyPeriod": 1,
            "bidPrice": "18.42",
            "autoresize": 0,
            "adaptiveCpm": false,
            "size": "610 x 120",
            "weight": "0.27 MB",
            "folderId": null,
            "createdAt": "2025-09-09 00:00:00",
            "updatedAt": "2025-09-09 15:21:39",
            "pendingAt": null,
            "deletedAt": null,
            "media": {
                "id": 8,
                "userId": 23,
                "mediaType": "image",
                "originName": "image.jpg",
                "name": "23_4a2c0cbc19fca0480f54f1a325772729.jpg",
                "extension": "jpg",
                "url": "http:\/\/mclaughlin.com\/voluptate-omnis-voluptas-et.html\/23_4a2c0cbc19fca0480f54f1a325772729.jpg",
                "width": 251,
                "height": 276,
                "weight": 283805
            },
            "relation": {
                "banner": {
                    "apiFramework": 0,
                    "admBody": "<a target=\"_blank\" href=\"http:\/\/haag.org\/eaque-aut-distinctio-repellendus-aut-voluptas\" ><img src=\"https:\/\/ritchie.com\/cumque-voluptatem-itaque-sed-cumque-sit-est.html\/10.jpg\"\/><\/a>",
                    "bannerType": "banner",
                    "clickUrl": "http:\/\/www.pollich.com\/",
                    "width": 610,
                    "height": 120,
                    "childrenCreative": null,
                    "statusChildrenCreative": [],
                    "main": 1
                }
            },
            "status": "pending"
        },
        {
            "id": 9,
            "userId": 23,
            "isActive": 1,
            "approved": "pending",
            "creativeType": "native",
            "name": "Native creative #1",
            "frequencyType": "user",
            "frequency": 0,
            "frequencyCap": 9,
            "frequencyPeriod": 1,
            "bidPrice": "3.46",
            "autoresize": 0,
            "adaptiveCpm": false,
            "size": "272 x 305",
            "weight": "0.00 MB",
            "folderId": null,
            "createdAt": "2025-09-09 00:00:00",
            "updatedAt": "2025-09-09 15:21:39",
            "pendingAt": null,
            "deletedAt": null,
            "media": {
                "id": 9,
                "userId": 23,
                "mediaType": "image",
                "originName": "richmedia.zip",
                "name": "23_4a2c0cbc19fca0480f54f1a325772729\/index.html",
                "extension": "zip",
                "url": "http:\/\/www.blanda.info\/et-autem-aut-nihil-ut-enim-impedit-unde\/23_4a2c0cbc19fca0480f54f1a325772729\/index.html",
                "width": 244,
                "height": 191,
                "weight": 231078
            },
            "relation": {
                "native": {
                    "smallImageId": 9,
                    "largeImageId": 10,
                    "smallImage": {
                        "id": 9,
                        "folderId": null,
                        "userId": 23,
                        "width": 244,
                        "height": 191,
                        "name": "23_4a2c0cbc19fca0480f54f1a325772729\/index.html",
                        "url": "http:\/\/www.blanda.info\/et-autem-aut-nihil-ut-enim-impedit-unde\/23_4a2c0cbc19fca0480f54f1a325772729\/index.html",
                        "href": null,
                        "originName": "richmedia.zip",
                        "path": null,
                        "extension": "zip",
                        "mediaType": "image",
                        "createdAt": "2025-09-09T15:21:39.000000Z",
                        "updatedAt": "2025-09-09T15:21:39.000000Z",
                        "deletedAt": null,
                        "weight": 231078
                    },
                    "largeImage": {
                        "id": 10,
                        "folderId": null,
                        "userId": 23,
                        "width": 272,
                        "height": 305,
                        "name": "23_4a2c0cbc19fca0480f54f1a325772729.jpg",
                        "url": "https:\/\/trantow.info\/quae-inventore-sit-laborum-et-vel-nobis-sequi.html\/23_4a2c0cbc19fca0480f54f1a325772729.jpg",
                        "href": null,
                        "originName": "image.jpg",
                        "path": null,
                        "extension": "jpg",
                        "mediaType": "image",
                        "createdAt": "2025-09-09T15:21:39.000000Z",
                        "updatedAt": "2025-09-09T15:21:39.000000Z",
                        "deletedAt": null,
                        "weight": 260406
                    },
                    "assetDataDesc": "Aut quo in qui aut.",
                    "assetTitle": "Et dolorem cum unde.",
                    "assetDataSponsored": "Doloremque aut et eius perferendis consequatur.",
                    "assetCtaText": "Et tempora illum natus.",
                    "clickUrl": "http:\/\/lindgren.com\/",
                    "displayUrl": "https:\/\/www.hackett.com\/qui-laboriosam-cumque-atque-facilis-quis-tempora-quisquam",
                    "impTracker": null
                }
            },
            "status": "pending"
        },
        {
            "id": 10,
            "userId": 23,
            "isActive": 1,
            "approved": "pending",
            "creativeType": "video",
            "name": "Video creative #1",
            "frequencyType": "user",
            "frequency": 0,
            "frequencyCap": 7,
            "frequencyPeriod": 1,
            "bidPrice": "1.46",
            "autoresize": 0,
            "adaptiveCpm": false,
            "size": "298 x 371",
            "weight": "0.34 MB",
            "folderId": null,
            "createdAt": "2025-09-09 00:00:00",
            "updatedAt": "2025-09-09 15:21:39",
            "pendingAt": null,
            "deletedAt": null,
            "media": {
                "id": 11,
                "userId": 23,
                "mediaType": "video",
                "originName": "video.mp4",
                "name": "23_4a2c0cbc19fca0480f54f1a325772729.mp4",
                "extension": "mp4",
                "url": "https:\/\/www.gerlach.com\/ut-ipsa-illo-repudiandae-natus\/23_4a2c0cbc19fca0480f54f1a325772729.mp4",
                "width": 103,
                "height": 289,
                "weight": 351675
            },
            "relation": {
                "video": {
                    "sizes": "medium",
                    "admBody": "    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<VAST version=\"2.0\">\n<Ad id=\"[HASH]\">\n    <InLine>\n        <AdSystem>DSP<\/AdSystem>\n        <AdTitle>Smartyads<\/AdTitle>\n        <Description>RTB<\/Description>\n        <Creatives>\n            <Creative AdID=\"572\">\n                <Linear>\n                    <Duration>00:00:09<\/Duration>\n                    <VideoClicks>\n                        <ClickThrough><![CDATA[https:\/\/picsum.photos\/]]><\/ClickThrough>\n                    <\/VideoClicks>\n                    <MediaFiles>\n                        <MediaFile delivery=\"streaming\" type=\"video\/quicktime\" width=\"640\" height=\"360\"><![CDATA[http:\/\/72.mp4]]><\/MediaFile>\n                    <\/MediaFiles>\n                <\/Linear>\n            <\/Creative>\n        <\/Creatives>\n    <\/InLine>\n<\/Ad>\n<\/VAST>",
                    "mimeType": [
                        "application\/x-shockwave-flash"
                    ],
                    "width": 298,
                    "height": 371,
                    "duration": 9,
                    "clickUrl": "http:\/\/koepp.org\/aut-pariatur-ut-nulla-ut-nesciunt-ut-rerum",
                    "partyTagFormat": 0,
                    "apiFramework": null,
                    "autoStoreEndCard": 0,
                    "autoStoreEndCardOption": "appStore"
                }
            },
            "status": "pending"
        }
    ],
    "meta": {
        "pagination": {
            "total": 3,
            "count": 3,
            "per_page": 15,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

6.2. Get by ID (Banner creative)

A `GET` request with a path parameter of the id will return the creative with that id.

6.2.1. HTTP Request

URL

GET api/creatives/11 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJFSUh2S1AxTXc3aXBGZkdyIiwic3ViIjoiMjQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.QsWJ6P3oO5wK_G-DNuqw5GMZ_-L5imfGVQkM-roYdOg
DATA
{}

6.2.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives/11' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJFSUh2S1AxTXc3aXBGZkdyIiwic3ViIjoiMjQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.QsWJ6P3oO5wK_G-DNuqw5GMZ_-L5imfGVQkM-roYdOg' \
    -d '{}'

6.2.3. Response Body

Path Type Description

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data.frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.media.id

integer

Media Id

data.media.userId

string

User Id

data.media.mediaType

string

Media type (html, image, video)

data.media.originName

string

Uploaded file original name

data.media.name

string

Uploaded file name

data.media.extension

string

Uploaded file extention

data.media.url

string

Uploaded file URL

data.media.width

integer

Uploaded file image width

data.media.height

integer

Uploaded file image height

data.media.weight

integer

Uploaded file size

data.media.modifiedUrl

any

data.relation.banner.apiFramework

integer

Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID

data.relation.banner.admBody

string

Third-party tag

data.relation.banner.bannerType

String

Banner type (banner,inBannerVideo)

data.relation.banner.clickUrl

string

Click URL

data.relation.banner.width

integer

Banner width

data.relation.banner.height

integer

Banner height

data.sizes

string

size

6.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 11,
        "userId": 24,
        "isActive": 0,
        "approved": "pending",
        "creativeType": "banner",
        "name": "Banner creative #2",
        "frequencyType": "user",
        "frequency": 0,
        "frequencyCap": 5,
        "frequencyPeriod": 1,
        "bidPrice": "2.96",
        "autoresize": 0,
        "adaptiveCpm": false,
        "size": "647 x 177",
        "weight": "0.45 MB",
        "folderId": null,
        "createdAt": "2025-09-09 00:00:00",
        "updatedAt": "2025-09-09 15:21:39",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "banner": {
                "apiFramework": 0,
                "admBody": "<a target=\"_blank\" href=\"https:\/\/www.ullrich.com\/quia-aperiam-reprehenderit-ab-officiis-nam-minus-veritatis\" ><img src=\"http:\/\/kiehn.com\/aperiam-rerum-doloribus-voluptatum-optio-facilis-placeat-ut\/10.jpg\"\/><\/a>",
                "bannerType": "banner",
                "clickUrl": "http:\/\/www.predovic.com\/et-qui-vel-id-nisi-possimus.html",
                "width": 647,
                "height": 177
            }
        },
        "sizes": []
    }
}

6.3. Get by ID (Native creative)

A `GET` request with a path parameter of the id will return the creative with that id.

6.3.1. HTTP Request

URL

GET api/creatives/12 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiIzMnIwQ2gzUkNmeDZ0Y3BlIiwic3ViIjoiMjUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.hMkMEGX_s0M8X5Iy3NqOIUiMC_QIK-KVgPQk_pPyyMU
DATA
{}

6.3.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives/12' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiIzMnIwQ2gzUkNmeDZ0Y3BlIiwic3ViIjoiMjUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.hMkMEGX_s0M8X5Iy3NqOIUiMC_QIK-KVgPQk_pPyyMU' \
    -d '{}'

6.3.3. Response Body

Path Type Description

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data.frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.media.id

integer

Media Id

data.media.userId

string

User Id

data.media.mediaType

string

Media type (html, image, video)

data.media.originName

string

Uploaded file original name

data.media.name

string

Uploaded file name

data.media.extension

string

Uploaded file extention

data.media.url

string

Uploaded file URL

data.media.width

integer

Uploaded file image width

data.media.height

integer

Uploaded file image height

data.media.weight

integer

Uploaded file size

data.media.modifiedUrl

any

data.relation.native.smallImageId

integer

Logo media id

data.relation.native.largeImageId

integer

Image media id

data.relation.native.smallImage.id

integer

Logo media id

data.relation.native.smallImage.folderId

string

Folder id

data.relation.native.smallImage.userId

integer

User id

data.relation.native.smallImage.width

string

width

data.relation.native.smallImage.height

string

height

data.relation.native.smallImage.name

string

name

data.relation.native.smallImage.url

string

url

data.relation.native.smallImage.href

string

href

data.relation.native.smallImage.originName

string

originName

data.relation.native.smallImage.path

string

path

data.relation.native.smallImage.extension

string

extension

data.relation.native.smallImage.mediaType

string

mediaType

data.relation.native.smallImage.createdAt

string

createdAt

data.relation.native.smallImage.updatedAt

string

updatedAt

data.relation.native.smallImage.deletedAt

string

updatedAt

data.relation.native.smallImage.weight

string

weight

data.relation.native.largeImage.id

integer

Image media id

data.relation.native.largeImage.folderId

string

Folder id

data.relation.native.largeImage.userId

integer

User id

data.relation.native.largeImage.width

string

width

data.relation.native.largeImage.height

string

height

data.relation.native.largeImage.name

string

name

data.relation.native.largeImage.url

string

url

data.relation.native.largeImage.href

string

href

data.relation.native.largeImage.originName

string

originName

data.relation.native.largeImage.path

string

path

data.relation.native.largeImage.extension

string

extension

data.relation.native.largeImage.mediaType

string

mediaType

data.relation.native.largeImage.createdAt

string

createdAt

data.relation.native.largeImage.updatedAt

string

updatedAt

data.relation.native.largeImage.deletedAt

string

updatedAt

data.relation.native.largeImage.weight

string

weight

data.relation.native.assetDataDesc

string

Ad text

data.relation.native.assetTitle

string

Ad title

data.relation.native.assetDataSponsored

string

Brand name

data.relation.native.assetCtaText

string

CTA button text

data.relation.native.clickUrl

string

Click URL

data.relation.native.displayUrl

string

Display URL

data.relation.native.impTracker

string

Impression tracker

data.sizes

string

size

6.3.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 12,
        "userId": 25,
        "isActive": 0,
        "approved": "pending",
        "creativeType": "native",
        "name": "Native creative #2",
        "frequencyType": "user",
        "frequency": 0,
        "frequencyCap": 9,
        "frequencyPeriod": 1,
        "bidPrice": "1.58",
        "autoresize": 0,
        "adaptiveCpm": false,
        "size": "133 x 292",
        "weight": "0.00 MB",
        "folderId": null,
        "createdAt": "2025-09-09 00:00:00",
        "updatedAt": "2025-09-09 15:21:39",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "native": {
                "smallImageId": 13,
                "largeImageId": 14,
                "smallImage": {
                    "id": 13,
                    "folderId": null,
                    "userId": 25,
                    "width": 137,
                    "height": 269,
                    "name": "25_4a2c0cbc19fca0480f54f1a325772729\/index.html",
                    "url": "http:\/\/mueller.com\/voluptatem-quod-at-aut-dolorem-maxime-ut-et\/25_4a2c0cbc19fca0480f54f1a325772729\/index.html",
                    "href": null,
                    "originName": "richmedia.zip",
                    "path": null,
                    "extension": "zip",
                    "mediaType": "image",
                    "createdAt": "2025-09-09T15:21:39.000000Z",
                    "updatedAt": "2025-09-09T15:21:39.000000Z",
                    "deletedAt": null,
                    "weight": 497710
                },
                "largeImage": {
                    "id": 14,
                    "folderId": null,
                    "userId": 25,
                    "width": 133,
                    "height": 292,
                    "name": "25_4a2c0cbc19fca0480f54f1a325772729.mp4",
                    "url": "http:\/\/parker.com\/iste-consectetur-rem-voluptatem-non-enim-dolor.html\/25_4a2c0cbc19fca0480f54f1a325772729.mp4",
                    "href": null,
                    "originName": "video.mp4",
                    "path": null,
                    "extension": "mp4",
                    "mediaType": "image",
                    "createdAt": "2025-09-09T15:21:39.000000Z",
                    "updatedAt": "2025-09-09T15:21:39.000000Z",
                    "deletedAt": null,
                    "weight": 171647
                },
                "assetDataDesc": "Enim non sunt alias.",
                "assetTitle": "Et aut a enim cum.",
                "assetDataSponsored": "Asperiores corporis non rerum in.",
                "assetCtaText": "Non unde qui illum.",
                "clickUrl": "http:\/\/koelpin.com\/illo-iste-laboriosam-quia-et-et-totam-quaerat-ut",
                "displayUrl": "https:\/\/www.oreilly.info\/modi-quas-dolores-omnis-officiis-illum",
                "impTracker": null
            }
        },
        "sizes": []
    }
}

6.4. Get by ID (Video creative)

A `GET` request with a path parameter of the id will return the creative with that id.

6.4.1. HTTP Request

URL

GET api/creatives/13 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJ6QTNwWWQwWHprN1g1Y2FSIiwic3ViIjoiMjYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.JGfO1IxQeSic-LNmFNjuMgMrrUWeK5jOJ-8NmWA7unc
DATA
{}

6.4.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives/13' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJ6QTNwWWQwWHprN1g1Y2FSIiwic3ViIjoiMjYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.JGfO1IxQeSic-LNmFNjuMgMrrUWeK5jOJ-8NmWA7unc' \
    -d '{}'

6.4.3. Response Body

Path Type Description

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data.frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.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.sizes

string

Player size

data.relation.video.admBody

string

Third-party tag

data.relation.video.mimeType

array

MIME types

data.relation.video.width

integer

Video width

data.relation.video.height

integer

Video height

data.relation.video.duration

integer

Video duration

data.relation.video.clickUrl

string

Click URL

data.relation.video.partyTagFormat

integer

3 party tag format (0-NO VPAID, 1-VPAID 1, 2-VPAID 2, 3-ALL VPAID)

data.relation.video.apiFramework

integer

apiFramework

data.relation.video.autoStoreEndCard

boolean

autoStoreEndCard

data.relation.video.autoStoreEndCardOption

string

autoStoreEndCardOption

data.sizes

string

size

6.4.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 13,
        "userId": 26,
        "isActive": 1,
        "approved": "pending",
        "creativeType": "video",
        "name": "Video creative #2",
        "frequencyType": "user",
        "frequency": 0,
        "frequencyCap": 7,
        "frequencyPeriod": 1,
        "bidPrice": "9.81",
        "autoresize": 0,
        "adaptiveCpm": false,
        "size": "223 x 187",
        "weight": "0.33 MB",
        "folderId": null,
        "createdAt": "2025-09-09 00:00:00",
        "updatedAt": "2025-09-09 15:21:39",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "video": {
                "sizes": "large",
                "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": 223,
                "height": 187,
                "duration": 4,
                "clickUrl": "http:\/\/www.kertzmann.com\/",
                "partyTagFormat": 0,
                "apiFramework": null,
                "autoStoreEndCard": 0,
                "autoStoreEndCardOption": "appStore"
            }
        },
        "sizes": []
    }
}

6.5. Create a Custom Banner Creative with Third-party tag

A `POST` request will create new creative.

6.5.1. Request Body

Path Type Description Required

name

string

Creative name

+

creativeType

string

Creative type: banner, native, video, audio

+

frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

frequency

boolean

Frequency on/off.

frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

bidPrice

float

CPM

+

banner.apiFramework

integer

Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID

banner.width

integer

Banner width

+

banner.height

integer

Banner height

+

banner.admBody

string

Third-party tag

+

categories.IAB1

array

Categories (required if subCategories is empty)

+

subCategories.IAB1

array

SubCategories (required if categories is empty)

+

6.5.2. HTTP Request

URL

POST api/creatives HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJkdXVHYUxDMmtqOGdaNUI2Iiwic3ViIjoiMjciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.e0M8fHXL6X5sqdSZaab6n0T-jlcLWcSFT_BmweI0J8Y
DATA
{
    "name": "Banner creative #3",
    "creativeType": "banner",
    "frequencyType": "user",
    "frequencyCap": 1,
    "frequency": 1,
    "frequencyPeriod": 1,
    "bidPrice": 0.5,
    "banner": {
        "apiFramework": 0,
        "width": 320,
        "height": 200,
        "admBody": "<iframe src=\"url.to.script\"><\/iframe>"
    },
    "categories": {
        "IAB1": true
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    }
}

6.5.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJkdXVHYUxDMmtqOGdaNUI2Iiwic3ViIjoiMjciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.e0M8fHXL6X5sqdSZaab6n0T-jlcLWcSFT_BmweI0J8Y' \
    -d '{
    "name": "Banner creative #3",
    "creativeType": "banner",
    "frequencyType": "user",
    "frequencyCap": 1,
    "frequency": 1,
    "frequencyPeriod": 1,
    "bidPrice": 0.5,
    "banner": {
        "apiFramework": 0,
        "width": 320,
        "height": 200,
        "admBody": "<iframe src=\"url.to.script\"><\/iframe>"
    },
    "categories": {
        "IAB1": true
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    }
}'

6.5.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data.frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.relation.banner.apiFramework

integer

Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID

data.relation.banner.admBody

string

Third-party tag

data.relation.banner.bannerType

String

Banner type (banner,inBannerVideo)

data.relation.banner.clickUrl

string

Click URL

data.relation.banner.width

integer

Banner width

data.relation.banner.height

integer

Banner height

data.sizes

string

size

6.5.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Creative created.",
    "data": {
        "id": 14,
        "userId": 27,
        "isActive": null,
        "approved": null,
        "creativeType": "banner",
        "name": "Banner creative #3",
        "frequencyType": "user",
        "frequency": 1,
        "frequencyCap": 1,
        "frequencyPeriod": 1,
        "bidPrice": 0.5,
        "autoresize": null,
        "adaptiveCpm": null,
        "size": "320 x 200",
        "weight": "0.00 MB",
        "folderId": null,
        "createdAt": "2025-09-09 00:00:00",
        "updatedAt": "2025-09-09 15:21:39",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "banner": {
                "apiFramework": 0,
                "admBody": "<iframe src=\"url.to.script\"><\/iframe>",
                "bannerType": null,
                "clickUrl": null,
                "width": 320,
                "height": 200
            }
        },
        "sizes": []
    }
}

6.6. Create a Custom Banner Creative with Media image

A `POST` request will create new creative.

6.6.1. Request Body

Path Type Description Required

name

string

Creative name

+

creativeType

string

Creative type: banner, native, video, audio

+

mediaId

array

Media image Id

+

frequency

boolean

Frequency on/off.

bidPrice

float

CPM

+

banner.apiFramework

integer

Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID

banner.width

integer

Banner width

+

banner.height

integer

Banner height

+

banner.clickUrl

string

Click URL

+

subCategories.IAB1

array

SubCategories (required if categories is empty)

+

categories.IAB1

array

Categories (required if subCategories is empty)

+

6.6.2. HTTP Request

URL

POST api/creatives HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJpNVRweHJEOTFqemVQTHNYIiwic3ViIjoiMjgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.fqal65OkI_cRWCkXGmwFtcJxwliappBEzT25n_vNsOM
DATA
{
    "name": "Banner creative #4",
    "creativeType": "banner",
    "mediaId": 16,
    "frequency": 0,
    "bidPrice": 0.5,
    "banner": {
        "apiFramework": 0,
        "width": 320,
        "height": 200,
        "clickUrl": "http:\/\/weber.com\/et-rerum-pariatur-similique-autem-dolorem-nam"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}

6.6.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJpNVRweHJEOTFqemVQTHNYIiwic3ViIjoiMjgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.fqal65OkI_cRWCkXGmwFtcJxwliappBEzT25n_vNsOM' \
    -d '{
    "name": "Banner creative #4",
    "creativeType": "banner",
    "mediaId": 16,
    "frequency": 0,
    "bidPrice": 0.5,
    "banner": {
        "apiFramework": 0,
        "width": 320,
        "height": 200,
        "clickUrl": "http:\/\/weber.com\/et-rerum-pariatur-similique-autem-dolorem-nam"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}'

6.6.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data.frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.media.id

integer

Media Id

data.media.userId

string

User Id

data.media.mediaType

string

Media type (html, image, video)

data.media.originName

string

Uploaded file original name

data.media.name

string

Uploaded file name

data.media.extension

string

Uploaded file extention

data.media.url

string

Uploaded file URL

data.media.width

integer

Uploaded file image width

data.media.height

integer

Uploaded file image height

data.media.weight

integer

Uploaded file size

data.media.modifiedUrl

any

data.relation.banner.apiFramework

integer

Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID

data.relation.banner.admBody

string

Third-party tag

data.relation.banner.bannerType

String

Banner type (banner,inBannerVideo)

data.relation.banner.clickUrl

string

Click URL

data.relation.banner.width

integer

Banner width

data.relation.banner.height

integer

Banner height

data.sizes

string

size

6.6.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Creative created.",
    "data": {
        "id": 15,
        "userId": 28,
        "isActive": null,
        "approved": null,
        "creativeType": "banner",
        "name": "Banner creative #4",
        "frequencyType": null,
        "frequency": 0,
        "frequencyCap": null,
        "frequencyPeriod": null,
        "bidPrice": 0.5,
        "autoresize": null,
        "adaptiveCpm": null,
        "size": "220 x 493",
        "weight": "0.21 MB",
        "folderId": null,
        "createdAt": "2025-09-09 00:00:00",
        "updatedAt": "2025-09-09 15:21:39",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "banner": {
                "apiFramework": 0,
                "admBody": "<a target=\"_blank\" href=\"https:\/\/weber.com\/et-rerum-pariatur-similique-autem-dolorem-nam\" ><img src=\"http:\/\/www.murazik.com\/voluptatem-omnis-dolores-soluta-eos-blanditiis-quod\/28_4a2c0cbc19fca0480f54f1a325772729.mp4\" crossorigin=\"anonymous\"\/><\/a>",
                "bannerType": null,
                "clickUrl": "https:\/\/weber.com\/et-rerum-pariatur-similique-autem-dolorem-nam",
                "width": 220,
                "height": 493
            }
        },
        "sizes": []
    }
}

6.7. Create a Custom Banner Creative with Rich Media Html

A `POST` request will create new creative.

6.7.1. Request Body

Path Type Description Required

name

string

Creative name

+

creativeType

string

Creative type: banner, native, video, audio

+

mediaId

array

HTML Media Id

+

frequency

boolean

Frequency on/off.

bidPrice

float

CPM

+

banner.apiFramework

integer

Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID

banner.width

integer

Banner width

+

banner.height

integer

Banner height

+

subCategories.IAB1

array

SubCategories (required if categories is empty)

+

categories.IAB1

array

Categories (required if subCategories is empty)

+

6.7.2. HTTP Request

URL

POST api/creatives HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJab2ZlSmF2Z1Z6eDlZMXhSIiwic3ViIjoiMjkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.mDPX5JHcxgxm8-jsBJ2uCmTK50YNsZ70ZzxTojB5vtY
DATA
{
    "name": "Banner creative #5",
    "creativeType": "banner",
    "mediaId": 17,
    "frequency": 0,
    "bidPrice": 0.5,
    "banner": {
        "apiFramework": 3,
        "width": 320,
        "height": 200
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}

6.7.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJab2ZlSmF2Z1Z6eDlZMXhSIiwic3ViIjoiMjkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.mDPX5JHcxgxm8-jsBJ2uCmTK50YNsZ70ZzxTojB5vtY' \
    -d '{
    "name": "Banner creative #5",
    "creativeType": "banner",
    "mediaId": 17,
    "frequency": 0,
    "bidPrice": 0.5,
    "banner": {
        "apiFramework": 3,
        "width": 320,
        "height": 200
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}'

6.7.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data.frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.media.id

integer

Media Id

data.media.userId

string

User Id

data.media.mediaType

string

Media type (html, image, video)

data.media.originName

string

Uploaded file original name

data.media.name

string

Uploaded file name

data.media.extension

string

Uploaded file extention

data.media.url

string

Uploaded file URL

data.media.width

integer

Uploaded file image width

data.media.height

integer

Uploaded file image height

data.media.weight

integer

Uploaded file size

data.media.modifiedUrl

any

data.relation.banner.apiFramework

integer

Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID

data.relation.banner.admBody

string

Third-party tag

data.relation.banner.bannerType

String

Banner type (banner,inBannerVideo)

data.relation.banner.clickUrl

string

Click URL

data.relation.banner.width

integer

Banner width

data.relation.banner.height

integer

Banner height

data.sizes

string

size

6.7.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Creative created.",
    "data": {
        "id": 16,
        "userId": 29,
        "isActive": null,
        "approved": null,
        "creativeType": "banner",
        "name": "Banner creative #5",
        "frequencyType": null,
        "frequency": 0,
        "frequencyCap": null,
        "frequencyPeriod": null,
        "bidPrice": 0.5,
        "autoresize": null,
        "adaptiveCpm": null,
        "size": "320 x 200",
        "weight": "0.22 MB",
        "folderId": null,
        "createdAt": "2025-09-09 00:00:00",
        "updatedAt": "2025-09-09 15:21:39",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "banner": {
                "apiFramework": 3,
                "admBody": "<iframe src=\"http:\/\/hahn.com\/sed-minima-alias-sunt-quo-quia-est-ipsum.html\/29_4a2c0cbc19fca0480f54f1a325772729.jpg\"><\/iframe>",
                "bannerType": null,
                "clickUrl": null,
                "width": 320,
                "height": 200
            }
        },
        "sizes": []
    }
}

6.8. Create a Custom Native Creative

A `POST` request will create new creative.

6.8.1. Request Body

Path Type Description Required

name

string

Creative name

+

creativeType

string

Creative type: banner, native, video, audio

+

frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

frequency

boolean

Frequency on/off.

bidPrice

float

CPM

+

folderId

string

Folder Id

native.smallImageId

integer

Logo media id

native.largeImageId

integer

Image media id

+

native.assetDataDesc

string

Ad text

native.assetTitle

string

Ad title

native.assetDataSponsored

string

Brand name

native.assetCtaText

string

CTA button text

native.clickUrl

string

Click URL

+

native.displayUrl

string

Display URL

subCategories.IAB1

array

SubCategories (required if categories is empty)

+

categories.IAB1

array

Categories (required if subCategories is empty)

+

6.8.2. HTTP Request

URL

POST api/creatives HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiIxdm1nbUhZTU1GSDFuV2lYIiwic3ViIjoiMzAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.4R0QktwQfrlc-g_lrbQHgZ1k1yJH5p7VeFAzjhqSheI
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": "Provident itaque.",
        "assetTitle": "Minima.",
        "assetDataSponsored": "Veniam nisi sint id.",
        "assetCtaText": "Illum.",
        "clickUrl": "https:\/\/vonrueden.com\/doloribus-id-quae-odit-nam-facilis-consequuntur-reprehenderit-nemo.html",
        "displayUrl": "http:\/\/rice.com\/consequatur-quas-cumque-adipisci-veritatis-eum-vero-voluptate"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}

6.8.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiIxdm1nbUhZTU1GSDFuV2lYIiwic3ViIjoiMzAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.4R0QktwQfrlc-g_lrbQHgZ1k1yJH5p7VeFAzjhqSheI' \
    -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": "Provident itaque.",
        "assetTitle": "Minima.",
        "assetDataSponsored": "Veniam nisi sint id.",
        "assetCtaText": "Illum.",
        "clickUrl": "https:\/\/vonrueden.com\/doloribus-id-quae-odit-nam-facilis-consequuntur-reprehenderit-nemo.html",
        "displayUrl": "http:\/\/rice.com\/consequatur-quas-cumque-adipisci-veritatis-eum-vero-voluptate"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}'

6.8.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data.frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.media.id

integer

Media Id

data.media.userId

string

User Id

data.media.mediaType

string

Media type (html, image, video)

data.media.originName

string

Uploaded file original name

data.media.name

string

Uploaded file name

data.media.extension

string

Uploaded file extention

data.media.url

string

Uploaded file URL

data.media.width

integer

Uploaded file image width

data.media.height

integer

Uploaded file image height

data.media.weight

integer

Uploaded file size

data.media.modifiedUrl

any

data.relation.native.smallImageId

integer

Logo media id

data.relation.native.largeImageId

integer

Image media id

data.relation.native.smallImage.id

integer

Logo media id

data.relation.native.smallImage.folderId

string

Folder id

data.relation.native.smallImage.userId

integer

User id

data.relation.native.smallImage.width

string

width

data.relation.native.smallImage.height

string

height

data.relation.native.smallImage.name

string

name

data.relation.native.smallImage.url

string

url

data.relation.native.smallImage.href

string

href

data.relation.native.smallImage.originName

string

originName

data.relation.native.smallImage.path

string

path

data.relation.native.smallImage.extension

string

extension

data.relation.native.smallImage.mediaType

string

mediaType

data.relation.native.smallImage.createdAt

string

createdAt

data.relation.native.smallImage.updatedAt

string

updatedAt

data.relation.native.smallImage.deletedAt

string

updatedAt

data.relation.native.smallImage.weight

string

weight

data.relation.native.largeImage.id

integer

Image media id

data.relation.native.largeImage.folderId

string

Folder id

data.relation.native.largeImage.userId

integer

User id

data.relation.native.largeImage.width

string

width

data.relation.native.largeImage.height

string

height

data.relation.native.largeImage.name

string

name

data.relation.native.largeImage.url

string

url

data.relation.native.largeImage.href

string

href

data.relation.native.largeImage.originName

string

originName

data.relation.native.largeImage.path

string

path

data.relation.native.largeImage.extension

string

extension

data.relation.native.largeImage.mediaType

string

mediaType

data.relation.native.largeImage.createdAt

string

createdAt

data.relation.native.largeImage.updatedAt

string

updatedAt

data.relation.native.largeImage.deletedAt

string

updatedAt

data.relation.native.largeImage.weight

string

weight

data.relation.native.assetDataDesc

string

Ad text

data.relation.native.assetTitle

string

Ad title

data.relation.native.assetDataSponsored

string

Brand name

data.relation.native.assetCtaText

string

CTA button text

data.relation.native.clickUrl

string

Click URL

data.relation.native.displayUrl

string

Display URL

data.relation.native.impTracker

string

Impression tracker

data.sizes

string

size

6.8.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Creative created.",
    "data": {
        "id": 17,
        "userId": 30,
        "isActive": null,
        "approved": null,
        "creativeType": "native",
        "name": "Native creative #3",
        "frequencyType": "user",
        "frequency": 1,
        "frequencyCap": 1,
        "frequencyPeriod": 1,
        "bidPrice": 0.5,
        "autoresize": null,
        "adaptiveCpm": null,
        "size": "265 x 149",
        "weight": "0.00 MB",
        "folderId": null,
        "createdAt": "2025-09-09 00:00:00",
        "updatedAt": "2025-09-09 15:21:40",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "native": {
                "smallImageId": 18,
                "largeImageId": 18,
                "smallImage": {
                    "id": 18,
                    "folderId": null,
                    "userId": 30,
                    "width": 265,
                    "height": 149,
                    "name": "30_eb8cf4cdb4a43dbd9283d4c046cd5e8b\/index.html",
                    "url": "http:\/\/parisian.biz\/\/30_eb8cf4cdb4a43dbd9283d4c046cd5e8b\/index.html",
                    "href": null,
                    "originName": "richmedia.zip",
                    "path": null,
                    "extension": "zip",
                    "mediaType": "image",
                    "createdAt": "2025-09-09T15:21:40.000000Z",
                    "updatedAt": "2025-09-09T15:21:40.000000Z",
                    "deletedAt": null,
                    "weight": 465958
                },
                "largeImage": {
                    "id": 18,
                    "folderId": null,
                    "userId": 30,
                    "width": 265,
                    "height": 149,
                    "name": "30_eb8cf4cdb4a43dbd9283d4c046cd5e8b\/index.html",
                    "url": "http:\/\/parisian.biz\/\/30_eb8cf4cdb4a43dbd9283d4c046cd5e8b\/index.html",
                    "href": null,
                    "originName": "richmedia.zip",
                    "path": null,
                    "extension": "zip",
                    "mediaType": "image",
                    "createdAt": "2025-09-09T15:21:40.000000Z",
                    "updatedAt": "2025-09-09T15:21:40.000000Z",
                    "deletedAt": null,
                    "weight": 465958
                },
                "assetDataDesc": "Provident itaque.",
                "assetTitle": "Minima.",
                "assetDataSponsored": "Veniam nisi sint id.",
                "assetCtaText": "Illum.",
                "clickUrl": "https:\/\/vonrueden.com\/doloribus-id-quae-odit-nam-facilis-consequuntur-reprehenderit-nemo.html",
                "displayUrl": "http:\/\/rice.com\/consequatur-quas-cumque-adipisci-veritatis-eum-vero-voluptate",
                "impTracker": null
            }
        },
        "sizes": []
    }
}

6.9. Create a Custom Video Creative with Third-party tag

A `POST` request will create new creative.

6.9.1. Request Body

Path Type Description Required

name

string

Creative name

+

creativeType

string

Creative type: banner, native, video, audio

+

frequency

boolean

Frequency on/off.

bidPrice

float

CPM

+

video.sizes

string

Player size

+

video.mimeType

array

MIME types

+

video.admBody

string

Third-party tag

+

subCategories.IAB1

array

SubCategories (required if categories is empty)

+

categories.IAB1

array

Categories (required if subCategories is empty)

+

6.9.2. HTTP Request

URL

POST api/creatives HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiIxazlWNVhLYzNESVlOekplIiwic3ViIjoiMzEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.kl0IFi39mgMw42yNYHpV6CxRaE9T5-KjuSvfOsoUFns
DATA
{
    "name": "Video creative #3",
    "creativeType": "video",
    "frequency": 0,
    "bidPrice": 100,
    "video": {
        "sizes": "small",
        "mimeType": [
            "video\/mp4"
        ],
        "admBody": "<iframe src=\"url.to.script\"><\/iframe>"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}

6.9.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiIxazlWNVhLYzNESVlOekplIiwic3ViIjoiMzEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.kl0IFi39mgMw42yNYHpV6CxRaE9T5-KjuSvfOsoUFns' \
    -d '{
    "name": "Video creative #3",
    "creativeType": "video",
    "frequency": 0,
    "bidPrice": 100,
    "video": {
        "sizes": "small",
        "mimeType": [
            "video\/mp4"
        ],
        "admBody": "<iframe src=\"url.to.script\"><\/iframe>"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}'

6.9.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data.frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.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.sizes

string

Player size

data.relation.video.admBody

string

Third-party tag

data.relation.video.mimeType

array

MIME types

data.relation.video.width

integer

Video width

data.relation.video.height

integer

Video height

data.relation.video.duration

integer

Video duration

data.relation.video.clickUrl

string

Click URL

data.relation.video.partyTagFormat

integer

3 party tag format (0-NO VPAID, 1-VPAID 1, 2-VPAID 2, 3-ALL VPAID)

data.relation.video.apiFramework

integer

apiFramework

data.relation.video.autoStoreEndCard

boolean

autoStoreEndCard

data.relation.video.autoStoreEndCardOption

string

autoStoreEndCardOption

data.sizes

string

size

6.9.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Creative created.",
    "data": {
        "id": 18,
        "userId": 31,
        "isActive": null,
        "approved": null,
        "creativeType": "video",
        "name": "Video creative #3",
        "frequencyType": null,
        "frequency": 0,
        "frequencyCap": null,
        "frequencyPeriod": null,
        "bidPrice": 100,
        "autoresize": null,
        "adaptiveCpm": null,
        "size": "0 x 0",
        "weight": "0.00 MB",
        "folderId": null,
        "createdAt": "2025-09-09 00:00:00",
        "updatedAt": "2025-09-09 15:21:40",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "video": {
                "sizes": "small",
                "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
            }
        },
        "sizes": []
    }
}

6.10. Create a Custom Video Creative with Media image

A `POST` request will create new creative.

6.10.1. Request Body

Path Type Description Required

name

string

Creative name

+

creativeType

string

Creative type: banner, native, video, audio

+

frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

frequency

boolean

Frequency on/off.

mediaId

array

Media video Id

+

bidPrice

float

CPM

+

video.clickUrl

string

Click URL

+

subCategories.IAB1

array

SubCategories (required if categories is empty)

+

categories.IAB1

array

Categories (required if subCategories is empty)

+

6.10.2. HTTP Request

URL

POST api/creatives HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiJkU1VicEVJQklmb2JtQmdMIiwic3ViIjoiMzIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.17yB8aAW68GA2ti-V88Khndu33ZWsMqUMSGQ9jiWIvA
DATA
{
    "name": "Video creative #4",
    "creativeType": "video",
    "frequencyType": "user",
    "frequencyCap": 1,
    "frequencyPeriod": 1,
    "frequency": 1,
    "mediaId": 19,
    "bidPrice": 100,
    "video": {
        "clickUrl": "https:\/\/www.bednar.net\/totam-rerum-aut-architecto"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}

6.10.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiJkU1VicEVJQklmb2JtQmdMIiwic3ViIjoiMzIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.17yB8aAW68GA2ti-V88Khndu33ZWsMqUMSGQ9jiWIvA' \
    -d '{
    "name": "Video creative #4",
    "creativeType": "video",
    "frequencyType": "user",
    "frequencyCap": 1,
    "frequencyPeriod": 1,
    "frequency": 1,
    "mediaId": 19,
    "bidPrice": 100,
    "video": {
        "clickUrl": "https:\/\/www.bednar.net\/totam-rerum-aut-architecto"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}'

6.10.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data.frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.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.sizes

string

Player size

data.relation.video.admBody

string

Third-party tag

data.relation.video.mimeType

array

MIME types

data.relation.video.width

integer

Video width

data.relation.video.height

integer

Video height

data.relation.video.duration

integer

Video duration

data.relation.video.clickUrl

string

Click URL

data.relation.video.partyTagFormat

integer

3 party tag format (0-NO VPAID, 1-VPAID 1, 2-VPAID 2, 3-ALL VPAID)

data.relation.video.apiFramework

integer

apiFramework

data.relation.video.autoStoreEndCard

boolean

autoStoreEndCard

data.relation.video.autoStoreEndCardOption

string

autoStoreEndCardOption

data.sizes

string

size

6.10.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Creative created.",
    "data": {
        "id": 19,
        "userId": 32,
        "isActive": null,
        "approved": null,
        "creativeType": "video",
        "name": "Video creative #4",
        "frequencyType": "user",
        "frequency": 1,
        "frequencyCap": 1,
        "frequencyPeriod": 1,
        "bidPrice": 100,
        "autoresize": null,
        "adaptiveCpm": null,
        "size": "141 x 272",
        "weight": "0.17 MB",
        "folderId": null,
        "createdAt": "2025-09-09 00:00:00",
        "updatedAt": "2025-09-09 15:21:40",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "video": {
                "sizes": "small",
                "admBody": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<VAST version=\"2.0\">\n<Ad id=\"[HASH]\">\n    <InLine>\n        <AdSystem>DSP<\/AdSystem>\n        <AdTitle>Smartyads<\/AdTitle>\n        <Description>RTB<\/Description>\n        <Creatives>\n            <Creative AdID=\"19\">\n                <Linear>\n                    <Duration>00:00:07<\/Duration>\n                    <VideoClicks>\n                        <ClickThrough><![CDATA[https:\/\/www.bednar.net\/totam-rerum-aut-architecto]]><\/ClickThrough>\n                    <\/VideoClicks>\n                    <MediaFiles>\n                        <MediaFile delivery=\"\" type=\"video\/mp4\" width=\"141\" height=\"272\"><![CDATA[https:\/\/stiedemann.com\/eius-sed-sed-quae-ab-eius.html\/32_eb8cf4cdb4a43dbd9283d4c046cd5e8b.jpg]]><\/MediaFile>\n                    <\/MediaFiles>\n                <\/Linear>\n            <\/Creative>\n        <\/Creatives>\n    <\/InLine>\n<\/Ad>\n<\/VAST>",
                "mimeType": [
                    "video\/mp4"
                ],
                "width": 141,
                "height": 272,
                "duration": 7,
                "clickUrl": "https:\/\/www.bednar.net\/totam-rerum-aut-architecto",
                "partyTagFormat": null,
                "apiFramework": null,
                "autoStoreEndCard": null,
                "autoStoreEndCardOption": null
            }
        },
        "sizes": []
    }
}

6.11. Update a Custom Creative

A `PATCH` request will update creative.

6.11.1. Request Body

Path Type Description Required

isActive

boolean

Creative status

6.11.2. HTTP Request

URL

PUT api/creatives/20 HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiJDNWVHS1Q0bnREeHc2YVhaIiwic3ViIjoiMzMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.Lf3COvHt36a6aJuMkSyFs0XXuM0quVRkeqf_7f5dQw0
DATA
{
    "isActive": true
}

6.11.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives/20' -i -X PUT \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiJDNWVHS1Q0bnREeHc2YVhaIiwic3ViIjoiMzMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.Lf3COvHt36a6aJuMkSyFs0XXuM0quVRkeqf_7f5dQw0' \
    -d '{
    "isActive": true
}'

6.11.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

Frequency Type (user, ip).Required if frequency is on.

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period".Required if frequency is on.

data.frequencyPeriod

integer

Frequency Period (min-1,max-3). Required if frequency is on.

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.relation.banner.apiFramework

integer

Rich Media: 0-NO MRAID, 3-MRAID1, 5-MRAID2, 6-MRAID3, 10-ALL MRAID

data.relation.banner.admBody

string

Third-party tag

data.relation.banner.bannerType

String

Banner type (banner,inBannerVideo)

data.relation.banner.clickUrl

string

Click URL

data.relation.banner.width

integer

Banner width

data.relation.banner.height

integer

Banner height

data.sizes

string

size

6.11.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Creative updated.",
    "data": {
        "id": 20,
        "userId": 33,
        "isActive": true,
        "approved": "pending",
        "creativeType": "banner",
        "name": "magnam maiores",
        "frequencyType": "ip",
        "frequency": 0,
        "frequencyCap": 1,
        "frequencyPeriod": 1,
        "bidPrice": "8.17",
        "autoresize": 0,
        "adaptiveCpm": false,
        "size": " x ",
        "weight": "0.00 MB",
        "folderId": null,
        "createdAt": "2025-09-09 00:00:00",
        "updatedAt": "2025-09-09 15:21:40",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "banner": {
                "apiFramework": null,
                "admBody": null,
                "bannerType": null,
                "clickUrl": null,
                "width": null,
                "height": null
            }
        },
        "sizes": []
    }
}

6.12. Delete a Custom Creative

A `DELETE` request will delete creative.

6.12.1. HTTP Request

URL

DELETE api/creatives/21 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiIyUXVTWTVqZjVmWnQ5NUV4Iiwic3ViIjoiMzQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.8UXMlX9pO8JTxWcVjRvqkN7XqR2jBPfaKaB8_AVrM0c
Content-type: application/x-www-form-urlencoded
DATA
{}

6.12.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives/21' -i -X DELETE \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiIyUXVTWTVqZjVmWnQ5NUV4Iiwic3ViIjoiMzQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.8UXMlX9pO8JTxWcVjRvqkN7XqR2jBPfaKaB8_AVrM0c' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{}'

6.12.3. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{}

7. Assign Creatives to Campaigns

7.1. Get list of Creatives assigned to Campaign

A `GET` request with Campaign Id in url will get list of Creatives assigned to Campaign

7.1.1. HTTP Request

URL

GET api/campaigns/12/creatives HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJLQ0NyVk5WYmw3SGx2clFjIiwic3ViIjoiMTciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.48u2S_6y-6gXSNe16H6gnRBaYLR-wSxpJoNnmnSaTOI
DATA
{}

7.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/12/creatives' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJLQ0NyVk5WYmw3SGx2clFjIiwic3ViIjoiMTciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.48u2S_6y-6gXSNe16H6gnRBaYLR-wSxpJoNnmnSaTOI' \
    -d '{}'

7.1.3. Response Body

Path Type Description

data.*.id

integer

Creative Id

data.*.userId

integer

User Id

data.*.isActive

boolean

Creative status

data.*.approved

string

Creative approval status (approved, pending, disapproved)

data.*.creativeType

string

Creative type: banner, native, video, audio

data.*.name

string

Creative name

data.*.frequencyType

string

Identify the user to limit the number of the ad shows for the specific user (user, ip). Required if frequency is on.

data.*.frequency

string

Frequency on/off

data.*.frequencyCap

integer

Show ads no more than "Frequency Cap" times in "Frequency Period". Required if frequency is on.

data.*.frequencyPeriod

integer

Frequency period in days (min-1,max-3). Required if frequency is on.

data.*.bidPrice

float

CPM

data.*.autoresize

boolean

autoresize

data.*.adaptiveCpm

bool

adaptiveCpm

data.*.size

string

Image width and height

data.*.weight

string

File size

data.*.folderId

string

Folder Id

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

data.*.pendingAt

datetime

Date of pending start

data.*.deletedAt

datetime

Date of deletion

data.*.status

string

Status

meta.pagination.total

integer

Pagination: total items count

meta.pagination.count

integer

Pagination: page items count

meta.pagination.per_page

integer

Pagination: items per page

meta.pagination.current_page

integer

Pagination: current page number

meta.pagination.total_pages

integer

Pagination: total pages count

meta.pagination.links

object

Pagination links

7.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": [
        {
            "id": 1,
            "userId": 17,
            "isActive": 0,
            "approved": "pending",
            "creativeType": "banner",
            "name": "Test Creative #1",
            "frequencyType": "ip",
            "frequency": 0,
            "frequencyCap": 5,
            "frequencyPeriod": 1,
            "bidPrice": "2.51",
            "autoresize": 0,
            "adaptiveCpm": false,
            "size": "334 x 474",
            "weight": "0.35 MB",
            "folderId": null,
            "createdAt": "2025-09-09 00:00:00",
            "updatedAt": "2025-09-09 15:21:38",
            "pendingAt": null,
            "deletedAt": null,
            "media": {
                "id": 1,
                "userId": 17,
                "mediaType": "image",
                "originName": "image.jpg",
                "name": "17_ae3a19e02476627fe61ccbadd5dd825a.jpg",
                "extension": "jpg",
                "url": "http:\/\/wilderman.com\/quia-eius-culpa-iste-ducimus-voluptas\/17_ae3a19e02476627fe61ccbadd5dd825a.jpg",
                "width": 349,
                "height": 465,
                "weight": 370248
            },
            "relation": {
                "banner": {
                    "apiFramework": 0,
                    "admBody": "<a target=\"_blank\" href=\"http:\/\/www.bins.biz\/ut-nulla-consequatur-quo-aut-officiis\" ><img src=\"http:\/\/watsica.org\/pariatur-at-cum-dolor-consectetur-harum-voluptatem-maiores-ipsam.html\/10.jpg\"\/><\/a>",
                    "bannerType": "banner",
                    "clickUrl": "https:\/\/aufderhar.org\/ducimus-maiores-dolores-neque-nam-facere.html",
                    "width": 334,
                    "height": 474,
                    "childrenCreative": null,
                    "statusChildrenCreative": [],
                    "main": 1
                }
            },
            "status": ""
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 1000,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

7.2. Replace Creatives assigned to Campaign

A `POST` request with Campaign Id in url will replace Creatives assigned to Campaign

7.2.1. Request Body

Path Type Description Required

ids

array

array of Creative ids

+

7.2.2. HTTP Request

URL

POST api/campaigns/13/creatives HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJ5dGtkNWJEc1VlVkpTZXVlIiwic3ViIjoiMTgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.YV8MH3P6LsRqfZ18h04HPUUi_4BBeSm5snqrpjQoiTc
DATA
{
    "ids": [
        2,
        3
    ]
}

7.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/13/creatives' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJ5dGtkNWJEc1VlVkpTZXVlIiwic3ViIjoiMTgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.YV8MH3P6LsRqfZ18h04HPUUi_4BBeSm5snqrpjQoiTc' \
    -d '{
    "ids": [
        2,
        3
    ]
}'

7.2.4. Response Body

Path Type Description

message

string

Result message

7.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Replaced."
}

7.3. Append Creatives assigned to Campaign

A `PATCH` request with Campaign Id in url will append Creatives assigned to Campaign

7.3.1. Request Body

Path Type Description Required

ids

array

array of Creative ids

+

7.3.2. HTTP Request

URL

PATCH api/campaigns/14/creatives HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJxUktFaExmUkVyaHRkN1hBIiwic3ViIjoiMTkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.ikfRanZKaHsMhCnXnvDv7wGCZo9XBdDDpWBiQVv0XTs
DATA
{
    "ids": [
        5
    ]
}

7.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/14/creatives' -i -X PATCH \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJxUktFaExmUkVyaHRkN1hBIiwic3ViIjoiMTkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.ikfRanZKaHsMhCnXnvDv7wGCZo9XBdDDpWBiQVv0XTs' \
    -d '{
    "ids": [
        5
    ]
}'

7.3.4. Response Body

Path Type Description

message

string

Result message

7.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Appended."
}

7.4. Remove Creatives assigned to Campaign

A `DELETE` request with Campaign Id in url will remove Creatives assigned to Campaign

7.4.1. Request Body

Path Type Description Required

ids

array

array of Creative ids

+

7.4.2. HTTP Request

URL

DELETE api/campaigns/15/creatives HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJhYVM1U1NTOXlRWW1hcjdMIiwic3ViIjoiMjAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.052I6QM-LfVbcibiG93AHZ316v_-Wo0hMqYpRc0ia9U
Content-type: application/x-www-form-urlencoded
DATA
{
    "ids": [
        7
    ]
}

7.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/15/creatives' -i -X DELETE \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJhYVM1U1NTOXlRWW1hcjdMIiwic3ViIjoiMjAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.052I6QM-LfVbcibiG93AHZ316v_-Wo0hMqYpRc0ia9U' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "ids": [
        7
    ]
}'

7.4.4. Response Body

Path Type Description

message

string

Result message

deleted

boolean

Deleting result

7.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Deleted.",
    "deleted": true
}

8. Filterlists

8.1. Filter lists

A `GET` request will return a filter lists

8.1.1. HTTP Request

URL

GET api/filterlist HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiJnNVl1NnY4aVpxSkQ2RzR1Iiwic3ViIjoiMzUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.-maoJFCT0Q8tnEfQGgdq9bz8zMx9RdnggicxtvYkDew
DATA
{}

8.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/filterlist' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiJnNVl1NnY4aVpxSkQ2RzR1Iiwic3ViIjoiMzUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.-maoJFCT0Q8tnEfQGgdq9bz8zMx9RdnggicxtvYkDew' \
    -d '{}'

8.1.3. Response Body

Path Type Description

data.*.id

integer

List Id

data.*.isActive

bool

on/off

data.*.userId

integer

User Id

data.*.title

string

List title

data.*.type

string

Filter list type: listDomains, listApps, listBundles, listDeviceIfas, listPublishers, listIpAdresses, listSiteAndAppIds, listUrls, listTags

data.*.isInclude

boolean

White/Black list

data.*.count

integer

Object count

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

meta.pagination.total

integer

Pagination: total items count

meta.pagination.count

integer

Pagination: page items count

meta.pagination.per_page

integer

Pagination: items per page

meta.pagination.current_page

integer

Pagination: current page number

meta.pagination.total_pages

integer

Pagination: total pages count

meta.pagination.links

array

Pagination: array links

8.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": [
        {
            "id": 6,
            "isActive": 0,
            "userId": 35,
            "title": "Test Filter list #1",
            "type": "domain",
            "isInclude": "White",
            "count": 1,
            "createdAt": "2025-09-09",
            "updatedAt": "2025-09-09"
        },
        {
            "id": 7,
            "isActive": 0,
            "userId": 35,
            "title": "Test Filter list #2",
            "type": "ipAdresses",
            "isInclude": "White",
            "count": 2,
            "createdAt": "2025-09-09",
            "updatedAt": "2025-09-09"
        },
        {
            "id": 8,
            "isActive": 0,
            "userId": 35,
            "title": "Test Filter list #3",
            "type": "urls",
            "isInclude": "White",
            "count": 3,
            "createdAt": "2025-09-09",
            "updatedAt": "2025-09-09"
        }
    ],
    "meta": {
        "pagination": {
            "total": 3,
            "count": 3,
            "per_page": 15,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

8.2. Get filter lists by ID

A `GET` request will return a filter list  by ID

8.2.1. HTTP Request

URL

GET api/filterlist/9 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiJZSW9RZzdsTXhNM3ZJTUhHIiwic3ViIjoiMzYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.laTONz4cZVsuEzqc6tMKHgOzvL8Kz3eh4PfXyeJgE4s
DATA
{}

8.2.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/filterlist/9' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiJZSW9RZzdsTXhNM3ZJTUhHIiwic3ViIjoiMzYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.laTONz4cZVsuEzqc6tMKHgOzvL8Kz3eh4PfXyeJgE4s' \
    -d '{}'

8.2.3. Response Body

Path Type Description

data.id

integer

List Id

data.userId

integer

User Id

data.isActive

bool

on/off

data.title

string

List title

data.type

string

Filter list type: listDomains, listApps, listBundles, listDeviceIfas, listPublishers, listIpAdresses, listSiteAndAppIds, listUrls, listTags

data.isInclude

boolean

White/Black list

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.items

array

items

data.listCount

integer

listCount

8.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": 9,
        "userId": 36,
        "isActive": 0,
        "title": "Test Filter list #4",
        "type": "domain",
        "isInclude": true,
        "createdAt": "2025-09-09",
        "updatedAt": "2025-09-09",
        "items": [
            "abbott.com",
            "ernser.com",
            "grady.org",
            "okuneva.com",
            "roberts.com"
        ],
        "listCount": 5
    }
}

8.3. Create a filter lists

A `POST` request will set new filter list

8.3.1. Request Body

Path Type Description Required

title

string

List title

+

type

string

Filter list type: domain, apps, bundles, deviceIfas, publishers, ipAdresses, siteAndAppsIds, urls, tagIds

+

isInclude

bool

white/black

+

items

array

List array items (can be empty if there fileName)

fileName

string

null

File name from upload file - Store filter list

8.3.2. HTTP Request

URL

POST api/filterlist HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiJiUDNkNnpHU2M5MllmcnBUIiwic3ViIjoiMzciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.IpzAZ6HDFaGFntnrrdwoKyRIQkYplGGVgcnDa1Gf5cQ
DATA
{
    "title": "Test Filter list #5",
    "type": "ipAdresses",
    "isInclude": true,
    "items": [
        "143.182.153.129",
        "151.118.144.12",
        "171.226.151.192",
        "245.97.126.168",
        "227.4.26.78"
    ],
    "fileName": null
}

8.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/filterlist' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiJiUDNkNnpHU2M5MllmcnBUIiwic3ViIjoiMzciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.IpzAZ6HDFaGFntnrrdwoKyRIQkYplGGVgcnDa1Gf5cQ' \
    -d '{
    "title": "Test Filter list #5",
    "type": "ipAdresses",
    "isInclude": true,
    "items": [
        "143.182.153.129",
        "151.118.144.12",
        "171.226.151.192",
        "245.97.126.168",
        "227.4.26.78"
    ],
    "fileName": null
}'

8.3.4. Response Body

Path Type Description

message

string

message

data.id

integer

List Id

data.userId

integer

User Id

data.isActive

bool

on/off

data.title

string

List title

data.type

string

Filter list type: listDomains, listApps, listBundles, listDeviceIfas, listPublishers, listIpAdresses, listSiteAndAppIds, listUrls, listTags

data.isInclude

boolean

White (1)/Black list(0)

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.items

array

List array items (can be empty if there fileName)

data.listCount

integer

list count

8.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": "FilterList created.",
    "data": {
        "id": 10,
        "userId": 37,
        "isActive": null,
        "title": "Test Filter list #5",
        "type": "ipAdresses",
        "isInclude": true,
        "createdAt": "2025-09-09",
        "updatedAt": "2025-09-09",
        "items": [],
        "listCount": 0
    }
}

8.4. Filter lists update

A `PATCH` request will update filter lists

8.4.1. Request Body

Path Type Description Required

title

string

List title

isInclude

bool

white/black

items

array

List array items (can be empty if there fileName)

fileName

string

null

File name from upload file - Store filter list

8.4.2. HTTP Request

URL

PUT api/filterlist/11 HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiJmbjZHQVNiOEFaS1Q3U3NUIiwic3ViIjoiMzgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.QsCBd0ArwIzgbdBuC2NgnDDv6UsBjCJdukHIhZSsBgk
DATA
{
    "title": "Test FilterList #7",
    "isInclude": true,
    "items": [
        "http:\/\/romaguera.biz\/tenetur-doloremque-deserunt-dolores-quia-aut-et",
        "http:\/\/greenfelder.com\/",
        "http:\/\/feil.com\/libero-est-voluptatem-repudiandae-velit"
    ],
    "fileName": null
}

8.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/filterlist/11' -i -X PUT \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDAsImV4cCI6MTc1NzQzNDkwMCwibmJmIjoxNzU3NDMxMzAwLCJqdGkiOiJmbjZHQVNiOEFaS1Q3U3NUIiwic3ViIjoiMzgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.QsCBd0ArwIzgbdBuC2NgnDDv6UsBjCJdukHIhZSsBgk' \
    -d '{
    "title": "Test FilterList #7",
    "isInclude": true,
    "items": [
        "http:\/\/romaguera.biz\/tenetur-doloremque-deserunt-dolores-quia-aut-et",
        "http:\/\/greenfelder.com\/",
        "http:\/\/feil.com\/libero-est-voluptatem-repudiandae-velit"
    ],
    "fileName": null
}'

8.4.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

List Id

data.userId

integer

User Id

data.isActive

bool

on/off

data.title

string

List title

data.type

string

Filter list type: domain, apps, bundles, deviceIfas, publishers, ipAdresses, siteAndAppsIds, urls, tagIds

data.isInclude

boolean

white/black

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.items

array

List items

data.listCount

integer

listCount

8.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": "FilterList updated.",
    "data": {
        "id": 11,
        "userId": 38,
        "isActive": 0,
        "title": "Test FilterList #7",
        "type": "urls",
        "isInclude": true,
        "createdAt": "2025-09-09",
        "updatedAt": "2025-09-09",
        "items": [
            "http:\/\/block.com\/maiores-modi-consequatur-error-accusamus-dolor-voluptatem-quo",
            "http:\/\/hammes.net\/dolor-quae-dolor-nulla-sapiente-aut-est-officiis-accusantium"
        ],
        "listCount": 2
    }
}

8.5. Filter lists delete

A `DELETE` request will delete a filter lists

8.5.1. HTTP Request

URL

DELETE api/filterlist/12 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJta2U3MzVhRThZSDVuMWxxIiwic3ViIjoiMzkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.Mc80uf07W9r44cmWK5-VETwH1nD4YTvQvHBp8zcyoY8
Content-type: application/x-www-form-urlencoded
DATA
{}

8.5.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/filterlist/12' -i -X DELETE \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJta2U3MzVhRThZSDVuMWxxIiwic3ViIjoiMzkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.Mc80uf07W9r44cmWK5-VETwH1nD4YTvQvHBp8zcyoY8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{}'

8.5.3. Response Body

Path Type Description

message

string

Result message

deleted

boolean

is deleted

8.5.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "FilterList deleted.",
    "deleted": true
}

9. Assign Filterlists to Campaigns

9.1. Get list of Filter Lists assigned to Campaign

A `GET` request with Campaign Id in url will get list of Filter Lists assigned to Campaign

9.1.1. HTTP Request

URL

GET api/campaigns/16/filterlists HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJ1OVoxUFRHamg3SlFsME5mIiwic3ViIjoiMjEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.Yg_TMfphwcM5rhZOxbEJ5X8gdaMI_KNr70WEOpop-ZA
DATA
{}

9.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/16/filterlists' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJ1OVoxUFRHamg3SlFsME5mIiwic3ViIjoiMjEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.Yg_TMfphwcM5rhZOxbEJ5X8gdaMI_KNr70WEOpop-ZA' \
    -d '{}'

9.1.3. Response Body

Path Type Description

data.*.isInclude

boolean

List is Include

data.*.filterList.id

integer

List Id

data.*.filterList.isActive

bool

on/off

data.*.filterList.userId

integer

User Id

data.*.filterList.title

string

List title

data.*.filterList.type

string

Filter list type: listDomains, listApps, listBundles, listDeviceIfas, listPublishers, listIpAdresses, listSiteAndAppIds, listUrls, listTags

data.*.filterList.isInclude

boolean

White/Black list

data.*.filterList.count

integer

Object count

data.*.filterList.createdAt

datetime

Date of creation

data.*.filterList.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

9.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": [
        {
            "isInclude": true,
            "filterList": {
                "id": 1,
                "isActive": 0,
                "userId": 21,
                "title": "Test Filter list #1",
                "type": "domain",
                "isInclude": "White",
                "count": 1,
                "createdAt": "2025-09-09",
                "updatedAt": "2025-09-09"
            }
        },
        {
            "isInclude": true,
            "filterList": {
                "id": 2,
                "isActive": 0,
                "userId": 21,
                "title": "Test Filter list #2",
                "type": "ipAdresses",
                "isInclude": "White",
                "count": 1,
                "createdAt": "2025-09-09",
                "updatedAt": "2025-09-09"
            }
        },
        {
            "isInclude": true,
            "filterList": {
                "id": 3,
                "isActive": 0,
                "userId": 21,
                "title": "Test Filter list #3",
                "type": "urls",
                "isInclude": "White",
                "count": 1,
                "createdAt": "2025-09-09",
                "updatedAt": "2025-09-09"
            }
        }
    ],
    "meta": {
        "pagination": {
            "total": 3,
            "count": 3,
            "per_page": 1000,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

9.2. Remove Filter Lists assigned to Campaign

A `DELETE` request with Campaign Id in url will remove Filter Lists assigned to Campaign

9.2.1. Request Body

Path Type Description Required

ids

array

List id to remove

+

9.2.2. HTTP Request

URL

DELETE api/campaigns/17/filterlists HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJjNDNuM1hZeDlFRHl0RlFlIiwic3ViIjoiMjIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.ANlTHx5kZ8GJFQJ5Y8l2iM9RF5O2mOJmkiK4eIVJMJU
Content-type: application/x-www-form-urlencoded
DATA
{
    "ids": [
        5
    ]
}

9.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/17/filterlists' -i -X DELETE \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTksImV4cCI6MTc1NzQzNDg5OSwibmJmIjoxNzU3NDMxMjk5LCJqdGkiOiJjNDNuM1hZeDlFRHl0RlFlIiwic3ViIjoiMjIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.ANlTHx5kZ8GJFQJ5Y8l2iM9RF5O2mOJmkiK4eIVJMJU' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "ids": [
        5
    ]
}'

9.2.4. Response Body

Path Type Description

message

string

Result message

9.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Deleted."
}

10. Optimization Rule

10.1. Rule

A `GET` request will return a optimization rules

10.1.1. HTTP Request

URL

GET api/optimization-rule HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJHekg4RWVDalJYcWJmVUZzIiwic3ViIjoiNDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.NBYKr6oNeCQxx773xPQul7VFJvDm5gDTmwRX5S6l2Ao
DATA
{}

10.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/optimization-rule' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJHekg4RWVDalJYcWJmVUZzIiwic3ViIjoiNDQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.NBYKr6oNeCQxx773xPQul7VFJvDm5gDTmwRX5S6l2Ao' \
    -d '{}'

10.1.3. Response Body

Path Type Description

data.*.id

integer

Id

data.*.userId

integer

User Id

data.*.ownerCampaignId

integer

Campaign id where it was created rule

data.*.name

string

Name

data.*.timeRange

string

type: last_day,last_3_days,last_week,last_month

data.*.then

string

type: whitelist_source,blacklist_source

data.*.targetFilterListId

integer

Filter list id

data.*.conditions

Array

Conditions

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

meta.pagination.total

integer

Pagination: total items count

meta.pagination.count

integer

Pagination: page items count

meta.pagination.per_page

integer

Pagination: items per page

meta.pagination.current_page

integer

Pagination: current page number

meta.pagination.total_pages

integer

Pagination: total pages count

meta.pagination.links

array

Pagination: array links

10.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": [
        {
            "id": 4,
            "userId": 44,
            "ownerCampaignId": 0,
            "name": "TEST Rule#1",
            "timeRange": "last_day",
            "then": "whitelist_source",
            "targetFilterListId": 1,
            "conditions": [],
            "createdAt": "2025-09-09T15:21:41.000000Z",
            "updatedAt": "2025-09-09T15:21:41.000000Z"
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 15,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

10.2. Get rule by ID

A `GET` request will return a optimization rule

10.2.1. HTTP Request

URL

GET api/optimization-rule/5 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJpSm9aOFZFVkhzRW04blRsIiwic3ViIjoiNDUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.eKwOwyrE9kNzktAYrbDyY_evVG7yeOpmIwy9gsm4T6I
DATA
{}

10.2.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/optimization-rule/5' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJpSm9aOFZFVkhzRW04blRsIiwic3ViIjoiNDUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.eKwOwyrE9kNzktAYrbDyY_evVG7yeOpmIwy9gsm4T6I' \
    -d '{}'

10.2.3. Response Body

Path Type Description

data.id

integer

Id

data.userId

integer

User Id

data.ownerCampaignId

integer

Campaign id where it was created rule

data.name

string

Name

data.timeRange

string

type: last_day,last_3_days,last_week,last_month

data.then

string

type: whitelist_source,blacklist_source

data.targetFilterListId

integer

Filter list id

data.conditions

Array

Conditions

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

10.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 5,
        "userId": 45,
        "ownerCampaignId": 0,
        "name": "TEST Rule#1",
        "timeRange": "last_week",
        "then": "blacklist_source",
        "targetFilterListId": 1,
        "conditions": [],
        "createdAt": "2025-09-09T15:21:41.000000Z",
        "updatedAt": "2025-09-09T15:21:41.000000Z"
    }
}

10.3. Create a rule

A `POST` request will return a optimization rule

10.3.1. Request Body

Path Type Description Required

name

string

Name

+

timeRange

string

type: (last_day,last_3_days,last_week,last_month)

+

then

string

type: (whitelist_source,blacklist_source)

+

targetFilterListId

integer

Filter list id

+

conditions.*.condition

string

Condition type: (when,and,or) first condition must be - when

+

conditions.*.action

string

Actions type: (ctr,clicks,winrate,impressions,dspSpend)

+

conditions.*.comparison

string

Comparison type: (>,<,=)

+

conditions.*.value

string

Value

+

10.3.2. HTTP Request

URL

POST api/optimization-rule HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiI5RUdiOWxMbmR6b25GTmFlIiwic3ViIjoiNDYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.R1s5NkXRz7x0TQLGTaAAiy0oyhgAPv9aO25HrIaOYQI
DATA
{
    "name": "Test",
    "timeRange": "last_day",
    "then": "blacklist_source",
    "targetFilterListId": 13,
    "conditions": [
        {
            "condition": "when",
            "action": "dspPrice",
            "comparison": ">",
            "value": "0.5"
        }
    ]
}

10.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/optimization-rule' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiI5RUdiOWxMbmR6b25GTmFlIiwic3ViIjoiNDYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.R1s5NkXRz7x0TQLGTaAAiy0oyhgAPv9aO25HrIaOYQI' \
    -d '{
    "name": "Test",
    "timeRange": "last_day",
    "then": "blacklist_source",
    "targetFilterListId": 13,
    "conditions": [
        {
            "condition": "when",
            "action": "dspPrice",
            "comparison": ">",
            "value": "0.5"
        }
    ]
}'

10.3.4. Response Body

Path Type Description

data.id

integer

Id

data.userId

integer

User Id

data.ownerCampaignId

integer

Campaign id where it was created rule

data.name

string

Name

data.timeRange

string

type: (last_day,last_3_days,last_week,last_month)

data.then

string

type: (whitelist_source,blacklist_source)

data.targetFilterListId

integer

Filter list id

data.conditions

Array

Conditions

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

10.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 6,
        "userId": 0,
        "ownerCampaignId": 0,
        "name": "Test",
        "timeRange": "last_day",
        "then": "blacklist_source",
        "targetFilterListId": 13,
        "conditions": [],
        "createdAt": "2025-09-09T15:21:41.000000Z",
        "updatedAt": "2025-09-09T15:21:41.000000Z"
    }
}

10.4. Rule update

A `PATCH` request will return a optimization rule

10.4.1. Request Body

Path Type Description Required

name

string

Name

+

timeRange

string

type: (last_day,last_3_days,last_week,last_month)

+

then

string

type: (whitelist_source,blacklist_source)

+

targetFilterListId

integer

Filter list id

+

conditions.*.condition

string

Condition type: (when,and,or) first condition must be - when

+

conditions.*.action

string

Actions type: (ctr,clicks,winrate,impressions,dspSpend)

+

conditions.*.comparison

string

Comparison type: (>,<,=)

+

conditions.*.value

string

Value

+

10.4.2. HTTP Request

URL

PUT api/optimization-rule/7 HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJSSlJ4aWUwaVFJdm1OMmw2Iiwic3ViIjoiNDciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.ftTpcdKKuqBEX2u3SRoGSZjOaukb5DleegA40nFbylk
DATA
{
    "name": "Test#2",
    "timeRange": "last_week",
    "then": "whitelist_source",
    "targetFilterListId": 14,
    "conditions": [
        {
            "condition": "when",
            "action": "dspPrice",
            "comparison": "<",
            "value": "1"
        }
    ]
}

10.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/optimization-rule/7' -i -X PUT \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJSSlJ4aWUwaVFJdm1OMmw2Iiwic3ViIjoiNDciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.ftTpcdKKuqBEX2u3SRoGSZjOaukb5DleegA40nFbylk' \
    -d '{
    "name": "Test#2",
    "timeRange": "last_week",
    "then": "whitelist_source",
    "targetFilterListId": 14,
    "conditions": [
        {
            "condition": "when",
            "action": "dspPrice",
            "comparison": "<",
            "value": "1"
        }
    ]
}'

10.4.4. Response Body

Path Type Description

data.id

integer

Id

data.userId

integer

User Id

data.ownerCampaignId

integer

Campaign id where it was created rule

data.name

string

Name

data.timeRange

string

type: (last_day,last_3_days,last_week,last_month)

data.then

string

type: (whitelist_source,blacklist_source)

data.targetFilterListId

integer

Filter list id

data.conditions

Array

Conditions

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

10.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 7,
        "userId": 47,
        "ownerCampaignId": 0,
        "name": "Test#2",
        "timeRange": "last_week",
        "then": "whitelist_source",
        "targetFilterListId": 14,
        "conditions": [],
        "createdAt": "2025-09-09T15:21:41.000000Z",
        "updatedAt": "2025-09-09T15:21:41.000000Z"
    }
}

10.5. Remove Rule assigned to Campaign

A `DELETE` request will delete a Optimization rule relation

10.5.1. HTTP Request

URL

DELETE api/optimization-rule/8 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJVdVhmSUQ4bk8xSGFrRnQxIiwic3ViIjoiNDgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.XtVbHfWcdYuBB75OHGs2uZwFQtHyTmcy5K7iiciFucc
Content-type: application/x-www-form-urlencoded
DATA
{}

10.5.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/optimization-rule/8' -i -X DELETE \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEzMDEsImV4cCI6MTc1NzQzNDkwMSwibmJmIjoxNzU3NDMxMzAxLCJqdGkiOiJVdVhmSUQ4bk8xSGFrRnQxIiwic3ViIjoiNDgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.XtVbHfWcdYuBB75OHGs2uZwFQtHyTmcy5K7iiciFucc' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{}'

10.5.3. Response Body

Path Type Description

deleted

boolean

is deleted

10.5.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "deleted": true
}

11. Assign Optimization rules to Campaigns

11.1. Get Rule assigned to Campaign

A `GET` request will return a optimization rule relation

11.1.1. HTTP Request

URL

GET api/campaign/9/optimization-rule-relation HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJwZHF0aW1CVllhS3lBeUdzIiwic3ViIjoiMTQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.eK2v0BaPe3FsJE37PhbkFeit1wB0UA8xkj7TB-5dt64
DATA
{}

11.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaign/9/optimization-rule-relation' -i -X GET \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJwZHF0aW1CVllhS3lBeUdzIiwic3ViIjoiMTQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.eK2v0BaPe3FsJE37PhbkFeit1wB0UA8xkj7TB-5dt64' \
    -d '{}'

11.1.3. Response Body

Path Type Description

data.id

integer

Id

data.userId

integer

User Id

data.ownerCampaignId

integer

Campaign id where it was created rule

data.name

string

Name

data.timeRange

string

last_day

last_3_days

last_week

last_month

data.then

string

whitelist_source

blacklist_source

data.targetFilterListId

integer

Filter list id

data.conditions.*.condition

string

Condition (when

and

or) first condition must be - when

data.conditions.*.action

string

Actions (ctr

clicks

winrate

impressions

dspSpend)

data.conditions.*.comparison

string

Comparison types (>

<

=)

data.conditions.*.value

string

Value

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

11.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 1,
        "userId": 14,
        "ownerCampaignId": 9,
        "name": "TEST Rule#1",
        "timeRange": "last_month",
        "then": "blacklist_source",
        "targetFilterListId": 1,
        "conditions": [
            {
                "condition": "or",
                "action": "clicks",
                "comparison": "=",
                "value": 5000
            }
        ],
        "createdAt": "2025-09-09T15:21:38.000000Z",
        "updatedAt": "2025-09-09T15:21:38.000000Z"
    }
}

11.2. Replace Rule assigned to Campaign

A `POST` request will return a optimization rule relation

11.2.1. Request Body

Path Type Description Required

campaignId

integer

campaignId

+

ruleId

integer

ruleId

+

11.2.2. HTTP Request

URL

POST api/campaign/optimization-rule-relation HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJyNGxvZ3hmQ2VDM1ZuZWFFIiwic3ViIjoiMTUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.1yKMjL1T8QtXVKi3yi_hY1Q-xjcsVWCahZjOrXAlSX4
DATA
{
    "campaignId": 10,
    "ruleId": 2
}

11.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaign/optimization-rule-relation' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJyNGxvZ3hmQ2VDM1ZuZWFFIiwic3ViIjoiMTUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.1yKMjL1T8QtXVKi3yi_hY1Q-xjcsVWCahZjOrXAlSX4' \
    -d '{
    "campaignId": 10,
    "ruleId": 2
}'

11.2.4. Response Body

Path Type Description

campaignId

integer

campaignId

ruleId

integer

ruleId

11.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "campaignId": 0,
    "ruleId": 2
}

11.3. Remove Rule assigned to Campaign

A `DELETE` request will delete a Optimization rule relation

11.3.1. HTTP Request

URL

DELETE api/campaign/11/optimization-rule-relation HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJ1Q1hlcTFHRDVTZU1Nam1DIiwic3ViIjoiMTYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.O6Im_6daRSapu2TFDBZJERxx2qDr5y4VJeHIyNNPtME
Content-type: application/x-www-form-urlencoded
DATA
{}

11.3.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaign/11/optimization-rule-relation' -i -X DELETE \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NTc0MzEyOTgsImV4cCI6MTc1NzQzNDg5OCwibmJmIjoxNzU3NDMxMjk4LCJqdGkiOiJ1Q1hlcTFHRDVTZU1Nam1DIiwic3ViIjoiMTYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.O6Im_6daRSapu2TFDBZJERxx2qDr5y4VJeHIyNNPtME' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{}'

11.3.3. Response Body

Path Type Description

deleted

boolean

is deleted

11.3.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "deleted": true
}

Postman collection

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.connectionTypes
  • wifi

  • ethernet

  • cellular_all

  • cellular_all

  • cellular_3g

  • cellular_4g

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',

  • 'iOS',

  • 'iOS 10.0',

  • 'iOS 10.1',

  • 'iOS 10.2',

  • 'iOS 10.3',

  • 'iOS 11.0',

  • 'iOS 11.1',

  • 'iOS 11.2',

  • 'iOS 11.3',

  • 'iOS 12.0',

  • 'iOS 12.1',

  • 'iOS 12.2',

  • 'iOS 12.3',

  • 'iOS 12.4',

  • 'iOS 13.1',

  • 'iOS 13.2',

  • 'iOS 13.3',

  • 'iOS 13.4',

  • 'iOS 13.5',

  • 'iOS 13.6',

  • 'iOS 14.0',

  • 'iOS 14.1',

  • 'iOS 14.2',

  • 'iOS 14.3',

  • 'iOS 14.4',

  • 'iOS 14.5',

  • 'iOS 14.6',

  • 'iOS 14.7',

  • 'iOS 14.8',

  • 'iOS 15.0',

  • 'iOS 15.1',

  • 'iOS 15.2',

  • 'iOS 15.3',

  • 'iOS 15.4',

  • 'iOS 15.5',

  • 'iOS 15.6',

  • 'iOS 15.7',

  • 'iOS 16.0',

  • 'iOS 16.1',

  • 'iOS 16.2',

  • 'iOS 16.3',

  • 'iOS 16.4',

  • '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',

  • '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',