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 column, you get one row per day per integration type instead.
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.
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. |
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. |
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
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, or integrationType matches none of your campaigns. | 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.
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"
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))



