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.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMvYXBpL3VzZXJzL2xvZ2luIiwiaWF0IjoxNzcwOTE0MDg5LCJleHAiOjE3NzA5MTc2ODksIm5iZiI6MTc3MDkxNDA4OSwianRpIjoiQ0FHSFpzUkdmdkZiWlNBaCIsInN1YiI6IjE4IiwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyJ9.ZRpt78cY1lptE47vdhTz1kMrC5V1KCqwYgMfnObNqTI",
    "token_type": "bearer",
    "expires_in": "60"
}

1.2. Log out

A `POST` request will return result logout

1.2.1. HTTP Request

URL

POST api/logout HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiJ6VnIwVzB0cENZZzFDUE44Iiwic3ViIjoiMTkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.6NmAdLLtsu6GazoM6ahc_o3y7nuAoqxcW843FXdYoYI
DATA
{}

1.2.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/logout' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiJ6VnIwVzB0cENZZzFDUE44Iiwic3ViIjoiMTkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.6NmAdLLtsu6GazoM6ahc_o3y7nuAoqxcW843FXdYoYI' \
    -d '{}'

1.2.3. Response Body

Path Type Description

message

string

Result message

1.2.4. HTTP Response

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

2. Assign Time Targeting to Campaigns

2.1. Get Campaign Time Targeting

A `GET` request with Campaign Id in url will return time targeting mapped to the campaign.

2.1.1. HTTP Request

URL

GET api/campaigns/42/time-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

2.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/42/time-targeting' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

2.1.3. Response Body

Path Type Description

data.*.dayOfWeek

integer

Day of week (0..6)

data.*.hour

integer

Hour of day (0..23)

2.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "dayOfWeek": 0,
            "hour": 0
        },
        {
            "dayOfWeek": 6,
            "hour": 23
        }
    ]
}

2.2. Replace Campaign Time Targeting

A `POST` request replaces all time targeting settings for the campaign. Provide array of day/hour combinations (dayOfWeek: 0-6, hour: 0-23). Optional `timeZone` offset for conversion. All existing time targeting will be removed and replaced with new data.

2.2.1. Request Body

Path Type Description Required

items.*.dayOfWeek

integer

Day of week (0..6)

+

items.*.hour

integer

Hour of day (0..23)

+

timeZone

float

Timezone offset for conversion of day/hour to internal timestamps

2.2.2. HTTP Request

URL

POST api/campaigns/43/time-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "items": [
        {
            "dayOfWeek": 3,
            "hour": 12
        }
    ],
    "timeZone": 0
}

2.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/43/time-targeting' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "items": [
        {
            "dayOfWeek": 3,
            "hour": 12
        }
    ],
    "timeZone": 0
}'

2.2.4. Response Body

Path Type Description

message

string

Result message

2.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Replaced."
}

2.3. Append Campaign Time Targeting

A `PATCH` request with Campaign Id in url will append time targeting mapped to the campaign.

2.3.1. Request Body

Path Type Description Required

items.*.dayOfWeek

integer

Day of week (0..6)

+

items.*.hour

integer

Hour of day (0..23)

+

2.3.2. HTTP Request

URL

PATCH api/campaigns/44/time-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
    "items": [
        {
            "dayOfWeek": 3,
            "hour": 12
        }
    ]
}

2.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/44/time-targeting' -i -X PATCH \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{
    "items": [
        {
            "dayOfWeek": 3,
            "hour": 12
        }
    ]
}'

2.3.4. Response Body

Path Type Description

message

string

Result message

2.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Appended."
}

2.4. Delete Campaign Time Targeting

A `DELETE` request with Campaign Id in url will remove time targeting mapped to the campaign.

2.4.1. Request Body

Path Type Description Required

items.*.dayOfWeek

integer

Day of week (0..6). If empty, deletes all items.

items.*.hour

integer

Hour of day (0..23). If empty, deletes all items.

2.4.2. HTTP Request

URL

DELETE api/campaigns/45/time-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "items": [
        {
            "dayOfWeek": 0,
            "hour": 0
        }
    ]
}

2.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/45/time-targeting' -i -X DELETE \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "items": [
        {
            "dayOfWeek": 0,
            "hour": 0
        }
    ]
}'

2.4.4. Response Body

Path Type Description

message

string

Result message

2.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Deleted."
}

3. Statistic

3.1. Statistic

A `POST` request will return statistic.

3.1.1. Request Body

Path Type Description Required

timezone

integer

Timezone
"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.*

string

Group by field name

+

agregatedFields.*

string

Agregated field name

+

orderField

string

Sorting field

orderDir

string

Sort order: "asc" or "desc"

page

integer

Pagination: page number

rowsOnPage

integer

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

3.1.2. HTTP Request

URL

POST api/statistic HTTP/1.1

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

3.1.3. Curl request

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

3.1.4. Response Body

Path Type Description

status

string

Report status

data.*.YMD

date

Date

data.*.campaignId

integer

Campaign id

data.*.creativeId

integer

Creative id

data.*.campaignId_dict

string

Campaign name

data.*.creativeId_dict

string

Creative name

data.*.bids

integer

Bids

data.*.wins

integer

Wins

data.*.impressions

integer

Impressions

data.*.clicks

integer

Clicks

data.*.dspSpend

float

Spend, $

data.*.ctr

float

CTR, %

data.*.winrate

float

Win Rate, %

totals.YMD

date

Date

totals.campaignId

integer

Campaign id

totals.creativeId

integer

Creative id

totals.campaignId_dict

string

Campaign name

totals.creativeId_dict

string

Creative name

totals.bids

integer

Bids

totals.wins

integer

Wins

totals.impressions

integer

Impressions

totals.clicks

integer

Clicks

totals.dspSpend

float

Spend, $

totals.ctr

float

CTR, %

totals.winrate

float

Win Rate, %

pagination.page

integer

Pagination: current page number

pagination.per_page

integer

Pagination: items per page

pagination.total

integer

Pagination: total items count

3.1.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "status": "success",
    "data": [
        {
            "YMD": "2026-02-10",
            "campaignId": 1,
            "creativeId": 11,
            "campaignId_dict": "UA | Pay Master | US | iOS | CPC | #1",
            "creativeId_dict": "CR | Idle Empire | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 277163,
            "wins": 52974,
            "impressions": 52963,
            "clicks": 1711,
            "dspSpend": 229.50605086,
            "ctr": 3.230557,
            "winrate": 19.112941
        },
        {
            "YMD": "2026-02-10",
            "campaignId": 1,
            "creativeId": 12,
            "campaignId_dict": "UA | Pay Master | US | iOS | CPC | #1",
            "creativeId_dict": "CR | Podcast Hub | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 717626,
            "wins": 181133,
            "impressions": 167331,
            "clicks": 932,
            "dspSpend": 617.58726277,
            "ctr": 0.55698,
            "winrate": 25.240585
        },
        {
            "YMD": "2026-02-10",
            "campaignId": 2,
            "creativeId": 11,
            "campaignId_dict": "UA | Battery Saver Pro | GB | iOS | CPC | #2",
            "creativeId_dict": "CR | Idle Empire | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 1044356,
            "wins": 298382,
            "impressions": 279435,
            "clicks": 8376,
            "dspSpend": 634.72905776,
            "ctr": 2.997477,
            "winrate": 28.570909
        },
        {
            "YMD": "2026-02-10",
            "campaignId": 2,
            "creativeId": 12,
            "campaignId_dict": "UA | Battery Saver Pro | GB | iOS | CPC | #2",
            "creativeId_dict": "CR | Podcast Hub | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 844484,
            "wins": 27785,
            "impressions": 27596,
            "clicks": 915,
            "dspSpend": 133.44763296,
            "ctr": 3.315698,
            "winrate": 3.290175
        },
        {
            "YMD": "2026-02-11",
            "campaignId": 1,
            "creativeId": 11,
            "campaignId_dict": "UA | Pay Master | US | iOS | CPC | #1",
            "creativeId_dict": "CR | Idle Empire | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 202742,
            "wins": 25300,
            "impressions": 25052,
            "clicks": 488,
            "dspSpend": 19.95000989,
            "ctr": 1.947948,
            "winrate": 12.478914
        },
        {
            "YMD": "2026-02-11",
            "campaignId": 1,
            "creativeId": 12,
            "campaignId_dict": "UA | Pay Master | US | iOS | CPC | #1",
            "creativeId_dict": "CR | Podcast Hub | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 1606372,
            "wins": 135383,
            "impressions": 135248,
            "clicks": 1686,
            "dspSpend": 146.85579485,
            "ctr": 1.246599,
            "winrate": 8.427873
        },
        {
            "YMD": "2026-02-11",
            "campaignId": 2,
            "creativeId": 11,
            "campaignId_dict": "UA | Battery Saver Pro | GB | iOS | CPC | #2",
            "creativeId_dict": "CR | Idle Empire | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 717344,
            "wins": 53167,
            "impressions": 50461,
            "clicks": 671,
            "dspSpend": 72.42737975,
            "ctr": 1.32974,
            "winrate": 7.411646
        },
        {
            "YMD": "2026-02-11",
            "campaignId": 2,
            "creativeId": 12,
            "campaignId_dict": "UA | Battery Saver Pro | GB | iOS | CPC | #2",
            "creativeId_dict": "CR | Podcast Hub | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 1268777,
            "wins": 122665,
            "impressions": 120997,
            "clicks": 1701,
            "dspSpend": 318.48225355,
            "ctr": 1.40582,
            "winrate": 9.667972
        },
        {
            "YMD": "2026-02-12",
            "campaignId": 1,
            "creativeId": 11,
            "campaignId_dict": "UA | Pay Master | US | iOS | CPC | #1",
            "creativeId_dict": "CR | Idle Empire | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 1217798,
            "wins": 96051,
            "impressions": 92728,
            "clicks": 1091,
            "dspSpend": 403.20304235,
            "ctr": 1.176559,
            "winrate": 7.887269
        },
        {
            "YMD": "2026-02-12",
            "campaignId": 1,
            "creativeId": 12,
            "campaignId_dict": "UA | Pay Master | US | iOS | CPC | #1",
            "creativeId_dict": "CR | Podcast Hub | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 1320344,
            "wins": 130795,
            "impressions": 127185,
            "clicks": 3133,
            "dspSpend": 588.41249955,
            "ctr": 2.463341,
            "winrate": 9.906131
        },
        {
            "YMD": "2026-02-12",
            "campaignId": 2,
            "creativeId": 11,
            "campaignId_dict": "UA | Battery Saver Pro | GB | iOS | CPC | #2",
            "creativeId_dict": "CR | Idle Empire | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 861026,
            "wins": 236452,
            "impressions": 218080,
            "clicks": 2536,
            "dspSpend": 1071.76310128,
            "ctr": 1.162876,
            "winrate": 27.461656
        },
        {
            "YMD": "2026-02-12",
            "campaignId": 2,
            "creativeId": 12,
            "campaignId_dict": "UA | Battery Saver Pro | GB | iOS | CPC | #2",
            "creativeId_dict": "CR | Podcast Hub | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 888304,
            "wins": 204590,
            "impressions": 194892,
            "clicks": 5587,
            "dspSpend": 769.92591319,
            "ctr": 2.866716,
            "winrate": 23.03153
        }
    ],
    "totals": {
        "YMD": "",
        "campaignId": 0,
        "creativeId": 0,
        "campaignId_dict": "",
        "creativeId_dict": "",
        "bids": 10966336,
        "wins": 1564677,
        "impressions": 1491968,
        "clicks": 28827,
        "dspSpend": 5006.28999876,
        "ctr": 1.9750259166666666,
        "winrate": 15.207300083333337
    },
    "pagination": {
        "page": 1,
        "per_page": 25,
        "total": 12
    }
}

3.2. Filtering statistic

A `POST` request will return statistic.

3.2.1. Request Body

Path Type Description Required

timezone

integer

Timezone
"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.*

string

Group by field name

+

agregatedFields.*

string

Agregated field name

+

filter.campaignId

integer

Filtering by Campaign Id(cid)

filter.creativeId

integer

Filtering by Creative Id(bid)

orderField

string

Sorting field

orderDir

string

Sort order: "asc" or "desc"

page

integer

Pagination: page number

rowsOnPage

integer

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

3.2.2. HTTP Request

URL

POST api/statistic HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTksImV4cCI6MTc3MDkxNzY5OSwibmJmIjoxNzcwOTE0MDk5LCJqdGkiOiJqNG9veEdIYU1FZWNPUFVDIiwic3ViIjoiMTA3IiwicHJ2IjoiMjNiZDVjODk0OWY2MDBhZGIzOWU3MDFjNDAwODcyZGI3YTU5NzZmNyJ9.eDDIabNSwhvZBa29pxakYAGbEcEq121M_Z-RK4OEybg
DATA
{
    "timezone": "UTC",
    "from": "2026-02-10",
    "to": "2026-02-12",
    "groupBy": [
        "YMD",
        "campaignId",
        "creativeId"
    ],
    "agregatedFields": [
        "bids",
        "wins",
        "impressions",
        "clicks",
        "dspSpend",
        "winrate",
        "ctr"
    ],
    "filter": {
        "campaignId": 1,
        "creativeId": 10
    },
    "orderField": "YMD",
    "orderDir": "desc",
    "page": 1,
    "rowsOnPage": 25
}

3.2.3. Curl request

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

3.2.4. Response Body

Path Type Description

status

string

Report status

data.*.YMD

date

Date

data.*.campaignId

integer

Campaign id

data.*.creativeId

integer

Creative id

data.*.campaignId_dict

string

Campaign name

data.*.creativeId_dict

string

Creative name

data.*.bids

integer

Bids

data.*.wins

integer

Wins

data.*.impressions

integer

Impressions

data.*.clicks

integer

Clicks

data.*.dspSpend

float

Spend, $

data.*.ctr

float

CTR, %

data.*.winrate

float

Win Rate, %

totals.YMD

date

Date

totals.campaignId

integer

Campaign id

totals.creativeId

integer

Creative id

totals.campaignId_dict

string

Campaign name

totals.creativeId_dict

string

Creative name

totals.bids

integer

Bids

totals.wins

integer

Wins

totals.impressions

integer

Impressions

totals.clicks

integer

Clicks

totals.dspSpend

float

Spend, $

totals.ctr

float

CTR, %

totals.winrate

float

Win Rate, %

pagination.page

integer

Pagination: current page number

pagination.per_page

integer

Pagination: items per page

pagination.total

integer

Pagination: total items count

3.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "status": "success",
    "data": [
        {
            "YMD": "2026-02-10",
            "campaignId": 1,
            "creativeId": 11,
            "campaignId_dict": "UA | Photo Editor Pro | US | iOS | CPC | #1",
            "creativeId_dict": "CR | Call Recorder | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 1305997,
            "wins": 304453,
            "impressions": 293219,
            "clicks": 5968,
            "dspSpend": 404.36160942,
            "ctr": 2.035339,
            "winrate": 23.311922
        },
        {
            "YMD": "2026-02-10",
            "campaignId": 1,
            "creativeId": 12,
            "campaignId_dict": "UA | Photo Editor Pro | US | iOS | CPC | #1",
            "creativeId_dict": "CR | Coupon Hunter | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 294204,
            "wins": 26059,
            "impressions": 25947,
            "clicks": 486,
            "dspSpend": 74.02564933,
            "ctr": 1.873049,
            "winrate": 8.857459
        },
        {
            "YMD": "2026-02-10",
            "campaignId": 2,
            "creativeId": 11,
            "campaignId_dict": "UA | Word Connect | GB | iOS | CPC | #2",
            "creativeId_dict": "CR | Call Recorder | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 1061797,
            "wins": 164070,
            "impressions": 159476,
            "clicks": 3565,
            "dspSpend": 204.24649486,
            "ctr": 2.235446,
            "winrate": 15.452106
        },
        {
            "YMD": "2026-02-10",
            "campaignId": 2,
            "creativeId": 12,
            "campaignId_dict": "UA | Word Connect | GB | iOS | CPC | #2",
            "creativeId_dict": "CR | Coupon Hunter | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 1939908,
            "wins": 408756,
            "impressions": 394123,
            "clicks": 10995,
            "dspSpend": 1011.83670738,
            "ctr": 2.789738,
            "winrate": 21.070896
        },
        {
            "YMD": "2026-02-11",
            "campaignId": 1,
            "creativeId": 11,
            "campaignId_dict": "UA | Photo Editor Pro | US | iOS | CPC | #1",
            "creativeId_dict": "CR | Call Recorder | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 1369008,
            "wins": 118768,
            "impressions": 114706,
            "clicks": 2697,
            "dspSpend": 424.38753821,
            "ctr": 2.351228,
            "winrate": 8.675479
        },
        {
            "YMD": "2026-02-11",
            "campaignId": 1,
            "creativeId": 12,
            "campaignId_dict": "UA | Photo Editor Pro | US | iOS | CPC | #1",
            "creativeId_dict": "CR | Coupon Hunter | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 939225,
            "wins": 98762,
            "impressions": 92678,
            "clicks": 1633,
            "dspSpend": 113.11868897,
            "ctr": 1.762015,
            "winrate": 10.515265
        },
        {
            "YMD": "2026-02-11",
            "campaignId": 2,
            "creativeId": 11,
            "campaignId_dict": "UA | Word Connect | GB | iOS | CPC | #2",
            "creativeId_dict": "CR | Call Recorder | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 1756341,
            "wins": 493177,
            "impressions": 459937,
            "clicks": 6753,
            "dspSpend": 1902.66094248,
            "ctr": 1.468245,
            "winrate": 28.079798
        },
        {
            "YMD": "2026-02-11",
            "campaignId": 2,
            "creativeId": 12,
            "campaignId_dict": "UA | Word Connect | GB | iOS | CPC | #2",
            "creativeId_dict": "CR | Coupon Hunter | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 1828510,
            "wins": 488049,
            "impressions": 471455,
            "clicks": 5450,
            "dspSpend": 1297.28292239,
            "ctr": 1.155996,
            "winrate": 26.691076
        },
        {
            "YMD": "2026-02-12",
            "campaignId": 1,
            "creativeId": 11,
            "campaignId_dict": "UA | Photo Editor Pro | US | iOS | CPC | #1",
            "creativeId_dict": "CR | Call Recorder | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 1212720,
            "wins": 282091,
            "impressions": 274700,
            "clicks": 2205,
            "dspSpend": 1055.0993505,
            "ctr": 0.802694,
            "winrate": 23.261017
        },
        {
            "YMD": "2026-02-12",
            "campaignId": 1,
            "creativeId": 12,
            "campaignId_dict": "UA | Photo Editor Pro | US | iOS | CPC | #1",
            "creativeId_dict": "CR | Coupon Hunter | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 405105,
            "wins": 13732,
            "impressions": 13490,
            "clicks": 341,
            "dspSpend": 10.01136068,
            "ctr": 2.527798,
            "winrate": 3.389738
        },
        {
            "YMD": "2026-02-12",
            "campaignId": 2,
            "creativeId": 11,
            "campaignId_dict": "UA | Word Connect | GB | iOS | CPC | #2",
            "creativeId_dict": "CR | Call Recorder | Video 1080x1920 15s | iOS | V1 | #11",
            "bids": 1702464,
            "wins": 426224,
            "impressions": 400693,
            "clicks": 11362,
            "dspSpend": 463.21673503,
            "ctr": 2.835587,
            "winrate": 25.035713
        },
        {
            "YMD": "2026-02-12",
            "campaignId": 2,
            "creativeId": 12,
            "campaignId_dict": "UA | Word Connect | GB | iOS | CPC | #2",
            "creativeId_dict": "CR | Coupon Hunter | Video 1920x1080 30s | iOS | V2 | #12",
            "bids": 1448135,
            "wins": 149187,
            "impressions": 143727,
            "clicks": 4967,
            "dspSpend": 558.98736021,
            "ctr": 3.455857,
            "winrate": 10.302009
        }
    ],
    "totals": {
        "YMD": "",
        "campaignId": 0,
        "creativeId": 0,
        "campaignId_dict": "",
        "creativeId_dict": "",
        "bids": 15263414,
        "wins": 2973328,
        "impressions": 2844151,
        "clicks": 56422,
        "dspSpend": 7519.235359459998,
        "ctr": 2.107749333333333,
        "winrate": 17.053539833333332
    },
    "pagination": {
        "page": 1,
        "per_page": 25,
        "total": 12
    }
}

4. Agency

4.1. Deposit to advert

A `POST` request

4.1.1. Request Body

Path Type Description Required

userId

integer

user id

+

transactionAmount

integer

transaction amount

+

4.1.2. HTTP Request

URL

POST api/deposit-agency-user HTTP/1.1

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

4.1.3. Curl request

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

4.1.4. Response Body

Path Type Description

status

string

Result status

balance

float

balance

4.1.5. HTTP Response

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

4.2. Withdraw to advert

A `POST` request

4.2.1. Request Body

Path Type Description Required

userId

integer

user id

+

transactionAmount

integer

transaction amount

+

4.2.2. HTTP Request

URL

POST api/withdraw-agency-user HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODgsImV4cCI6MTc3MDkxNzY4OCwibmJmIjoxNzcwOTE0MDg4LCJqdGkiOiI0ZTI3OFhVeFNUNjZKU3dwIiwic3ViIjoiMyIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.A4KvZbP4OXC5RcPjrhbzN2Yi-d3V45ghwbOxXDWBz2k
DATA
{
    "userId": 4,
    "transactionAmount": 10
}

4.2.3. Curl request

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

4.2.4. Response Body

Path Type Description

status

string

Result status

balance

float

balance

4.2.5. HTTP Response

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

4.3. User list with campaigns

A `GET` request

4.3.1. HTTP Request

URL

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

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODgsImV4cCI6MTc3MDkxNzY4OCwibmJmIjoxNzcwOTE0MDg4LCJqdGkiOiJrdUxrZ1NEeU1CSTZXQXdjIiwic3ViIjoiNSIsInBydiI6IjIzYmQ1Yzg5NDlmNjAwYWRiMzllNzAxYzQwMDg3MmRiN2E1OTc2ZjcifQ.6MIGtwSBcLg3f87NCoWoX3I4gWyNUnjoighERPyjVyE
DATA
{
    "where": "userId;5"
}

4.3.2. Curl request

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

4.3.3. Response Body

Path Type Description

data.*.id

integer

user id

data.*.email

string

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

string

Connection type (wifi, ethernet, cellular_all, cellular_3g, cellular_4g, cellular_5g)

data..campaigns..clickedInventoryCategories

array

Сlicked Inventory Categories

data..campaigns..deviceCarrier

array

Targeting: List of network operators.

data..campaigns..deviceCarrierIsInclude

boolean

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

data..campaigns..OS

array

Targeting: The operating system of user's device

data..campaigns..OSIsInclude

boolean

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

data..campaigns..browser

array

Targeting: The user's browsers list

data..campaigns..browserIsInclude

boolean

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

data..campaigns..deviceLanguage

array

Targeting: The languages of user's browser

data..campaigns..deviceLanguageIsInclude

boolean

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

data..campaigns..spentDailyLimit

integer

Daily spent limit

data..campaigns..spentTotalLimit

integer

Total spent limit

data..campaigns..impressionsDailyLimit

integer

Daily impressions limit

data..campaigns..impressionsTotalLimit

integer

Total impressions limit

data..campaigns..clicksDailyLimit

integer

Daily clicks limit

data..campaigns..clicksTotalLimit

integer

Total clicks limit

data..campaigns..budgetUse

integer

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

data..campaigns..allSources

boolean

Inventory: Use all SSP endpoints

data..campaigns..cpm

float

cpm

data..campaigns..adaptiveCpm

boolean

adaptiveCpm

data..campaigns..useCpm

boolean

use cpm

data..campaigns..googleAnalyticsTrackingCode

string

Google Analytics tracking code - PUSH Campaigns

data..campaigns..dynamicTargeting

array

SmartCPC: Dynamic targeting - only for CPC Pricing model

data..campaigns..subscriptionAge

array

Subscription Age - only for CPC Pricing model

data..campaigns..frequencyType

string

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

data..campaigns..frequency

boolean

Frequency on/off.

data..campaigns..frequencyCap

integer

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

data..campaigns..frequencyPeriod

integer

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

data..campaigns..extendedStatus

string

Campaign extended status

data..campaigns..createdAt

datetime

Date of creation

data..campaigns..updatedAt

datetime

Date of last modification

data..campaigns..deletedAt

datetime

Date of deletion

data..campaigns..counters.bidResDailyCounter

integer

Bid daily counter

data..campaigns..counters.winsDailyCounter

integer

Wins daily counter

data..campaigns..counters.conversionDailyCounter

integer

Conversion daily counter

data..campaigns..counters.clicksDailyCounter

integer

Click daily counter

data..campaigns..counters.impressionsTotalCounter

integer

Impressions total counter

data..campaigns..counters.impressionsDailyCounter

integer

Impressions daily counter

data..campaigns..counters.winRate

integer

Winrate counter

data..campaigns..counters.spentDailyCounter

integer

Spent daily counter

data..campaigns..counters.spentTotalCounter

integer

Spent total counter

data..campaigns..pretarget

int

pretarget

data..campaigns..pretargets

array

pretargets

data..campaigns..audiences

array

audiences

meta.pagination.total

integer

Pagination: total items count

meta.pagination.count

integer

Pagination: page items count

meta.pagination.per_page

integer

Pagination: items per page

meta.pagination.current_page

integer

Pagination: current page number

meta.pagination.total_pages

integer

Pagination: total pages count

meta.pagination.links

string

Pagination: url links

