canonical: https://jentic.com/apis/kevel.com/kevel

# Kevel Ad Server API

The Kevel Ad Server API is the management surface for Kevel's headless ad-serving platform. The 65 endpoints span advertisers, campaigns, flights, creatives, ads, channels, sites, zones, priorities, segments, geo targeting, UserDB, and the catalog used for sponsored listings, plus the Decision and Reporting APIs that serve ads and pull performance data. Authentication is an X-API-Key header, and the base URL is https://api.kevel.co/v1. Together the endpoints let teams build a fully custom ad server - sponsored listings on a marketplace, in-app native ads, retail-media networks - without reusing the layouts and policies of a generic SSP.

## For AI agents

Manage advertisers, campaigns, flights, creatives, ads, channels, sites, zones, priorities, segments, geo targeting, UserDB, and catalog data on Kevel's headless ad server through 65 X-API-Key endpoints, plus run ad decisions and reporting.

## Scope

Does not handle creative production, ad copy generation, or programmatic media buying - use for managing and serving ads on Kevel's own ad server only.

## Capabilities

- Create and update advertisers, campaigns, flights, and creatives that drive ad delivery
- Set up sites, zones, channels, and priorities to control where and how ads serve
- Run ad decisioning calls and queue or fetch reports through the Decision and Reporting APIs
- Build audience segments and apply geo targeting to flights for relevance
- Manage UserDB records to drive frequency capping and audience-based targeting
- Maintain catalog entries that power sponsored-listing ads on marketplaces

## Use cases

### Retail-Media Sponsored Listings

Run sponsored product listings on a retail marketplace by creating advertisers and campaigns in Kevel, attaching catalog-backed creatives, and serving them through the Decision API at request time. Reporting is pulled per advertiser through the report-queue endpoints. Most retail-media teams stand up a working sponsored-listings flow in a couple of weeks rather than building decisioning from scratch.

Example prompt: POST /advertiser to create the brand, POST /campaign and POST /flight under it, then call POST `/api/v2` to serve a sponsored listing decision

### Custom Native Ad Surface

Embed native ads directly inside an app or website using Kevel as the headless decision engine. The team owns rendering on the front end, while sites, zones, and priorities in Kevel control inventory and pacing. Ads, flights, and creatives can be managed by an internal ops tool that calls the management endpoints rather than logging into a UI.

Example prompt: Create a site and zone via POST /site and POST /zone, attach an ad with POST /ad to a flight, and call POST `/api/v2` to render the ad in-app

### Audience-Based Campaign Optimisation

Build audience segments in Kevel and assign them to flights so the Decision API only serves matching impressions. Combine segments with geo targeting and UserDB-backed frequency capping to keep delivery on the right cohort. Reporting via the queue endpoints surfaces which segments performed best so the next flight can iterate on the winners.

Example prompt: POST a new segment and update an existing flight to require that segment, then queue a report with POST `/report/queue` scoped to the flight

### AI Agent Campaign Management

An AI agent that helps an ad-ops team manage campaigns uses Jentic to discover and call Kevel operations in sequence - list active flights, update budgets, queue reports, and surface performance summaries. Because the API is large and well-segmented by resource, the agent benefits from intent-based discovery rather than reading the entire spec. Jentic injects the X-API-Key per call.

