v1

latestOpenAPI 3.0.12026-08-06241391671.8 KB
Reports

Exports aggregated report data in CSV format.

Same data as GET /report but returned as CSV for spreadsheet import or bulk processing. Same query parameters and semantics apply, including half-open date ranges.

post/report

Query parameters

include'ALL' | 'ACTIVE' | 'ARCHIVED' | 'TRAFFIC'

Controls which entities appear in the report. Default: TRAFFIC.

  • ALL — all entities, including those with no traffic in the period
  • ACTIVE — only active (non-archived) entities, including those with no traffic
  • ARCHIVED — only archived entities, including those with no traffic
  • TRAFFIC — only rows with non-zero traffic events (excludes entities with no traffic)

Entities with no traffic in the period are returned for every value except TRAFFIC.

tzstring

Time zone for date aggregation, e.g. 'America/New_York', 'Europe/Warsaw', or 'Etc/GMT'. Default: Etc/GMT. Affects how day, dayOfWeek, and hourOfDay boundaries are calculated.

columnstring[] required

Columns to include in the response (required). This is a repeated query parameter — use column=visits&column=clicks, NOT comma-separated. Valid columns differ per report type (aggregated /report, per-conversion /report/conversions, error /report/errors).

Common mistakes returning 400: deviceType (use device), and requesting a Name variant for a self-labeling dimension — region, city, os, browser, isp, mobileCarrier are already human-readable, so there is no regionName/cityName/osName/browserName column. (Code/name pairs like countryCode/countryName and connectionType/connectionTypeName are the exception — those Name columns exist.)

Call GET /column/info for the authoritative list of valid columns for this account. The column sets named in each endpoint's own documentation are guidance/examples, not the complete list.

filter1string

Drilldown filter dimension — a dimension column to filter the report by an EXACT value, e.g. campaignId. Pair with filter1Value. This is the correct, server-side way to scope a report to a single entity by id; the filter parameter only does free-text name search, which is fragile and can match the wrong row.

filter2string

Second drilldown filter dimension (optional), e.g. countryCode. Pair with filter2Value.

groupBystring[] required

Dimension(s) to group results by. Repeated parameter — use groupBy=campaignId&groupBy=countryCode, not comma-separated.

Call GET /column/info to discover all valid groupBy values for this account (filter response for canGroupBy: true). The list evolves — don't hardcode it.

Common examples: campaignId, offerId, landerId, trafficSourceId, affiliateNetworkId, countryCode, day, dayOfWeek, hourOfDay, month, device, os, browser, isp, referrerDomain, flowId, customVariable1 through customVariable10.

Name column mapping — grouping by an entity returns only the ID. You must request the name column explicitly via the 'column' parameter:

groupByName column to request
campaignIdcampaignName
offerIdofferName
landerIdlanderName
trafficSourceIdtrafficSourceName
affiliateNetworkIdaffiliateNetworkName
countryCodecountryName
devicedeviceName
connectionTypeconnectionTypeName
languagelanguageName
flowIdflowName

Custom variables: slot meanings are per-source (slot 1 may be zoneid on PropellerAds, pubid on Reacheffect). Discover labels via GET /traffic-source → each source's customVariables[] array. customVariable1..10 breakdowns must be scoped to a single campaign (or at least a single traffic source) via filter1=campaignId&filter1Value=<id>; unscoped breakdowns mix incompatible populations. The endpoint accepts unscoped queries — scoping is on the caller.

Group by the ID, not the NameName columns (campaignName, offerName, landerName, ...) have canGroupBy: false; grouping by one returns Could not find matching view. Group by the matching ID and request the Name as a column (see the table above).

Self-labeling dimensionsregion, city, os, osVersion, browser, browserVersion, isp, mobileCarrier, referrerDomain return the human-readable value directly and have no Name variant. (Code/name pairs like countryCode/countryName and connectionType/connectionTypeName are the exception — see the table above.)

Common mistakes returning 400: deviceType (use device), campaignName and other Name columns (group by the ID instead — see above), conversion (use /report/conversions endpoint). canGroupBy: true is necessary but not sufficient — some flagged-groupable dimensions (e.g. category, externalCampaignId) still return Could not find matching view for a given account; treat that as a prompt to pick a different dimension, not a bug. Both referrer and referrerDomain are valid groupBy keys; prefer referrerDomain to avoid high-cardinality full-URL rows.

sortstring

Column name to sort by. Can be any valid metric or dimension column. Default: visits.

filter1Valuestring

Exact value for filter1, e.g. the campaign id. Returns only rows matching this value.

filterstring

Free-text substring search over NAME columns only (campaignName, offerName, ...). NOT for ids and NOT exact — a fragment can match several rows or none. To scope a report to a specific entity by id, use the drilldown filters filter1/filter1Value (e.g. filter1=campaignId, filter1Value=<id>); never put an id here.

fromstring required

Start date/time (inclusive, required). ISO 8601 format, e.g. 2026-03-01T00:00:00Z.

Must be aligned to an hour boundary — minutes and seconds must be zero.

The date range is half-open [from, to) — 'from' is included in results.

currencystring

Currency code for monetary values in the response, e.g. USD, EUR, GBP. Default: USD.

tostring

End date/time (EXCLUSIVE). ISO 8601 format. The date range is half-open [from, to) — 'to' is NOT included.

Must be aligned to an hour boundary — minutes and seconds must be zero.

Default: start of the next hour in the request timezone (e.g. if current time is 14:30, default to is 15:00). This means omitting to gives you data up to the current hour.

To query the full day of March 5, set to=2026-03-06T00:00:00Z (next day). Common mistake: setting to=2026-03-05T00:00:00Z returns zero results for March 5.

filter2Valuestring

Exact value for filter2.

workspacesstring[]

Workspace IDs to filter by. Only returns data for campaigns in the specified workspaces.

conversionTimeMode'CONVERSION' | 'VISIT'

Controls how conversions are attributed in time. Default: VISIT.

  • VISIT — attribute conversion to the time of the original visit (click time)
  • CONVERSION — attribute conversion to the time the postback was received

Use VISIT when you want conversions aligned with the traffic that generated them. Not applicable to /report/conversions endpoint.

Period-over-period comparisons: use the same mode for both periods (e.g. WoW with compareFrom/compareTo). Mixing VISIT and CONVERSION produces fake late-funnel drops — conversions registered after the first period closes are visible under CONVERSION but invisible under VISIT.

direction'ASC' | 'DESC'

Sort direction. Default: desc (descending).

Response

Report data in CSV format.