4.3.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
{
    "data": [
        {
            "id": 5,
            "email": null,
            "firstName": "Lucious",
            "lastName": "Prosacco",
            "balance": null,
            "bidResTotalCounter": null,
            "bidResDailyCounter": null,
            "winsTotalCounter": null,
            "winsDailyCounter": null,
            "impressionsTotalCounter": null,
            "impressionsDailyCounter": null,
            "clicksTotalCounter": null,
            "clicksDailyCounter": null,
            "spentDailyLimit": "731",
            "spentDailyCounter": null,
            "spentTotalLimit": "11981",
            "spentTotalCounter": null,
            "impressionsDailyLimit": "554858",
            "impressionsTotalLimit": "1167265",
            "campaigns": [
                {
                    "id": 1,
                    "userId": 5,
                    "isActive": true,
                    "isRunning": false,
                    "type": "audio",
                    "name": "quam",
                    "isRewarded": false,
                    "isDesktopWeb": true,
                    "isMobileApp": false,
                    "isMobileWeb": false,
                    "isSmartphone": false,
                    "isTablet": false,
                    "isCTV": false,
                    "isDOOH": false,
                    "aDomain": "dickens.com",
                    "dateStart": "2024-06-28",
                    "dateEnd": "2027-02-06",
                    "geoCountries": [],
                    "geoCountriesIsInclude": true,
                    "geoRegions": [],
                    "geoRegionsIsInclude": true,
                    "geoCities": [],
                    "geoCitiesIsInclude": true,
                    "contentCategories": [],
                    "contentCategoriesIsInclude": true,
                    "userAgeMin": 0,
                    "userAgeMax": 0,
                    "connectionTypes": [
                        "wifi"
                    ],
                    "clickedInventoryCategories": [],
                    "deviceCarrier": [],
                    "deviceCarrierIsInclude": true,
                    "OS": [],
                    "OSIsInclude": true,
                    "browser": [],
                    "browserIsInclude": true,
                    "deviceLanguage": [],
                    "deviceLanguageIsInclude": true,
                    "spentDailyLimit": 286,
                    "spentTotalLimit": 2425,
                    "impressionsDailyLimit": 269971,
                    "impressionsTotalLimit": 673482,
                    "clicksDailyLimit": 0,
                    "clicksTotalLimit": 0,
                    "budgetUse": "fast",
                    "allSources": true,
                    "cpm": 0,
                    "adaptiveCpm": false,
                    "useCpm": false,
                    "googleAnalyticsTrackingCode": null,
                    "dynamicTargeting": [],
                    "subscriptionAge": [],
                    "frequencyType": "user",
                    "frequency": 0,
                    "frequencyCap": 1,
                    "frequencyPeriod": 1,
                    "extendedStatus": "Low Balance",
                    "createdAt": "2026-02-12",
                    "updatedAt": "2026-02-12",
                    "deletedAt": null,
                    "counters": {
                        "bidResDailyCounter": 0,
                        "winsDailyCounter": 0,
                        "conversionDailyCounter": 0,
                        "clicksDailyCounter": null,
                        "impressionsTotalCounter": 0,
                        "impressionsDailyCounter": 0,
                        "winRate": 0,
                        "spentDailyCounter": 0,
                        "spentTotalCounter": 0
                    },
                    "pretarget": null,
                    "pretargets": [],
                    "audiences": []
                },
                {
                    "id": 2,
                    "userId": 5,
                    "isActive": true,
                    "isRunning": false,
                    "type": "banner",
                    "name": "unde",
                    "isRewarded": false,
                    "isDesktopWeb": false,
                    "isMobileApp": true,
                    "isMobileWeb": false,
                    "isSmartphone": false,
                    "isTablet": true,
                    "isCTV": false,
                    "isDOOH": true,
                    "aDomain": "mcglynn.org",
                    "dateStart": "2024-12-12",
                    "dateEnd": "2026-12-23",
                    "geoCountries": [],
                    "geoCountriesIsInclude": true,
                    "geoRegions": [],
                    "geoRegionsIsInclude": true,
                    "geoCities": [],
                    "geoCitiesIsInclude": true,
                    "contentCategories": [],
                    "contentCategoriesIsInclude": true,
                    "userAgeMin": 0,
                    "userAgeMax": 0,
                    "connectionTypes": [
                        "wifi"
                    ],
                    "clickedInventoryCategories": [],
                    "deviceCarrier": [],
                    "deviceCarrierIsInclude": true,
                    "OS": [],
                    "OSIsInclude": true,
                    "browser": [],
                    "browserIsInclude": true,
                    "deviceLanguage": [],
                    "deviceLanguageIsInclude": true,
                    "spentDailyLimit": 445,
                    "spentTotalLimit": 9556,
                    "impressionsDailyLimit": 284887,
                    "impressionsTotalLimit": 493783,
                    "clicksDailyLimit": 0,
                    "clicksTotalLimit": 0,
                    "budgetUse": "fast",
                    "allSources": true,
                    "cpm": 0,
                    "adaptiveCpm": false,
                    "useCpm": false,
                    "googleAnalyticsTrackingCode": null,
                    "dynamicTargeting": [],
                    "subscriptionAge": [],
                    "frequencyType": "user",
                    "frequency": 0,
                    "frequencyCap": 1,
                    "frequencyPeriod": 1,
                    "extendedStatus": "Low Balance",
                    "createdAt": "2026-02-12",
                    "updatedAt": "2026-02-12",
                    "deletedAt": null,
                    "counters": {
                        "bidResDailyCounter": 0,
                        "winsDailyCounter": 0,
                        "conversionDailyCounter": 0,
                        "clicksDailyCounter": null,
                        "impressionsTotalCounter": 0,
                        "impressionsDailyCounter": 0,
                        "winRate": 0,
                        "spentDailyCounter": 0,
                        "spentTotalCounter": 0
                    },
                    "pretarget": null,
                    "pretargets": [],
                    "audiences": []
                }
            ]
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 15,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

5. Assign GEO Targeting (GPS) to Campaigns

5.1. Get Campaign GEO Targeting (GPS)

A `GET` request with Campaign Id in url will return GPS targeting mapped to the campaign.

5.1.1. HTTP Request

URL

GET api/campaigns/34/geo-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

5.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/34/geo-targeting' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

5.1.3. Response Body

Path Type Description

data.*.lat

float

Latitude

data.*.lng

float

Longitude

data.*.radius

float

Radius

data.*.include

boolean

Include/exclude flag

meta.pagination.total

integer

Total items count

meta.pagination.count

integer

Current page items count

meta.pagination.per_page

integer

Items per page

meta.pagination.current_page

integer

Current page number

meta.pagination.total_pages

integer

Total pages count

meta.pagination.links.prev

string

URL to previous page

meta.pagination.links.next

string

URL to next page

5.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "lat": 50.4501,
            "lng": 30.5234,
            "radius": 10,
            "include": true
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 1000,
            "current_page": 1,
            "total_pages": 1,
            "links": {
                "prev": null,
                "next": null
            }
        }
    }
}

5.2. Replace Campaign GEO Targeting (GPS)

A `POST` request with Campaign Id in url will replace GPS targeting mapped to the campaign.

5.2.1. Request Body

Path Type Description Required

items.*.lat

float

Latitude

+

items.*.lng

float

Longitude

+

items.*.radius

float

Radius

+

items.*.include

boolean

Include/exclude

+

5.2.2. HTTP Request

URL

POST api/campaigns/35/geo-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "items": [
        {
            "lat": 50.4501,
            "lng": 30.5234,
            "radius": 10,
            "include": true
        }
    ]
}

5.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/35/geo-targeting' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "items": [
        {
            "lat": 50.4501,
            "lng": 30.5234,
            "radius": 10,
            "include": true
        }
    ]
}'

5.2.4. Response Body

Path Type Description

message

string

Result message

5.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Replaced."
}

5.3. Append Campaign GEO Targeting (GPS)

A `PATCH` request with Campaign Id in url will append GPS targeting mapped to the campaign.

5.3.1. Request Body

Path Type Description Required

items.*.lat

float

Latitude

+

items.*.lng

float

Longitude

+

items.*.radius

float

Radius

+

items.*.include

boolean

Include/exclude

+

5.3.2. HTTP Request

URL

PATCH api/campaigns/36/geo-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
    "items": [
        {
            "lat": 50.4501,
            "lng": 30.5234,
            "radius": 10,
            "include": true
        }
    ]
}

5.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/36/geo-targeting' -i -X PATCH \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{
    "items": [
        {
            "lat": 50.4501,
            "lng": 30.5234,
            "radius": 10,
            "include": true
        }
    ]
}'

5.3.4. Response Body

Path Type Description

message

string

Result message

5.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Appended."
}

5.4. Delete Campaign GEO Targeting (GPS)

A `DELETE` request with Campaign Id in url will remove GPS targeting mapped to the campaign.

5.4.1. Request Body

Path Type Description Required

message

string

Result message

+

5.4.2. HTTP Request

URL

DELETE api/campaigns/37/geo-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "message": "Deleted."
}

5.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/37/geo-targeting' -i -X DELETE \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "message": "Deleted."
}'

5.4.4. Response Body

Path Type Description

message

string

Result message

5.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Deleted."
}

6. Assign GEO Targeting (ZipCode) to Campaigns

6.1. Get Campaign GEO Targeting (ZipCode)

A `GET` request with Campaign Id in url will return ZipCode geo targeting mapped to the campaign.

6.1.1. HTTP Request

URL

GET api/campaigns/38/geo-targeting-zip-code HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

6.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/38/geo-targeting-zip-code' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

6.1.3. Response Body

Path Type Description

data.*.lat

float

Latitude

data.*.lng

float

Longitude

data.*.zip

string

Zip code

data.*.iso2

string

Country ISO2 code

data.*.countryName

string

Country name

data.*.include

boolean

Include/exclude flag

meta.pagination.total

integer

Total items count

meta.pagination.count

integer

Current page items count

meta.pagination.per_page

integer

Items per page

meta.pagination.current_page

integer

Current page number

meta.pagination.total_pages

integer

Total pages count

meta.pagination.links.prev

string

URL to previous page

meta.pagination.links.next

string

URL to next page

6.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "lat": 50.4501,
            "lng": 30.5234,
            "zip": "01001",
            "iso2": "UA",
            "countryName": "Ukraine",
            "include": true
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 1000,
            "current_page": 1,
            "total_pages": 1,
            "links": {
                "prev": null,
                "next": null
            }
        }
    }
}

6.2. Replace Campaign GEO Targeting (ZipCode)

A `POST` request with Campaign Id in url will replace ZipCode geo targeting mapped to the campaign.

6.2.1. Request Body

Path Type Description Required

items.*.lat

float

Latitude

+

items.*.lng

float

Longitude

+

items.*.zip

string

Zip code

+

items.*.iso2

string

Country ISO2 code

+

items.*.include

boolean

Include/exclude

+

6.2.2. HTTP Request

URL

POST api/campaigns/39/geo-targeting-zip-code HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "items": [
        {
            "lat": 50.4501,
            "lng": 30.5234,
            "zip": "01001",
            "iso2": "UA",
            "include": true
        }
    ]
}

6.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/39/geo-targeting-zip-code' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "items": [
        {
            "lat": 50.4501,
            "lng": 30.5234,
            "zip": "01001",
            "iso2": "UA",
            "include": true
        }
    ]
}'

6.2.4. Response Body

Path Type Description

message

string

Result message

6.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Replaced."
}

6.3. Append Campaign GEO Targeting (ZipCode)

A `PATCH` request with Campaign Id in url will append ZipCode geo targeting mapped to the campaign.

6.3.1. Request Body

Path Type Description Required

items.*.lat

float

Latitude

+

items.*.lng

float

Longitude

+

items.*.zip

string

Zip code

+

items.*.iso2

string

Country ISO2 code

+

items.*.include

boolean

Include/exclude

+

6.3.2. HTTP Request

URL

PATCH api/campaigns/40/geo-targeting-zip-code HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
    "items": [
        {
            "lat": 50.4501,
            "lng": 30.5234,
            "zip": "01001",
            "iso2": "UA",
            "include": true
        }
    ]
}

6.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/40/geo-targeting-zip-code' -i -X PATCH \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{
    "items": [
        {
            "lat": 50.4501,
            "lng": 30.5234,
            "zip": "01001",
            "iso2": "UA",
            "include": true
        }
    ]
}'

6.3.4. Response Body

Path Type Description

message

string

Result message

6.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Appended."
}

6.4. Delete Campaign GEO Targeting (ZipCode)

A `DELETE` request with Campaign Id in url will remove ZipCode geo targeting mapped to the campaign.

6.4.1. Request Body

Path Type Description Required

message

string

Result message

+

6.4.2. HTTP Request

URL

DELETE api/campaigns/41/geo-targeting-zip-code HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "message": "Deleted."
}

6.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/41/geo-targeting-zip-code' -i -X DELETE \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "message": "Deleted."
}'

6.4.4. Response Body

Path Type Description

message

string

Result message

6.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Deleted."
}

7. Assign Audiences to Campaigns

7.1. Get list of Audiences assigned to Campaign

A `GET` request returns paginated list of audiences assigned to the campaign. Each audience has a `type` field: `collect` (first-party retargeting), `trade` (lookalike/similar audiences), or `thirdParty` (external data provider audiences).

7.1.1. HTTP Request

URL

GET api/campaigns/15/audiences HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

7.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/15/audiences' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

7.1.3. Response Body

Path Type Description

data.*.type

string

Audience relation type (collect, trade, thirdParty)

data.*.audience.id

integer

Audience id

data.*.audience.title

string

Audience title

data.*.audience.userId

integer

Audience owner user id

data.*.audience.isIncludeDateRange

boolean

Is include date range

data.*.audience.dateFrom

datetime

Date from

data.*.audience.dateTo

datetime

Date to

data.*.audience.usersTtlInDays

integer

Users TTL in days

data.*.audience.collectionType

string

Collection type

data.*.audience.hashTag

string

Hash tag

data.*.audience.allUsers

boolean

All users

data.*.audience.isActive

boolean

Audience active status

data.*.audience.providerList

array

Provider list

data.*.audience.providerId

integer

Provider id

data.*.audience.isInclude

boolean

Audience isInclude flag

data.*.audience.createdAt

date

Created at

data.*.audience.updatedAt

date

Updated at

meta.pagination.total

integer

Total items count

meta.pagination.count

integer

Current page items count

meta.pagination.per_page

integer

Items per page

meta.pagination.current_page

integer

Current page number

meta.pagination.total_pages

integer

Total pages count

meta.pagination.links.prev

string

URL to previous page

meta.pagination.links.next

string

URL to next page

7.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "type": "collect",
            "audience": {
                "id": 1,
                "title": "Audience #1",
                "userId": 31,
                "isIncludeDateRange": false,
                "dateFrom": null,
                "dateTo": null,
                "usersTtlInDays": 30,
                "collectionType": null,
                "hashTag": null,
                "allUsers": false,
                "isActive": true,
                "providerList": [],
                "providerId": null,
                "isInclude": true,
                "createdAt": "2026-02-12",
                "updatedAt": "2026-02-12"
            }
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 100,
            "current_page": 1,
            "total_pages": 1,
            "links": {
                "prev": null,
                "next": null
            }
        }
    }
}

7.2. Replace Audiences assigned to Campaign

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

7.2.1. Request Body

Path Type Description Required

items.*.id

integer

Audience id

+

items.*.type

string

Audience relation type (collect, trade, thirdParty)

+

7.2.2. HTTP Request

URL

POST api/campaigns/16/audiences HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "items": [
        {
            "id": 1,
            "type": "collect"
        }
    ]
}

7.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/16/audiences' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "items": [
        {
            "id": 1,
            "type": "collect"
        }
    ]
}'

7.2.4. Response Body

Path Type Description

message

string

Result message

7.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Replaced."
}

7.3. Append Audiences assigned to Campaign

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

7.3.1. Request Body

Path Type Description Required

items.*.id

integer

Audience id

+

items.*.type

string

Audience relation type (collect, trade, thirdParty)

+

7.3.2. HTTP Request

URL

PATCH api/campaigns/17/audiences HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
    "items": [
        {
            "id": 1,
            "type": "collect"
        }
    ]
}

7.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/17/audiences' -i -X PATCH \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{
    "items": [
        {
            "id": 1,
            "type": "collect"
        }
    ]
}'

7.3.4. Response Body

Path Type Description

message

string

Result message

7.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Appended."
}

7.4. Delete Audiences assigned to Campaign

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

7.4.1. Request Body

Path Type Description Required

ids.*

integer

Audience id. If empty, deletes all items.

7.4.2. HTTP Request

URL

DELETE api/campaigns/18/audiences HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "ids": [
        1
    ]
}

7.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/18/audiences' -i -X DELETE \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "ids": [
        1
    ]
}'

7.4.4. Response Body

Path Type Description

message

string

Result message

7.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Deleted."
}

8. Assign Deals to Campaigns

8.1. Get list of Deals assigned to Campaign

A `GET` request returns paginated list of PMP (Private Marketplace) deals assigned to the campaign. Each deal has custom `bidPrice` that overrides campaign default bid for that specific deal inventory.

8.1.1. HTTP Request

URL

GET api/campaigns/27/deals HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

8.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/27/deals' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

8.1.3. Response Body

Path Type Description

data.*.id

integer

Deal record id

data.*.campaignId

integer

Campaign id

data.*.dealId

string

Deal identifier

data.*.bidPrice

string

Bid price

data.*.createdAt

datetime

Created at

data.*.updatedAt

datetime

Updated at

meta.pagination.total

integer

Total items count

meta.pagination.count

integer

Current page items count

meta.pagination.per_page

integer

Items per page

meta.pagination.current_page

integer

Current page number

meta.pagination.total_pages

integer

Total pages count

meta.pagination.links.prev

string

URL to previous page

meta.pagination.links.next

string

URL to next page

8.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "id": 1,
            "campaignId": 27,
            "dealId": "DEAL-1",
            "bidPrice": "1.00",
            "createdAt": "2026-02-12 16:34:51",
            "updatedAt": "2026-02-12 16:34:51"
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 1000,
            "current_page": 1,
            "total_pages": 1,
            "links": {
                "prev": null,
                "next": null
            }
        }
    }
}

8.2. Get all Deals assigned to Campaign

A `GET` request with Campaign Id in url will get all Deals assigned to Campaign.

8.2.1. HTTP Request

URL

GET api/campaigns/28/deals-all HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

8.2.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/28/deals-all' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

8.2.3. Response Body

Path Type Description

data.*.id

integer

Deal record id

data.*.campaignId

integer

Campaign id

data.*.dealId

string

Deal identifier

data.*.bidPrice

string

Bid price

data.*.createdAt

datetime

Created at

data.*.updatedAt

datetime

Updated at

8.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "id": 1,
            "campaignId": 28,
            "dealId": "DEAL-1",
            "bidPrice": "1.00",
            "createdAt": "2026-02-12 16:34:51",
            "updatedAt": "2026-02-12 16:34:51"
        }
    ]
}

8.3. Replace Deals assigned to Campaign

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

8.3.1. Request Body

Path Type Description Required

deals.*.dealId

string

Deal identifier

+

deals.*.bidPrice

string

Bid price

+

8.3.2. HTTP Request

URL

POST api/campaigns/29/deals HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "deals": [
        {
            "dealId": "DEAL-1",
            "bidPrice": "1.00"
        }
    ]
}

8.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/29/deals' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "deals": [
        {
            "dealId": "DEAL-1",
            "bidPrice": "1.00"
        }
    ]
}'

8.3.4. Response Body

Path Type Description

message

string

Result message

8.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Replaced."
}

8.4. Delete Deals assigned to Campaign

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

8.4.1. Request Body

Path Type Description Required

deals.*.id

integer

Deal record id

8.4.2. HTTP Request

URL

DELETE api/campaigns/30/deals HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "deals": [
        {
            "id": 1
        }
    ]
}

8.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/30/deals' -i -X DELETE \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "deals": [
        {
            "id": 1
        }
    ]
}'

8.4.4. Response Body

Path Type Description

message

string

Result message

8.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Deleted."
}

9. Assign Contextual Targeting to Campaigns

9.1. Get Campaign Contextual Targeting

A `GET` request with Campaign Id in url will return contextual targeting ids mapped to the campaign.

9.1.1. HTTP Request

URL

GET api/campaigns/19/contextual-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

9.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/19/contextual-targeting' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

9.1.3. Response Body

Path Type Description

*

any

9.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        1,
        2,
        3
    ]
}

9.2. Replace Campaign Contextual Targeting

A `POST` request with Campaign Id in url will replace contextual targeting mapped to the campaign.

9.2.1. Request Body

Path Type Description Required

targetIds.*

integer

Contextual targeting id

+

9.2.2. HTTP Request

URL

POST api/campaigns/20/contextual-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "targetIds": [
        1,
        2,
        3
    ]
}

9.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/20/contextual-targeting' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "targetIds": [
        1,
        2,
        3
    ]
}'

9.2.4. Response Body

Path Type Description

message

string

Result message

9.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Replaced."
}

9.3. Append Campaign Contextual Targeting

A `PATCH` request with Campaign Id in url will append contextual targeting mapped to the campaign.

9.3.1. Request Body

Path Type Description Required

targetIds.*

integer

Contextual targeting id

+

9.3.2. HTTP Request

URL

PATCH api/campaigns/21/contextual-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
    "targetIds": [
        1,
        2,
        3
    ]
}

9.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/21/contextual-targeting' -i -X PATCH \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{
    "targetIds": [
        1,
        2,
        3
    ]
}'

9.3.4. Response Body

Path Type Description

message

string

Result message

9.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Replaced."
}

9.4. Delete Campaign Contextual Targeting

A `DELETE` request with Campaign Id in url will remove contextual targeting mapped to the campaign.

9.4.1. Request Body

Path Type Description Required

deleted

boolean

Delete result

+

9.4.2. HTTP Request

URL

DELETE api/campaigns/22/contextual-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "deleted": true
}

9.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/22/contextual-targeting' -i -X DELETE \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "deleted": true
}'

9.4.4. Response Body

Path Type Description

deleted

boolean

Delete result

9.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "deleted": true
}

10. CTR Booster Settings

10.1. Get CTR Booster setting for Campaign

A `GET` request returns CTR booster status for the campaign (boolean). CTR booster automatically optimizes campaign performance by adjusting bids based on predicted click-through rates.

10.1.1. HTTP Request

URL

GET api/booster-settings/3 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

10.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/booster-settings/3' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

10.1.3. Response Body

Path Type Description

data

boolean

True if CTR Booster setting exists for the campaign

10.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": true
}

10.2. Enable CTR Booster setting for Campaign

A `POST` request will enable CTR Booster for the campaign by creating a record.

10.2.1. Request Body

Path Type Description Required

cid

integer

Campaign id

+

10.2.2. HTTP Request

URL

POST api/booster-settings HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "cid": 4
}

10.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/booster-settings' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "cid": 4
}'

10.2.4. Response Body

Path Type Description

id

integer

Booster setting record id

cid

integer

Campaign id

createdAt

string

Created at date

10.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "id": 1,
    "cid": 4,
    "createdAt": "2026-02-12"
}

10.3. Disable CTR Booster setting for Campaign

A `DELETE` request with Campaign Id in url will disable CTR Booster for the campaign.

10.3.1. HTTP Request

URL

DELETE api/booster-settings/5 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{}

10.3.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/booster-settings/5' -i -X DELETE \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{}'

10.3.3. Response Body

Path Type Description

deleted

boolean

Delete result

10.3.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "deleted": true
}

11. Campaigns

11.1. Campaigns list

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

11.1.1. HTTP Request

URL

GET api/campaigns HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiJNZXpZd0xMcU5nVm9BMW95Iiwic3ViIjoiMjMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.R78pTBif0CanJygfuPJ-v2SPcQmFhiDVAzteOmfBo6Q
DATA
{}

11.1.2. Curl request

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

11.1.3. Response Body

Path Type Description

data.*.id

integer

Campaign Id(test)

data.*.userId

integer

User Id

data.*.isActive

boolean

Campaign On/Off

data.*.isRunning

boolean

Campaign running status

data.*.type

string

Campaign type: banner, native, video, audio

data.*.name

string

Campaign name

data.*.isRewarded

integer

Rewarded video (for video creatives)

data.*.isDesktopWeb

boolean

Traffic Type: Desktop Websites

data.*.isMobileApp

boolean

Traffic Type: Mobile Applications

data.*.isMobileWeb

boolean

Traffic Type: Mobile Websites

data.*.isSmartphone

boolean

Traffic Type: Smartphones

data.*.isTablet

boolean

Traffic Type: Tablets

data.*.isCTV

boolean

Traffic Type: CTVs

data.*.isDOOH

boolean

Traffic Type: DOOH

data.*.aDomain

integer

Top level domain

data.*.dateStart

date

Date start

data.*.dateEnd

date

Date end

data.*.geoCountries

array

GEO Targeting: countries list

data.*.geoCountriesIsInclude

boolean

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

data.*.geoRegions

array

GEO Targeting: regions list

data.*.geoRegionsIsInclude

boolean

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

data.*.geoCities

array

GEO Targeting: cities list

data.*.geoCitiesIsInclude

boolean

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

data.*.contentCategories

array

Targeting: IAB Categories list

data.*.contentCategoriesIsInclude

boolean

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

data.*.userAgeMin

integer

Targeting: Age range from

data.*.userAgeMax

integer

Targeting: Age range to

data..connectionTypes.

string

Connection type (wifi, ethernet, cellular_all, cellular_3g, cellular_4g, cellular_5g)

data.*.clickedInventoryCategories

array

Сlicked Inventory Categories

data.*.deviceCarrier