Example prompt: Through Jentic, GET /campaign filtered by advertiser, then POST `/report/queue` to request a performance report and GET `/report/queue/{queueId}` to retrieve it

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/advertiser` | Create a new advertiser |
| POST | `/campaign` | Create a new campaign |
| POST | `/api/v2` | Run an ad decision request |
| POST | `/report/queue` | Queue a new report |
| GET | `/report/queue/{queueId}` | Retrieve a queued report by ID |
| GET | `/advertiser` | List advertisers |
| PUT | `/advertiser/{id}` | Update an advertiser |
| DELETE | `/advertiser/{id}` | Delete an advertiser |

## Key resources

- **Advertisers and Campaigns** — Create and manage advertisers, campaigns, flights, creatives, and ads
- **Inventory** — Configure sites, zones, channels, and priorities that control delivery
- **Targeting** — Build audience segments, apply geo targeting, and manage UserDB records
- **Decision and Reporting** — Serve ads in real time and pull queued reports for performance analysis
- **Catalog** — Maintain catalog entries that power sponsored-listing creatives

## Why Jentic

- **Setup:** Wiring the Kevel Ad Server API by hand means learning its X-API-Key header, calling api.kevel.co/v1, and mapping advertisers, campaigns, and report queues to their shapes yourself. Through Jentic you install once, import the Kevel Ad Server API from the API Directory, store the API key once, and your agent calls it.
- **Permission scoping:** Kevel puts the advertiser id in the URL path (`/advertiser/{id}`), so a rule can pin your agent to one advertiser for reads and updates. You choose the operations it may call, so a destructive one like deleting an advertiser is not included unless you add it.
- **Credential handling:** Your Kevel X-API-Key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'queue a Kevel report' or 'create an advertiser', and Jentic returns the matching Kevel operation with its input schema so the agent calls the right endpoint without navigating the full surface manually.

## Related APIs

- **Google Display & Video 360** — DV360 is a managed bidder for buying programmatic inventory rather than running a custom ad server.
- **Twilio** — Twilio handles the messaging side of campaigns that Kevel handles the on-property ad side of.
- **Mailchimp** — Mailchimp delivers the email side of multi-channel campaigns where Kevel runs the on-property ads.

## FAQ

### What authentication does the Kevel Ad Server API use?

An X-API-Key header on every request. The key scopes calls to a single Kevel network. Through Jentic the X-API-Key is held in the encrypted vault and injected per call so an agent never sees the raw key.

### Can I run an ad decision through the Kevel API?

Yes. POST `/api/v2` is the Decision endpoint - it takes a request body describing the placements, user, and any targeting hints, and returns the ad to render. Pair it with the management endpoints (advertiser, campaign, flight, ad) to control what is eligible to serve.

### What are the rate limits for the Kevel Ad Server API?

The OpenAPI spec does not publish a specific rate limit. The Decision API is built for high-throughput real-time use, while the management endpoints are for lower-volume ops work. If you receive HTTP 429 on management endpoints, batch updates and back off; for decisioning load use Kevel's regional endpoints to reduce latency rather than fighting limits.

### How do I queue and retrieve a report through Jentic?

Search Jentic for 'queue a kevel report' to find POST `/report/queue`, load its schema, and execute with the report parameters. Then poll GET `/report/queue/{queueId}` until status is complete. The Jentic flow is pip install jentic, then client.search, client.load, and client.execute for each step.

### Can I manage audience segments and geo targeting via the API?

Yes. The /segment endpoints create and update audience segments, and the geo-targeting endpoints attach geographic targeting to flights. Both feed the Decision API at request time so eligible ads are filtered to matching audiences and locations.

### Is the Kevel Ad Server API suitable for self-serve advertiser tooling?

Yes - that is one of its main uses. The full advertiser, campaign, flight, creative, and report set can be wrapped in a self-serve UI so brands manage their own campaigns. Reporting is asynchronous via `/report/queue`, so the UI should poll for completion rather than blocking the user.

### Can I limit what my agent is allowed to do with the Kevel Ad Server API?

Yes. Because you run Jentic One yourself, your own rules decide which Kevel operations and credentials the agent may use. Since the advertiser id sits in the URL path, such as `/advertiser/{id}`, you can pin the agent to a single advertiser for reads and updates like listing campaigns or updating flights. You also pick the exact operations it can call, so a destructive one like DELETE `/advertiser/{id}` stays out of reach unless you explicitly add it, and your X-API-Key is injected at execution time so the agent never sees it.
