Overview
GET /api/v1/overview — KPIs, revenue, ROAS, visitors
GET /api/v1/overviewReturns KPIs for the current period and an automatically-computed previous period of equal length for comparison.
Scope: analytics:read
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
date_from | string | Yes | Start date (YYYY-MM-DD) |
date_to | string | Yes | End date (YYYY-MM-DD) |
model | string | No | Attribution model (default: last_touch) |
filter[dimension] | string | No | Filter by dimension, e.g., filter[channel]=is:Paid Social |
Attribution models
last_touch · first_touch · linear · time_decay · last_non_direct
Request
curl -H "Authorization: Bearer atb_live_YOUR_KEY" \
"https://www.atribu.app/api/v1/overview?date_from=2026-03-01&date_to=2026-03-25&model=last_touch"const response = await fetch(
"https://www.atribu.app/api/v1/overview?date_from=2026-03-01&date_to=2026-03-25&model=last_touch",
{
headers: {
Authorization: "Bearer atb_live_YOUR_KEY",
},
}
);
const data = await response.json();import requests
resp = requests.get(
"https://www.atribu.app/api/v1/overview",
headers={"Authorization": "Bearer atb_live_YOUR_KEY"},
params={
"date_from": "2026-03-01",
"date_to": "2026-03-25",
"model": "last_touch",
},
)
data = resp.json()Response
{
"data": {
"current": {
"spend": 4250.00,
"revenue": 12800.00,
"roas": 3.01,
"outcomes": 145,
"attributed_outcomes": 132,
"coverage_percent": 91.03,
"visitors": 8420,
"pageviews": 24100,
"bounce_rate": 42.5,
"avg_engaged_seconds": 185,
"cash_revenue": 12800.00,
"cash_payments": 48
},
"previous": {
"spend": 3900.00,
"revenue": 10200.00,
"roas": 2.62,
"outcomes": 128,
"attributed_outcomes": 115,
"coverage_percent": 89.84,
"visitors": 7200,
"pageviews": 20500,
"bounce_rate": 45.2,
"avg_engaged_seconds": 165,
"cash_revenue": 10200.00,
"cash_payments": 38
}
},
"meta": {
"date_from": "2026-03-01",
"date_to": "2026-03-25",
"profile_id": "uuid"
}
}Response fields
| Field | Type | Description |
|---|---|---|
spend | number | Total ad spend in reporting currency |
revenue | number | Attributed cash revenue (ROAS numerator) |
roas | number | Return on ad spend (revenue / spend) |
outcomes | number | Total conversions |
attributed_outcomes | number | Conversions with at least one attributed touchpoint |
coverage_percent | number | Attribution coverage (attributed / total x 100) |
visitors | number | Unique visitors (distinct anonymous_id) |
pageviews | number | Total page views |
bounce_rate | number | Single-page session percentage |
avg_engaged_seconds | number | Average engaged time per session |
cash_revenue | number | Total cash payments (Stripe + MercadoPago) |
cash_payments | number | Count of cash payment events |
Previous period
The previous period is automatically computed to be the same length as the current period, ending the day before date_from. For example, if you query March 1-25 (25 days), the previous period will be February 4-28.
Deprecation policy
When an endpoint on this API is superseded, it keeps working for at least 90 days after the change is announced. During that window every response from the deprecated endpoint carries a Deprecation: @<unix-seconds> header (the date the notice went out) and, once a removal date is set, a Sunset: <HTTP-date> header naming it (RFC 8594) plus a Link: <successor-path>; rel="successor-version" pointing at the replacement. Nothing is removed with less notice than that, and every deprecation is also logged in the API changelog with its sunset date. POST /api/v1/goals is the first endpoint on this policy, superseded by POST /api/v1/goals/definitions.