array

Targeting: List of network operators.

data.*.deviceCarrierIsInclude

boolean

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

data.*.OS

array

Targeting: The operating system of user's device

data.*.OSIsInclude

boolean

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

data.*.browser

array

Targeting: The user's browsers list

data.*.browserIsInclude

boolean

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

data.*.deviceLanguage

array

Targeting: The languages of user's browser

data.*.deviceLanguageIsInclude

boolean

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

data.*.spentDailyLimit

integer

Daily spent limit

data.*.spentTotalLimit

integer

Total spent limit

data.*.impressionsDailyLimit

integer

Daily impressions limit

data.*.impressionsTotalLimit

integer

Total impressions limit

data.*.clicksDailyLimit

integer

Daily clicks limit

data.*.clicksTotalLimit

integer

Total clicks limit

data.*.budgetUse

integer

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

data.*.allSources

boolean

Inventory: Use all SSP endpoints

data.*.cpm

float

cpm

data.*.adaptiveCpm

boolean

adaptiveCpm

data.*.useCpm

boolean

use cpm

data.*.extendedStatus

string

Campaign extended status

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

data.*.deletedAt

datetime

Date of deletion

meta.pagination.total

integer

Pagination: total items count

meta.pagination.count

integer

Pagination: page items count

meta.pagination.per_page

integer

Pagination: items per page

meta.pagination.current_page

integer

Pagination: current page number

meta.pagination.total_pages

integer

Pagination: total pages count

meta.pagination.links

array

Pagination: urls to next,prev page

11.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": [
        {
            "id": 6,
            "userId": 23,
            "isActive": true,
            "isRunning": false,
            "type": "audio",
            "name": "ullam",
            "isRewarded": false,
            "isDesktopWeb": false,
            "isMobileApp": true,
            "isMobileWeb": false,
            "isSmartphone": false,
            "isTablet": false,
            "isCTV": false,
            "isDOOH": true,
            "aDomain": "corwin.com",
            "dateStart": "2024-12-05",
            "dateEnd": "2026-08-19",
            "geoCountries": [],
            "geoCountriesIsInclude": true,
            "geoRegions": [],
            "geoRegionsIsInclude": true,
            "geoCities": [],
            "geoCitiesIsInclude": true,
            "contentCategories": [],
            "contentCategoriesIsInclude": true,
            "userAgeMin": 0,
            "userAgeMax": 0,
            "connectionTypes": [
                "wifi"
            ],
            "clickedInventoryCategories": [],
            "deviceCarrier": [],
            "deviceCarrierIsInclude": true,
            "OS": [],
            "OSIsInclude": true,
            "browser": [],
            "browserIsInclude": true,
            "deviceLanguage": [],
            "deviceLanguageIsInclude": true,
            "spentDailyLimit": 216,
            "spentTotalLimit": 6693,
            "impressionsDailyLimit": 267665,
            "impressionsTotalLimit": 407022,
            "clicksDailyLimit": 0,
            "clicksTotalLimit": 0,
            "budgetUse": "fast",
            "allSources": true,
            "cpm": 0,
            "adaptiveCpm": false,
            "useCpm": false,
            "extendedStatus": "Low Balance",
            "createdAt": "2026-02-12",
            "updatedAt": "2026-02-12",
            "deletedAt": null
        },
        {
            "id": 7,
            "userId": 23,
            "isActive": true,
            "isRunning": false,
            "type": "banner",
            "name": "unde",
            "isRewarded": false,
            "isDesktopWeb": true,
            "isMobileApp": true,
            "isMobileWeb": true,
            "isSmartphone": true,
            "isTablet": false,
            "isCTV": true,
            "isDOOH": true,
            "aDomain": "bogan.com",
            "dateStart": "2025-07-12",
            "dateEnd": "2026-08-15",
            "geoCountries": [],
            "geoCountriesIsInclude": true,
            "geoRegions": [],
            "geoRegionsIsInclude": true,
            "geoCities": [],
            "geoCitiesIsInclude": true,
            "contentCategories": [],
            "contentCategoriesIsInclude": true,
            "userAgeMin": 0,
            "userAgeMax": 0,
            "connectionTypes": [
                "wifi"
            ],
            "clickedInventoryCategories": [],
            "deviceCarrier": [],
            "deviceCarrierIsInclude": true,
            "OS": [],
            "OSIsInclude": true,
            "browser": [],
            "browserIsInclude": true,
            "deviceLanguage": [],
            "deviceLanguageIsInclude": true,
            "spentDailyLimit": 293,
            "spentTotalLimit": 3206,
            "impressionsDailyLimit": 292755,
            "impressionsTotalLimit": 676864,
            "clicksDailyLimit": 0,
            "clicksTotalLimit": 0,
            "budgetUse": "fast",
            "allSources": true,
            "cpm": 0,
            "adaptiveCpm": false,
            "useCpm": false,
            "extendedStatus": "Low Balance",
            "createdAt": "2026-02-12",
            "updatedAt": "2026-02-12",
            "deletedAt": null
        }
    ],
    "meta": {
        "pagination": {
            "total": 2,
            "count": 2,
            "per_page": 15,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

11.2. Get by ID

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

11.2.1. HTTP Request

URL

GET api/campaigns/8 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiJ2a1dyaU4zcm84bnFwS0NSIiwic3ViIjoiMjQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0._zzpNys_Hye_UXPmE8Mg2E_9qIu_V5dtKf9aWDyWEgM
DATA
{}

11.2.2. Curl request

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

11.2.3. Response Body

Path Type Description

data.id

integer

Campaign Id

data.userId

integer

User Id

data.isActive

boolean

Campaign On/Off

data.isRunning

boolean

Campaign running status

data.type

string

Campaign type: banner, native, video, audio

data.name

string

Campaign name

data.isRewarded

integer

Rewarded video (for video creatives)

data.isDesktopWeb

boolean

Traffic Type: Desktop Websites

data.isMobileApp

boolean

Traffic Type: Mobile Applications

data.isMobileWeb

boolean

Traffic Type: Mobile Websites

data.isSmartphone

boolean

Traffic Type: Smartphones

data.isTablet

boolean

Traffic Type: Tablets

data.isCTV

boolean

Traffic Type: CTV

data.isDOOH

boolean

Traffic Type: DOOH

data.aDomain

integer

Top level domain

data.dateStart

date

Date start

data.dateEnd

date

Date end

data.geoCountries

array

GEO Targeting: countries list

data.geoCountriesIsInclude

boolean

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

data.geoRegions

array

GEO Targeting: regions list

data.geoRegionsIsInclude

boolean

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

data.geoCities

array

GEO Targeting: cities list

data.geoCitiesIsInclude

boolean

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

data.contentCategories

array

Targeting: IAB Categories list

data.contentCategoriesIsInclude

boolean

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

data.userAgeMin

integer

Targeting: Age range from

data.userAgeMax

integer

Targeting: Age range to

data.connectionTypes.*

string

Connection type (wifi, ethernet, cellular_all, cellular_3g, cellular_4g, cellular_5g)

data.clickedInventoryCategories

array

Сlicked Inventory Categories

data.deviceCarrier

array

Targeting: List of network operators.

data.deviceCarrierIsInclude

boolean

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

data.OS

array

Targeting: The operating system of user's device

data.OSIsInclude

boolean

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

data.browser

array

Targeting: The user's browsers list

data.browserIsInclude

boolean

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

data.deviceLanguage

array

Targeting: The languages of user's browser

data.deviceLanguageIsInclude

boolean

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

data.spentDailyLimit

integer

Daily spent limit

data.spentTotalLimit

integer

Total spent limit

data.impressionsDailyLimit

integer

Daily impressions limit

data.impressionsTotalLimit

integer

Total impressions limit

data.clicksDailyLimit

integer

Daily clicks limit

data.clicksTotalLimit

integer

Total clicks limit

data.budgetUse

integer

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

data.allSources

boolean

Inventory: Use all SSP endpoints

data.cpm

float

cpm

data.adaptiveCpm

boolean

adaptiveCpm

data.useCpm

boolean

use cpm

data.googleAnalyticsTrackingCode

string

Google Analytics tracking code - PUSH Campaigns

data.dynamicTargeting

array

SmartCPC: Dynamic targeting - only for CPC Pricing model

data.subscriptionAge

array

Subscription Age - only for CPC Pricing model

data.frequencyType

string

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

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

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

data.frequencyPeriod

integer

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

data.extendedStatus

string

Campaign extended status

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.deletedAt

datetime

Date of deletion

data.pretarget

int

pretarget

data.pretargets

array

pretargets

data.audiences

array

audiences

11.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 8,
        "userId": 24,
        "isActive": true,
        "isRunning": false,
        "type": "video",
        "name": "Test Campaign #1",
        "isRewarded": false,
        "isDesktopWeb": true,
        "isMobileApp": false,
        "isMobileWeb": false,
        "isSmartphone": false,
        "isTablet": false,
        "isCTV": false,
        "isDOOH": false,
        "aDomain": "marks.net",
        "dateStart": "2024-12-31",
        "dateEnd": "2027-01-09",
        "geoCountries": [],
        "geoCountriesIsInclude": true,
        "geoRegions": [],
        "geoRegionsIsInclude": true,
        "geoCities": [],
        "geoCitiesIsInclude": true,
        "contentCategories": [],
        "contentCategoriesIsInclude": true,
        "userAgeMin": 0,
        "userAgeMax": 0,
        "connectionTypes": [
            "wifi"
        ],
        "clickedInventoryCategories": [],
        "deviceCarrier": [],
        "deviceCarrierIsInclude": true,
        "OS": [],
        "OSIsInclude": true,
        "browser": [],
        "browserIsInclude": true,
        "deviceLanguage": [],
        "deviceLanguageIsInclude": true,
        "spentDailyLimit": 438,
        "spentTotalLimit": 8677,
        "impressionsDailyLimit": 262243,
        "impressionsTotalLimit": 723002,
        "clicksDailyLimit": 0,
        "clicksTotalLimit": 0,
        "budgetUse": "fast",
        "allSources": true,
        "cpm": 0,
        "adaptiveCpm": false,
        "useCpm": false,
        "googleAnalyticsTrackingCode": null,
        "dynamicTargeting": [],
        "subscriptionAge": [],
        "frequencyType": "user",
        "frequency": 0,
        "frequencyCap": 1,
        "frequencyPeriod": 1,
        "extendedStatus": "Low Balance",
        "createdAt": "2026-02-12",
        "updatedAt": "2026-02-12",
        "deletedAt": null,
        "pretarget": null,
        "pretargets": [],
        "audiences": []
    }
}

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

A `POST` request will create new campaign.

11.3.1. Request Body

Path Type Description Required

type

string

Campaign type: banner, native, video, audio

+

name

string

Campaign name

+

aDomain

string

Top level domain

+

isRewarded

boolean

Rewarded video (for video creatives)

isDesktopWeb

boolean

Traffic Type: Desktop Websites

isMobileApp

boolean

Traffic Type: Mobile Applications

isMobileWeb

boolean

Traffic Type: Mobile Websites

isSmartphone

boolean

Traffic Type: Smartphones

isTablet

boolean

Traffic Type: Tablets

contentCategories.*

string

IAB Category ID

contentCategoriesIsInclude

boolean

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

userAgeMin

integer

Targeting: Age range from

userAgeMax

integer

Targeting: Age range to

connectionTypes.*

string

Connection type (wifi, ethernet, cellular_all, cellular_3g, cellular_4g, cellular_5g)

deviceCarrier.*

string

Network operator name

deviceCarrierIsInclude

boolean

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

OS.*

string

Operating system name

OSIsInclude

boolean

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

browser.*

string

Browser name

browserIsInclude

boolean

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

deviceLanguage.*

string

Language code (ISO-like, e.g. "en", "ru")

deviceLanguageIsInclude

boolean

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

spentDailyLimit

integer

Daily spent limit

spentTotalLimit

integer

Total spent limit

impressionsDailyLimit

integer

Daily impressions limit

impressionsTotalLimit

integer

Total impressions limit

clicksDailyLimit

integer

Daily clicks limit

clicksTotalLimit

integer

Total clicks limit

budgetUse

string

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

geoCountries

array

GEO Targeting: countries list. Use GET /geo/countries (response field: iso3).

geoCountriesIsInclude

boolean

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

geoRegions

array

GEO Targeting: regions list. Use GET /geo/regions?selectedCountries=USA,CAN (response field: state_iso2). Note: API may return multiple codes joined with a vertical bar.

geoRegionsIsInclude

boolean

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

geoCities

array

GEO Targeting: cities list. Use GET /geo/cities?selectedCountries=USA&selectedRegions=US-CA (response field: geoname_id). Note: API may return multiple ids joined with a vertical bar.

geoCitiesIsInclude

boolean

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

frequency

boolean

Frequency capping on/off.

frequencyType

string

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

frequencyCap

integer

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

frequencyPeriod

integer

Frequency period (days). Required if frequency is on.

dateStart

date

Date start

dateEnd

date

Date end

11.3.2. HTTP Request

URL

POST api/campaigns HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiIxS3dldzBTVGlMa29XVGtjIiwic3ViIjoiMjUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.4jHGtluyNFkM_rxiIaiys_zrWg4XxCU9P_9N7ZQsktg
DATA
{
    "type": "banner",
    "name": "New Campaign #2",
    "aDomain": "gusikowski.com",
    "isRewarded": true,
    "isDesktopWeb": true,
    "isMobileApp": true,
    "isMobileWeb": true,
    "isSmartphone": true,
    "isTablet": true,
    "contentCategories": [
        "IAB1",
        "IAB3"
    ],
    "contentCategoriesIsInclude": false,
    "userAgeMin": 18,
    "userAgeMax": 50,
    "connectionTypes": [
        "ethernet",
        "cellular_all",
        "cellular_3g",
        "cellular_4g",
        "wifi"
    ],
    "deviceCarrier": [
        "ISP Green-Stiedemann",
        "ISP Simonis Inc"
    ],
    "deviceCarrierIsInclude": false,
    "OS": [
        "Android 8.0",
        "Android 8.1",
        "Android 9.0",
        "Android 10.0",
        "Android 11.0",
        "Android 12.0",
        "Android 13.0",
        "iOS"
    ],
    "OSIsInclude": true,
    "browser": [
        "Chrome",
        "IE",
        "Edge"
    ],
    "browserIsInclude": true,
    "deviceLanguage": [
        "ab",
        "aa"
    ],
    "deviceLanguageIsInclude": true,
    "spentDailyLimit": 200,
    "spentTotalLimit": 1000,
    "impressionsDailyLimit": 100000,
    "impressionsTotalLimit": 1000000,
    "clicksDailyLimit": 500,
    "clicksTotalLimit": 1000,
    "budgetUse": "fast",
    "geoCountries": [],
    "geoCountriesIsInclude": true,
    "geoRegions": [],
    "geoRegionsIsInclude": true,
    "geoCities": [],
    "geoCitiesIsInclude": true,
    "frequency": true,
    "frequencyType": "user",
    "frequencyCap": 3,
    "frequencyPeriod": 1,
    "dateStart": "2024-08-05",
    "dateEnd": "2026-05-22"
}

11.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiIxS3dldzBTVGlMa29XVGtjIiwic3ViIjoiMjUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.4jHGtluyNFkM_rxiIaiys_zrWg4XxCU9P_9N7ZQsktg' \
    -d '{
    "type": "banner",
    "name": "New Campaign #2",
    "aDomain": "gusikowski.com",
    "isRewarded": true,
    "isDesktopWeb": true,
    "isMobileApp": true,
    "isMobileWeb": true,
    "isSmartphone": true,
    "isTablet": true,
    "contentCategories": [
        "IAB1",
        "IAB3"
    ],
    "contentCategoriesIsInclude": false,
    "userAgeMin": 18,
    "userAgeMax": 50,
    "connectionTypes": [
        "ethernet",
        "cellular_all",
        "cellular_3g",
        "cellular_4g",
        "wifi"
    ],
    "deviceCarrier": [
        "ISP Green-Stiedemann",
        "ISP Simonis Inc"
    ],
    "deviceCarrierIsInclude": false,
    "OS": [
        "Android 8.0",
        "Android 8.1",
        "Android 9.0",
        "Android 10.0",
        "Android 11.0",
        "Android 12.0",
        "Android 13.0",
        "iOS"
    ],
    "OSIsInclude": true,
    "browser": [
        "Chrome",
        "IE",
        "Edge"
    ],
    "browserIsInclude": true,
    "deviceLanguage": [
        "ab",
        "aa"
    ],
    "deviceLanguageIsInclude": true,
    "spentDailyLimit": 200,
    "spentTotalLimit": 1000,
    "impressionsDailyLimit": 100000,
    "impressionsTotalLimit": 1000000,
    "clicksDailyLimit": 500,
    "clicksTotalLimit": 1000,
    "budgetUse": "fast",
    "geoCountries": [],
    "geoCountriesIsInclude": true,
    "geoRegions": [],
    "geoRegionsIsInclude": true,
    "geoCities": [],
    "geoCitiesIsInclude": true,
    "frequency": true,
    "frequencyType": "user",
    "frequencyCap": 3,
    "frequencyPeriod": 1,
    "dateStart": "2024-08-05",
    "dateEnd": "2026-05-22"
}'

11.3.4. Response Body

Path Type Description

data.id

integer

Campaign Id

data.userId

integer

User Id

data.isActive

boolean

Campaign On/Off

data.isRunning

boolean

Campaign running status

data.type

string

Campaign type: banner, native, video, audio

data.name

string

Campaign name

data.isRewarded

integer

Rewarded video (for video creatives)

data.isDesktopWeb

boolean

Traffic Type: Desktop Websites

data.isMobileApp

boolean

Traffic Type: Mobile Applications

data.isMobileWeb

boolean

Traffic Type: Mobile Websites

data.isSmartphone

boolean

Traffic Type: Smartphones

data.isTablet

boolean

Traffic Type: Tablets

data.isCTV

boolean

Traffic Type: CTV

data.isDOOH

boolean

Traffic Type: DOOH

data.aDomain

integer

Top level domain

data.dateStart

date

Date start

data.dateEnd

date

Date end

data.geoCountries

array

GEO Targeting: countries list

data.geoCountriesIsInclude

boolean

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

data.geoRegions

array

GEO Targeting: regions list

data.geoRegionsIsInclude

boolean

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

data.geoCities

array

GEO Targeting: cities list

data.geoCitiesIsInclude

boolean

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

data.contentCategories

array

Targeting: IAB Categories list

data.contentCategoriesIsInclude

boolean

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

data.userAgeMin

integer

Targeting: Age range from

data.userAgeMax

integer

Targeting: Age range to

data.connectionTypes.*

string

Connection type (wifi, ethernet, cellular_all, cellular_3g, cellular_4g, cellular_5g)

data.clickedInventoryCategories

array

Сlicked Inventory Categories

data.deviceCarrier.*

string

Network operator name

data.deviceCarrierIsInclude

boolean

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

data.OS.*

string

Operating system name

data.OSIsInclude

boolean

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

data.browser.*

string

Browser name

data.browserIsInclude

boolean

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

data.deviceLanguage.*

string

Language code (ISO-like, e.g. "en", "ru")

data.deviceLanguageIsInclude

boolean

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

data.spentDailyLimit

integer

Daily spent limit

data.spentTotalLimit

integer

Total spent limit

data.impressionsDailyLimit

integer

Daily impressions limit

data.impressionsTotalLimit

integer

Total impressions limit

data.clicksDailyLimit

integer

Daily clicks limit

data.clicksTotalLimit

integer

Total clicks limit

data.budgetUse

integer

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

data.allSources

boolean

Inventory: Use all SSP endpoints

data.cpm

float

cpm

data.adaptiveCpm

boolean

adaptiveCpm

data.useCpm

boolean

use cpm

data.googleAnalyticsTrackingCode

string

Google Analytics tracking code - PUSH Campaigns

data.dynamicTargeting

array

SmartCPC: Dynamic targeting - only for CPC Pricing model

data.subscriptionAge

array

Subscription Age - only for CPC Pricing model

data.frequencyType

string

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

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

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

data.frequencyPeriod

integer

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

data.extendedStatus

string

Campaign extended status

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.deletedAt

datetime

Date of deletion

data.pretarget

int

pretarget

data.pretargets

array

pretargets

data.audiences

array

audiences

11.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 9,
        "userId": 25,
        "isActive": null,
        "isRunning": false,
        "type": "banner",
        "name": "New Campaign #2",
        "isRewarded": true,
        "isDesktopWeb": true,
        "isMobileApp": true,
        "isMobileWeb": true,
        "isSmartphone": true,
        "isTablet": true,
        "isCTV": true,
        "isDOOH": true,
        "aDomain": "gusikowski.com",
        "dateStart": "2024-08-05",
        "dateEnd": "2026-05-22",
        "geoCountries": [],
        "geoCountriesIsInclude": true,
        "geoRegions": [],
        "geoRegionsIsInclude": true,
        "geoCities": [],
        "geoCitiesIsInclude": true,
        "contentCategories": [],
        "contentCategoriesIsInclude": null,
        "userAgeMin": 18,
        "userAgeMax": 50,
        "connectionTypes": [
            "ethernet",
            "cellular_all",
            "cellular_3g",
            "cellular_4g",
            "wifi"
        ],
        "clickedInventoryCategories": [],
        "deviceCarrier": [
            "ISP Green-Stiedemann",
            "ISP Simonis Inc"
        ],
        "deviceCarrierIsInclude": false,
        "OS": [
            "Android 8.0",
            "Android 8.1",
            "Android 9.0",
            "Android 10.0",
            "Android 11.0",
            "Android 12.0",
            "Android 13.0",
            "iOS"
        ],
        "OSIsInclude": true,
        "browser": [
            "Chrome",
            "IE",
            "Edge"
        ],
        "browserIsInclude": true,
        "deviceLanguage": [
            "ab",
            "aa"
        ],
        "deviceLanguageIsInclude": true,
        "spentDailyLimit": 200,
        "spentTotalLimit": 1000,
        "impressionsDailyLimit": 100000,
        "impressionsTotalLimit": 1000000,
        "clicksDailyLimit": 500,
        "clicksTotalLimit": 1000,
        "budgetUse": "fast",
        "allSources": false,
        "cpm": null,
        "adaptiveCpm": null,
        "useCpm": null,
        "googleAnalyticsTrackingCode": null,
        "dynamicTargeting": [],
        "subscriptionAge": [],
        "frequencyType": "user",
        "frequency": true,
        "frequencyCap": 3,
        "frequencyPeriod": 1,
        "extendedStatus": "Campaign is not active",
        "createdAt": "2026-02-12",
        "updatedAt": "2026-02-12",
        "deletedAt": null,
        "pretarget": null,
        "pretargets": [],
        "audiences": []
    }
}

11.4. Update a Custom Campaign

A `PATCH` request will update campaign.

11.4.1. Request Body

Path Type Description Required

name

string

Campaign name

+

geoCountries

array

GEO Targeting: countries list. Use GET /geo/countries (response field: iso3).

geoCountriesIsInclude

boolean

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

geoRegions

array

GEO Targeting: regions list. Use GET /geo/regions?selectedCountries=USA,CAN (response field: state_iso2). Note: API may return multiple codes joined with a vertical bar.

geoRegionsIsInclude

boolean

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

geoCities

array

GEO Targeting: cities list. Use GET /geo/cities?selectedCountries=USA&selectedRegions=US-CA (response field: geoname_id). Note: API may return multiple ids joined with a vertical bar.

geoCitiesIsInclude

boolean

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

frequency

boolean

Frequency capping on/off.

frequencyType

string

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

frequencyCap

integer

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

frequencyPeriod

integer

Frequency period (days). Required if frequency is on.

11.4.2. HTTP Request

URL

PATCH api/campaigns/10 HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiIwaWpRd0EzUmtqUzM3d1UyIiwic3ViIjoiMjYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.KlU7-HCF3nsgw256iejZ2WlimynCGTGyJ3_FPdDFRO8
DATA
{
    "name": "Updated Campaign #3",
    "geoCountries": [],
    "geoCountriesIsInclude": true,
    "geoRegions": [],
    "geoRegionsIsInclude": true,
    "geoCities": [],
    "geoCitiesIsInclude": true,
    "frequency": true,
    "frequencyType": "user",
    "frequencyCap": 3,
    "frequencyPeriod": 1
}

11.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/10' -i -X PATCH \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiIwaWpRd0EzUmtqUzM3d1UyIiwic3ViIjoiMjYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.KlU7-HCF3nsgw256iejZ2WlimynCGTGyJ3_FPdDFRO8' \
    -d '{
    "name": "Updated Campaign #3",
    "geoCountries": [],
    "geoCountriesIsInclude": true,
    "geoRegions": [],
    "geoRegionsIsInclude": true,
    "geoCities": [],
    "geoCitiesIsInclude": true,
    "frequency": true,
    "frequencyType": "user",
    "frequencyCap": 3,
    "frequencyPeriod": 1
}'

11.4.4. Response Body

Path Type Description

data.id

integer

Campaign Id

data.userId

integer

User Id

data.isActive

boolean

Campaign On/Off

data.isRunning

boolean

Campaign running status

data.type

string

Campaign type: banner, native, video, audio

data.name

string

Campaign name

data.isRewarded

integer

Rewarded video (for video creatives)

data.isDesktopWeb

boolean

Traffic Type: Desktop Websites

data.isMobileApp

boolean

Traffic Type: Mobile Applications

data.isMobileWeb

boolean

Traffic Type: Mobile Websites

data.isSmartphone

boolean

Traffic Type: Smartphones

data.isTablet

boolean

Traffic Type: Tablets

