Pontiac Wiki Pontiac Wiki

Getting Started with Pontiac API

Getting Started with Pontiac API

  • Pontiac API Overview
  • Object Hierarchy
  • Campaign vs. Line Management Inheritance
  1. Home
  2. API Documentation
  3. Getting Started with Pontiac API

Pontiac API Overview

The Pontiac API (Application Programming Interface) allows users to interact with Pontiac programmatically and integrate Pontiac’s ad buying and reporting capabilities into external applications.

Using the API, developers can automate workflows such as:

  • Creating Advertisers, Campaigns, Lines, Creatives, and Pixels
  • Managing campaign settings and targeting
  • Retrieving reporting and performance data
  • Updating and optimizing active campaigns

API integration is intended for users or teams with development resources who want to incorporate Pontiac functionality into their own systems rather than completing every action through the Pontiac user interface.

Common use cases include:

  • Publishers: Integrate Pontiac into an existing platform to allow advertisers to extend campaigns beyond the publisher’s owned properties and access programmatic inventory.
  • Agencies: Connect proprietary planning, reporting, or insertion order systems to automate campaign creation and management.
  • Trading Desks: Build custom workflows for campaign creation, reporting, bidding, and optimization.

If you are interested in using the Pontiac API, contact your Account Manager or reach out through the Help Center for additional information and access.

API Environments

Pontiac provides both production and sandbox environments.

Production

Use the production environment for live campaign activity.

API Documentation:
https://api.pontiac.media/docs/

The API documentation provides the available endpoints, request parameters, object structures, and response schemas.

Sandbox

The sandbox environment can be used to develop and test an integration without affecting live campaigns or production spend.

You can also log in to the sandbox interface to confirm that objects created or updated through API requests are appearing as expected.

Sandbox Interface:
https://sandbox.pontiac.media

Sandbox API Documentation:
https://sandbox.pontiac.media:1070/docs/

When developing an integration, we recommend testing requests in the sandbox before moving the workflow to production.

You can use the sandbox just like the regular production environment without the risk of spending any money. You can also login to the sandbox as if it were our normal ui to make sure that your calls are going through correctly.

Sandbox Interface:
https://sandbox.pontiac.media

Sandbox API Documentation:
https://sandbox.pontiac.media:1070/docs/

When developing an integration, we recommend testing requests in the sandbox before moving the workflow to production.

Using the Examples in This Guide

The examples throughout this guide use cURL.

cURL is a command-line tool for sending HTTP requests and can be used to interact directly with Pontiac’s API endpoints.

For example:

curl -X GET \
  'https://api.pontiac.media/rtb/advertisers' \
  -H 'accept: application/json' \
  -H 'auth: YOUR_AUTH_TOKEN'

The same API requests can also be made using other HTTP clients or incorporated into applications written in languages such as Python, JavaScript, Java, or PHP.

Modern versions of Windows, macOS, and Linux support cURL from the command line, although the exact command-line environment may vary by operating system.

Authentication and Security

API requests require authentication. After successfully authenticating, use the returned authentication token for subsequent requests as demonstrated in the examples throughout this guide.

Treat API usernames, passwords, and authentication tokens as sensitive credentials.

Do not share authentication tokens publicly or submit authenticated Pontiac API requests through untrusted third-party request tools.

The following walkthrough demonstrates the process of authenticating and then creating the core objects needed to launch a Campaign through the Pontiac API.

Additional Resources

Cygwin
https://www.cygwin.com/

Tutorial for setting up unix commands for windows
https://www.howtogeek.com/249966/how-to-install-and-use-the-linux-bash-shell-on-windows-10/

Online curl tool
https://reqbin.com/curl

Object Hierarchy

Pontiac’s RTB API uses a hierarchical object structure for campaign setup.

For a standard Seat, the core hierarchy is:

Seat > Advertiser > Campaign > Line

For accounts using a Master Seat structure, the hierarchy is:

Master Seat > Sub-Seat > Advertiser > Campaign > Line

