Getting Started with RTB


Before you can start serving ads delivered via an RTB provider, you must first contact your account manager. Your account manager will then begin the approval process with our RTB providers. Your inventory will be audited for traffic and quality.


Once you are approved, your account manager will:

  • Grant you access to the management interfaces for the RTB provider(s) you signed up for.
  • Create advertisers for the RTB provider(s) in your account.

Creating an RTB Advertiser


These instructions will only work if you have RTB Partners tied to your account already

With UI

To create an RTB advertiser:

  1. On the advertiser list page, click "New Advertiser"
  2. Give your RTB advertiser a name and check the "Real-Time Bidding" checkbox
  3. Select your RTB Partner from the dropdown
  4. Input the required custom fields (which you'll get from the partner itself). While requirements will vary by partner, the partner should always give you a Bidder Endpoint Kevel should use to call them.

With API

Use our Create Advertisers endpoint and the incremental RTB instructions.

Creating an RTB Campaign Flight

Follow our Campaign and Flight instructions to create an RTB Flight. It can be done with UI or API.

Make sure you use these parameters:

ParameterWhat You Should Use
Price"0". It's ignored anyway, as revenue is provided by the RTB provider
Goal TypePercentage
Goal Amount100
PriorityMake sure the Priority is Auction, or Lottery with Outbid

RTB supports auction priorities and also supports a new priority: Lottery with Outbid. Set this priority to force RTB flights to collectively compete against non-RTB flights.


RTB Priority Restrictions

Do NOT set an RTB flight in a Lottery priority. You should use the Auction, or Lottery with Outbid priorities instead.

Also, the priority you use for your RTB flight should NOT contain flights with goals and goal types other than a Percentage Goal of 100.

Creating an RTB Ad/Creative

Follow our Ad/Creative instructions here. Becaues this is an RTB campaign, you'll see an additional section called RTB Settings when creating a new creative.


An example of RTB partner specific settings


  1. Add a creative to the RTB flight for each ad size you intend to serve through that provider.

  2. Floor Price is available for RTB creatives but is not required. Note that if you do not input a valid value, we will default the value to $0.01.

  3. If you have enabled a private marketplace with this provider, enter the DealId. This is not required.

  4. Enter any applicable custom targeting using Zerkel.


Each provider will have its own required and optional fields for RTB creatives. You should check our integration guides below and with the RTB bidder for additional instructions.


If there are identical fields set on the advertiser and ad level for RTB ads, then the ad level fields will override the advertiser fields. It's rarely required to use ad level fields, but it happens for some providers (such as Tremor Video).


You can use macros in the custom fields for RTB creatives. For example, if you add a custom property called organizationId to your request, you can expand that in a RTB custom field by using the macro {{properties.organizationId}}.


Targeting in the flight or creative will not affect which ads are chosen by the RTB provider. RTB ads are delivered to the Kevel system independently of targeting. However, targeting will still filter RTB ads based on the targeting criteria.

If you aren't sure which criteria to include in your RTB creative, contact your account manager.


If there are no fields you can edit for an RTB partner, you will see the message "There are no fields to complete." when you create or edit an RTB ad.

RTB Inventory

RTB ads can be delivered through both Kevel's JavaScript ad tags and the Decision API.

If you are calling RTB ads via the Decision API, be sure to include the URL of the site and your IP in the request. This request shows an example with curl. For more, refer to the RTB Endpoints article in our API docs.

curl -H 'Content-Type:application/json' -A 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10.10; rv:39.0) Gecko/20100101 Firefox/39.0' -X POST -d '{"url":"", "ip":"","placements":[{"divName":"azk1","networkId":1636,"siteId":15421,"adTypes":[4]}]}'