data.isCTV

boolean

Traffic Type: CTV

data.isDOOH

boolean

Traffic Type: DOOH

data.aDomain

integer

Top level domain

data.dateStart

date

Date start

data.dateEnd

date

Date end

data.geoCountries

array

GEO Targeting: countries list

data.geoCountriesIsInclude

boolean

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

data.geoRegions

array

GEO Targeting: regions list

data.geoRegionsIsInclude

boolean

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

data.geoCities

array

GEO Targeting: cities list

data.geoCitiesIsInclude

boolean

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

data.contentCategories

array

Targeting: IAB Categories list

data.contentCategoriesIsInclude

boolean

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

data.userAgeMin

integer

Targeting: Age range from

data.userAgeMax

integer

Targeting: Age range to

data.connectionTypes.*

string

Connection type (wifi, ethernet, cellular_all, cellular_3g, cellular_4g, cellular_5g)

data.clickedInventoryCategories

array

Сlicked Inventory Categories

data.deviceCarrier

array

Targeting: List of network operators.

data.deviceCarrierIsInclude

boolean

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

data.OS

array

Targeting: The operating system of user's device

data.OSIsInclude

boolean

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

data.browser

array

Targeting: The user's browsers list

data.browserIsInclude

boolean

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

data.deviceLanguage

array

Targeting: The languages of user's browser

data.deviceLanguageIsInclude

boolean

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

data.spentDailyLimit

integer

Daily spent limit

data.spentTotalLimit

integer

Total spent limit

data.impressionsDailyLimit

integer

Daily impressions limit

data.impressionsTotalLimit

integer

Total impressions limit

data.clicksDailyLimit

integer

Daily clicks limit

data.clicksTotalLimit

integer

Total clicks limit

data.budgetUse

integer

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

data.allSources

boolean

Inventory: Use all SSP endpoints

data.cpm

float

cpm

data.adaptiveCpm

boolean

adaptiveCpm

data.useCpm

boolean

use cpm

data.googleAnalyticsTrackingCode

string

Google Analytics tracking code - PUSH Campaigns

data.dynamicTargeting

array

SmartCPC: Dynamic targeting - only for CPC Pricing model

data.subscriptionAge

array

Subscription Age - only for CPC Pricing model

data.frequencyType

string

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

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

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

data.frequencyPeriod

integer

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

data.extendedStatus

string

Campaign extended status

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.deletedAt

datetime

Date of deletion

data.pretarget

int

pretarget

data.pretargets

array

pretargets

data.audiences

array

audiences

11.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 10,
        "userId": 26,
        "isActive": false,
        "isRunning": false,
        "type": "audio",
        "name": "Updated Campaign #3",
        "isRewarded": false,
        "isDesktopWeb": true,
        "isMobileApp": true,
        "isMobileWeb": false,
        "isSmartphone": false,
        "isTablet": true,
        "isCTV": false,
        "isDOOH": true,
        "aDomain": "sporer.com",
        "dateStart": "2025-06-22",
        "dateEnd": "2026-08-27",
        "geoCountries": [],
        "geoCountriesIsInclude": true,
        "geoRegions": [],
        "geoRegionsIsInclude": true,
        "geoCities": [],
        "geoCitiesIsInclude": true,
        "contentCategories": [],
        "contentCategoriesIsInclude": true,
        "userAgeMin": 0,
        "userAgeMax": 0,
        "connectionTypes": [
            "wifi"
        ],
        "clickedInventoryCategories": [],
        "deviceCarrier": [],
        "deviceCarrierIsInclude": true,
        "OS": [],
        "OSIsInclude": true,
        "browser": [],
        "browserIsInclude": true,
        "deviceLanguage": [],
        "deviceLanguageIsInclude": true,
        "spentDailyLimit": 472,
        "spentTotalLimit": 7775,
        "impressionsDailyLimit": 226038,
        "impressionsTotalLimit": 542375,
        "clicksDailyLimit": 0,
        "clicksTotalLimit": 0,
        "budgetUse": "fast",
        "allSources": true,
        "cpm": 0,
        "adaptiveCpm": false,
        "useCpm": false,
        "googleAnalyticsTrackingCode": null,
        "dynamicTargeting": [],
        "subscriptionAge": [],
        "frequencyType": "user",
        "frequency": true,
        "frequencyCap": 3,
        "frequencyPeriod": 1,
        "extendedStatus": "Campaign is not active",
        "createdAt": "2026-02-12",
        "updatedAt": "2026-02-12",
        "deletedAt": null,
        "pretarget": null,
        "pretargets": [],
        "audiences": []
    }
}

11.5. Delete a Custom Campaign

A `DELETE` request will delete campaign.

11.5.1. HTTP Request

URL

DELETE api/campaigns/11 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwODksImV4cCI6MTc3MDkxNzY4OSwibmJmIjoxNzcwOTE0MDg5LCJqdGkiOiI3c2UyWjZzUWlUaHp1ZDI0Iiwic3ViIjoiMjciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.hIh_A99r-ccdOdxmSUpa-oHIUcxXsA_OGEIDqdPFwfo
Content-type: application/x-www-form-urlencoded
DATA
{}

11.5.2. Curl request

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

11.5.3. HTTP Response

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

12. Audiences

12.1. Get list of Audiences

A `GET` request returns paginated list of first-party audiences owned by current user. First-party audiences are custom audiences created from user data (clicks, conversions, pixels, video events).

12.1.1. HTTP Request

URL

GET api/audiences HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

12.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/audiences' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

12.1.3. Response Body

Path Type Description

data.*.id

integer

Audience id

data.*.title

string

Audience title

data.*.userId

integer

Audience owner user id

data.*.isIncludeDateRange

boolean

Is include date range

data.*.dateFrom

datetime

Date from

data.*.dateTo

datetime

Date to

data.*.usersTtlInDays

integer

Users TTL in days

data.*.collectionType

string

Collection type (click, conversion, pixel, liveRamp, eyeota, impression, videoStart, videoFirstQuartile, videoMidpoint, videoThirdQuartile, videoComplete)

data.*.hashTag

string

Hash tag

data.*.allUsers

boolean

All users

data.*.isActive

boolean

Audience active status

data.*.providerList

array

Provider list

data.*.providerId

integer

Provider id

data.*.isInclude

boolean

Audience isInclude flag

data.*.createdAt

date

Created at

data.*.updatedAt

date

Updated at

meta.pagination.total

integer

Total items count

meta.pagination.count

integer

Current page items count

meta.pagination.per_page

integer

Items per page

meta.pagination.current_page

integer

Current page number

meta.pagination.total_pages

integer

Total pages count

meta.pagination.links.prev

string

URL to previous page

meta.pagination.links.next

string

URL to next page

12.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "id": 1,
            "title": "Audience #1",
            "userId": 6,
            "isIncludeDateRange": false,
            "dateFrom": null,
            "dateTo": null,
            "usersTtlInDays": 30,
            "collectionType": "pixel",
            "hashTag": null,
            "allUsers": false,
            "isActive": true,
            "providerList": [],
            "providerId": null,
            "isInclude": true,
            "createdAt": "2026-02-12",
            "updatedAt": "2026-02-12"
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 100,
            "current_page": 1,
            "total_pages": 1,
            "links": {
                "prev": null,
                "next": null
            }
        }
    }
}

12.2. Get Audience by ID

A `GET` request with Audience Id in url will return audience details.

12.2.1. HTTP Request

URL

GET api/audiences/1 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

12.2.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/audiences/1' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

12.2.3. Response Body

Path Type Description

data.id

integer

Audience id

data.title

string

Audience title

data.userId

integer

Audience owner user id

data.isIncludeDateRange

boolean

Is include date range

data.dateFrom

datetime

Date from

data.dateTo

datetime

Date to

data.usersTtlInDays

integer

Users TTL in days

data.collectionType

string

Collection type

data.hashTag

string

Hash tag

data.allUsers

boolean

All users

data.isActive

boolean

Audience active status

data.providerList

array

Provider list

data.providerId

integer

Provider id

data.isInclude

boolean

Audience isInclude flag

data.createdAt

date

Created at

data.updatedAt

date

Updated at

12.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": {
        "id": 1,
        "title": "Audience #1",
        "userId": 7,
        "isIncludeDateRange": false,
        "dateFrom": null,
        "dateTo": null,
        "usersTtlInDays": 30,
        "collectionType": "pixel",
        "hashTag": null,
        "allUsers": false,
        "isActive": true,
        "providerList": [],
        "providerId": null,
        "isInclude": true,
        "createdAt": "2026-02-12",
        "updatedAt": "2026-02-12"
    }
}

12.3. Create Audience

A `POST` request creates a new first-party audience. Required fields: `title` (unique per user) and `collectionType`. Audience will be owned by current authenticated user.

12.3.1. Request Body

Path Type Description Required

title

string

Audience title (unique per user, 2-50 chars)

+

collectionType

string

Collection type (click, conversion, pixel, liveRamp, eyeota, impression, videoStart, videoFirstQuartile, videoMidpoint, videoThirdQuartile, videoComplete)

+

usersTtlInDays

integer

Users TTL in days

isActive

integer

Audience active status (0 or 1)

12.3.2. HTTP Request

URL

POST api/audiences HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "title": "New Audience",
    "collectionType": "pixel",
    "usersTtlInDays": 30,
    "isActive": 1
}

12.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/audiences' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "title": "New Audience",
    "collectionType": "pixel",
    "usersTtlInDays": 30,
    "isActive": 1
}'

12.3.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Audience id

data.title

string

Audience title

data.userId

integer

Audience owner user id

data.isIncludeDateRange

boolean

Is include date range

data.dateFrom

datetime

Date from

data.dateTo

datetime

Date to

data.usersTtlInDays

integer

Users TTL in days

data.collectionType

string

Collection type

data.hashTag

string

Hash tag

data.allUsers

boolean

All users

data.isActive

boolean

Audience active status

data.providerList

array

Provider list

data.providerId

integer

Provider id

data.isInclude

boolean

Audience isInclude flag

data.createdAt

date

Created at

data.updatedAt

date

Updated at

12.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Audience created.",
    "data": {
        "id": 1,
        "title": "New Audience",
        "userId": 8,
        "isIncludeDateRange": false,
        "dateFrom": null,
        "dateTo": null,
        "usersTtlInDays": 30,
        "collectionType": "pixel",
        "hashTag": null,
        "allUsers": false,
        "isActive": true,
        "providerList": [],
        "providerId": null,
        "isInclude": true,
        "createdAt": "2026-02-12",
        "updatedAt": "2026-02-12"
    }
}

12.4. Update Audience

A `PUT/PATCH` request with Audience Id in url will update audience.

12.4.1. Request Body

Path Type Description Required

title

string

Audience title (unique per user, 2-50 chars)

isActive

integer

Audience active status (0 or 1)

12.4.2. HTTP Request

URL

PUT api/audiences/1 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "title": "Updated Audience",
    "isActive": 0
}

12.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/audiences/1' -i -X PUT \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "title": "Updated Audience",
    "isActive": 0
}'

12.4.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Audience id

data.title

string

Audience title

data.userId

integer

Audience owner user id

data.isIncludeDateRange

boolean

Is include date range

data.dateFrom

datetime

Date from

data.dateTo

datetime

Date to

data.usersTtlInDays

integer

Users TTL in days

data.collectionType

string

Collection type

data.hashTag

string

Hash tag

data.allUsers

boolean

All users

data.isActive

boolean

Audience active status

data.providerList

array

Provider list

data.providerId

integer

Provider id

data.isInclude

boolean

Audience isInclude flag

data.createdAt

date

Created at

data.updatedAt

date

Updated at

12.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Audience updated.",
    "data": {
        "id": 1,
        "title": "Updated Audience",
        "userId": 9,
        "isIncludeDateRange": false,
        "dateFrom": null,
        "dateTo": null,
        "usersTtlInDays": 30,
        "collectionType": "pixel",
        "hashTag": null,
        "allUsers": false,
        "isActive": false,
        "providerList": [],
        "providerId": null,
        "isInclude": true,
        "createdAt": "2026-02-12",
        "updatedAt": "2026-02-12"
    }
}

12.5. Delete Audience

A `DELETE` request with Audience Id in url will delete audience.

12.5.1. HTTP Request

URL

DELETE api/audiences/1 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{}

12.5.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/audiences/1' -i -X DELETE \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{}'

12.5.3. Response Body

Path Type Description

message

string

Result message

deleted

boolean

Delete result

12.5.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Audience deleted.",
    "deleted": true
}

12.6. Get list of Third-Party Audiences

A `GET` request returns paginated list of third-party audiences owned by current user. Third-party audiences are purchased from external data providers (LiveRamp, Eyeota, etc.).

12.6.1. HTTP Request

URL

GET api/audiences/third-parties HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

12.6.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/audiences/third-parties' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

12.6.3. Response Body

Path Type Description

data.*.id

integer

Audience id

data.*.title

string

Audience title

data.*.userId

integer

Audience owner user id

data.*.isActive

boolean

Audience active status

data.*.providerList

array

Provider list

data.*.providerId

integer

Provider id

data.*.providerName

string

Provider name

data.*.isInclude

boolean

Audience isInclude flag

data.*.segments

integer

Segments count

data.*.createdAt

date

Created at

meta.pagination.total

integer

Total items count

meta.pagination.count

integer

Current page items count

meta.pagination.per_page

integer

Items per page

meta.pagination.current_page

integer

Current page number

meta.pagination.total_pages

integer

Total pages count

meta.pagination.links.prev

string

URL to previous page

meta.pagination.links.next

string

URL to next page

12.6.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "id": 1,
            "title": "Third-Party Audience #1",
            "userId": 11,
            "isActive": true,
            "providerList": [],
            "providerId": 1,
            "providerName": "Provider Name",
            "isInclude": true,
            "segments": 5,
            "createdAt": "2026-02-12"
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 100,
            "current_page": 1,
            "total_pages": 1,
            "links": {
                "prev": null,
                "next": null
            }
        }
    }
}

12.7. Create Third-Party Audience

A `POST` request will create a new third-party audience.

12.7.1. Request Body

Path Type Description Required

title

string

Audience title (unique per user, 2-50 chars)

+

userID

integer

User ID (owner)

+

providerID

integer

Provider ID

+

segments.*

integer

Segment ID

+

type

string

Type (include/exclude)

+

12.7.2. HTTP Request

URL

POST api/audiences/third-parties HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "title": "New Third-Party Audience",
    "userID": 12,
    "providerID": 1,
    "segments": [
        1,
        2,
        3
    ],
    "type": "include"
}

12.7.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/audiences/third-parties' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "title": "New Third-Party Audience",
    "userID": 12,
    "providerID": 1,
    "segments": [
        1,
        2,
        3
    ],
    "type": "include"
}'

12.7.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Audience id

data.title

string

Audience title

data.userId

integer

Audience owner user id

data.isActive

boolean

Audience active status

data.providerList

array

Provider list

data.providerId

integer

Provider id

data.providerName

string

Provider name

data.isInclude

boolean

Audience isInclude flag

data.segments

integer

Segments count

data.createdAt

date

Created at

12.7.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Audience created.",
    "data": {
        "id": 1,
        "title": "New Third-Party Audience",
        "userId": 12,
        "isActive": true,
        "providerList": [],
        "providerId": 1,
        "providerName": "Provider Name",
        "isInclude": true,
        "segments": 3,
        "createdAt": "2026-02-12"
    }
}

12.8. Update Third-Party Audience

A `PUT/PATCH` request with Audience Id in url will update third-party audience.

12.8.1. Request Body

Path Type Description Required

id

integer

Audience ID

+

title

string

Audience title (unique per user, 2-50 chars)

+

segments.*

integer

Segment ID

+

type

string

Type (include/exclude)

+

12.8.2. HTTP Request

URL

PUT api/audiences/third-parties/1 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "id": 1,
    "title": "Updated Third-Party Audience",
    "segments": [
        1,
        2,
        3,
        4
    ],
    "type": "exclude"
}

12.8.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/audiences/third-parties/1' -i -X PUT \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "id": 1,
    "title": "Updated Third-Party Audience",
    "segments": [
        1,
        2,
        3,
        4
    ],
    "type": "exclude"
}'

12.8.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Audience id

data.title

string

Audience title

data.userId

integer

Audience owner user id

data.isActive

boolean

Audience active status

data.providerList

array

Provider list

data.providerId

integer

Provider id

data.providerName

string

Provider name

data.isInclude

boolean

Audience isInclude flag

data.segments

integer

Segments count

data.createdAt

date

Created at

12.8.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Audience updated.",
    "data": {
        "id": 1,
        "title": "Updated Third-Party Audience",
        "userId": 13,
        "isActive": true,
        "providerList": [],
        "providerId": 1,
        "providerName": "Provider Name",
        "isInclude": false,
        "segments": 4,
        "createdAt": "2026-02-12"
    }
}

13. Contextual Targeting

13.1. Get list of Contextual Targeting

A `GET` request returns paginated list of contextual targeting rules owned by current user. Contextual targeting allows filtering traffic by keywords or IAB categories for web/in-app inventory.

13.1.1. HTTP Request

URL

GET api/contextual-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

13.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/contextual-targeting' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

13.1.3. Response Body

Path Type Description

data.*.id

integer

Target id

data.*.name

string

Target name

data.*.type

string

Target type (web, inApp)

data.*.rule

string

Target rule (include, exclude)

data.*.userId

integer

Target owner user id

data..keywords..*

string

Keyword data

data.*.iabCategories

array

IAB categories array

data.*.keywordsCount

integer

Keywords/categories count

data..campaigns.

integer

Campaign ID

data.*.createdAt

datetime

Created at

data.*.updatedAt

datetime

Updated at

meta.pagination.total

integer

Total items count

meta.pagination.count

integer

Current page items count

meta.pagination.per_page

integer

Items per page

meta.pagination.current_page

integer

Current page number

meta.pagination.total_pages

integer

Total pages count

meta.pagination.links.prev

string

URL to previous page

meta.pagination.links.next

string

URL to next page

13.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "id": 1,
            "name": "Target #1",
            "type": "web",
            "rule": "include",
            "userId": 62,
            "keywords": [
                [
                    "keyword1",
                    "keyword2"
                ]
            ],
            "iabCategories": [],
            "keywordsCount": 2,
            "campaigns": [
                1,
                2
            ],
            "createdAt": "2026-02-12 16:34:52",
            "updatedAt": "2026-02-12 16:34:52"
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 1000,
            "current_page": 1,
            "total_pages": 1,
            "links": {
                "prev": null,
                "next": null
            }
        }
    }
}

13.2. Get Contextual Targeting by ID

A `GET` request with Target Id in url will return target details.

13.2.1. HTTP Request

URL

GET api/contextual-targeting/1 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

13.2.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/contextual-targeting/1' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

13.2.3. Response Body

Path Type Description

data.id

integer

Target id

data.name

string

Target name

data.type

string

Target type (web, inApp)

data.rule

string

Target rule (include, exclude)

data.userId

integer

Target owner user id

data.keywords..

string

Keyword data

data.iabCategories

array

IAB categories array

data.keywordsCount

integer

Keywords/categories count

data.campaigns.*

integer

Campaign ID

data.createdAt

datetime

Created at

data.updatedAt

datetime

Updated at

13.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": {
        "id": 1,
        "name": "Target #1",
        "type": "web",
        "rule": "include",
        "userId": 63,
        "keywords": [
            [
                "keyword1",
                "keyword2"
            ]
        ],
        "iabCategories": [],
        "keywordsCount": 2,
        "campaigns": [
            1,
            2
        ],
        "createdAt": "2026-02-12 16:34:52",
        "updatedAt": "2026-02-12 16:34:52"
    }
}

13.3. Create Contextual Targeting

A `POST` request creates a new contextual targeting rule. Required fields: `name`, `type` (web/inApp), `rule` (include/exclude). Must provide either `keywords` or `iabCategories` (at least one is required).

13.3.1. Request Body

Path Type Description Required

name

string

Target name (min 2 chars)

+

type

string

Target type (web, inApp)

+

rule

string

Target rule (include, exclude)

+

keywords..

string

Keyword data

iabCategories

array

IAB categories array (required if keywords empty)

13.3.2. HTTP Request

URL

POST api/contextual-targeting HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "name": "New Target",
    "type": "web",
    "rule": "include",
    "keywords": [
        [
            "keyword1",
            "keyword2"
        ]
    ],
    "iabCategories": []
}

13.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/contextual-targeting' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "name": "New Target",
    "type": "web",
    "rule": "include",
    "keywords": [
        [
            "keyword1",
            "keyword2"
        ]
    ],
    "iabCategories": []
}'

13.3.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Target id

data.name

string

Target name

data.type

string

Target type

data.rule

string

Target rule

data.userId

integer

Target owner user id

data.keywords..

string

Keyword data

data.iabCategories

array

IAB categories array

data.keywordsCount

integer

Keywords/categories count

data.campaigns

array

Array of campaign IDs

data.createdAt

datetime

Created at

data.updatedAt

datetime

Updated at

13.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Target created.",
    "data": {
        "id": 1,
        "name": "New Target",
        "type": "web",
        "rule": "include",
        "userId": 64,
        "keywords": [
            [
                "keyword1",
                "keyword2"
            ]
        ],
        "iabCategories": [],
        "keywordsCount": 2,
        "campaigns": [],
        "createdAt": "2026-02-12 16:34:53",
        "updatedAt": "2026-02-12 16:34:53"
    }
}

13.4. Update Contextual Targeting

A `PUT/PATCH` request with Target Id in url will update contextual targeting rule.

13.4.1. Request Body

Path Type Description Required

name

string

Target name (min 2 chars)

+

keywords..

string

Keyword data

13.4.2. HTTP Request

URL

PUT api/contextual-targeting/1 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "name": "Updated Target",
    "keywords": [
        [
            "keyword1",
            "keyword2",
            "keyword3"
        ]
    ]
}

13.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/contextual-targeting/1' -i -X PUT \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "name": "Updated Target",
    "keywords": [
        [
            "keyword1",
            "keyword2",
            "keyword3"
        ]
    ]
}'

13.4.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Target id

data.name

string

Target name

data.type

string

Target type

data.rule

string

Target rule

data.userId

integer

Target owner user id

data.keywords..

string

Keyword data

data.iabCategories

array

IAB categories array

data.keywordsCount

integer

Keywords/categories count

data.campaigns

array

Array of campaign IDs

data.createdAt

datetime

Created at

data.updatedAt

datetime

Updated at

13.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Target updated.",
    "data": {
        "id": 1,
        "name": "Updated Target",
        "type": "web",
        "rule": "include",
        "userId": 65,
        "keywords": [
            [
                "keyword1",
                "keyword2",
                "keyword3"
            ]
        ],
        "iabCategories": [],
        "keywordsCount": 3,
        "campaigns": [],
        "createdAt": "2026-02-12 16:34:53",
        "updatedAt": "2026-02-12 16:34:53"
    }
}

13.5. Delete Contextual Targeting

A `DELETE` request with Target Id in url will delete contextual targeting rule.

13.5.1. HTTP Request

URL

DELETE api/contextual-targeting/1 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{}

13.5.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/contextual-targeting/1' -i -X DELETE \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{}'

13.5.3. Response Body

Path Type Description

message

string

Result message

deleted

boolean

Delete result

13.5.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Target deleted.",
    "deleted": true
}

13.6. Get IAB Categories

A `GET` request will return IAB categories and subcategories dictionary.

13.6.1. HTTP Request

URL

GET api/get-iab-categories HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

13.6.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/get-iab-categories' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

13.6.3. Response Body

Path Type Description

categories.*.id

string

Category ID

categories.*.name

string

Category name

subCategories.*.id

string

Subcategory ID

subCategories.*.parentId

string

Parent category ID

subCategories.*.name

string

Subcategory name

13.6.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "categories": [
        {
            "id": 1,
            "name": "Arts & Entertainment"
        },
        {
            "id": 2,
            "name": "Automotive"
        }
    ],
    "subCategories": [
        {
            "id": 101,
            "parentId": 1,
            "name": "Books & Literature"
        },
        {
            "id": 102,
            "parentId": 1,
            "name": "Celebrity Fan\/Gossip"
        }
    ]
}

13.7. Search Keywords

A `POST` request searches and returns keyword suggestions based on provided search text. Used for autocomplete when creating contextual targeting rules. Supports language filtering and web/inApp type filtering.

13.7.1. Request Body

Path Type Description Required

searchText

string

Search text (min 2, max 255 chars)

+

language

string

Language code (optional, 2-10 chars)

type

string

Type: web or inApp (optional, default: web)

13.7.2. HTTP Request

URL

POST api/contextual-targeting/search-keywords HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "searchText": "technology",
    "language": "en",
    "type": "web"
}

13.7.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/contextual-targeting/search-keywords' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "searchText": "technology",
    "language": "en",
    "type": "web"
}'

13.7.4. Response Body

Path Type Description

*

any

13.7.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        "technology",
        "tech news",
        "technology trends",
        "tech gadgets"
    ]
}

14. Third-Party Audiences

14.1. Get list of Third-Party Audiences

A `GET` request returns paginated list of third-party audiences owned by current user. Third-party audiences are purchased from external data providers (LiveRamp, Eyeota, etc.).

14.1.1. HTTP Request

URL

GET api/audiences/third-parties HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

14.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/audiences/third-parties' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

14.1.3. Response Body

Path Type Description

data.*.id

integer

Audience id

data.*.title

string

Audience title

data.*.userId

integer

Audience owner user id

data.*.isActive

boolean

Audience active status

data.*.providerList

array

Provider list

data.*.providerId

integer

Provider id

data.*.providerName

string