Creatives, Pixels, and Audiences are created separately and are associated with the applicable Advertiser, Campaign, or Line depending on the object type and management settings.

Master Seat

A Master Seat is the top-level account used to manage one or more Sub-Seats.

Master Seats are typically used by organizations that operate multiple advertiser environments, business units, clients, or managed accounts under a single parent account.

Hierarchy:

Master Seat > Sub-Seat

Depending on the endpoint and workflow, API requests may be made from the Master Seat while specifying the applicable Sub-Seat.

Sub-Seat

A Sub-Seat is an individual Seat managed beneath a Master Seat.

Advertisers, Campaigns, Lines, Creatives, Pixels, and other RTB objects are created within the applicable Sub-Seat.

Hierarchy:

Master Seat > Sub-Seat > Advertiser

For accounts that do not use a Master Seat structure, the Seat itself acts as the top-level account.

Advertiser

An Advertiser is created within a Seat or Sub-Seat and represents the brand or organization running the advertising activity.

Advertisers contain the Campaigns and advertiser-level resources associated with that advertiser.

Hierarchy:

Seat > Advertiser

or:

Master Seat > Sub-Seat > Advertiser

Example:

  • Seat ID: 1000
  • Advertiser ID: 5943

The advertiserId returned when the Advertiser is created is used when creating Campaigns, Lines, Creatives, Pixels, and other advertiser-level objects.

Campaign

A Campaign is created under an Advertiser.

Campaigns define the broader settings that can apply to the Lines created beneath them, including:

  • Campaign dates
  • Budget and budget type
  • Flights
  • Pacing
  • Dayparting
  • Frequency and recency
  • Targeting
  • Creative management
  • Pixel management
  • Programmatic Guaranteed settings

Hierarchy:

Advertiser > Campaign

Example:

  • Advertiser ID: 5943
  • Campaign ID: 14901

A Campaign does not bid directly on inventory. At least one Line must be created under the Campaign in order for it to deliver.

Line

A Line is created under a Campaign and is the core bidding and delivery object.

Lines define how Pontiac bids on eligible inventory, including settings such as:

  • Bid type
  • Bid price
  • Maximum bid
  • Line-level targeting
  • Inventory type
  • Budget allocation
  • Other Line-specific delivery settings

Hierarchy:

Campaign > Line

Example:

  • Campaign ID: 14901
  • Line ID: 75913

Each Line belongs to exactly one Campaign.

Creatives

Creatives are created under an Advertiser and contain the ad content that can be served by Campaigns and Lines.

Example:

  • Advertiser ID: 5943
  • Creative ID: 30336

Creatives can be associated directly with Lines or managed at the Campaign level.

When Campaign-level Creative management is enabled, Creatives associated with the Campaign are inherited by its Lines.

Pixels

Pixels are created under an Advertiser and are used for measurement, conversion tracking, and audience creation.

Example:

  • Advertiser ID: 5943
  • Pixel ID: 18887

Pixels can be associated at either the Campaign or Line level.

When Campaign-level Pixel management is enabled, Pixels associated with the Campaign are inherited by its Lines.

Audiences

Audiences are created and managed at the Seat level.

Depending on the audience type, these may include:

  • First-party audiences
  • Third-party audiences
  • Contextual audiences
  • ART audiences

Audiences can be created, updated, and managed at the applicable Seat level and then used as targeting criteria across eligible Campaigns and Lines within that Seat.

For accounts using a Master Seat structure, audiences created at the Master Seat level may also be available to associated Sub-Seats. These inherited audiences cannot be edited from the Sub-Seat. When applicable, the interface displays:

This audience cannot be edited because it belongs to the Master Seat.

Audience targeting can be applied at either the Campaign or Line level.

Flights

Flights define budget and date ranges within a Campaign.

When Flights are enabled, a Campaign can contain one or more Campaign Flights. Lines beneath the Campaign can also have corresponding Line Flights.

Example:

  • Campaign ID: 14901
  • Campaign Flight ID: 8371
  • Line ID: 75913
  • Line Flight ID: 58824

