/reports to answer a performance question such as which countries produced profitable traffic. Use /events to investigate the underlying journey, such as whether a conversion arrived and whether its outgoing postback succeeded.
Both read recorded tracking data. They return different views and use different pagination, so treat them as separate clients rather than switching the endpoint on the same request.
Start with a focused performance report
This query returns daily results for one campaign. ReplaceYOUR_CAMPAIGN_ID with an ID from the campaign list, set the example dates to a period containing your traffic, and supply your API key through METRICANIC_API_KEY. Make the same substitutions in the event example below:
data.rows. Each row uses the requested dimension and metric IDs as keys. Pagination and optional totals are in data.meta. Increase offset to read another page while keeping the same dates, filters, and sort. Reports default to 100 rows and allow up to 1,000 per request.
Once the daily totals match your tracker report, replace the dimensions with country,deviceType to compare segments. Keep visits and conversions alongside ROI or conversion rates, so a high ratio does not hide a small sample.
Define the report’s meaning
Dimensions group rows. Metrics supply the numbers for each group. Source parameters aretoken1 through token15 in REST report queries. Their business meaning comes from the campaign’s traffic source mapping.
For example, token3 can mean placement in one source and creative in another. Filter to a compatible campaign or source before treating all token3 values as the same kind of entity.
Goal settings determine which events count as conversions and affect revenue or cost. Per-event metrics such as event1, revenue1, cost1, and value1 help separate funnel steps. Read Metrics and Goals before comparing them with another platform’s totals.
Built-in percentage metrics are returned as ratios. An API roi value of 0.2 means 20%, and a report filter for ROI above 20% uses roi>0.2. The automation rule form instead accepts the displayed percentage, so the same threshold there is 20. Keep null when a ratio has no valid denominator rather than replacing it with zero.
The synthetic tag dimension needs a single campaign filter and a base dimension. It is a label attached to that campaign’s dimension values, so it cannot replace the base grouping on its own.
Encode filters without changing their structure
Each expression isfield plus an operator plus one or more values. Supported operators are =, !=, >, and <. A pipe separates alternative values within one expression. A comma separates expressions.
For multiple filters, encode each complete expression separately, then join them with literal commas. For example:
baseUrl is the API base URL and params contains your dates, timezone, dimensions, and metrics. Do not URL-encode the separator commas together with the expressions. The endpoint accepts up to 6 expressions and 1,000 values per expression.
Inspect the conversion or postback
For one campaign’s custom events:type=visit, lpclick, event, or postback for the stage you need. For delivery diagnosis, postback rows expose the attempt’s status, error, response, and success fields. They are outgoing attempts, not additional conversions.
Events arrive newest first. Read data.meta.hasMore and pass data.meta.nextCursor back as cursor until hasMore is false. Keep the original query unchanged while paging. An empty page can still carry a continuation cursor, so do not stop based only on row count.
The event limit is at most 1,000. Do not send offset, sortBy, sortDir, query, or q. The event stream uses fixed ordering and cursor pagination.
Match dates explicitly
Both endpoints requirefrom and to. For full calendar days, use YYYY-MM-DD and an explicit timezone. The end date includes that day’s final moment.
When omitted, reports use the workspace timezone and events use UTC. For exact timestamps, reports interpret date-time boundaries through the supplied timezone, while events parse timestamp strings directly. Use date-only ranges when comparing calendar-day reports. For exact UTC windows across both endpoints, send UTC timestamps with timezone=UTC.
Performance reports attribute outcomes to the visit’s time. Raw events use each event’s occurrence time. A conversion received today for yesterday’s visit can therefore appear in yesterday’s performance report and today’s raw event results.
If a report and an event query disagree, first align the range and timezone, then check this attribution difference, event types, goal definitions, and processing delay. Use Discrepancies before assuming that a missing row means tracking failed.