# How to Launch a Campaign with the API

This page walks through launching a banner, native or video campaign through the Eskimi DSP API, from the creative to the first report. It is for developers and advertisers who already have an access token; if you don't, start with [How to Use the API](https://manual.eskimi.com/books/api/page/how-to-use-the-api).

<p class="callout info">Every request below needs the header `Authorization: Bearer {ACCESS_TOKEN}`. All parameters are described in the API documentation: [https://dsp-api.eskimi.com/docs/api/v1/](https://dsp-api.eskimi.com/docs/api/v1/)</p>

### 1. Look Up the IDs You Need

Campaign settings use IDs, not names. Get them from the reference data endpoints first, for example:

- Countries: `GET /country/get`. Campaigns use the two-letter lowercase code, e.g. `lt`.
- Operators: `GET /operators/get/{country}`
- Device types, brands and operating systems: `GET /device/types/get`, `/device/brands/get`, `/device/oses/get`
- Exchanges and sites: `GET /exchanges/get`, `GET /sites/get`

### 2. Create a Creative Set

`POST /creative/sets/create` with `advertiserId` and a `title`. The response returns the creative set ID.

### 3. Create the Creative and Add Its Assets

First create the creative: `POST /creative/create` with `advertiserId`, `creativeSetId` and a `title`. The response returns the creative ID. Then add its assets, depending on the campaign type:

#### a. Banner

`POST /creative/banner/upload` with `advertiserId`, `creativeId` and `creativeFile`: a base64-encoded zip of .png, .jpg or .gif files.

#### b. Native

`POST /creative/native/upload` with `advertiserId`, `creativeId` and:

- `iconFile`, `imageMainFile` and `image600x600File`: each a base64-encoded zip with one .png, .jpg or .gif image.
- `content`: the ad text. `content.title` is required; description, call to action, sponsor name, price, rating and the other text fields are optional.

#### c. Video

Video creatives cannot be uploaded through the API. Upload them to a creative set in the DSP, then use that creative set's ID in step 4.

### 4. Create the Campaign

Use the endpoint for the campaign type. All three take the same fields:

- Banner: `POST /campaign/banner/create`
- Native: `POST /campaign/native/create`
- Video: `POST /campaign/video/create`

To submit the campaign for review, send at least:

<table id="bkmrk-fieldexample-adverti"><thead><tr><th>Field</th><th>Example</th></tr></thead><tbody><tr><td>`advertiserId`, `name`</td><td>`1234`, `"LT_Spring_Sale_Banner"`</td></tr><tr><td>`dates`</td><td>`{"from": "2026-11-01", "to": "2026-11-30"}`</td></tr><tr><td>`country`</td><td>`"lt"`</td></tr><tr><td>`budget`</td><td>`{"type": "total", "amount": 5000, "pacing": 1}` (pacing: 1 = Even, 0 = None)</td></tr><tr><td>`bid`</td><td>Within the advertiser's minimum and maximum bid</td></tr><tr><td>`creativeSetIds`</td><td>`[5678]`. The sets must hold creatives of the campaign's type, e.g. video creatives for a video campaign</td></tr><tr><td>`clickUrl`, `adDomain`</td><td>`"https://example.com/sale"`, `"example.com"`</td></tr></tbody></table>

Add targeting with the IDs from step 1. The optional `channel` field sets where the campaign runs: `1` display (the default), `2` in-game, `4` DOOH. The response returns the campaign ID.

<p class="callout info">Not ready to submit yet? Send `"status": "draft"`. A draft needs only `advertiserId` and `name`, and is not reviewed until it is completed.</p>

### 5. Review and Approval

A submitted campaign has the status `pending` until it is reviewed. Check it with `GET /campaign/status/get/{campaignId}`. The possible statuses are pending, ready, active, stopped, rejected, daily\_cap, limit\_budget, expired\_date and deleted. For what is reviewed and how long it takes, see [Campaign Approval for Self-Service Accounts](https://manual.eskimi.com/books/eskimi-policies/page/campaign-approval-for-self-service-accounts).

### 6. Start, Stop and Optimise

- Start or stop the whole campaign: `POST /campaign/start/{campaignId}`, `POST /campaign/stop/{campaignId}`
- Start or stop delivery on single exchanges, creatives, operating systems, browsers, operators, sites or apps, placements or packages: `POST /optimisation/action`, up to 10 campaigns per call. Each option must be enabled for the advertiser.
- Change only the budget pacing: `POST /campaign/{campaignId}/pacing` with `{"pacing": 1}` (Even) or `{"pacing": 0}` (None). Not available for campaigns with a daily budget.

### 7. Pull the Report

Use `GET /report/campaigns/get` for daily delivery, the split reports (sites, exchanges, creatives and others) for detail, and `GET /report/totals` for period totals including reach.

### Summary

Look up IDs, create the creative set and creative, add its assets (video in the DSP), create the campaign, wait for review, then manage and report on it through the API. To try each call without writing code, use the [API Postman Template](https://manual.eskimi.com/books/api/page/api-postman-template).