How the Objects Work Together

For a standard Seat:

Seat
├── Audiences
└── Advertiser
    ├── Creatives
    ├── Pixels
    └── Campaign
        ├── Campaign Flights
        └── Line
            └── Line Flights

For a Master Seat account:

Master Seat
├── Audiences
└── Sub-Seat
    ├── Audiences
    └── Advertiser
        ├── Creatives
        ├── Pixels
        └── Campaign
            ├── Campaign Flights
            └── Line

Audiences created at the Master Seat level are available to associated Sub-Seats for targeting, but they remain owned and managed by the Master Seat. Sub-Seats can use these audiences but cannot edit them.

Sub-Seats can also create and manage their own audiences. Audiences created within a Sub-Seat are owned by that Sub-Seat and can be edited there.

Creatives and Pixels, by contrast, are associated with an Advertiser and can then be applied at either the Campaign or Line level, depending on the applicable management settings.

Campaign vs. Line Management Inheritance

Campaigns contain one or more Lines. While the Line is the level where bidding and inventory delivery are executed, many settings can be configured at the Campaign level and applied across all Lines within that Campaign.

This allows settings that are shared by multiple Lines to be managed once at the Campaign level, while Line-specific bidding and targeting can still be configured independently.

Campaign-Level Management

When creating a Campaign, the following management settings determine whether certain configurations are controlled at the Campaign or Line level:

  • budgetManagement: Manage budgets across Lines from the Campaign.
  • creativesManagement: Manage Creative associations from the Campaign.
  • pixelsManagement: Manage Pixel associations from the Campaign.
  • autoPace: Manage pacing from the Campaign.
  • daypartsManagement: Manage daypart settings from the Campaign.
  • enableFrequency: Apply Campaign-level frequency and recency controls.

The effective configuration of a Line therefore depends on both the Line settings and the management settings enabled on its parent Campaign.

Budget Management

When Campaign-level budget management is enabled, the Campaign owns the overall budget and its Lines receive a portion of that budget based on their allocation.

Instead of assigning an independent budget to each Line, use:

budgetAllocationWeight

For example:

"budgetAllocationWeight": 100

If there is only one Line, a weight of 100 assigns it the full Campaign budget allocation.

If there are multiple Lines, their relative allocation weights determine how the Campaign budget is distributed between them. For example, if Line A has a weight of 100 and Line B has a weight of 200:

  • Line A receives 33.33% of the allocation: 100 / (100 + 200)
  • Line B receives 66.67% of the allocation: 200 / (100 + 200)

The Line’s budgetType is inherited from the parent Campaign and should not be set independently on the Line.

Budget Multiplier

Lines can also use:

budgetMultiplier

to adjust the Line’s calculated daily budget.

For example:

"budgetMultiplier": 1

A value of 1 applies no additional multiplier.

A value of 1.1 increases the Line’s calculated daily budget by 10%. For example, if the Line’s calculated daily budget is $100, a budgetMultiplier of 1.1 increases the effective daily budget to $110.

The Budget Multiplier affects how much budget the Line is allowed to spend; it does not increase the Line’s bid price.

Creative Management

Creatives belong to an Advertiser and can be associated at either the Campaign or Line level.

When:

"creativesManagement": 1

is enabled on the Campaign, Creatives associated with the Campaign are automatically available to the Lines beneath it.

The same Creative IDs therefore do not need to be associated separately with every Line.

For example, if Creative 30336 is associated with Campaign 14901, a Line created beneath that Campaign can inherit Creative 30336 without including:

"creativeIds": [
  30336
]

in the Line creation request.

If Campaign-level Creative management is not enabled, eligible Creatives must instead be associated with the applicable Lines.

This configuration is useful when different Lines within the same Campaign require different creative types or assets. For example, a Nike Campaign could contain separate Lines for CTV, Display, and Audio, with each Line associated only with the Creatives that are compatible with that inventory type.

In this setup, Creatives are managed independently at the Line level rather than applying the same Campaign-level Creatives across every Line.

Pixel Management