Provider name

data.*.isInclude

boolean

Audience isInclude flag

data.*.segments

integer

Segments count

data.*.createdAt

date

Created at

meta.pagination.total

integer

Total items count

meta.pagination.count

integer

Current page items count

meta.pagination.per_page

integer

Items per page

meta.pagination.current_page

integer

Current page number

meta.pagination.total_pages

integer

Total pages count

meta.pagination.links

object

Pagination links

14.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "id": 1,
            "title": "Third-Party Audience #1",
            "userId": 1,
            "isActive": true,
            "providerList": [],
            "providerId": 1,
            "providerName": "eyeota",
            "isInclude": true,
            "segments": 5,
            "createdAt": "2024-01-01"
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 100,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

14.2. Create Third-Party Audience

A `POST` request will create a new third-party audience.

14.2.1. Request Body

Path Type Description Required

title

string

Audience title (unique per user, 2-50 chars)

+

userID

integer

User ID (owner)

+

providerID

integer

Provider ID

+

segments.*

integer

Segment ID

+

type

string

Type (include/exclude)

+

14.2.2. HTTP Request

URL

POST api/audiences/third-parties HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "title": "New Third-Party Audience",
    "userID": 1,
    "providerID": 1,
    "segments": [
        1,
        2,
        3
    ],
    "type": "include"
}

14.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/audiences/third-parties' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "title": "New Third-Party Audience",
    "userID": 1,
    "providerID": 1,
    "segments": [
        1,
        2,
        3
    ],
    "type": "include"
}'

14.2.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Audience id

data.title

string

Audience title

data.userId

integer

Audience owner user id

data.isActive

boolean

Audience active status

data.providerList

array

Provider list

data.providerId

integer

Provider id

data.providerName

string

Provider name

data.isInclude

boolean

Audience isInclude flag

data.segments

integer

Segments count

data.createdAt

date

Created at

14.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Audience created.",
    "data": {
        "id": 1,
        "title": "New Third-Party Audience",
        "userId": 1,
        "isActive": true,
        "providerList": [],
        "providerId": 1,
        "providerName": "eyeota",
        "isInclude": true,
        "segments": 3,
        "createdAt": "2024-01-01"
    }
}

14.3. Update Third-Party Audience

A `PUT/PATCH` request with Audience Id in url will update third-party audience.

14.3.1. Request Body

Path Type Description Required

id

integer

Audience ID

+

title

string

Audience title (unique per user, 2-50 chars)

+

segments.*

integer

Segment ID

+

type

string

Type (include/exclude)

+

14.3.2. HTTP Request

URL

PUT api/audiences/third-parties/1 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "id": 1,
    "title": "Updated Third-Party Audience",
    "segments": [
        1,
        2,
        3,
        4
    ],
    "type": "exclude"
}

14.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/audiences/third-parties/1' -i -X PUT \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "id": 1,
    "title": "Updated Third-Party Audience",
    "segments": [
        1,
        2,
        3,
        4
    ],
    "type": "exclude"
}'

14.3.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Audience id

data.title

string

Audience title

data.userId

integer

Audience owner user id

data.isActive

boolean

Audience active status

data.providerList

array

Provider list

data.providerId

integer

Provider id

data.providerName

string

Provider name

data.isInclude

boolean

Audience isInclude flag

data.segments

integer

Segments count

data.createdAt

date

Created at

14.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Audience updated.",
    "data": {
        "id": 1,
        "title": "Updated Third-Party Audience",
        "userId": 1,
        "isActive": true,
        "providerList": [],
        "providerId": 1,
        "providerName": "eyeota",
        "isInclude": false,
        "segments": 4,
        "createdAt": "2024-01-01"
    }
}

15. Geo Dictionaries

15.1. Get list of Countries

A `GET` request returns paginated list of all available countries for geo targeting. Countries are sorted alphabetically by name. Use ISO3 codes for selecting countries in campaigns.

15.1.1. HTTP Request

URL

GET api/geo/countries HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

15.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/geo/countries' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

15.1.3. Response Body

Path Type Description

data.*.id

integer

Country id

data.*.country_name

string

Country name

data.*.country_iso2

string

Country ISO2 code

data.*.country_iso3

string

Country ISO3 code

meta.pagination.total

integer

Total items count

meta.pagination.count

integer

Current page items count

meta.pagination.per_page

integer

Items per page

meta.pagination.current_page

integer

Current page number

meta.pagination.total_pages

integer

Total pages count

meta.pagination.links.prev

string

URL to previous page

meta.pagination.links.next

string

URL to next page

15.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "id": 1,
            "country_name": "Ukraine",
            "country_iso2": "UA",
            "country_iso3": "UKR"
        },
        {
            "id": 2,
            "country_name": "United States",
            "country_iso2": "US",
            "country_iso3": "USA"
        }
    ],
    "meta": {
        "pagination": {
            "total": 2,
            "count": 2,
            "per_page": 300,
            "current_page": 1,
            "total_pages": 1,
            "links": {
                "prev": null,
                "next": null
            }
        }
    }
}

15.2. Get list of Regions

A `GET` request returns list of regions/states for selected countries. Required parameter: `selectedCountries` (comma-separated ISO3 codes). Optional: `selectedRegions` to move already selected regions to the top of the list.

15.2.1. HTTP Request

URL

GET api/geo/regions HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
    "selectedCountries": "USA,UKR",
    "selectedRegions": ""
}

15.2.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/geo/regions' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{
    "selectedCountries": "USA,UKR",
    "selectedRegions": ""
}'

15.2.3. Response Body

Path Type Description

*.country_iso3

any

*.state

any

*.state_iso2

any

15.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "country_iso3": "USA",
            "state": "California",
            "state_iso2": "CA"
        },
        {
            "country_iso3": "UKR",
            "state": "Kyiv",
            "state_iso2": "KV"
        }
    ]
}

15.3. Get list of Cities

A `GET` request returns list of cities for selected countries and optionally filtered by regions. Required: `selectedCountries` (ISO3 codes). Optional: `selectedRegions` (ISO2 codes) to filter cities by regions, `selectedCities` to move already selected cities to the top.

15.3.1. HTTP Request

URL

GET api/geo/cities HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{
    "selectedCountries": "USA",
    "selectedRegions": "CA",
    "selectedCities": ""
}

15.3.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/geo/cities' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{
    "selectedCountries": "USA",
    "selectedRegions": "CA",
    "selectedCities": ""
}'

15.3.3. Response Body

Path Type Description

*.country_iso3

any

*.state

any

*.state_iso2

any

*.city_name

any

*.geoname_id

any

15.3.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "country_iso3": "USA",
            "state": "California",
            "state_iso2": "CA",
            "city_name": "Los Angeles",
            "geoname_id": "5368361"
        },
        {
            "country_iso3": "USA",
            "state": "California",
            "state_iso2": "CA",
            "city_name": "San Francisco",
            "geoname_id": "5391959"
        }
    ]
}

16. Conversion Pixels

16.1. Get list of Conversion Pixels

A `GET` request returns paginated list of conversion pixels owned by current user. Conversion pixels track user actions (conversions) and can be attached to campaigns for optimization.

16.1.1. HTTP Request

URL

GET api/conversion-pixel HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

16.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/conversion-pixel' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

16.1.3. Response Body

Path Type Description

data.*.id

integer

Conversion pixel id

data.*.isActive

boolean

Is active

data.*.userId

integer

User id

data.*.name

string

Conversion pixel name

data.*.conversionType

string

Conversion type

data.*.repeatConversionsType

string

Repeat conversions type

data.*.frequency

integer

Frequency

data.*.code

string

Pixel code

data.*.createdAt

datetime

Created at

data.*.updatedAt

datetime

Updated at

meta.pagination.total

integer

Total items count

meta.pagination.count

integer

Current page items count

meta.pagination.per_page

integer

Items per page

meta.pagination.current_page

integer

Current page number

meta.pagination.total_pages

integer

Total pages count

meta.pagination.links.prev

string

URL to previous page

meta.pagination.links.next

string

URL to next page

16.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "id": 1,
            "isActive": true,
            "userId": 69,
            "name": "Conversion Pixel #1",
            "conversionType": "postback",
            "repeatConversionsType": "once",
            "frequency": 0,
            "code": "pixel-code-123",
            "createdAt": "2026-02-12 16:34:53",
            "updatedAt": "2026-02-12 16:34:53"
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 100,
            "current_page": 1,
            "total_pages": 1,
            "links": {
                "prev": null,
                "next": null
            }
        }
    }
}

16.2. Get Conversion Pixel by ID

A `GET` request with Conversion Pixel Id in url will return pixel details.

16.2.1. HTTP Request

URL

GET api/conversion-pixel/1 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

16.2.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/conversion-pixel/1' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

16.2.3. Response Body

Path Type Description

id

integer

Conversion pixel id

isActive

boolean

Is active

userId

integer

User id

name

string

Conversion pixel name

conversionType

string

Conversion type

repeatConversionsType

string

Repeat conversions type

frequency

integer

Frequency

code

string

Pixel code

createdAt

datetime

Created at

updatedAt

datetime

Updated at

16.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "id": 1,
    "isActive": true,
    "userId": 70,
    "name": "Conversion Pixel #1",
    "conversionType": "postback",
    "repeatConversionsType": "once",
    "frequency": 0,
    "code": "pixel-code-123",
    "createdAt": "2026-02-12 16:34:53",
    "updatedAt": "2026-02-12 16:34:53"
}

16.3. Create Conversion Pixel

A `POST` request creates a new conversion pixel. Required fields: `name`, `conversionType`, `repeatConversionsType`. Pixel will be owned by current authenticated user and can be attached to campaigns.

16.3.1. Request Body

Path Type Description Required

name

string

Conversion pixel name

+

isActive

boolean

Is active

conversionType

string

Conversion type

+

repeatConversionsType

string

Repeat conversions type

+

frequency

integer

Frequency

code

string

Pixel code

16.3.2. HTTP Request

URL

POST api/conversion-pixel HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "name": "New Conversion Pixel",
    "isActive": true,
    "conversionType": "postback",
    "repeatConversionsType": "once",
    "frequency": 0,
    "code": "pixel-code-456"
}

16.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/conversion-pixel' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "name": "New Conversion Pixel",
    "isActive": true,
    "conversionType": "postback",
    "repeatConversionsType": "once",
    "frequency": 0,
    "code": "pixel-code-456"
}'

16.3.4. Response Body

Path Type Description

id

integer

Conversion pixel id

isActive

boolean

Is active

userId

integer

User id

name

string

Conversion pixel name

conversionType

string

Conversion type

repeatConversionsType

string

Repeat conversions type

frequency

integer

Frequency

code

string

Pixel code

createdAt

datetime

Created at

updatedAt

datetime

Updated at

16.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "id": 1,
    "isActive": true,
    "userId": 71,
    "name": "New Conversion Pixel",
    "conversionType": "postback",
    "repeatConversionsType": "once",
    "frequency": 0,
    "code": "pixel-code-456",
    "createdAt": "2026-02-12 16:34:53",
    "updatedAt": "2026-02-12 16:34:53"
}

16.4. Update Conversion Pixel

A `PUT/PATCH` request with Conversion Pixel Id in url will update pixel.

16.4.1. Request Body

Path Type Description Required

name

string

Conversion pixel name

isActive

boolean

Is active

16.4.2. HTTP Request

URL

PUT api/conversion-pixel/1 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "name": "Updated Conversion Pixel",
    "isActive": false
}

16.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/conversion-pixel/1' -i -X PUT \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "name": "Updated Conversion Pixel",
    "isActive": false
}'

16.4.4. Response Body

Path Type Description

id

integer

Conversion pixel id

isActive

boolean

Is active

userId

integer

User id

name

string

Conversion pixel name

conversionType

string

Conversion type

repeatConversionsType

string

Repeat conversions type

frequency

integer

Frequency

code

string

Pixel code

createdAt

datetime

Created at

updatedAt

datetime

Updated at

16.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "id": 1,
    "isActive": false,
    "userId": 72,
    "name": "Updated Conversion Pixel",
    "conversionType": "postback",
    "repeatConversionsType": "once",
    "frequency": 0,
    "code": "pixel-code-456",
    "createdAt": "2026-02-12 16:34:53",
    "updatedAt": "2026-02-12 16:34:53"
}

16.5. Delete Conversion Pixel

A `DELETE` request with Conversion Pixel Id and Campaign Id in url will delete pixel.

16.5.1. HTTP Request

URL

DELETE api/conversion-pixel/1/1 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{}

16.5.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/conversion-pixel/1/1' -i -X DELETE \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{}'

16.5.3. Response Body

Path Type Description

deleted

boolean

Delete result

16.5.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "deleted": true
}

17. Upload media

17.1. Store Image

A `POST` request will upload image

17.1.1. Request Body

Path Type Description Required

media_assets

file

Array of files to upload

+

17.1.2. HTTP Request

URL

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

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

17.1.3. Curl request

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

17.1.4. Response Body

Path Type Description

message

string

Result message

data.*.id

integer

Media id

data.*.userId

integer

User Id

data.*.mediaType

string

Media type (html, image, video)

data.*.originName

string

Original file name

data.*.name

string

Uploaded file name

data.*.extension

string

Uploaded file extension

data.*.url

string

Uploaded file url

data.*.width

integer

Uploaded file image width

data.*.height

integer

Uploaded file image height

data.*.weight

integer

Uploaded file size kB

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

17.1.5. HTTP Response

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

17.2. Store video

A `POST` request will upload video

17.2.1. Request Body

Path Type Description Required

media_assets

file

Array of files to upload

+

17.2.2. HTTP Request

URL

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

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

17.2.3. Curl request

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

17.2.4. Response Body

Path Type Description

message

string

Result message

data.*.id

integer

Media id

data.*.userId

integer

User Id

data.*.mediaType

string

Media type (html, image, video)

data.*.originName

string

Original file name

data.*.name

string

Uploaded file name

data.*.extension

string

Uploaded file extension

data.*.url

string

Uploaded file url

data.*.width

integer

Uploaded file image width

data.*.height

integer

Uploaded file image height

data.*.weight

integer

Uploaded file size kB

data.*.mimeType

string

Video mime type

data.*.bitrate

integer

Video bitrate

data.*.duration

integer

Video duration (in seconds)

data.*.durationTime

string

Video duration (in text format)

data.*.playtime

integer

Video playtime

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

17.2.5. HTTP Response

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

17.3. Store HTML

A `POST` request will upload HTML

17.3.1. Request Body

Path Type Description Required

media_assets

file

Array of files to upload

+

17.3.2. HTTP Request

URL

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

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

17.3.3. Curl request

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

17.3.4. Response Body

Path Type Description

message

string

Result message

data.*.id

integer

Media id

data.*.userId

integer

User Id

data.*.mediaType

string

Media type (html, image, video)

data.*.originName

string

Original file name

data.*.name

string

Uploaded file name

data.*.extension

string

Uploaded file extension

data.*.url

string

Uploaded file url

data.*.width

integer

Uploaded file image width

data.*.height

integer

Uploaded file image height

data.*.weight

integer

Uploaded file size kB

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

17.3.5. HTTP Response

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

17.4. Store filter list

A `POST` request will upload video

17.4.1. HTTP Request

URL

POST api/parsefile HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTgsImV4cCI6MTc3MDkxNzY5OCwibmJmIjoxNzcwOTE0MDk4LCJqdGkiOiJ2NEhXaDRSSDhBVmhqdE1DIiwic3ViIjoiOTkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.6uk-eIyQa9ZolLJ17W0ntWxCTE_dWqMtzpK8XlplLck
DATA
{
    "file": <Binary file>
}

17.4.2. Curl request

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

17.4.3. Response Body

Path Type Description

message

string

Result message

items.*

string

List item (domain, bundle, IP, etc.)

fileName

string

File name

countItems

integer

Count items

17.4.4. HTTP Response

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

18. Creatives

18.1. Creatives list

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

18.1.1. HTTP Request

URL

GET api/creatives HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTMsImV4cCI6MTc3MDkxNzY5MywibmJmIjoxNzcwOTE0MDkzLCJqdGkiOiJwZEt3NzR1bTVETXFsRkdyIiwic3ViIjoiNzQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.9AnXYgt-Dw12ClAPD0Np2w0r8sLYuk9ZjUuiNP8cQQo
DATA
{}

18.1.2. Curl request

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

18.1.3. Response Body

Path Type Description

data.*.id

integer

Creative Id

data.*.userId

integer

User Id

data.*.isActive

boolean

Creative status

data.*.approved

string

Creative approval status (approved, pending, disapproved)

data.*.creativeType

string

Creative type: banner, native, video, audio

data.*.name

string

Creative name

data.*.frequencyType

string

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

data.*.frequency

string

Frequency on/off

data.*.frequencyCap

integer

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

data.*.frequencyPeriod

integer

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

data.*.bidPrice

float

CPM

data.*.autoresize

boolean

autoresize

data.*.adaptiveCpm

bool

adaptiveCpm

data.*.size

string

Image width and height

data.*.weight

string

File size

data.*.thumbnail

string

Thumbnail URL

data.*.folderId

string

Folder Id

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

data.*.pendingAt

datetime

Date of pending start

data.*.deletedAt

datetime

Date of deletion

data.*.media.id

integer

Media Id

data.*.media.userId

string

User Id

data.*.media.mediaType

string

Media type (html, image, video)

data.*.media.originName

string

Uploaded file original name

data.*.media.name

string

Uploaded file name

data.*.media.extension

string

Uploaded file extention

data.*.media.url

string

Uploaded file URL

data.*.media.width

integer

Uploaded file image width

data.*.media.height

integer

Uploaded file image height

data.*.media.weight

integer

Uploaded file size

data.*.relation.banner.apiFramework

integer

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

data.*.relation.banner.admBody

string

Third-party tag

data.*.relation.banner.bannerType

String

Banner type (banner,inBannerVideo)

data.*.relation.banner.clickUrl

string

Click URL

data.*.relation.banner.width

integer

Banner width

data.*.relation.banner.height

integer

Banner height

data.*.relation.banner.childrenCreative

string

childrenCreative

data.*.relation.banner.statusChildrenCreative

string

statusChildrenCreative

data.*.relation.banner.main

boolean

Main creative

data.*.status

string

Status

data.*.relation.native.smallImageId

integer

Logo media id

data.*.relation.native.largeImageId

integer

Image media id

data.*.relation.native.smallImage.id

integer

Logo media id

data.*.relation.native.smallImage.folderId

string

Folder id

data.*.relation.native.smallImage.userId

integer

User id

data.*.relation.native.smallImage.width

string

width

data.*.relation.native.smallImage.height

string

height

data.*.relation.native.smallImage.name

string

name

data.*.relation.native.smallImage.url

string

url

data.*.relation.native.smallImage.href

string

href

data.*.relation.native.smallImage.originName

string

originName

data.*.relation.native.smallImage.path

string

path

data.*.relation.native.smallImage.extension

string

extension

data.*.relation.native.smallImage.mediaType

string

mediaType

data.*.relation.native.smallImage.createdAt

string

createdAt

data.*.relation.native.smallImage.updatedAt

string

updatedAt

data.*.relation.native.smallImage.deletedAt

string

updatedAt

data.*.relation.native.smallImage.weight

string

weight

data.*.relation.native.largeImage.id

integer

Image media id

data.*.relation.native.largeImage.folderId

string

Folder id

data.*.relation.native.largeImage.userId

integer

User id

data.*.relation.native.largeImage.width

string

width

data.*.relation.native.largeImage.height

string

height

data.*.relation.native.largeImage.name

string

name

data.*.relation.native.largeImage.url

string

url

data.*.relation.native.largeImage.href

string

href

data.*.relation.native.largeImage.originName

string

originName

data.*.relation.native.largeImage.path

string

path

data.*.relation.native.largeImage.extension

string

extension

data.*.relation.native.largeImage.mediaType

string

mediaType

data.*.relation.native.largeImage.createdAt

string

createdAt

data.*.relation.native.largeImage.updatedAt

string

updatedAt

data.*.relation.native.largeImage.deletedAt

string

updatedAt

data.*.relation.native.largeImage.weight

string

weight

data.*.relation.native.assetDataDesc

string

Ad text

data.*.relation.native.assetTitle

string

Ad title

data.*.relation.native.assetDataSponsored

string

Brand name

data.*.relation.native.assetCtaText

string

CTA button text

data.*.relation.native.clickUrl

string

Click URL

data.*.relation.native.displayUrl

string

Display URL

data.*.relation.native.impTracker

string

Impression Tracker

data.*.relation.video.admBody

string

Third-party tag

data..relation.video.mimeType.

string

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

data.*.relation.video.width

integer

Video width

data.*.relation.video.height

integer

Video height

data.*.relation.video.duration

integer

Video duration

data.*.relation.video.clickUrl

string

Click URL

data.*.relation.video.partyTagFormat

integer

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

data.*.relation.video.apiFramework

integer

apiFramework

data.*.relation.video.autoStoreEndCard

boolean

autoStoreEndCard

data.*.relation.video.autoStoreEndCardOption

string

autoStoreEndCardOption

data.*.relation.video.politicalLabelEnabled

boolean

Political label enabled flag

data.*.relation.video.politicalTooltip

array

Political label tooltip data {text, link, position}

meta.pagination.total

integer

Pagination: total items count

meta.pagination.count

integer

Pagination: page items count

meta.pagination.per_page

integer

Pagination: items per page

meta.pagination.current_page

integer

Pagination: current page number

meta.pagination.total_pages

integer

Pagination: total pages count

meta.pagination.links

object

Pagination links

