Advertiser API Report
Overview
The Advertiser API returns your daily delivery (impressions and spend) for every campaign under your advertiser account. Results come back as a CSV file. Each call covers a date range of up to 31 days.
| Item | Value |
|---|---|
| Base URL | https://platform.adverty.com |
| Endpoint | GET /reports/general-advertiser/{apiToken}/by-range |
| Response format | CSV (text/csv; charset=UTF-8) |
| Currency | USD |
| Timezone | UTC. All dates and days are in UTC; this cannot be changed. |
| Versioning | None. The endpoint path is stable. |
Authentication
You authenticate by putting your API token in the URL path. No headers, cookies or login are needed.
- Your Adverty account manager issues the token. It is a UUID, for example
3f2a9c1e-5b7d-4e8a-9c21-7d4e5f6a8b90. - Each token has an expiry date. When it expires, requests return
401 Unauthorized; ask your account manager for a new token or an extension. - The token gives access to your advertiser’s reporting data. Treat it like a password and do not share it in public places.
Conventions
- Dates: ISO format
YYYY-MM-DD. Bothfromandtoare included in the range. - Range limit:
tocan be no more than 31 days afterfrom. To cover a longer period, make one call per month. - Days with no delivery: these days have no row in the CSV. They are not reported as zero.
- Spend: USD, rounded to cents. The trailing zero can be dropped, so you may see
12.5instead of12.50. - Pagination: none. One call returns the whole range.
- Rate limits: no fixed limit. Report data is daily, so one call per day per range is enough.
- CORS: enabled, so you can call the endpoint from a browser.
Endpoint: advertiser report by date range
GET https://platform.adverty.com/reports/general-advertiser/{apiToken}/by-range
This endpoint returns one CSV row per day across all of your campaigns. If you request the integration_type or ad_format column, each day is split into one row per value instead. If you request both, you get one row per day for each combination.
Integration types
An integration type tells you which endpoint and ad format a campaign delivers through. Campaigns that Adverty serves directly have the type Direct. Your account manager can tell you which integration types your campaigns use.
- One integration type: set
integrationTypeto get a report for that endpoint and format only. Your account manager can give you one URL per integration type. - All integration types in one file: leave out
integrationTypeand addcolumn=integration_type. Each day is then split into one row per integration type.
Ad formats
An ad format tells you what kind of ad a campaign delivers.
| Value | Meaning |
|---|---|
Display | Programmatic display (banner) campaigns. |
VAST | Programmatic video campaigns. |
Native | Programmatic native campaigns. |
Direct | Campaigns that Adverty serves directly. |
Unspecified | Programmatic campaigns that have no ad format set yet. |
- One ad format: set
adFormat, for exampleadFormat=VAST, to get a report for that format only. - All ad formats in one file: leave out
adFormatand addcolumn=ad_format. Each day is then split into one row per ad format. - You can combine
adFormatwithintegrationTypeto get one format from one integration type.
Parameters
| Name | In | Required | Description |
|---|---|---|---|
apiToken | path | Yes | Your advertiser API token. |
from | query | Yes | First day of the range, YYYY-MM-DD. |
to | query | Yes | Last day of the range, YYYY-MM-DD, up to 31 days after from. |
column | query | No | Column to include. Repeat it for each column, e.g. column=date&column=spend. Defaults to date, impressions, spend. |
integrationType | query | No | Selects the report for one integration type (case-insensitive), e.g. Direct. Leave it out to get all integration types combined. See Integration types. |
adFormat | query | No | Selects the report for one ad format (case-insensitive): Display, VAST, Native, Direct or Unspecified. Leave it out to get all ad formats combined. See Ad formats. |
Columns
Columns always appear in the order below, whatever order you request them in. Unknown column names are ignored.
| Column | Type | Description |
|---|---|---|
date | date | Day of delivery (UTC). |
impressions | integer | Paid impressions delivered that day. |
spend | decimal (USD) | Media spend that day. |
integration_type | string | The campaign’s integration type (endpoint and ad format), or Direct. Adding this column gives one row per day per integration type. |
ad_format | string | The campaign’s ad format: Display, VAST, Native, Direct or Unspecified. Adding this column gives one row per day per ad format. |
Response
200 OK with Content-Type: text/csv; charset=UTF-8. The file is named {from}-{to}.csv. The first line is the header and rows are sorted by date.
date,impressions,spend
2026-10-01,48210,385.68
2026-10-02,51377,411.02
2026-10-03,49902,399.2
With column=integration_type added. Direct rows are campaigns Adverty serves directly; other rows carry the endpoint name, shown here as ExampleEndpointName:
date,impressions,spend,integration_type
2026-10-01,30110,240.88,Direct
2026-10-01,18100,144.8,ExampleEndpointName
2026-10-02,31544,252.35,Direct
2026-10-02,19833,158.66,ExampleEndpointName
With column=ad_format added:
date,impressions,spend,ad_format
2026-10-01,30110,240.88,Direct
2026-10-01,12400,99.2,Display
2026-10-01,5700,45.6,VAST
2026-10-02,31544,252.35,Direct
2026-10-02,13120,104.96,Display
2026-10-02,6713,53.7,VAST
Errors
Always check the HTTP status before you parse the body as CSV.
| Status | Cause | Body |
|---|---|---|
400 Bad Request | A date is not valid, the range is longer than 31 days, integrationType matches none of your campaigns, or adFormat is not a known ad format. | JSON (below) |
401 Unauthorized | The token is wrong or has expired. | HTML page, not JSON |
404 Not Found | from or to is missing. | Plain text |
A 400 body looks like this:
{
"msg": "The query parameter 'to' was malformed: from and to can be at most 31 days apart",
"errors": []
}
If integrationType is not valid, msg lists the values you can use, for example unknown integrationType 'X', expected one of: ExampleEndpointName, Direct.
If adFormat is not valid, msg lists the values you can use: unknown adFormat 'X', expected one of: Display, VAST, Native, Direct, Unspecified.
Quick start
Replace YOUR_TOKEN with the token from your account manager.
October to date, default columns:
curl -o report.csv \
"https://platform.adverty.com/reports/general-advertiser/YOUR_TOKEN/by-range?from=2026-10-01&to=2026-10-14"
The same period, split by integration type:
curl -o report.csv \
"https://platform.adverty.com/reports/general-advertiser/YOUR_TOKEN/by-range?from=2026-10-01&to=2026-10-14&column=date&column=impressions&column=spend&column=integration_type"
Direct campaigns only:
curl -o report.csv \
"https://platform.adverty.com/reports/general-advertiser/YOUR_TOKEN/by-range?from=2026-10-01&to=2026-10-14&integrationType=Direct"
The same period, split by ad format:
curl -o report.csv \
"https://platform.adverty.com/reports/general-advertiser/YOUR_TOKEN/by-range?from=2026-10-01&to=2026-10-14&column=date&column=impressions&column=spend&column=ad_format"
Video (VAST) campaigns only:
curl -o report.csv \
"https://platform.adverty.com/reports/general-advertiser/YOUR_TOKEN/by-range?from=2026-10-01&to=2026-10-14&adFormat=VAST"
Python, loading the data into a table:
import io, pandas as pd, requests
url = "https://platform.adverty.com/reports/general-advertiser/YOUR_TOKEN/by-range"
r = requests.get(url, params={"from": "2026-10-01", "to": "2026-10-14"})
r.raise_for_status()
df = pd.read_csv(io.StringIO(r.text))