Pixels also belong to an Advertiser and can be associated at either the Campaign or Line level.

When:

"pixelsManagement": 1

is enabled, Pixels associated with the Campaign are applied across its Lines.

For example, Pixel 18887 associated with Campaign 14901 can automatically be associated with a Line created beneath that Campaign without including:

"pixelIds": [
  18887
]

in the Line request.

In most cases, Pixels should be associated at the Campaign level so the same conversion tracking and attribution settings apply consistently across all Lines within the Campaign.

If Campaign-level Pixel management is not enabled, Pixels can instead be associated directly with individual Lines. This may be useful when different Lines within the same Campaign require different conversion tracking or attribution setups.

Pacing Management

Pacing determines how budget is distributed throughout the applicable date range.

When Campaign-level pacing is enabled, pacing behavior is controlled by the Campaign and applied to the Lines beneath it.

Available pacing types include:

  • Custom Curve: Allows a custom pacing curve to be configured to control how budget is distributed throughout the day.
  • Even: Distributes budget evenly across the remaining Campaign duration.
  • Catch Up ASAP: Increases delivery when the Campaign is behind pace in order to catch up as quickly as possible.
  • Primetime: Applies Pontiac’s predefined primetime pacing curve to concentrate more delivery during higher-value hours.

Conditionally Required (when daypartsManagement=true):

  • pacingType: ‘even’ or ‘asap’
  • catchupAsap: Aggressive catch-up if behind pace (true/false)
  • dayPartTargetingMode: ‘user’ (user’s timezone) or ‘line’ (fixed/server timezone)

For example:

"autoPace": 1,
"daypartsManagement": 1
"pacingType": "even",
"catchupAsap": 0,
"dayPartTargetingMode": 'user' 

can be used to manage even pacing from the Campaign.

When the same pacing strategy should apply to every Line, Campaign-level pacing is typically the preferred setup.

If Campaign-level pacing management is not enabled, pacing can instead be configured independently on each Line. This may be useful when different Lines within the same Campaign require different delivery patterns.

Daypart Management

Dayparts define the days and hours when delivery is eligible.

When:

"daypartsManagement": 1

is enabled, the Campaign’s daypart configuration applies across its Lines.

Campaign dayparts should generally be used when the same delivery schedule applies to every Line in the Campaign.

For example, a Campaign targeting all hours of every day can include all 168 weekly day/hour combinations.

The Line creation endpoint still requires targets.dayParts.include to contain at least one day and hour. When Campaign-level dayparts are controlling and the Line should not introduce an additional restriction, the Line can be created with the full 24/7 schedule.

Example:

"dayParts": {
  "include": [
    {"day": "monday", "hour": 0},
    {"day": "monday", "hour": 1}
  ]
}

Continue the structure for each eligible day and hour.

Frequency and Recency

Frequency limits how often an ad can be served to the same user or identifier during a defined period. Recency establishes a minimum amount of time between impressions.

When frequency and recency are configured at the Campaign level, the limits apply across all Lines within that Campaign.

For example:

"enableFrequency": 1,
"frequencyCap": 3,
"timeFrameDays": 1,
"recency": 30

allows a user to receive up to three impressions from the Campaign within the configured time frame.

If a user receives impressions from Line 1, those impressions count toward the same Campaign-level frequency cap that also applies to Line 2 and any other Lines within the Campaign.

For example, if a user receives two impressions from Line 1, they would only be eligible to receive one additional impression from the Campaign during that time frame, regardless of which Line serves it.

This is useful when you want to control the total number of times a person is exposed to the Campaign across all of its Lines.

If frequency and recency are instead managed at the Line level, each Line maintains its own frequency and recency limits independently.

For example:

"enableFrequency": false,
"enableIpFrequencyCapping": false,
"frequencyCap": 0,
"dailyIpImpsLimit": 0,
"timeFrameDays": 1,
"recency": 0

A Line-level frequencyCap of 0 and recency of 0 mean that the Line does not apply its own additional frequency or recency restriction.

