> ## Documentation Index
> Fetch the complete documentation index at: https://docs.adgentek.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Choosing your integration path

> Your rendering context determines which demand can serve on your surface. Read this before you integrate.

Your integration path determines which demand can serve on your surface. The rule is rendering context.

Impression-priced demand (Direct and Programmatic CPM) requires a real browser or app context where the impression can be verified client-side. Headless integrations (REST API without certification, AdsMCP) are limited to performance-priced demand: CPA, and CPC with click-quality filtering. There is no client context on a headless surface to verify an impression against.

This is not an Adgentek policy preference. It is how the measurement ecosystem works. Impression events fired from server infrastructure originate from datacenter IP space and are classified as general invalid traffic (GIVT) by verification vendors including IAS, DoubleVerify, and MOAT. Advertisers do not pay for GIVT impressions, so Adgentek does not serve impression-priced demand where impressions cannot be verified.

The SDKs exist so you never have to think about this. They fire the impression pixel from the client, handle viewability, and route clicks through the filtered redirect layer automatically.

## The integration matrix

| Integration path                                              | Rendering context  | Direct (CPM)           | Programmatic (CPM)     | CPC           | CPA | Impression tracking                    |
| ------------------------------------------------------------- | ------------------ | ---------------------- | ---------------------- | ------------- | --- | -------------------------------------- |
| [Web SDK](/publishers/integrations/web)                       | Real browser       | Yes                    | Yes                    | Yes           | Yes | Automatic, client-side                 |
| [React SDK](/publishers/integrations/react)                   | Real browser       | Yes                    | Yes                    | Yes           | Yes | Automatic, client-side                 |
| [iOS SDK](/publishers/integrations/ios)                       | Native app         | Yes                    | Yes                    | Yes           | Yes | Automatic, client-side                 |
| [Android SDK](/publishers/integrations/android)               | Native app         | Yes                    | Yes                    | Yes           | Yes | Automatic, client-side                 |
| [Publisher Widget](/publishers/integrations/publisher-widget) | Real browser       | Yes                    | Yes                    | Yes           | Yes | Automatic, client-side                 |
| [REST API](/publishers/integrations/rest-api)                 | Publisher-rendered | Certification required | Certification required | Yes, filtered | Yes | You render the pixel client-side       |
| [AdsMCP](/publishers/integrations/adsmcp)                     | Headless / agent   | No                     | No                     | Yes, filtered | Yes | Server-side billing notice (burl) only |

## Why headless surfaces cannot serve impression-priced demand

Impression verification requires a client context: a real device, a real viewport, and a pixel request originating from the user's network. A request fired from a Worker, a backend, or an agent runtime originates from datacenter IP space. Verification vendors classify it as invalid traffic and the impression is discarded, unbilled.

What headless surfaces do well is performance demand. CPA demand bills on a downstream conversion that is verified independently of the ad render, so it does not depend on impression verification at all. CPC demand works when clicks route through Adgentek's redirect layer, where click-quality filtering runs. Both are fully supported on AdsMCP and the REST API.

## The REST API certification path

If you render ads yourself from API responses inside a real client, you can qualify for impression-priced demand:

1. Implement the client-side impression pixel exactly as specified on the [REST API page](/publishers/integrations/rest-api). The ad payload includes the pixel URL. Your client fires it as an image request when the ad enters the viewport.
2. Request an integration review at [hello@adgentek.ai](mailto:hello@adgentek.ai).
3. Once certified, Direct and Programmatic demand become eligible for your placements.

Until certified, an API integration serves CPC and CPA demand only.

## The short version

If you can use an SDK, use an SDK. The REST API exists for architectures where an SDK cannot run. AdsMCP exists for agent surfaces where nothing renders at all. Every path monetizes; they monetize with the demand classes their rendering context can support.
