AdServer / RTB Platform API · /v1
Programmatic APIs for managing private RTB infrastructure, inventory, demand partners, placements, deals, and reporting. Automate platform operations across publishers, sites, apps, placements, DSPs, RTB sources, Prebid, Header Bidding, private deals, and analytics.
The AdSovereign API is an AdServer / RTB platform API (base path /v1, API-key authenticated) that gives enterprise teams programmatic control over publishers, sites, apps, placements, RTB, Prebid, Header Bidding, DSP connections, private deals, and reporting inside a private programmatic environment.
Anything you can do by hand in the platform — onboarding a publisher, creating a placement, connecting a DSP, launching a private deal, pulling a report — you can also do through this API, so it can be wired into your own internal systems, pipelines, and BI tools.
The AdSovereign API provides programmatic access to the operational layer of the platform. It lets teams create, update, disable, enable, retrieve, and report on the main entities used in a private RTB environment.
Why it matters: This API helps enterprise teams reduce manual work, automate integrations, standardize operations, and connect private RTB workflows to internal systems.
The API uses API key authentication. Each request must include a valid token in the request header named token.
curl -X GET "https://api.adsovereign.com/v1/publishers" \
-H "token: YOUR_API_KEY" \
-H "Content-Type: application/json"Security note: Do not expose API keys in client-side code. Store keys in secure server-side environments, secrets managers, or approved deployment pipelines.
https://api.adsovereign.com/v1The final host may vary by customer deployment, especially for on-premise, hybrid, or dedicated private infrastructure environments.
Each domain maps to a real part of the platform. Every domain below includes a plain-English purpose, its endpoints, a request/response sample, a user story, and why it matters.
Create and manage publisher accounts that own sites, apps, placements, RTB sources, Prebid integrations, and Header Bidding sources.
GET/POST /publishersGET/PUT/DELETE /publishers/{id}PUT /publishers/{id}/enablePUT /publishers/{id}/disable# Create a publisher
curl -X POST "https://api.adsovereign.com/v1/publishers" \
-H "token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Example Publisher", "email": "publisher@example.com" }'
# 201 Created
{
"id": 1042,
"name": "Example Publisher",
"email": "publisher@example.com",
"uid": "pub_8f2a...",
"disabled": false
}
# Note: PublisherModel accepts "name" and "email" on create.User story
As an AdOps engineer onboarding a new supply partner, I create the publisher account via the API so the rest of the inventory hierarchy can be provisioned automatically.
Why it's important
Publishers are the root of the supply hierarchy. Automating account creation removes manual setup and standardizes how every supply partner is onboarded.
Manage web properties connected to publisher accounts.
GET /sitesGET/PUT/DELETE /sites/{id}POST /publishers/{publisherId}/sites# Create a site under a publisher (SiteCreateModel)
curl -X POST "https://api.adsovereign.com/v1/publishers/1042/sites" \
-H "token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Example News",
"url": "https://news.example.com",
"categories": [1]
}'
# 201 Created
# categories is an array of integer category IDs (see GET /categories).User story
As an integration engineer, I register every website a publisher owns so display, video, Prebid, and RTB inventory can be attached to the right property.
Why it's important
Sites are the container for web inventory. Clean site records keep targeting, reporting, and placement configuration accurate.
Manage mobile app inventory and app-level metadata.
GET /appsGET/PUT/DELETE /apps/{id}POST /publishers/{publisherId}/apps# Create a mobile app under a publisher
curl -X POST "https://api.adsovereign.com/v1/publishers/1042/apps" \
-H "token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Example Game",
"appName": "Example Game",
"bundle": "com.example.game",
"appDomain": "example.com",
"appVer": "1.0.0",
"storeUrl": "https://play.google.com/store/apps/details?id=com.example.game",
"categories": [1]
}'
# 201 Created
# categories is an array of integer category IDs (see GET /categories).User story
As a supply manager onboarding mobile inventory, I create app records with bundle IDs and store URLs so demand partners can target the app correctly.
Why it's important
App metadata (bundle, store URL, categories) is required for demand partners to value and target mobile inventory. Accurate records protect fill and CPM.
Create and manage monetization placements across sites and apps.
GET /sites/placementsGET /apps/placementsPOST /sites/{id}/placementsPOST /apps/{id}/placements# Create a placement for site 51
curl -X POST "https://api.adsovereign.com/v1/sites/51/placements" \
-H "token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Homepage MPU",
"width": 300, "height": 250,
"cpm": 1.50, "currency": "USD",
"markup": 1,
"type": 1,
"htmlType": 1,
"devices": [1, 2],
"passback": "",
"settingsDsps": []
}'
# 201 Created
# type (BannerType) and htmlType use enum values 1-4; currency is one of
# RUB, EUR, USD, GBP; devices is an array of integer device IDs.User story
As an AdOps specialist, I create a 300x250 placement on a site, set the floor CPM and currency, restrict it to desktop, and attach DSP settings in a single call.
Why it's important
Placements are where money is actually made. Programmatic placement creation lets teams configure dimensions, floors, devices, and DSP rules at scale.
Manage RTB sources and private real-time bidding supply configurations.
GET /rtbGET/PUT/DELETE /rtb/{id}POST /publishers/{publisherId}/rtb# Create an RTB source under a publisher
curl -X POST "https://api.adsovereign.com/v1/publishers/1042/rtb" \
-H "token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Example RTB", "markup": 1 }'
# 201 CreatedUser story
As a platform engineer, I create an RTB source for a publisher and connect it to private programmatic workflows so its inventory enters the auction.
Why it's important
RTB sources are how publisher supply joins real-time auctions. Programmatic configuration keeps endpoint provisioning consistent and auditable.
Manage Header Bidding inventory sources.
GET /hbGET/PUT/DELETE /hb/{id}POST /publishers/{publisherId}/hb# Create a Header Bidding source under a publisher
curl -X POST "https://api.adsovereign.com/v1/publishers/1042/hb" \
-H "token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Example HB" }'
# 201 CreatedUser story
As an engineer rolling out HB across a publisher's portfolio, I create and configure HB sources via the API instead of hand-editing each property.
Why it's important
Header Bidding sources need consistent configuration to compete fairly in the auction. The API standardizes setup across many properties.
Manage Prebid configurations and sources.
GET /prebidGET/PUT/DELETE /prebid/{id}POST /publishers/{publisherId}/prebid# Create a Prebid source under a publisher
curl -X POST "https://api.adsovereign.com/v1/publishers/1042/prebid" \
-H "token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "name": "Example Prebid" }'
# 201 CreatedUser story
As an AdOps engineer, I provision Prebid sources with the right placement, CPM, format, and device mapping so Prebid demand competes correctly.
Why it's important
Prebid configuration ties placement, format, and publisher mapping together. Automating it keeps monetization workflows reproducible.
Create and manage DSP connections.
GET/POST /dspsGET/PUT/DELETE /dsps/{id}PUT /dsps/{id}/enablePUT /dsps/{id}/disable# Create a DSP connection
curl -X POST "https://api.adsovereign.com/v1/dsps" \
-H "token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Example DSP",
"url": "https://bid.exampledsp.com/rtb",
"currency": "USD",
"dmpId": "dmp-7",
"qpsLimit": 5000,
"gzipSupported": true,
"trafficTypes": [1, 2],
"rtb": [11], "hb": [], "prebid": [],
"sitePlacements": [301, 302],
"blockedAdvertisers": ["competitor.com"]
}'
# 201 Created
# rtb, hb, prebid and *Placements are arrays of integer source/placement IDs;
# dmpId is a string; currency is one of RUB, EUR, USD, GBP.User story
As a demand manager connecting a new buyer, I create the DSP with its endpoint URL, currency, QPS limit, and traffic-type rules, then enable it once traffic validates.
Why it's important
DSP configuration controls which buyers see which traffic and at what QPS. Programmatic control prevents misconfiguration that wastes spend or overloads partners.
Create and manage private marketplace deals connected to DSPs.
GET /dealsGET/PUT/DELETE /deals/{id}POST /dsps/{id}/dealsPUT /deals/{id}/enablePUT /deals/{id}/disable# Create a private deal for DSP 88
curl -X POST "https://api.adsovereign.com/v1/dsps/88/deals" \
-H "token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "Q1 Premium PMP",
"cpm": 6.50, "currency": "USD",
"startDate": "2026-01-01T00:00:00+00:00",
"endDate": "2026-03-31T23:59:59+00:00",
"domains": ["news.example.com"],
"sitePlacements": [301, 302],
"appPlacements": []
}'
# 201 Created -> returns deal "uid" used as the deal ID in bid requests
# startDate/endDate are RFC3339 date-times; currency is one of RUB, EUR, USD, GBP.User story
As an AdOps lead setting up a PMP, I create a private deal with a fixed CPM, date range, and the exact placements it applies to, then enable it.
Why it's important
Private deals are how preferred and guaranteed buying happens. Programmatic deal creation makes PMP setup fast, accurate, and repeatable.
Retrieve performance reporting and export data.
GET/POST /reportGET/POST /report/csv# Query a report (see Reporting section for the full body)
curl -X POST "https://api.adsovereign.com/v1/report" \
-H "token: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "from": "2026-01-01", "to": "2026-01-31",
"metrics": ["requests","imps","revenue"], "groupBy": ["date"] }'User story
As a revenue analyst, I POST a date range with metrics and groupBy to get daily DSP performance, then pull the same query as CSV for the finance team.
Why it's important
Reporting connects operations to revenue. JSON for dashboards and CSV for finance means one source of truth feeds BI, billing, and reconciliation.
Provide reference values used for targeting, configuration, reporting filters, and UI dropdowns.
/status/devices/countries/regions/cities/stores/languages/os/makers/carriers/categories/bannertypes/placementtypes/htmltypes/videotypes/videostartdelays# Fetch the device reference list
curl -X GET "https://api.adsovereign.com/v1/devices" \
-H "token: YOUR_API_KEY"
# 200 OK
{ "data": [ { "id": 1, "name": "Mobile" }, { "id": 2, "name": "Desktop" },
{ "id": 3, "name": "Connected TV" } ] }User story
As a frontend engineer building an internal console, I load countries, devices, and categories from the reference endpoints to populate targeting dropdowns.
Why it's important
Reference data keeps every integration speaking the same IDs for geography, devices, formats, and categories — preventing mismatched targeting and broken filters.
The most common end-to-end sequences teams automate with the API.
Endpoints grouped by domain. Method, path, and purpose for each. Hit Try it on any endpoint to build a request and copy a ready-to-run snippet in curl, JavaScript, or Python. The full request and response schemas are in the downloadable OpenAPI spec.
Showing 111 of 111 endpoints
Request configuration
Set your base URL and API key once — every generated snippet below uses these values. Nothing is sent anywhere; snippets are built entirely in your browser.
/publishersGet publishers
/publishersCreate publisher
/publishers/{id}Get publisher by id
/publishers/{id}Update publisher
/publishers/{id}Delete publisher with associated sites and placements
/publishers/{id}/disableDisable Publisher
/publishers/{id}/enableEnable Publisher
/publishers/{publisherId}/appsCreate app
/publishers/{publisherId}/hbCreate HB
/publishers/{publisherId}/prebidCreate Prebid
/publishers/{publisherId}/rtbCreate RTB
/publishers/{publisherId}/sitesCreate site
/publishers/shortGet publishers
/publishers/short/reverseGet publishers
/appsGet apps
/apps/{id}Get app
/apps/{id}Update app
/apps/{id}Delete app
/apps/{id}/disableDisable app
/apps/{id}/enableEnable app
/apps/{id}/placementsCreate placement for app
/apps/placementsGet placements for app
/apps/placements/{placementId}Get app placement
/apps/placements/{placementId}Update app placement
/apps/placements/{placementId}Delete app placement
/apps/placements/{placementId}/disableDisable app placement
/apps/placements/{placementId}/enableEnable app placement
/apps/placements/shortGet placements short for app
/apps/placements/short/reverseGet placements short reverse for app
/apps/shortGet apps (short)
/apps/short/reverseGet apps (short reverse)
/sitesGet sites
/sites/{id}Get site
/sites/{id}Update site
/sites/{id}Delete site
/sites/{id}/disableDisable site
/sites/{id}/enableEnable site
/sites/{id}/placementsCreate placement for site
/sites/placementsGet placements for site
/sites/placements/{placementId}Get site placement
/sites/placements/{placementId}Update site placement
/sites/placements/{placementId}Delete site placement
/sites/placements/{placementId}/disableDisable site placement
/sites/placements/{placementId}/enableEnable site placement
/sites/placements/shortGet placements short for site
/sites/placements/short/reverseGet placements short reverse for site
/sites/shortGet sites (short)
/sites/short/reverseGet sites (short reverse)
/hbGet HB
/hb/{id}Get HB
/hb/{id}Update HB
/hb/{id}Delete HB
/hb/{id}/disableDisable HB
/hb/{id}/enableEnable HB
/hb/shortGet HB (short)
/hb/short/reverseGet HB (short reverse)
/prebidGet Prebid
/prebid/{id}Get Prebid
/prebid/{id}Update Prebid
/prebid/{id}Delete Prebid
/prebid/{id}/disableDisable Prebid
/prebid/{id}/enableEnable Prebid
/prebid/shortGet Prebid (short)
/prebid/short/reverseGet Prebid (short reverse)
/rtbGet RTB
/rtb/{id}Get RTB
/rtb/{id}Update RTB
/rtb/{id}Delete RTB
/rtb/{id}/disableDisable RTB
/rtb/{id}/enableEnable RTB
/rtb/shortGet RTB (short)
/rtb/short/reverseGet RTB (short reverse)
/dealsGet deals
/deals/{id}Get deal by id
/deals/{id}Update deal
/deals/{id}Delete deal
/deals/{id}/disableDisable deal
/deals/{id}/enableEnable deal
/deals/shortGet deals
/dspsGet dsps
/dspsCreate DSP
/dsps/{id}Get DSP by id
/dsps/{id}Update DSP
/dsps/{id}Delete DSP
/dsps/{id}/dealsCreate new deal for DSP
/dsps/{id}/disableDisable DSP
/dsps/{id}/enableEnable DSP
/dsps/shortGet dsps
/reportGet report
/reportPost report
/report/csvGet csv report
/report/csvPost csv report
/bannertypesGet banner types
/browsersGet browsers
/carriersGet carriers
/carriers/{id}Get carrier by id
/categoriesGet categories
/categories/{id}Get category by id
/citiesGet cities
/countriesGet campaign countries
/devicesGet devices
/htmltypesGet html types
/languagesGet languages
/makersGet makers
/osList operating systems
/placementtypesGet placement types
/regionsGet regions
/statusGet statuses
/storesGet stores
/videostartdelaysGet video start delays
/videotypesGet video types
The reporting API queries operational and financial performance data. It supports filters, metrics, grouping, sorting, pagination, and CSV export. The request below returns daily DSP performance with key delivery and financial metrics.
POST /report
{
"from": "2026-01-01",
"to": "2026-01-31",
"timezone": "America/New_York",
"metrics": ["requests", "bids", "imps", "clicks",
"revenueUsd", "profitUsd", "fillRate"],
"groupBy": ["date", "dspName"],
"dspId": [1],
"page": 1,
"size": 100
}Available metrics
requests, bids, nobids, dspRequests, dspWinBids, dspTimeouts, dspErrors, imps, clicks, ctr, fillRate, winRate, revenue, payout, profit, eCPM, and VAST events.
Export
POST the same body to /report/csv to receive a CSV download for BI, dashboarding, billing, and finance workflows.
Reference endpoints return the values used for targeting, configuration, reporting filters, and UI dropdowns. They keep every integration aligned on the same IDs.
/status/devices/countries/regions/cities/stores/languages/os/makers/carriers/categories/bannertypes/placementtypes/htmltypes/videotypes/videostartdelays200 OKSuccessful request.201 CreatedResource created.204 No ContentAction completed without a response body.400 Bad RequestInvalid request or validation error.404 Not FoundResource not found.500 Internal Server ErrorPlatform or server error.Validation rules depend on the model. Required fields and constraints are shown in each endpoint's schema in the OpenAPI spec.
Many list endpoints support the following query parameters:
pagesizesearchTermsortBysortDescstateidState values
1 — Enabled2 — Disabled3 — Deleted4 — All Except DeletedUse pagination for large datasets and state filtering to separate active, disabled, deleted, and available records.
The key entities you'll work with, in human-readable form. Full field types and constraints are in the OpenAPI spec.
createdAtdeletedAtdisabledemailidnameuidupdatedAtcategoriescreatedAtdeletedAtdisabledidnamepublisherDeletedAtpublisherDisabledpublisherIdpublisherNameuidupdatedAturlappDomainappNameappVerbundlecategoriescreatedAtdeletedAtdisabledidnamepublisherDeletedAtpublisherDisabledpublisherIdpublisherNamestoreUrluidupdatedAturlcodecpmcreatedAtcurrencydeletedAtdevicesdisabledheighthtmlTypeidmarkupmaxVideoDurationminVideoDurationnameordMandatorypassbackpublisherDeletedAtpublisherDisabledpublisherIdpublisherNamesettingsDspssiteDeletedAtsiteDisabledsiteIdsiteNametypeuidupdatedAtwidthappPlacementsblockedAdvertisersbuyeruidRequiredcreatedAtcurrencydeletedAtdisableddmpIdexcludeAppPlacementsexcludeHbexcludePrebidexcludeRtbexcludeSitePlacementsgzipSupportedhbidnameprebidqpsLimitrtbsitePlacementstrafficTypesupdatedAturlappPlacementscpmcreatedAtcurrencydeletedAtdisableddomainsdspDeletedAtdspDisableddspIddspNameendDateexcludeAppPlacementsexcludeDomainsexcludeSitePlacementsidnamesitePlacementsstartDateuidupdatedAtapi_keycitycountrydmpIdemailfirst_nameidlast_namestatusadvertiserIdbudgetendDateidnamestartDatestatusadvertiserIdappBundlesauditoriesbrowserscampaignIdcarrierscategoriescitiescountriescpmdailyBudgetdevicesdomainsAndPagesendDatefrequencyCapfrequencyPeriodgeoAreasidipAddressesisAppBundlesExcludedisBrowsersExcludedisCarriersExcludedisCategoriesExcludedisDailyBudgetEvenisDomainsAndPagesExcludedisGeoAreasExcludedisGeoExcludedisIpAddressesExcludedisLanguagesExcludedisMakersExcludedisOsExcludedlanguagesmakersnameosplacementsregionsschedulesitesstartDatestatusapibannerFilebannerTypeclickUrlcontentdisabledidlineItemIdnameprotocolsskipoffsettemplateTypethirdPartyUrlsvastTrackingEventsvideoFirstFilevideoSecondFilevideoStartDelaysadvertiserIddescriptionidnameoperationsegmentsadvertiserIdappIdappPlacementIdbrowserbundlecampaignIdcarriercountrycreativeIdcreativeTokencriddealIddealUiddevicedomaindspIddspNameexcludeFieldsfromgroupByhbIdlineItemIdmakermetricFiltersmetricsorderByospageparamIdprebidIdpublisherIdrtbIdsiteIdsitePlacementIdsizesortOrderstoreUrltimezonetotrafficTypeDownload the full OpenAPI (Swagger) JSON to import into Postman, generate client SDKs, or build your own tooling against the AdSovereign API.
Every request must include your API key in a request header named token (for example, token: YOUR_API_KEY). Keys are provisioned per deployment and must be stored server-side, never in client code.
The default base URL is https://api.adsovereign.com/v1. Because AdSovereign runs as private infrastructure, the actual host can vary by customer for on-premise, hybrid, or dedicated deployments.
You can onboard publishers, create sites and apps, configure placements, manage RTB/Prebid/Header Bidding sources, connect DSPs, create private deals, and pull reporting — the same operations available in the platform UI.
POST a date range to /report with the metrics, groupBy fields, and filters you need. The API returns JSON for dashboards, and /report/csv returns the same query as a CSV export for finance and BI workflows.
API access is provisioned per enterprise deployment. Contact the AdSovereign team through the Pilot or Contact pages to request credentials for your environment.
Yes. The full OpenAPI (Swagger) JSON is available to download from this page and can be imported into Postman, code generators, or your own tooling.
Updated