If the parent Campaign has frequency and recency configured, those Campaign-level limits still apply across all Lines within the Campaign.

Frequency Line Creation Requirement

Even when frequency and recency are managed at the Campaign level, the Line creation endpoint still requires a frequencyCap value to be included in the request.

In this case, use:

“frequencyCap”: 0

to satisfy the Line creation requirement without introducing an additional Line-level frequency cap.

Targeting

Targeting can be configured at both the Campaign and Line levels.

Campaign targeting should be used for criteria that apply to every Line in the Campaign. Line targeting can then be used to further define the inventory eligible for a specific Line.

For example, if every Line should target the United States, the country can be targeted at the Campaign level. Individual Lines can then apply additional targeting, such as:

  • Exchanges
  • Deals
  • Devices
  • Sites or Apps
  • Audiences
  • Geography
  • Content
  • Other inventory criteria

Campaign and Line targeting work together to determine the inventory eligible for the Line. Line-level targeting should therefore generally be considered an additional restriction rather than a replacement for applicable Campaign targeting.

Required Line Targeting

The Line creation endpoint requires a targets object even when most targeting is configured at the Campaign level.

At minimum, the Line must include:

  • At least one country under targets.geoCountries.include
  • At least one day and hour under targets.dayParts.include

For example:

"targets": {
  "geoCountries": {
    "include": [
      {
        "code": "US"
      }
    ]
  },
  "dayParts": {
    "include": [
      {
        "day": "monday",
        "hour": 0
      }
    ]
  }
}

When the Line should not further restrict a Campaign’s 24/7 daypart configuration, all 168 weekly hours can be included in the Line request.

Audience Targeting

Audiences are managed at the Seat or Sub-Seat level rather than under an individual Advertiser.

Audience targeting can be applied at either the Campaign or Line level.

A Campaign-level audience should be used when the audience targeting criteria apply to every Line in the Campaign. Line-level audiences can be used when different Lines require different audience strategies.

Campaign and Line audience targeting should be configured with the overall effective targeting in mind, since Campaign-level targeting applies to Lines beneath the Campaign.

Flights

When Campaign Flights are enabled, the Campaign can contain one or more Flights with specific date ranges and budget allocations.

Lines beneath the Campaign can receive corresponding Line Flights.

For example:

Campaign 14901
└── Campaign Flight 8371
    └── Line 75913
        └── Line Flight 58824

The Line Flight references the applicable Campaign Flight through its campaignFlightId.

When Campaign-level budget management is enabled, Line Flights use their budget allocation weight rather than maintaining independent Campaign-level budgets.

Campaign-Level vs. Line-Level Setup

As a general rule:

Use the Campaign level when a setting should apply to every Line.

Examples include:

  • A shared Campaign budget
  • The same Creatives across all Lines
  • The same conversion Pixels
  • A common frequency cap
  • A common daypart schedule
  • Targeting that every Line must meet

Use the Line level for settings specific to an individual bidding strategy.

Examples include:

  • Bid type and bid price
  • Inventory type
  • Deal targeting
  • Exchange targeting
  • Line-specific audiences
  • Line-specific inventory or geographic restrictions

This structure allows broad Campaign requirements to be configured once while preserving Line-level control over bidding and delivery.

Important API Behavior

Campaign-level management determines the effective configuration, but it does not mean every corresponding field can be omitted from the Line creation request.

The POST /rtb/lines endpoint performs its own validation and requires several Line fields even when the Campaign manages the effective setting.

For example, a Line created beneath a Campaign with Campaign-level management enabled may still require:

  • startDate
  • endDate
  • dailyPacing
  • catchupAsap
  • dayPartTargetingMode
  • recency
  • frequencyCap
  • targets
  • At least one targeted country
  • At least one targeted day/hour

These required values satisfy the Line creation schema and validation requirements. Campaign management settings determine which configuration ultimately controls delivery.

© 2026 Pontiac Wiki Sec · All Rights Reserved · Developed by RDK

  • Contact Us
  • Privacy Policy
  • Terms & Conditions
  • Pontiac.media