18.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": [
        {
            "id": 8,
            "userId": 74,
            "isActive": 0,
            "approved": "pending",
            "creativeType": "banner",
            "name": "Banner creative #1",
            "frequencyType": "ip",
            "frequency": 0,
            "frequencyCap": 4,
            "frequencyPeriod": 1,
            "bidPrice": "16.46",
            "autoresize": 0,
            "adaptiveCpm": false,
            "size": "365 x 281",
            "weight": "0.37 MB",
            "thumbnail": null,
            "folderId": null,
            "createdAt": "2026-02-12 16:34:53",
            "updatedAt": "2026-02-12 16:34:53",
            "pendingAt": null,
            "deletedAt": null,
            "media": {
                "id": 8,
                "userId": 74,
                "mediaType": "image",
                "originName": "video.mp4",
                "name": "74_c40085229064044ad4aa104f7b1723ca.mp4",
                "extension": "mp4",
                "url": "http:\/\/rempel.com\/\/74_c40085229064044ad4aa104f7b1723ca.mp4",
                "width": 395,
                "height": 244,
                "weight": 388628
            },
            "relation": {
                "banner": {
                    "apiFramework": 0,
                    "admBody": "<a target=\"_blank\" href=\"http:\/\/www.kautzer.org\/et-sequi-et-voluptatem-fugit-dicta-optio-ullam\" ><img src=\"http:\/\/klein.net\/sit-deserunt-inventore-ipsa-modi-doloribus-non-nam\/10.jpg\"\/><\/a>",
                    "bannerType": "banner",
                    "clickUrl": "http:\/\/kreiger.com\/",
                    "width": 365,
                    "height": 281,
                    "childrenCreative": null,
                    "statusChildrenCreative": [],
                    "main": 1
                }
            },
            "status": "pending"
        },
        {
            "id": 9,
            "userId": 74,
            "isActive": 0,
            "approved": "pending",
            "creativeType": "native",
            "name": "Native creative #1",
            "frequencyType": "ip",
            "frequency": 0,
            "frequencyCap": 6,
            "frequencyPeriod": 1,
            "bidPrice": "12.80",
            "autoresize": 0,
            "adaptiveCpm": false,
            "size": "185 x 278",
            "weight": "-",
            "thumbnail": null,
            "folderId": null,
            "createdAt": "2026-02-12 16:34:53",
            "updatedAt": "2026-02-12 16:34:53",
            "pendingAt": null,
            "deletedAt": null,
            "media": {
                "id": 9,
                "userId": 74,
                "mediaType": "image",
                "originName": "richmedia.zip",
                "name": "74_c40085229064044ad4aa104f7b1723ca\/index.html",
                "extension": "zip",
                "url": "http:\/\/carroll.org\/eos-vitae-non-ratione-enim-sed\/74_c40085229064044ad4aa104f7b1723ca\/index.html",
                "width": 449,
                "height": 426,
                "weight": 247139
            },
            "relation": {
                "native": {
                    "smallImageId": 9,
                    "largeImageId": 10,
                    "smallImage": {
                        "id": 9,
                        "folderId": null,
                        "userId": 74,
                        "width": 449,
                        "height": 426,
                        "name": "74_c40085229064044ad4aa104f7b1723ca\/index.html",
                        "url": "http:\/\/carroll.org\/eos-vitae-non-ratione-enim-sed\/74_c40085229064044ad4aa104f7b1723ca\/index.html",
                        "href": null,
                        "originName": "richmedia.zip",
                        "path": null,
                        "extension": "zip",
                        "mediaType": "image",
                        "createdAt": "2026-02-12T16:34:53.000000Z",
                        "updatedAt": "2026-02-12T16:34:53.000000Z",
                        "deletedAt": null,
                        "weight": 247139
                    },
                    "largeImage": {
                        "id": 10,
                        "folderId": null,
                        "userId": 74,
                        "width": 185,
                        "height": 278,
                        "name": "74_c40085229064044ad4aa104f7b1723ca.mp4",
                        "url": "http:\/\/www.okon.com\/qui-delectus-unde-molestiae-blanditiis-non-at-illum-itaque\/74_c40085229064044ad4aa104f7b1723ca.mp4",
                        "href": null,
                        "originName": "video.mp4",
                        "path": null,
                        "extension": "mp4",
                        "mediaType": "image",
                        "createdAt": "2026-02-12T16:34:53.000000Z",
                        "updatedAt": "2026-02-12T16:34:53.000000Z",
                        "deletedAt": null,
                        "weight": 421342
                    },
                    "assetDataDesc": "Sequi non culpa quasi.",
                    "assetTitle": "Quam quia quo harum.",
                    "assetDataSponsored": "Ut praesentium est optio tempora.",
                    "assetCtaText": "Sequi voluptas at hic.",
                    "clickUrl": "https:\/\/www.tremblay.com\/sapiente-ut-sint-harum-voluptas-pariatur-harum-placeat",
                    "displayUrl": "http:\/\/www.abbott.org\/ullam-aut-architecto-consequatur-blanditiis-velit-perferendis-non-temporibus",
                    "impTracker": null
                }
            },
            "status": "pending"
        },
        {
            "id": 10,
            "userId": 74,
            "isActive": 0,
            "approved": "pending",
            "creativeType": "video",
            "name": "Video creative #1",
            "frequencyType": "ip",
            "frequency": 0,
            "frequencyCap": 9,
            "frequencyPeriod": 1,
            "bidPrice": "0.85",
            "autoresize": 0,
            "adaptiveCpm": false,
            "size": "262 x 429",
            "weight": "0.40 MB",
            "thumbnail": null,
            "folderId": null,
            "createdAt": "2026-02-12 16:34:53",
            "updatedAt": "2026-02-12 16:34:53",
            "pendingAt": null,
            "deletedAt": null,
            "media": {
                "id": 11,
                "userId": 74,
                "mediaType": "video",
                "originName": "image.jpg",
                "name": "74_c40085229064044ad4aa104f7b1723ca.jpg",
                "extension": "jpg",
                "url": "http:\/\/waelchi.org\/\/74_c40085229064044ad4aa104f7b1723ca.jpg",
                "width": 151,
                "height": 353,
                "weight": 417718
            },
            "relation": {
                "video": {
                    "admBody": "    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<VAST version=\"2.0\">\n<Ad id=\"[HASH]\">\n    <InLine>\n        <AdSystem>DSP<\/AdSystem>\n        <AdTitle>Smartyads<\/AdTitle>\n        <Description>RTB<\/Description>\n        <Creatives>\n            <Creative AdID=\"572\">\n                <Linear>\n                    <Duration>00:00:09<\/Duration>\n                    <VideoClicks>\n                        <ClickThrough><![CDATA[https:\/\/picsum.photos\/]]><\/ClickThrough>\n                    <\/VideoClicks>\n                    <MediaFiles>\n                        <MediaFile delivery=\"streaming\" type=\"video\/quicktime\" width=\"640\" height=\"360\"><![CDATA[http:\/\/72.mp4]]><\/MediaFile>\n                    <\/MediaFiles>\n                <\/Linear>\n            <\/Creative>\n        <\/Creatives>\n    <\/InLine>\n<\/Ad>\n<\/VAST>",
                    "mimeType": [
                        "video\/mp4"
                    ],
                    "width": 262,
                    "height": 429,
                    "duration": 7,
                    "clickUrl": "http:\/\/lesch.info\/dolor-voluptatem-nulla-corporis-non",
                    "partyTagFormat": 0,
                    "apiFramework": null,
                    "autoStoreEndCard": 0,
                    "autoStoreEndCardOption": "appStore",
                    "politicalLabelEnabled": false,
                    "politicalTooltip": []
                }
            },
            "status": "pending"
        }
    ],
    "meta": {
        "pagination": {
            "total": 3,
            "count": 3,
            "per_page": 15,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

18.2. Get by ID (Banner creative)

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

18.2.1. HTTP Request

URL

GET api/creatives/11 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTMsImV4cCI6MTc3MDkxNzY5MywibmJmIjoxNzcwOTE0MDkzLCJqdGkiOiJ1ZDFiTW15eWhMR3lUQW94Iiwic3ViIjoiNzUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.ODK2OKMlxrKc19UbXQdGq0hheCkBZ2zJwqGx-z1mHMo
DATA
{}

18.2.2. Curl request

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

18.2.3. Response Body

Path Type Description

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

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

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

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

data.frequencyPeriod

integer

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

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.thumbnail

string

Thumbnail URL

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.media.id

integer

Media Id

data.media.userId

string

User Id

data.media.mediaType

string

Media type (html, image, video)

data.media.originName

string

Uploaded file original name

data.media.name

string

Uploaded file name

data.media.extension

string

Uploaded file extention

data.media.url

string

Uploaded file URL

data.media.width

integer

Uploaded file image width

data.media.height

integer

Uploaded file image height

data.media.weight

integer

Uploaded file size

data.media.modifiedUrl

any

data.relation.banner.apiFramework

integer

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

data.relation.banner.admBody

string

Third-party tag

data.relation.banner.bannerType

String

Banner type (banner,inBannerVideo)

data.relation.banner.clickUrl

string

Click URL

data.relation.banner.width

integer

Banner width

data.relation.banner.height

integer

Banner height

data.sizes

string

size

18.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 11,
        "userId": 75,
        "isActive": 0,
        "approved": "pending",
        "creativeType": "banner",
        "name": "Banner creative #2",
        "frequencyType": "user",
        "frequency": 0,
        "frequencyCap": 9,
        "frequencyPeriod": 1,
        "bidPrice": "1.36",
        "autoresize": 0,
        "adaptiveCpm": false,
        "size": "357 x 385",
        "weight": "0.43 MB",
        "thumbnail": null,
        "folderId": null,
        "createdAt": "2026-02-12 16:34:53",
        "updatedAt": "2026-02-12 16:34:53",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "banner": {
                "apiFramework": 0,
                "admBody": "<a target=\"_blank\" href=\"http:\/\/spencer.com\/\" ><img src=\"http:\/\/okuneva.com\/odio-alias-iste-veniam-cum-ea-est-consectetur\/10.jpg\"\/><\/a>",
                "bannerType": "banner",
                "clickUrl": "https:\/\/www.carroll.com\/et-impedit-placeat-occaecati",
                "width": 357,
                "height": 385
            }
        },
        "sizes": []
    }
}

18.3. Get by ID (Native creative)

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

18.3.1. HTTP Request

URL

GET api/creatives/12 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJTY2NOSk15QTFHUzdIc0RWIiwic3ViIjoiNzYiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.kW6QUjus9x4wgI0ntVM4rJZi61HVYjSffmlIWFPt334
DATA
{}

18.3.2. Curl request

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

18.3.3. Response Body

Path Type Description

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

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

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

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

data.frequencyPeriod

integer

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

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.thumbnail

string

Thumbnail URL

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.media.id

integer

Media Id

data.media.userId

string

User Id

data.media.mediaType

string

Media type (html, image, video)

data.media.originName

string

Uploaded file original name

data.media.name

string

Uploaded file name

data.media.extension

string

Uploaded file extention

data.media.url

string

Uploaded file URL

data.media.width

integer

Uploaded file image width

data.media.height

integer

Uploaded file image height

data.media.weight

integer

Uploaded file size

data.media.modifiedUrl

any

data.relation.native.smallImageId

integer

Logo media id

data.relation.native.largeImageId

integer

Image media id

data.relation.native.smallImage.id

integer

Logo media id

data.relation.native.smallImage.folderId

string

Folder id

data.relation.native.smallImage.userId

integer

User id

data.relation.native.smallImage.width

string

width

data.relation.native.smallImage.height

string

height

data.relation.native.smallImage.name

string

name

data.relation.native.smallImage.url

string

url

data.relation.native.smallImage.href

string

href

data.relation.native.smallImage.originName

string

originName

data.relation.native.smallImage.path

string

path

data.relation.native.smallImage.extension

string

extension

data.relation.native.smallImage.mediaType

string

mediaType

data.relation.native.smallImage.createdAt

string

createdAt

data.relation.native.smallImage.updatedAt

string

updatedAt

data.relation.native.smallImage.deletedAt

string

updatedAt

data.relation.native.smallImage.weight

string

weight

data.relation.native.largeImage.id

integer

Image media id

data.relation.native.largeImage.folderId

string

Folder id

data.relation.native.largeImage.userId

integer

User id

data.relation.native.largeImage.width

string

width

data.relation.native.largeImage.height

string

height

data.relation.native.largeImage.name

string

name

data.relation.native.largeImage.url

string

url

data.relation.native.largeImage.href

string

href

data.relation.native.largeImage.originName

string

originName

data.relation.native.largeImage.path

string

path

data.relation.native.largeImage.extension

string

extension

data.relation.native.largeImage.mediaType

string

mediaType

data.relation.native.largeImage.createdAt

string

createdAt

data.relation.native.largeImage.updatedAt

string

updatedAt

data.relation.native.largeImage.deletedAt

string

updatedAt

data.relation.native.largeImage.weight

string

weight

data.relation.native.assetDataDesc

string

Ad text

data.relation.native.assetTitle

string

Ad title

data.relation.native.assetDataSponsored

string

Brand name

data.relation.native.assetCtaText

string

CTA button text

data.relation.native.clickUrl

string

Click URL

data.relation.native.displayUrl

string

Display URL

data.relation.native.impTracker

string

Impression tracker

data.sizes

string

size

18.3.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 12,
        "userId": 76,
        "isActive": 1,
        "approved": "pending",
        "creativeType": "native",
        "name": "Native creative #2",
        "frequencyType": "ip",
        "frequency": 0,
        "frequencyCap": 3,
        "frequencyPeriod": 1,
        "bidPrice": "11.63",
        "autoresize": 0,
        "adaptiveCpm": false,
        "size": "455 x 210",
        "weight": "-",
        "thumbnail": null,
        "folderId": null,
        "createdAt": "2026-02-12 16:34:54",
        "updatedAt": "2026-02-12 16:34:54",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "native": {
                "smallImageId": 13,
                "largeImageId": 14,
                "smallImage": {
                    "id": 13,
                    "folderId": null,
                    "userId": 76,
                    "width": 294,
                    "height": 357,
                    "name": "76_a839ae565986c487992cd05f3b4ad86c.mp4",
                    "url": "http:\/\/www.sanford.com\/magnam-et-vel-deleniti-est-et-eos-eum-delectus\/76_a839ae565986c487992cd05f3b4ad86c.mp4",
                    "href": null,
                    "originName": "video.mp4",
                    "path": null,
                    "extension": "mp4",
                    "mediaType": "image",
                    "createdAt": "2026-02-12T16:34:54.000000Z",
                    "updatedAt": "2026-02-12T16:34:54.000000Z",
                    "deletedAt": null,
                    "weight": 344153
                },
                "largeImage": {
                    "id": 14,
                    "folderId": null,
                    "userId": 76,
                    "width": 455,
                    "height": 210,
                    "name": "76_a839ae565986c487992cd05f3b4ad86c.jpg",
                    "url": "http:\/\/prosacco.org\/\/76_a839ae565986c487992cd05f3b4ad86c.jpg",
                    "href": null,
                    "originName": "image.jpg",
                    "path": null,
                    "extension": "jpg",
                    "mediaType": "image",
                    "createdAt": "2026-02-12T16:34:54.000000Z",
                    "updatedAt": "2026-02-12T16:34:54.000000Z",
                    "deletedAt": null,
                    "weight": 412832
                },
                "assetDataDesc": "Et iusto unde tempore.",
                "assetTitle": "Ipsa aut aliquam sed.",
                "assetDataSponsored": "Sit inventore ea quam quia.",
                "assetCtaText": "Quis quas eum ut.",
                "clickUrl": "http:\/\/www.bradtke.com\/",
                "displayUrl": "http:\/\/www.hirthe.net\/et-consequatur-doloremque-est-dolor-excepturi-minima-molestiae",
                "impTracker": null
            }
        },
        "sizes": []
    }
}

18.4. Get by ID (Video creative)

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

18.4.1. HTTP Request

URL

GET api/creatives/13 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJlOGU5WTI4cU1MakJHSWw4Iiwic3ViIjoiNzciLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.l45yq9rTvI2_o7NjuvJvEzMIl-v581gFqVZFwydDc6o
DATA
{}

18.4.2. Curl request

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

18.4.3. Response Body

Path Type Description

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

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

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

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

data.frequencyPeriod

integer

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

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.thumbnail

string

Thumbnail URL

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.media.id

integer

Media Id

data.media.userId

string

User Id

data.media.mediaType

string

Media type (html, image, video)

data.media.originName

string

Uploaded file original name

data.media.name

string

Uploaded file name

data.media.extension

string

Uploaded file extention

data.media.url

string

Uploaded file URL

data.media.width

integer

Uploaded file image width

data.media.height

integer

Uploaded file image height

data.media.weight

integer

Uploaded file size

data.media.modifiedUrl

any

data.relation.video.admBody

string

Third-party tag

data.relation.video.mimeType.*

string

MIME type (video/mpeg, video/mp4, etc.)

data.relation.video.width

integer

Video width

data.relation.video.height

integer

Video height

data.relation.video.duration

integer

Video duration

data.relation.video.clickUrl

string

Click URL

data.relation.video.partyTagFormat

integer

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

data.relation.video.apiFramework

integer

apiFramework

data.relation.video.autoStoreEndCard

boolean

autoStoreEndCard

data.relation.video.autoStoreEndCardOption

string

autoStoreEndCardOption

data.relation.video.politicalLabelEnabled

boolean

Political label enabled flag

data.relation.video.politicalTooltip

array

Political label tooltip data {text, link, position}

data.sizes

string

size

18.4.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 13,
        "userId": 77,
        "isActive": 0,
        "approved": "pending",
        "creativeType": "video",
        "name": "Video creative #2",
        "frequencyType": "user",
        "frequency": 0,
        "frequencyCap": 4,
        "frequencyPeriod": 1,
        "bidPrice": "10.73",
        "autoresize": 0,
        "adaptiveCpm": false,
        "size": "342 x 498",
        "weight": "0.16 MB",
        "thumbnail": null,
        "folderId": null,
        "createdAt": "2026-02-12 16:34:54",
        "updatedAt": "2026-02-12 16:34:54",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "video": {
                "admBody": "    <?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<VAST version=\"2.0\">\n<Ad id=\"[HASH]\">\n    <InLine>\n        <AdSystem>DSP<\/AdSystem>\n        <AdTitle>Smartyads<\/AdTitle>\n        <Description>RTB<\/Description>\n        <Creatives>\n            <Creative AdID=\"572\">\n                <Linear>\n                    <Duration>00:00:09<\/Duration>\n                    <VideoClicks>\n                        <ClickThrough><![CDATA[https:\/\/picsum.photos\/]]><\/ClickThrough>\n                    <\/VideoClicks>\n                    <MediaFiles>\n                        <MediaFile delivery=\"streaming\" type=\"video\/quicktime\" width=\"640\" height=\"360\"><![CDATA[http:\/\/72.mp4]]><\/MediaFile>\n                    <\/MediaFiles>\n                <\/Linear>\n            <\/Creative>\n        <\/Creatives>\n    <\/InLine>\n<\/Ad>\n<\/VAST>",
                "mimeType": [
                    "application\/javascript"
                ],
                "width": 342,
                "height": 498,
                "duration": 9,
                "clickUrl": "http:\/\/schuster.info\/ad-mollitia-quas-tempore-commodi-quis-dicta",
                "partyTagFormat": 0,
                "apiFramework": null,
                "autoStoreEndCard": 0,
                "autoStoreEndCardOption": "appStore",
                "politicalLabelEnabled": false,
                "politicalTooltip": []
            }
        },
        "sizes": []
    }
}

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

A `POST` request will create new creative.

18.5.1. Request Body

Path Type Description Required

name

string

Creative name

+

creativeType

string

Creative type: banner, native, video, audio

+

frequencyType

string

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

frequencyCap

integer

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

frequency

boolean

Frequency on/off.

frequencyPeriod

integer

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

bidPrice

float

CPM

+

banner.apiFramework

integer

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

banner.width

integer

Banner width

+

banner.height

integer

Banner height

+

banner.admBody

string

Third-party tag

+

categories.IAB1

array

Categories (required if subCategories is empty)

+

subCategories.IAB1.*

string

SubCategory ID

+

18.5.2. HTTP Request

URL

POST api/creatives HTTP/1.1

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

18.5.3. Curl request

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

18.5.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

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

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

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

data.frequencyPeriod

integer

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

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.thumbnail

string

Thumbnail URL

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.relation.banner.apiFramework

integer

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

data.relation.banner.admBody

string

Third-party tag

data.relation.banner.bannerType

String

Banner type (banner,inBannerVideo)

data.relation.banner.clickUrl

string

Click URL

data.relation.banner.width

integer

Banner width

data.relation.banner.height

integer

Banner height

data.sizes

string

size

18.5.5. HTTP Response

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

18.6. Create a Custom Banner Creative with Media image

A `POST` request will create new creative.

18.6.1. Request Body

Path Type Description Required

name

string

Creative name

+

creativeType

string

Creative type: banner, native, video, audio

+

mediaId

array

Media image Id

+

frequency

boolean

Frequency on/off.

bidPrice

float

CPM

+

banner.apiFramework

integer

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

banner.width

integer

Banner width

+

banner.height

integer

Banner height

+

banner.clickUrl

string

Click URL

+

subCategories.IAB1.*

string

SubCategory ID

+

categories.IAB1

array

Categories (required if subCategories is empty)

+

18.6.2. HTTP Request

URL

POST api/creatives HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJmTXRWNHBoeDdrbzNEclhSIiwic3ViIjoiNzkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.caGdgGwjh0U8cn9RbFjqC76BoWFRAj_WD6x0CMKb1AQ
DATA
{
    "name": "Banner creative #4",
    "creativeType": "banner",
    "mediaId": 16,
    "frequency": 0,
    "bidPrice": 0.5,
    "banner": {
        "apiFramework": 0,
        "width": 320,
        "height": 200,
        "clickUrl": "http:\/\/www.deckow.biz\/"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}

18.6.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJmTXRWNHBoeDdrbzNEclhSIiwic3ViIjoiNzkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.caGdgGwjh0U8cn9RbFjqC76BoWFRAj_WD6x0CMKb1AQ' \
    -d '{
    "name": "Banner creative #4",
    "creativeType": "banner",
    "mediaId": 16,
    "frequency": 0,
    "bidPrice": 0.5,
    "banner": {
        "apiFramework": 0,
        "width": 320,
        "height": 200,
        "clickUrl": "http:\/\/www.deckow.biz\/"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}'

18.6.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

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

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

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

data.frequencyPeriod

integer

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

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.thumbnail

string

Thumbnail URL

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.media.id

integer

Media Id

data.media.userId

string

User Id

data.media.mediaType

string

Media type (html, image, video)

data.media.originName

string

Uploaded file original name

data.media.name

string

Uploaded file name

data.media.extension

string

Uploaded file extention

data.media.url

string

Uploaded file URL

data.media.width

integer

Uploaded file image width

data.media.height

integer

Uploaded file image height

data.media.weight

integer

Uploaded file size

data.media.modifiedUrl

any

data.relation.banner.apiFramework

integer

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

data.relation.banner.admBody

string

Third-party tag

data.relation.banner.bannerType

String

Banner type (banner,inBannerVideo)

data.relation.banner.clickUrl

string

Click URL

data.relation.banner.width

integer

Banner width

data.relation.banner.height

integer

Banner height

data.sizes

string

size

18.6.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Creative created.",
    "data": {
        "id": 15,
        "userId": 79,
        "isActive": null,
        "approved": null,
        "creativeType": "banner",
        "name": "Banner creative #4",
        "frequencyType": null,
        "frequency": 0,
        "frequencyCap": null,
        "frequencyPeriod": null,
        "bidPrice": 0.5,
        "autoresize": null,
        "adaptiveCpm": null,
        "size": "438 x 219",
        "weight": "0.35 MB",
        "thumbnail": null,
        "folderId": null,
        "createdAt": "2026-02-12 16:34:54",
        "updatedAt": "2026-02-12 16:34:54",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "banner": {
                "apiFramework": 0,
                "admBody": "<img src=\"http:\/\/www.bartoletti.org\/quasi-et-magni-non-quas-necessitatibus-repellendus.html\/79_a839ae565986c487992cd05f3b4ad86c.jpg\" crossorigin=\"anonymous\"\/>",
                "bannerType": null,
                "clickUrl": "http:\/\/www.deckow.biz\/",
                "width": 438,
                "height": 219
            }
        },
        "sizes": []
    }
}

18.7. Create a Custom Banner Creative with Rich Media Html

A `POST` request will create new creative.

18.7.1. Request Body

Path Type Description Required

name

string

Creative name

+

creativeType

string

Creative type: banner, native, video, audio

+

mediaId

array

HTML Media Id

+

frequency

boolean

Frequency on/off.

bidPrice

float

CPM

+

banner.apiFramework

integer

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

banner.width

integer

Banner width

+

banner.height

integer

Banner height

+

subCategories.IAB1.*

string

SubCategory ID

+

categories.IAB1

array

Categories (required if subCategories is empty)

+

18.7.2. HTTP Request

URL

POST api/creatives HTTP/1.1

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

18.7.3. Curl request

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

18.7.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

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

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

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

data.frequencyPeriod

integer

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

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.thumbnail

string

Thumbnail URL

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.media.id

integer

Media Id

data.media.userId

string

User Id

data.media.mediaType

string

Media type (html, image, video)

data.media.originName

string

Uploaded file original name

data.media.name

string

Uploaded file name

data.media.extension

string

Uploaded file extention

data.media.url

string

Uploaded file URL

data.media.width

integer

Uploaded file image width

data.media.height

integer

Uploaded file image height

data.media.weight

integer

Uploaded file size

data.media.modifiedUrl

any

data.relation.banner.apiFramework

integer

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

data.relation.banner.admBody

string

Third-party tag

data.relation.banner.bannerType

String

Banner type (banner,inBannerVideo)

data.relation.banner.clickUrl

string

Click URL

data.relation.banner.width

integer

Banner width

data.relation.banner.height

integer

Banner height

data.sizes

string

size

18.7.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Creative created.",
    "data": {
        "id": 16,
        "userId": 80,
        "isActive": null,
        "approved": null,
        "creativeType": "banner",
        "name": "Banner creative #5",
        "frequencyType": null,
        "frequency": 0,
        "frequencyCap": null,
        "frequencyPeriod": null,
        "bidPrice": 0.5,
        "autoresize": null,
        "adaptiveCpm": null,
        "size": "320 x 200",
        "weight": "0.19 MB",
        "thumbnail": null,
        "folderId": null,
        "createdAt": "2026-02-12 16:34:54",
        "updatedAt": "2026-02-12 16:34:54",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "banner": {
                "apiFramework": 3,
                "admBody": "<iframe src=\"http:\/\/www.greenholt.com\/\/80_a839ae565986c487992cd05f3b4ad86c\/index.html\" style=\"border:0; width:100%; height:100%;\"><\/iframe>",
                "bannerType": null,
                "clickUrl": null,
                "width": 320,
                "height": 200
            }
        },
        "sizes": []
    }
}

18.8. Create a Custom Native Creative

A `POST` request will create new creative.

18.8.1. Request Body

Path Type Description Required

name

string

Creative name

+

creativeType

string

Creative type: banner, native, video, audio

+

frequencyType

string

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

frequencyCap

integer

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

frequencyPeriod

integer

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

frequency

boolean

Frequency on/off.

bidPrice

float

CPM

+

folderId

string

Folder Id

native.smallImageId

integer

Logo media id

native.largeImageId

integer

Image media id

+

native.assetDataDesc

string

Ad text

native.assetTitle

string

Ad title

native.assetDataSponsored

string

Brand name

native.assetCtaText

string

CTA button text

native.clickUrl

string

Click URL

+

native.displayUrl

string

Display URL

subCategories.IAB1.*

string

SubCategory ID

+

categories.IAB1

array

Categories (required if subCategories is empty)

+

18.8.2. HTTP Request

URL

