Skip to main content
POST
Create ad

Overview

Create an ad in the publisher system. Targeter sends the campaign, office, flight, targeting, goal, platforms, and creatives. You generate ad_id and return the initial status (typically pending_review or scheduled). Resolve office_id and publisher_platforms before calling this endpoint. At least one creative in material is required: images, videos, or html5.

Request

Headers

  • Authorization: Bearer {token} (required)
  • Content-Type: application/json

Body Parameters

string
required
Targeter campaign id this ad belongs to. Store and return it unchanged.
string
required
Publisher office id from Create office or Get office ID
string
required
Ad name / title (for example a property address)
number
required
Spend cap for the ad
object
required
Geographic targeting
string
required
ISO 3166-1 alpha-2 country code
string[]
Region or county names
number
required
Latitude of the targeting centre
number
required
Longitude of the targeting centre
number
Optional radius in kilometres around lat and long
string
required
When the ad may start delivering (inclusive). UTC ISO 8601 date-time.
string
required
When the ad must stop delivering (inclusive). UTC ISO 8601 date-time. Must be on or after start_date.
object
required
What Targeter is optimizing for
string
required
traffic, conversions, awareness, or leads
string
impression, link_click, landing_page_view, lead, or purchase
string[]
required
Platform ids from Get publisher platforms. At least one required.
object
required
Landing page and creatives
string
required
Landing page URL for the ad
string[]
Publicly reachable image URLs
string[]
Publicly reachable video URLs
string[]
Publicly reachable HTML5 creative URLs

Example Request

Response

Success (201)

Returns the created ad, including the publisher-generated ad_id and initial status.
string
Publisher-generated ad id. Targeter uses this on all later ad calls.
string
draft, pending_review, scheduled, active, paused, completed, rejected, or error

Error Responses

400 - Invalid request payload

Reject the request if end_date is before start_date, if publisher_platforms is empty, or if material has no images, videos, or html5.

401 - Unauthorized

404 - Office not found

500 - Server Error

Authorizations

Authorization
string
header
required

API token issued to Targeter during integration setup. Send as Authorization: Bearer <token>.

Body

application/json
campaign_id
string
required

Targeter campaign id this ad belongs to

Example:

"AbC123xyz"

office_id
string
required

Publisher office id from POST /offices or GET /offices

Example:

"off_8k2mQx"

name
string
required

Ad name / title

Example:

"Majorstuenveien 14"

budget
number
required

Spend cap for the ad

Example:

5000

target_location
object
required
start_date
string<date-time>
required
Example:

"2026-08-20T00:00:00Z"

end_date
string<date-time>
required
Example:

"2026-09-03T23:59:59Z"

goal_config
object
required
publisher_platforms
string[]
required
Minimum array length: 1
Example:
material
object
required

Response

Ad created

ad_id
string
required

Publisher-generated ad id

Example:

"ad_9pL2wR"

campaign_id
string
required

Targeter campaign id this ad belongs to

Example:

"AbC123xyz"

office_id
string
required

Publisher office id from POST /offices or GET /offices

Example:

"off_8k2mQx"

name
string
required

Ad name / title

Example:

"Majorstuenveien 14"

status
enum<string>
required

Delivery status of the ad

Available options:
draft,
pending_review,
scheduled,
active,
paused,
completed,
rejected,
error
Example:

"active"

budget
number
required

Spend cap for the ad

Example:

5000

target_location
object
required
start_date
string<date-time>
required

When the ad may start delivering (inclusive)

Example:

"2026-08-20T00:00:00Z"

end_date
string<date-time>
required

When the ad must stop delivering (inclusive)

Example:

"2026-09-03T23:59:59Z"

goal_config
object
required
publisher_platforms
string[]
required

Platform ids from GET /publisher-platforms

Example:
material
object
required
created_at
string<date-time>
Example:

"2026-08-19T08:12:00Z"

updated_at
string<date-time>
Example:

"2026-08-19T08:12:00Z"