POST api/creatives HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJRTEdKSFJxY0hQdW1MUndFIiwic3ViIjoiODEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.C9dgON8hTJrVFquZx0MMm3b0r_f7_gGQGcjGmqJ4Gng
DATA
{
    "name": "Native creative #3",
    "creativeType": "native",
    "frequencyType": "user",
    "frequencyCap": 1,
    "frequencyPeriod": 1,
    "frequency": 1,
    "bidPrice": 0.5,
    "folderId": null,
    "native": {
        "smallImageId": 18,
        "largeImageId": 18,
        "assetDataDesc": "Eos ut ea debitis.",
        "assetTitle": "Et nihil.",
        "assetDataSponsored": "Qui et rem sit sed.",
        "assetCtaText": "Magnam omnis.",
        "clickUrl": "http:\/\/cormier.com\/",
        "displayUrl": "http:\/\/schneider.net\/dolorem-officia-et-et-doloribus"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}

18.8.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJRTEdKSFJxY0hQdW1MUndFIiwic3ViIjoiODEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.C9dgON8hTJrVFquZx0MMm3b0r_f7_gGQGcjGmqJ4Gng' \
    -d '{
    "name": "Native creative #3",
    "creativeType": "native",
    "frequencyType": "user",
    "frequencyCap": 1,
    "frequencyPeriod": 1,
    "frequency": 1,
    "bidPrice": 0.5,
    "folderId": null,
    "native": {
        "smallImageId": 18,
        "largeImageId": 18,
        "assetDataDesc": "Eos ut ea debitis.",
        "assetTitle": "Et nihil.",
        "assetDataSponsored": "Qui et rem sit sed.",
        "assetCtaText": "Magnam omnis.",
        "clickUrl": "http:\/\/cormier.com\/",
        "displayUrl": "http:\/\/schneider.net\/dolorem-officia-et-et-doloribus"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}'

18.8.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

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

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

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

data.frequencyPeriod

integer

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

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.thumbnail

string

Thumbnail URL

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.media.id

integer

Media Id

data.media.userId

string

User Id

data.media.mediaType

string

Media type (html, image, video)

data.media.originName

string

Uploaded file original name

data.media.name

string

Uploaded file name

data.media.extension

string

Uploaded file extention

data.media.url

string

Uploaded file URL

data.media.width

integer

Uploaded file image width

data.media.height

integer

Uploaded file image height

data.media.weight

integer

Uploaded file size

data.media.modifiedUrl

any

data.relation.native.smallImageId

integer

Logo media id

data.relation.native.largeImageId

integer

Image media id

data.relation.native.smallImage.id

integer

Logo media id

data.relation.native.smallImage.folderId

string

Folder id

data.relation.native.smallImage.userId

integer

User id

data.relation.native.smallImage.width

string

width

data.relation.native.smallImage.height

string

height

data.relation.native.smallImage.name

string

name

data.relation.native.smallImage.url

string

url

data.relation.native.smallImage.href

string

href

data.relation.native.smallImage.originName

string

originName

data.relation.native.smallImage.path

string

path

data.relation.native.smallImage.extension

string

extension

data.relation.native.smallImage.mediaType

string

mediaType

data.relation.native.smallImage.createdAt

string

createdAt

data.relation.native.smallImage.updatedAt

string

updatedAt

data.relation.native.smallImage.deletedAt

string

updatedAt

data.relation.native.smallImage.weight

string

weight

data.relation.native.largeImage.id

integer

Image media id

data.relation.native.largeImage.folderId

string

Folder id

data.relation.native.largeImage.userId

integer

User id

data.relation.native.largeImage.width

string

width

data.relation.native.largeImage.height

string

height

data.relation.native.largeImage.name

string

name

data.relation.native.largeImage.url

string

url

data.relation.native.largeImage.href

string

href

data.relation.native.largeImage.originName

string

originName

data.relation.native.largeImage.path

string

path

data.relation.native.largeImage.extension

string

extension

data.relation.native.largeImage.mediaType

string

mediaType

data.relation.native.largeImage.createdAt

string

createdAt

data.relation.native.largeImage.updatedAt

string

updatedAt

data.relation.native.largeImage.deletedAt

string

updatedAt

data.relation.native.largeImage.weight

string

weight

data.relation.native.assetDataDesc

string

Ad text

data.relation.native.assetTitle

string

Ad title

data.relation.native.assetDataSponsored

string

Brand name

data.relation.native.assetCtaText

string

CTA button text

data.relation.native.clickUrl

string

Click URL

data.relation.native.displayUrl

string

Display URL

data.relation.native.impTracker

string

Impression tracker

data.sizes

string

size

18.8.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Creative created.",
    "data": {
        "id": 17,
        "userId": 81,
        "isActive": null,
        "approved": null,
        "creativeType": "native",
        "name": "Native creative #3",
        "frequencyType": "user",
        "frequency": 1,
        "frequencyCap": 1,
        "frequencyPeriod": 1,
        "bidPrice": 0.5,
        "autoresize": null,
        "adaptiveCpm": null,
        "size": "109 x 176",
        "weight": "-",
        "thumbnail": null,
        "folderId": null,
        "createdAt": "2026-02-12 16:34:54",
        "updatedAt": "2026-02-12 16:34:54",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "native": {
                "smallImageId": 18,
                "largeImageId": 18,
                "smallImage": {
                    "id": 18,
                    "folderId": null,
                    "userId": 81,
                    "width": 109,
                    "height": 176,
                    "name": "81_a839ae565986c487992cd05f3b4ad86c.mp4",
                    "url": "https:\/\/www.cole.net\/officia-adipisci-autem-aut-vitae-magnam-minima\/81_a839ae565986c487992cd05f3b4ad86c.mp4",
                    "href": null,
                    "originName": "video.mp4",
                    "path": null,
                    "extension": "mp4",
                    "mediaType": "image",
                    "createdAt": "2026-02-12T16:34:54.000000Z",
                    "updatedAt": "2026-02-12T16:34:54.000000Z",
                    "deletedAt": null,
                    "weight": 118018
                },
                "largeImage": {
                    "id": 18,
                    "folderId": null,
                    "userId": 81,
                    "width": 109,
                    "height": 176,
                    "name": "81_a839ae565986c487992cd05f3b4ad86c.mp4",
                    "url": "https:\/\/www.cole.net\/officia-adipisci-autem-aut-vitae-magnam-minima\/81_a839ae565986c487992cd05f3b4ad86c.mp4",
                    "href": null,
                    "originName": "video.mp4",
                    "path": null,
                    "extension": "mp4",
                    "mediaType": "image",
                    "createdAt": "2026-02-12T16:34:54.000000Z",
                    "updatedAt": "2026-02-12T16:34:54.000000Z",
                    "deletedAt": null,
                    "weight": 118018
                },
                "assetDataDesc": "Eos ut ea debitis.",
                "assetTitle": "Et nihil.",
                "assetDataSponsored": "Qui et rem sit sed.",
                "assetCtaText": "Magnam omnis.",
                "clickUrl": "http:\/\/cormier.com\/",
                "displayUrl": "http:\/\/schneider.net\/dolorem-officia-et-et-doloribus",
                "impTracker": null
            }
        },
        "sizes": []
    }
}

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

A `POST` request will create new creative.

18.9.1. Request Body

Path Type Description Required

name

string

Creative name

+

creativeType

string

Creative type: banner, native, video, audio

+

frequency

boolean

Frequency on/off.

bidPrice

float

CPM

+

video.mimeType.*

string

MIME type (video/mpeg, video/mp4, etc.)

+

video.admBody

string

Third-party tag

+

subCategories.IAB1.*

string

SubCategory ID

+

categories.IAB1

array

Categories (required if subCategories is empty)

+

18.9.2. HTTP Request

URL

POST api/creatives HTTP/1.1

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

18.9.3. Curl request

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

18.9.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

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

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

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

data.frequencyPeriod

integer

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

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.thumbnail

string

Thumbnail URL

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.relation.video.admBody

string

Third-party tag

data.relation.video.mimeType.*

string

MIME type (video/mpeg, video/mp4, etc.)

data.relation.video.width

integer

Video width

data.relation.video.height

integer

Video height

data.relation.video.duration

integer

Video duration

data.relation.video.clickUrl

string

Click URL

data.relation.video.partyTagFormat

integer

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

data.relation.video.apiFramework

integer

apiFramework

data.relation.video.autoStoreEndCard

boolean

autoStoreEndCard

data.relation.video.autoStoreEndCardOption

string

autoStoreEndCardOption

data.relation.video.politicalLabelEnabled

boolean

Political label enabled flag

data.relation.video.politicalTooltip

array

Political label tooltip data {text, link, position}

data.sizes

string

size

18.9.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Creative created.",
    "data": {
        "id": 18,
        "userId": 82,
        "isActive": null,
        "approved": null,
        "creativeType": "video",
        "name": "Video creative #3",
        "frequencyType": null,
        "frequency": 0,
        "frequencyCap": null,
        "frequencyPeriod": null,
        "bidPrice": 100,
        "autoresize": null,
        "adaptiveCpm": null,
        "size": "0 x 0",
        "weight": "-",
        "thumbnail": null,
        "folderId": null,
        "createdAt": "2026-02-12 16:34:54",
        "updatedAt": "2026-02-12 16:34:54",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "video": {
                "admBody": "<iframe src=\"url.to.script\"><\/iframe>",
                "mimeType": [
                    "video\/mp4"
                ],
                "width": 0,
                "height": 0,
                "duration": 0,
                "clickUrl": "",
                "partyTagFormat": null,
                "apiFramework": null,
                "autoStoreEndCard": null,
                "autoStoreEndCardOption": null,
                "politicalLabelEnabled": false,
                "politicalTooltip": []
            }
        },
        "sizes": []
    }
}

18.10. Create a Custom Video Creative with Media image

A `POST` request will create new creative.

18.10.1. Request Body

Path Type Description Required

name

string

Creative name

+

creativeType

string

Creative type: banner, native, video, audio

+

frequencyType

string

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

frequencyCap

integer

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

frequencyPeriod

integer

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

frequency

boolean

Frequency on/off.

mediaId

array

Media video Id

+

bidPrice

float

CPM

+

video.clickUrl

string

Click URL

+

subCategories.IAB1.*

string

SubCategory ID

+

categories.IAB1

array

Categories (required if subCategories is empty)

+

18.10.2. HTTP Request

URL

POST api/creatives HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJuamVJR1pHamxWa3ptQXBvIiwic3ViIjoiODMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.FQlR9CILwpVwDsdqQKDXLlMU8zdzOxQgW2ZCv_JhlJA
DATA
{
    "name": "Video creative #4",
    "creativeType": "video",
    "frequencyType": "user",
    "frequencyCap": 1,
    "frequencyPeriod": 1,
    "frequency": 1,
    "mediaId": 19,
    "bidPrice": 100,
    "video": {
        "clickUrl": "http:\/\/collins.com\/a-sed-dolores-voluptatibus-quibusdam-iusto"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}

18.10.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/creatives' -i -X POST \
            -H 'Accept: application/json' \
                -H 'Content-type: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJuamVJR1pHamxWa3ptQXBvIiwic3ViIjoiODMiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.FQlR9CILwpVwDsdqQKDXLlMU8zdzOxQgW2ZCv_JhlJA' \
    -d '{
    "name": "Video creative #4",
    "creativeType": "video",
    "frequencyType": "user",
    "frequencyCap": 1,
    "frequencyPeriod": 1,
    "frequency": 1,
    "mediaId": 19,
    "bidPrice": 100,
    "video": {
        "clickUrl": "http:\/\/collins.com\/a-sed-dolores-voluptatibus-quibusdam-iusto"
    },
    "subCategories": {
        "IAB1": [
            "IAB1-1"
        ]
    },
    "categories": {
        "IAB1": true
    }
}'

18.10.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

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

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

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

data.frequencyPeriod

integer

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

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.thumbnail

string

Thumbnail URL

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.media.id

integer

Media Id

data.media.userId

string

User Id

data.media.mediaType

string

Media type (html, image, video)

data.media.originName

string

Uploaded file original name

data.media.name

string

Uploaded file name

data.media.extension

string

Uploaded file extention

data.media.url

string

Uploaded file URL

data.media.width

integer

Uploaded file image width

data.media.height

integer

Uploaded file image height

data.media.weight

integer

Uploaded file size

data.media.modifiedUrl

any

data.relation.video.admBody

string

Third-party tag

data.relation.video.mimeType.*

string

MIME type (video/mpeg, video/mp4, etc.)

data.relation.video.width

integer

Video width

data.relation.video.height

integer

Video height

data.relation.video.duration

integer

Video duration

data.relation.video.clickUrl

string

Click URL

data.relation.video.partyTagFormat

integer

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

data.relation.video.apiFramework

integer

apiFramework

data.relation.video.autoStoreEndCard

boolean

autoStoreEndCard

data.relation.video.autoStoreEndCardOption

string

autoStoreEndCardOption

data.relation.video.politicalLabelEnabled

boolean

Political label enabled flag

data.relation.video.politicalTooltip.text

string

Political tooltip text

data.relation.video.politicalTooltip.link

string

Political tooltip link

data.relation.video.politicalTooltip.position

string

Political tooltip position

data.sizes

string

size

18.10.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Creative created.",
    "data": {
        "id": 19,
        "userId": 83,
        "isActive": null,
        "approved": null,
        "creativeType": "video",
        "name": "Video creative #4",
        "frequencyType": "user",
        "frequency": 1,
        "frequencyCap": 1,
        "frequencyPeriod": 1,
        "bidPrice": 100,
        "autoresize": null,
        "adaptiveCpm": null,
        "size": "328 x 289",
        "weight": "0.17 MB",
        "thumbnail": null,
        "folderId": null,
        "createdAt": "2026-02-12 16:34:54",
        "updatedAt": "2026-02-12 16:34:54",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "video": {
                "admBody": "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<VAST version=\"2.0\">\n  <Ad id=\"[HASH]\">\n    <InLine>\n      <AdSystem>DSP<\/AdSystem>\n      <AdTitle>Smartyads<\/AdTitle>\n      <Description>RTB<\/Description>\n      <Creatives>\n        <Creative AdID=\"19\">\n          <Linear>\n            <Duration>00:00:08<\/Duration>\n            <VideoClicks>\n              <ClickThrough><![CDATA[https:\/\/collins.com\/a-sed-dolores-voluptatibus-quibusdam-iusto]]><\/ClickThrough>\n            <\/VideoClicks>\n            <MediaFiles>\n              <MediaFile delivery=\"progressive\" type=\"video\/mp4\" width=\"328\" height=\"289\"><![CDATA[http:\/\/www.erdman.info\/cumque-ullam-modi-consequatur-fuga-ullam\/83_a839ae565986c487992cd05f3b4ad86c.mp4]]><\/MediaFile>\n            <\/MediaFiles>\n          <\/Linear>\n        <\/Creative>\n      <\/Creatives>\n    <\/InLine>\n  <\/Ad>\n<\/VAST>",
                "mimeType": [
                    "video\/mp4"
                ],
                "width": 328,
                "height": 289,
                "duration": 8,
                "clickUrl": "https:\/\/collins.com\/a-sed-dolores-voluptatibus-quibusdam-iusto",
                "partyTagFormat": null,
                "apiFramework": null,
                "autoStoreEndCard": null,
                "autoStoreEndCardOption": null,
                "politicalLabelEnabled": false,
                "politicalTooltip": {
                    "text": "",
                    "link": "",
                    "position": "top-left"
                }
            }
        },
        "sizes": []
    }
}

18.11. Update a Custom Creative

A `PATCH` request will update creative.

18.11.1. Request Body

Path Type Description Required

isActive

boolean

Creative status

18.11.2. HTTP Request

URL

PUT api/creatives/20 HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTQsImV4cCI6MTc3MDkxNzY5NCwibmJmIjoxNzcwOTE0MDk0LCJqdGkiOiJTek5PaXh3NWs0VzNESGlrIiwic3ViIjoiODQiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.NrRuKcBHChghgmd6vj1oUE2yCObuV580Pi6x0-wTv6I
DATA
{
    "isActive": true
}

18.11.3. Curl request

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

18.11.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

Creative Id

data.userId

integer

User Id

data.isActive

boolean

Creative status

data.approved

string

Creative approval status (approved, pending, disapproved)

data.creativeType

string

Creative type: banner, native, video, audio

data.name

string

Creative name

data.frequencyType

string

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

data.frequency

boolean

Frequency on/off.

data.frequencyCap

integer

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

data.frequencyPeriod

integer

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

data.bidPrice

float

CPM

data.autoresize

boolean

autoresize

data.adaptiveCpm

bool

adaptiveCpm

data.size

string

Image width and height

data.weight

string

File size

data.thumbnail

string

Thumbnail URL

data.folderId

string

Folder Id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

data.pendingAt

datetime

Date of pending start

data.deletedAt

datetime

Date of deletion

data.relation.banner.apiFramework

integer

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

data.relation.banner.admBody

string

Third-party tag

data.relation.banner.bannerType

String

Banner type (banner,inBannerVideo)

data.relation.banner.clickUrl

string

Click URL

data.relation.banner.width

integer

Banner width

data.relation.banner.height

integer

Banner height

data.sizes

string

size

18.11.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "message": "Creative updated.",
    "data": {
        "id": 20,
        "userId": 84,
        "isActive": true,
        "approved": "pending",
        "creativeType": "banner",
        "name": "culpa dolor",
        "frequencyType": "user",
        "frequency": 0,
        "frequencyCap": 4,
        "frequencyPeriod": 1,
        "bidPrice": "14.29",
        "autoresize": 0,
        "adaptiveCpm": false,
        "size": " x ",
        "weight": "-",
        "thumbnail": null,
        "folderId": null,
        "createdAt": "2026-02-12 16:34:54",
        "updatedAt": "2026-02-12 16:34:55",
        "pendingAt": null,
        "deletedAt": null,
        "relation": {
            "banner": {
                "apiFramework": null,
                "admBody": null,
                "bannerType": null,
                "clickUrl": null,
                "width": null,
                "height": null
            }
        },
        "sizes": []
    }
}

18.12. Delete a Custom Creative

A `DELETE` request will delete creative.

18.12.1. HTTP Request

URL

DELETE api/creatives/21 HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTUsImV4cCI6MTc3MDkxNzY5NSwibmJmIjoxNzcwOTE0MDk1LCJqdGkiOiJjMnh1MkFMelNqUDM3N1lmIiwic3ViIjoiODUiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.oFa5Z5tgLpQyq0PbU5SugkTGQq1AalF-9BKfYxJsiik
Content-type: application/x-www-form-urlencoded
DATA
{}

18.12.2. Curl request

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

18.12.3. HTTP Response

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

19. Assign Creatives to Campaigns

19.1. Get list of Creatives assigned to Campaign

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

19.1.1. HTTP Request

URL

GET api/campaigns/23/creatives HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJRQnpaRXBBZVNCdmVBUE40Iiwic3ViIjoiMzkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.mAD9c_s41fd8NJk8TIBSIO98hRjUFyhnWkFMI2vbh0U
DATA
{}

19.1.2. Curl request

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

19.1.3. Response Body

Path Type Description

data.*.id

integer

Creative Id

data.*.userId

integer

User Id

data.*.isActive

boolean

Creative status

data.*.approved

string

Creative approval status (approved, pending, disapproved)

data.*.creativeType

string

Creative type: banner, native, video, audio

data.*.name

string

Creative name

data.*.frequencyType

string

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

data.*.frequency

string

Frequency on/off

data.*.frequencyCap

integer

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

data.*.frequencyPeriod

integer

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

data.*.bidPrice

float

CPM

data.*.autoresize

boolean

autoresize

data.*.adaptiveCpm

bool

adaptiveCpm

data.*.size

string

Image width and height

data.*.weight

string

File size

data.*.thumbnail

string

Thumbnail URL

data.*.folderId

string

Folder Id

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

data.*.pendingAt

datetime

Date of pending start

data.*.deletedAt

datetime

Date of deletion

data.*.status

string

Status

meta.pagination.total

integer

Pagination: total items count

meta.pagination.count

integer

Pagination: page items count

meta.pagination.per_page

integer

Pagination: items per page

meta.pagination.current_page

integer

Pagination: current page number

meta.pagination.total_pages

integer

Pagination: total pages count

meta.pagination.links

object

Pagination links

19.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": [
        {
            "id": 1,
            "userId": 39,
            "isActive": 1,
            "approved": "pending",
            "creativeType": "banner",
            "name": "Test Creative #1",
            "frequencyType": "user",
            "frequency": 0,
            "frequencyCap": 2,
            "frequencyPeriod": 1,
            "bidPrice": "16.90",
            "autoresize": 0,
            "adaptiveCpm": false,
            "size": "228 x 447",
            "weight": "0.22 MB",
            "thumbnail": null,
            "folderId": null,
            "createdAt": "2026-02-12 16:34:50",
            "updatedAt": "2026-02-12 16:34:50",
            "pendingAt": null,
            "deletedAt": null,
            "media": {
                "id": 1,
                "userId": 39,
                "mediaType": "image",
                "originName": "image.jpg",
                "name": "39_469440b344d1fb162886fcec01aa5360.jpg",
                "extension": "jpg",
                "url": "https:\/\/carter.biz\/quo-voluptatem-magni-id-et-libero-voluptatem.html\/39_469440b344d1fb162886fcec01aa5360.jpg",
                "width": 224,
                "height": 155,
                "weight": 231956
            },
            "relation": {
                "banner": {
                    "apiFramework": 0,
                    "admBody": "<a target=\"_blank\" href=\"https:\/\/www.bogan.com\/illo-modi-vel-unde-placeat-quos-nulla\" ><img src=\"http:\/\/nader.com\/\/10.jpg\"\/><\/a>",
                    "bannerType": "banner",
                    "clickUrl": "https:\/\/hamill.com\/ipsam-necessitatibus-quos-qui-quam-ab.html",
                    "width": 228,
                    "height": 447,
                    "childrenCreative": null,
                    "statusChildrenCreative": [],
                    "main": 1
                }
            },
            "status": ""
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 1000,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

19.2. Replace Creatives assigned to Campaign

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

19.2.1. Request Body

Path Type Description Required

ids.*

integer

Creative id

+

19.2.2. HTTP Request

URL

POST api/campaigns/24/creatives HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJTUERqZDk4QlJ4Y0ZDZjMxIiwic3ViIjoiNDAiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.K8Y-t1K36WwKUSrgo36AdyvJ-t-t31YZl_KgkYKn46s
DATA
{
    "ids": [
        2,
        3
    ]
}

19.2.3. Curl request

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

19.2.4. Response Body

Path Type Description

message

string

Result message

19.2.5. HTTP Response

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

19.3. Append Creatives assigned to Campaign

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

19.3.1. Request Body

Path Type Description Required

ids.*

integer

Creative id

+

19.3.2. HTTP Request

URL

PATCH api/campaigns/25/creatives HTTP/1.1

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTEsImV4cCI6MTc3MDkxNzY5MSwibmJmIjoxNzcwOTE0MDkxLCJqdGkiOiJJWW9kdjJ2NFBWRlM5S2ozIiwic3ViIjoiNDEiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.iSe3PPjTQ3iQlfqqAw1didMrgoT1VN12S-q2pI-hjt8
DATA
{
    "ids": [
        5
    ]
}

19.3.3. Curl request

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

19.3.4. Response Body

Path Type Description

message

string

Result message

19.3.5. HTTP Response

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

19.4. Remove Creatives assigned to Campaign

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

19.4.1. Request Body

Path Type Description Required

ids.*

integer

Creative id

+

19.4.2. HTTP Request

URL

DELETE api/campaigns/26/creatives HTTP/1.1

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTEsImV4cCI6MTc3MDkxNzY5MSwibmJmIjoxNzcwOTE0MDkxLCJqdGkiOiJVOHVHUE1JNFpyU0kxQk5HIiwic3ViIjoiNDIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.4_6_l3u8M2keJNgxgZTrtp7Z7uJmToK03R61e7e7eU0
Content-type: application/x-www-form-urlencoded
DATA
{
    "ids": [
        7
    ]
}

19.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/26/creatives' -i -X DELETE \
            -H 'Accept: application/json' \
                -H 'Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTEsImV4cCI6MTc3MDkxNzY5MSwibmJmIjoxNzcwOTE0MDkxLCJqdGkiOiJVOHVHUE1JNFpyU0kxQk5HIiwic3ViIjoiNDIiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.4_6_l3u8M2keJNgxgZTrtp7Z7uJmToK03R61e7e7eU0' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "ids": [
        7
    ]
}'

19.4.4. Response Body

Path Type Description

message

string

Result message

deleted

boolean

Deleting result

19.4.5. HTTP Response

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

20. Filterlists

20.1. Filter lists

A `GET` request will return a filter lists

20.1.1. HTTP Request

URL

GET api/filterlist HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

20.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/filterlist' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

20.1.3. Response Body

Path Type Description

data.*.id

integer

List Id

data.*.userId

integer

User Id

data.*.isInclude

boolean

White/Black list

data.*.title

string

List title

data.*.type

string

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

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

meta.pagination.total

integer

Pagination: total items count

meta.pagination.count

integer

Pagination: page items count

meta.pagination.per_page

integer

Pagination: items per page

meta.pagination.current_page

integer

Pagination: current page number

meta.pagination.total_pages

integer

Pagination: total pages count

meta.pagination.links

array

Pagination: array links

20.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "id": 1,
            "userId": 10,
            "isInclude": true,
            "title": "Test Filter list #1",
            "type": "domain",
            "createdAt": "2026-02-12 16:34:55",
            "updatedAt": "2026-02-12 16:34:55"
        },
        {
            "id": 2,
            "userId": 10,
            "isInclude": false,
            "title": "Test Filter list #2",
            "type": "ipAdresses",
            "createdAt": "2026-02-12 16:34:55",
            "updatedAt": "2026-02-12 16:34:55"
        }
    ],
    "meta": {
        "pagination": {
            "total": 2,
            "count": 2,
            "per_page": 15,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

20.2. Get filter lists by ID

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

20.2.1. HTTP Request

URL

GET api/filterlist/123 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

20.2.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/filterlist/123' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

20.2.3. Response Body

Path Type Description

data.id

integer

List Id

data.userId

integer

User Id

data.isInclude

boolean

White/Black list

data.title

string

List title

data.items.*

string

List item (domain, bundle, IP, etc.)

data.type

string

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

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

20.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": {
        "id": 123,
        "userId": 10,
        "isInclude": true,
        "title": "Test Filter list #4",
        "items": [
            "a",
            "b",
            "c"
        ],
        "type": "domain",
        "createdAt": "2026-02-12 16:34:56",
        "updatedAt": "2026-02-12 16:34:56"
    }
}

20.3. Create a filter lists

A `POST` request will set new filter list

20.3.1. Request Body

Path Type Description Required

title

string

List title

+

type

string

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

+

isInclude

bool

white/black

+

items.*

string

List item (domain, bundle, IP, etc.)

fileName

string

null

File name from upload file - Store filter list

20.3.2. HTTP Request

URL

POST api/filterlist HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "title": "Test Filter list #5",
    "type": "ipAdresses",
    "isInclude": true,
    "items": [
        "31.172.51.49",
        "208.216.148.181",
        "127.202.158.229",
        "242.76.248.251",
        "10.175.11.90"
    ],
    "fileName": null
}

20.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/filterlist' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "title": "Test Filter list #5",
    "type": "ipAdresses",
    "isInclude": true,
    "items": [
        "31.172.51.49",
        "208.216.148.181",
        "127.202.158.229",
        "242.76.248.251",
        "10.175.11.90"
    ],
    "fileName": null
}'

20.3.4. Response Body

Path Type Description

message

string

message

data.id

integer

List Id

data.userId

integer

User Id

data.isInclude

boolean

White (1)/Black list(0)

data.listCount

integer

list count

data.title

string

List title

data.type

string

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

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

20.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Created",
    "data": {
        "id": 321,
        "userId": 10,
        "isInclude": true,
        "listCount": 5,
        "title": "Test Filter list #5",
        "type": "ipAdresses",
        "createdAt": "2026-02-12 16:34:56",
        "updatedAt": "2026-02-12 16:34:56"
    }
}

20.4. Filter lists update

A `PATCH` request will update filter lists

20.4.1. Request Body

Path Type Description Required

title

string

List title

isInclude

bool

white/black

items.*

string

List item (domain, bundle, IP, etc.)

fileName

string

null

File name from upload file - Store filter list

20.4.2. HTTP Request

URL

PUT api/filterlist/999 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "title": "Test FilterList #7",
    "isInclude": true,
    "items": [
        "https:\/\/schroeder.info\/itaque-illo-ullam-eveniet-sit-est-sunt-culpa-enim.html",
        "http:\/\/bailey.com\/",
        "http:\/\/www.wiza.biz\/"
    ],
    "fileName": null
}

20.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/filterlist/999' -i -X PUT \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "title": "Test FilterList #7",
    "isInclude": true,
    "items": [
        "https:\/\/schroeder.info\/itaque-illo-ullam-eveniet-sit-est-sunt-culpa-enim.html",
        "http:\/\/bailey.com\/",
        "http:\/\/www.wiza.biz\/"
    ],
    "fileName": null
}'

20.4.4. Response Body

Path Type Description

message

string

Result message

data.id

integer

List Id

data.userId

integer

User Id

data.isInclude

boolean

white/black

data.listCount

integer

listCount

data.title

string

List title

data.type

string

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

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

20.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Updated",
    "data": {
        "id": 999,
        "userId": 10,
        "isInclude": true,
        "listCount": 3,
        "title": "Test FilterList #7",
        "type": "urls",
        "createdAt": "2026-02-12 16:34:57",
        "updatedAt": "2026-02-12 16:34:57"
    }
}

20.5. Filter lists delete

A `DELETE` request will delete a filter lists

20.5.1. HTTP Request

URL

DELETE api/filterlist/1001 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{}

20.5.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/filterlist/1001' -i -X DELETE \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{}'

20.5.3. Response Body

Path Type Description

message

string

Result message

deleted

boolean

is deleted

20.5.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Deleted",
    "deleted": true
}

21. Assign Filterlists to Campaigns

21.1. Get list of Filter Lists assigned to Campaign

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

21.1.1. HTTP Request

URL

GET api/campaigns/31/filterlists HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

21.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/31/filterlists' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

21.1.3. Response Body

Path Type Description

data.*.filterList.id

integer

List Id

data.*.filterList.title

string

List title

data.*.filterList.items

array

List items (strings). May be empty depending on endpoint or pagination mode

meta.pagination.total

integer

Pagination: total items count

meta.pagination.count

integer

Pagination: page items count

meta.pagination.per_page

integer

Pagination: items per page

meta.pagination.current_page

integer

Pagination: current page number

meta.pagination.total_pages

integer

Pagination: total pages count

meta.pagination.links

array

Pagination: array links

21.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "filterList": {
                "id": 1,
                "title": "Test Filter list #1",
                "items": []
            }
        },
        {
            "filterList": {
                "id": 2,
                "title": "Test Filter list #2",
                "items": []
            }
        },
        {
            "filterList": {
                "id": 3,
                "title": "Test Filter list #3",
                "items": []
            }
        }
    ],
    "meta": {
        "pagination": {
            "total": 3,
            "count": 3,
            "per_page": 15,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

21.2. Replace Filter Lists assigned to Campaign

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

21.2.1. Request Body

Path Type Description Required

items.*.id

integer

Filter list id

+

21.2.2. HTTP Request

URL

POST api/campaigns/32/filterlists HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "items": [
        {
            "id": 4
        },
        {
            "id": 5
        }
    ]
}

21.2.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/32/filterlists' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "items": [
        {
            "id": 4
        },
        {
            "id": 5
        }
    ]
}'

21.2.4. Response Body

Path Type Description

message

string

Result message

21.2.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Replaced."
}

21.3. Remove Filter Lists assigned to Campaign

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

21.3.1. Request Body

Path Type Description Required

ids.*

integer

FilterList id

+

21.3.2. HTTP Request

URL

DELETE api/campaigns/33/filterlists HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "ids": [
        7
    ]
}

21.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/campaigns/33/filterlists' -i -X DELETE \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "ids": [
        7
    ]
}'

21.3.4. Response Body

Path Type Description

message

string

Result message

21.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "message": "Deleted."
}

22. Optimization Rule

22.1. Rule

A `GET` request will return a optimization rules

22.1.1. HTTP Request

URL

GET api/optimization-rule HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

22.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/optimization-rule' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

22.1.3. Response Body

Path Type Description

data.*.id

integer

Id

data.*.userId

integer

User Id

data.*.ownerCampaignId

integer

Campaign id where it was created rule

data.*.name

string

Name

data.*.timeRange

string

type: last_day,last_3_days,last_week,last_month

data.*.then

string

type: whitelist_source,blacklist_source

data..conditions..condition

string

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

data..conditions..action

string

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

data..conditions..comparison

string

Comparison type: (>,<,=)

data..conditions..value

string

Value

data.*.targetFilterListId

integer

Filter list id

data.*.createdAt

datetime

Date of creation

data.*.updatedAt

datetime

Date of last modification

meta.pagination.total

integer

Pagination: total items count

meta.pagination.count

integer

Pagination: page items count

meta.pagination.per_page

integer

Pagination: items per page

meta.pagination.current_page

integer

Pagination: current page number

meta.pagination.total_pages

integer

Pagination: total pages count

meta.pagination.links

array

Pagination: array links

22.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "id": 1,
            "userId": 10,
            "ownerCampaignId": 100,
            "name": "TEST Rule#1",
            "timeRange": "last_day",
            "then": "blacklist_source",
            "conditions": [
                {
                    "condition": "when",
                    "action": "dspSpend",
                    "comparison": ">",
                    "value": "10"
                }
            ],
            "targetFilterListId": 501,
            "createdAt": "2026-02-12 16:34:58",
            "updatedAt": "2026-02-12 16:34:58"
        }
    ],
    "meta": {
        "pagination": {
            "total": 1,
            "count": 1,
            "per_page": 15,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

22.2. Get rule by ID

A `GET` request will return a optimization rule

22.2.1. HTTP Request

URL

GET api/optimization-rule/999 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

22.2.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/optimization-rule/999' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

22.2.3. Response Body

Path Type Description

data.id

integer

Id

data.userId

integer

User Id

data.ownerCampaignId

integer

Campaign id where it was created rule

data.name

string

Name

data.timeRange

string

type: last_day,last_3_days,last_week,last_month

data.then

string

type: whitelist_source,blacklist_source

data.conditions.*.condition

string

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

data.conditions.*.action

string

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

data.conditions.*.comparison

string

Comparison type: (>,<,=)

data.conditions.*.value

string

Value

data.targetFilterListId

integer

Filter list id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

22.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": {
        "id": 999,
        "userId": 10,
        "ownerCampaignId": 100,
        "name": "TEST Rule#1",
        "timeRange": "last_day",
        "then": "blacklist_source",
        "conditions": [
            {
                "condition": "when",
                "action": "dspSpend",
                "comparison": ">",
                "value": "10"
            }
        ],
        "targetFilterListId": 501,
        "createdAt": "2026-02-12 16:34:58",
        "updatedAt": "2026-02-12 16:34:58"
    }
}

22.3. Create a rule

A `POST` request will return a optimization rule

22.3.1. Request Body

Path Type Description Required

name

string

Name

+

timeRange

string

type: (last_day,last_3_days,last_week,last_month)

+

then

string

type: (whitelist_source,blacklist_source)

+

targetFilterListId

integer

Filter list id

+

conditions.*.condition

string

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

+

conditions.*.action

string

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

+

conditions.*.comparison

string

Comparison type: (>,<,=)

+

conditions.*.value

string

Value

+

22.3.2. HTTP Request

URL

POST api/optimization-rule HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "name": "Test",
    "timeRange": "last_day",
    "then": "blacklist_source",
    "targetFilterListId": 501,
    "conditions": [
        {
            "condition": "when",
            "action": "dspPrice",
            "comparison": ">",
            "value": "0.5"
        }
    ]
}

22.3.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/optimization-rule' -i -X POST \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "name": "Test",
    "timeRange": "last_day",
    "then": "blacklist_source",
    "targetFilterListId": 501,
    "conditions": [
        {
            "condition": "when",
            "action": "dspPrice",
            "comparison": ">",
            "value": "0.5"
        }
    ]
}'

22.3.4. Response Body

Path Type Description

data.id

integer

Id

data.userId

integer

User Id

data.ownerCampaignId

integer

Campaign id where it was created rule

data.name

string

Name

data.timeRange

string

type: (last_day,last_3_days,last_week,last_month)

data.then

string

type: (whitelist_source,blacklist_source)

data.conditions.*.condition

string

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

data.conditions.*.action

string

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

data.conditions.*.comparison

string

Comparison type: (>,<,=)

data.conditions.*.value

string

Value

data.targetFilterListId

integer

Filter list id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

22.3.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": {
        "id": 1001,
        "userId": 10,
        "ownerCampaignId": 100,
        "name": "Test",
        "timeRange": "last_day",
        "then": "blacklist_source",
        "conditions": [
            {
                "condition": "when",
                "action": "dspPrice",
                "comparison": ">",
                "value": "0.5"
            }
        ],
        "targetFilterListId": 501,
        "createdAt": "2026-02-12 16:34:58",
        "updatedAt": "2026-02-12 16:34:58"
    }
}

22.4. Rule update

A `PATCH` request will return a optimization rule

22.4.1. Request Body

Path Type Description Required

name

string

Name

+

timeRange

string

type: (last_day,last_3_days,last_week,last_month)

+

then

string

type: (whitelist_source,blacklist_source)

+

targetFilterListId

integer

Filter list id

+

conditions.*.condition

string

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

+

conditions.*.action

string

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

+

conditions.*.comparison

string

Comparison type: (>,<,=)

+

conditions.*.value

string

Value

+

22.4.2. HTTP Request

URL

PUT api/optimization-rule/2002 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{
    "name": "Test#2",
    "timeRange": "last_week",
    "then": "whitelist_source",
    "targetFilterListId": 777,
    "conditions": [
        {
            "condition": "when",
            "action": "dspPrice",
            "comparison": "<",
            "value": "1"
        }
    ]
}

22.4.3. Curl request

$ curl 'https://dsp-api.smartyads.com/api/optimization-rule/2002' -i -X PUT \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{
    "name": "Test#2",
    "timeRange": "last_week",
    "then": "whitelist_source",
    "targetFilterListId": 777,
    "conditions": [
        {
            "condition": "when",
            "action": "dspPrice",
            "comparison": "<",
            "value": "1"
        }
    ]
}'

22.4.4. Response Body

Path Type Description

data.id

integer

Id

data.userId

integer

User Id

data.ownerCampaignId

integer

Campaign id where it was created rule

data.name

string

Name

data.timeRange

string

type: (last_day,last_3_days,last_week,last_month)

data.then

string

type: (whitelist_source,blacklist_source)

data.conditions.*.condition

string

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

data.conditions.*.action

string

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

data.conditions.*.comparison

string

Comparison type: (>,<,=)

data.conditions.*.value

string

Value

data.targetFilterListId

integer

Filter list id

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

22.4.5. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": {
        "id": 2002,
        "userId": 10,
        "ownerCampaignId": 100,
        "name": "Test#2",
        "timeRange": "last_week",
        "then": "whitelist_source",
        "conditions": [
            {
                "condition": "when",
                "action": "dspPrice",
                "comparison": "<",
                "value": "1"
            }
        ],
        "targetFilterListId": 777,
        "createdAt": "2026-02-12 16:34:59",
        "updatedAt": "2026-02-12 16:34:59"
    }
}

22.5. Remove Rule assigned to Campaign

A `DELETE` request will delete a Optimization rule relation

22.5.1. HTTP Request

URL

DELETE api/optimization-rule/3003 HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Content-type: application/x-www-form-urlencoded
DATA
{}

22.5.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/optimization-rule/3003' -i -X DELETE \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
                -H 'Content-type: application/x-www-form-urlencoded' \
    -d '{}'

22.5.3. Response Body

Path Type Description

deleted

boolean

is deleted

22.5.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "deleted": true
}

23. Providers

23.1. Get list of Third-Party Data Providers

A `GET` request returns paginated list of available third-party data providers (Eyeota, LiveRamp, etc.). These providers supply audience segments for targeting.

23.1.1. HTTP Request

URL

GET api/providers HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

23.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/providers' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

23.1.3. Response Body

Path Type Description

data.*.id

integer

Provider id

data.*.name

string

Provider name (eyeota, liveramp, etc.)

meta.pagination.total

integer

Total items count

meta.pagination.count

integer

Current page items count

meta.pagination.per_page

integer

Items per page

meta.pagination.current_page

integer

Current page number

meta.pagination.total_pages

integer

Total pages count

meta.pagination.links

object

Pagination links

23.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "data": [
        {
            "id": 1,
            "name": "eyeota"
        },
        {
            "id": 2,
            "name": "liveramp"
        },
        {
            "id": 3,
            "name": "oracle"
        }
    ],
    "meta": {
        "pagination": {
            "total": 3,
            "count": 3,
            "per_page": 15,
            "current_page": 1,
            "total_pages": 1,
            "links": []
        }
    }
}

24. Assign Optimization rules to Campaigns

24.1. Get Rule assigned to Campaign

A `GET` request will return a optimization rule relation

24.1.1. HTTP Request

URL

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

HEADER
Accept: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJrbjM5WEZpTUh3S1NiRTJsIiwic3ViIjoiMjgiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.PuG2UaN8uhjBMBHD5qkbzz0mb0Br2eJfrI__yWvSHvw
DATA
{}

24.1.2. Curl request

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

24.1.3. Response Body

Path Type Description

data.id

integer

Id

data.userId

integer

User Id

data.ownerCampaignId

integer

Campaign id where it was created rule

data.name

string

Name

data.timeRange

string

last_day

last_3_days

last_week

last_month

data.then

string

whitelist_source

blacklist_source

data.targetFilterListId

integer

Filter list id

data.conditions.*.condition

string

Condition (when

and

or) first condition must be - when

data.conditions.*.action

string

Actions (ctr

clicks

winrate

impressions

dspSpend)

data.conditions.*.comparison

string

Comparison types (>

<

=)

data.conditions.*.value

string

Value

data.createdAt

datetime

Date of creation

data.updatedAt

datetime

Date of last modification

24.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
    Access-control-allow-origin: *
    X-ratelimit-limit: 500
    X-ratelimit-remaining: 499
{
    "data": {
        "id": 1,
        "userId": 28,
        "ownerCampaignId": 12,
        "name": "TEST Rule#1",
        "timeRange": "last_day",
        "then": "whitelist_source",
        "targetFilterListId": 1,
        "conditions": [
            {
                "condition": "or",
                "action": "ctr",
                "comparison": "=",
                "value": 1
            }
        ],
        "createdAt": "2026-02-12T16:34:50.000000Z",
        "updatedAt": "2026-02-12T16:34:50.000000Z"
    }
}

24.2. Replace Rule assigned to Campaign

A `POST` request will return a optimization rule relation

24.2.1. Request Body

Path Type Description Required

campaignId

integer

campaignId

+

ruleId

integer

ruleId

+

24.2.2. HTTP Request

URL

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

HEADER
Accept: application/json
Content-type: application/json
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vbG9jYWxob3N0Ojk5MjMiLCJpYXQiOjE3NzA5MTQwOTAsImV4cCI6MTc3MDkxNzY5MCwibmJmIjoxNzcwOTE0MDkwLCJqdGkiOiJPcURxcFFzQWNydW5Wdk9HIiwic3ViIjoiMjkiLCJwcnYiOiIyM2JkNWM4OTQ5ZjYwMGFkYjM5ZTcwMWM0MDA4NzJkYjdhNTk3NmY3In0.mLheCxGxFEnQbn1XsBy8Dh0uFr08t4IV0RuUr8ny3lY
DATA
{
    "campaignId": 13,
    "ruleId": 2
}

24.2.3. Curl request

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

24.2.4. Response Body

Path Type Description

campaignId

integer

campaignId

ruleId

integer

ruleId

24.2.5. HTTP Response

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

24.3. Remove Rule assigned to Campaign

A `DELETE` request will delete a Optimization rule relation

24.3.1. HTTP Request

URL

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

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

24.3.2. Curl request

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

24.3.3. Response Body

Path Type Description

deleted

boolean

is deleted

24.3.4. HTTP Response

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

25. Eyeota Segments

25.1. Get Eyeota segments (hierarchical structure)

A `GET` request returns hierarchical structure of Eyeota audience segments organized in layers (0-8). Used for building segment selection tree in UI. Optional search by segment name.

25.1.1. HTTP Request

URL

GET api/eyeota HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

25.1.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/eyeota' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

25.1.3. Response Body

Path Type Description

items

object

Hierarchical items structure

layer0.*.index

string

Category index/key

layer0.*.name

string

Category name

layer1

object

Second level categories

layer2

object

Third level categories

layer3

object

Fourth level categories

layer4

object

Fifth level categories

layer5

object

Sixth level categories

layer6

object

Seventh level categories

layer7

object

Eighth level categories (usually empty)

layer8

object

Ninth level categories (usually empty)

25.1.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "items": [],
    "layer0": [
        {
            "index": "automotive",
            "name": "Automotive"
        },
        {
            "index": "business",
            "name": "Business"
        }
    ],
    "layer1": [],
    "layer2": [],
    "layer3": [],
    "layer4": [],
    "layer5": [],
    "layer6": [],
    "layer7": [],
    "layer8": []
}

25.2. Get Eyeota segments (inline format)

A `GET` request returns flat list of all Eyeota segments in format: `segmentId =&gt; &quot;#ID | Name | CPM$&quot;`. Useful for quick segment lookup and autocomplete.

25.2.1. HTTP Request

URL

GET api/eyeota/inline HTTP/1.1

HEADER
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
DATA
{}

25.2.2. Curl request

$ curl 'https://dsp-api.smartyads.com/api/eyeota/inline' -i -X GET \
            -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' \
    -d '{}'

25.2.3. Response Body

Path Type Description

*

string

Formatted segment string: "#ID

25.2.4. HTTP Response

HTTP/1.0 200 OK
    Content-type: application/json
{
    "12345": "#12345 | Automotive Enthusiasts | 2.5$",
    "67890": "#67890 | Business Professionals | 3.0$"
}

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.type
  • banner

  • native

  • video

  • audio

    Campaign.connectionTypes
  • wifi

  • ethernet

  • cellular_all

  • cellular_all

  • cellular_3g

  • cellular_4g

  • cellular_5g

    Campaign.geoCountries
  • Use GET /geo/countries

  • Use response field: iso3

    Campaign.geoRegions
  • Use GET /geo/regions?selectedCountries=USA,CAN

  • Use response field: state_iso2

    Campaign.geoCities
  • Use GET /geo/cities?selectedCountries=USA&selectedRegions=US-CA

  • Use response field: geoname_id

    Campaign.OS
  • Android

  • Android 8.0

  • Android 8.1

  • Android 9.0

  • Android 10.0

  • Android 11.0

  • Android 12.0

  • Android 13.0

  • Android 14.0

  • Android 15.0

  • iOS

  • iOS 10.0

  • iOS 10.1

  • iOS 10.2

  • iOS 10.3

  • iOS 11.0

  • iOS 11.1

  • iOS 11.2

  • iOS 11.3

  • iOS 11.4

  • iOS 12.0

  • iOS 12.1

  • iOS 12.2

  • iOS 12.3

  • iOS 12.4

  • iOS 12.5

  • iOS 13.0

  • iOS 13.1

  • iOS 13.2

  • iOS 13.3

  • iOS 13.4

  • iOS 13.5

  • iOS 13.6

  • iOS 13.7

  • iOS 14.0

  • iOS 14.1

  • iOS 14.2

  • iOS 14.3

  • iOS 14.4

  • iOS 14.5

  • iOS 14.6

  • iOS 14.7

  • iOS 14.8

  • iOS 15.0

  • iOS 15.1

  • iOS 15.2

  • iOS 15.3

  • iOS 15.4

  • iOS 15.5

  • iOS 15.6

  • iOS 15.7

  • iOS 15.8

  • iOS 16.0

  • iOS 16.1

  • iOS 16.2

  • iOS 16.3

  • iOS 16.4

  • iOS 16.5

  • iOS 16.6

  • iOS 16.7

  • iOS 17.0

  • iOS 17.1

  • iOS 17.2

  • iOS 17.3

  • iOS 17.4

  • iOS 17.5

  • iOS 17.6

  • iOS 17.7

  • iOS 18.0

  • iOS 18.1

  • iOS 18.2

  • iOS 18.3

  • iOS 18.4

  • iOS 18.5

  • iOS 18.6

  • iOS 18.7

  • iOS 26.0

  • iOS 26.1

  • iOS 26.2

  • Mac OS

  • Mac OS 10.1

  • Mac OS 10.2

  • Mac OS 10.3

  • Mac OS 10.4

  • Mac OS 10.5

  • Mac OS 10.6

  • Mac OS 10.7

  • Mac OS 10.8

  • Mac OS 10.9

  • Mac OS 10.10

  • Mac OS 10.11

  • Mac OS 10.12

  • Mac OS 10.13

  • Mac OS 10.14

  • Mac OS 10.15

  • Mac OS 11.0

  • Mac OS 11.1

  • Mac OS 11.2

  • Mac OS 11.3

  • Mac OS 11.4

  • Mac OS 11.5

  • Mac OS 11.6

  • Mac OS 12.0

  • Mac OS 12.1

  • Mac OS 12.2

  • Mac OS 12.3

  • Mac OS 12.4

  • Mac OS 12.5

  • Mac OS 12.6

  • Mac OS 13.0

  • Mac OS 13.1

  • Mac OS 13.2

  • Mac OS 13.3

  • Mac OS 13.4

  • Mac OS 13.5

  • Mac OS 13.6

  • Mac OS 14.0

  • Mac OS 14.1

  • Mac OS 14.2

  • Mac OS 14.3

  • Mac OS 14.4

  • Mac OS 14.5

  • BlackBerry

  • Linux

  • Windows

  • Windows 8.1

  • Windows 10

  • Windows 11

  • Windows Mobile

  • Symbian

  • Symbian 9.1

  • Symbian 9.2

  • Symbian 9.3

  • Symbian 9.4

    Campaign.browser
  • Chrome

  • Edge

  • IE

  • Safari

  • Mozilla

  • Opera

  • UCBrowser

  • Yandex

    Campaign.deviceLanguage
  • ab

  • aa

  • af

  • sq

  • am

  • ar

  • an

  • hy

  • as

  • ay

  • az

  • ba

  • eu

  • bn

  • dz

  • bh

  • bi

  • br

  • bg

  • my

  • be

  • km

  • ca

  • zh

  • zh-Hans

  • zh-Hant

  • co

  • hr

  • cs

  • da

  • nl

  • en

  • eo

  • et

  • fo

  • fa

  • fj

  • fi

  • fr

  • fy

  • gl

  • gd

  • gv

  • ka

  • de

  • el

  • kl

  • gn

  • gu

  • ht

  • ha

  • he

  • iw

  • hi

  • hu

  • is

  • io

  • id

  • in

  • ia

  • ie

  • iu

  • ik

  • ga

  • it

  • ja

  • jv

  • kn

  • ks

  • kk

  • rw

  • ky

  • rn

  • ko

  • ku

  • lo

  • la

  • lv

  • li

  • ln

  • lt

  • mk

  • mg

  • ms

  • ml

  • mt

  • mi

  • mr

  • mo

  • mn

  • na

  • ne

  • no

  • oc

  • or

  • om

  • ps

  • pl

  • pt

  • pa

  • qu

  • rm

  • ro

  • ru

  • sm

  • sg

  • sa

  • sr

  • sh

  • st

  • tn

  • sn

  • ii

  • sd

  • si

  • ss

  • sk

  • sl

  • so

  • es

  • su

  • sw

  • sv

  • tl

  • tg

  • ta

  • tt

  • te

  • th

  • bo

  • ti

  • to

  • ts

  • tr

  • tk

  • tw

  • ug

  • uk

  • ur

  • uz

  • vi

  • vo

  • wa

  • cy

  • wo

  • xh

  • yi

  • ji

  • yo

  • zu

    Campaign.extention.deviceVendor
  • acer

  • alcatel

  • alcatel one touch

  • amazon

  • apple

  • asus

  • dell

  • google

  • htc

  • huawei

  • lenovo

  • lg

  • motorola

  • oneplus

  • rca

  • samsung

  • sony

  • sony ericsson

  • verizon

  • xiaomi

  • zte

    Campaign.budgetUse
  • fast

  • pacer

    Campaign.frequencyType
  • user

  • ip