Profile & Data Quality
The profile's own settings and the reads that say whether its numbers can be trusted.
Everything under /api/v1/profile and /api/v1/quality is a property of the
profile rather than of a date range: how it is configured, how fresh its
attribution is, and how much of its traffic and revenue can be explained at all.
The four reads worth knowing by name
| route | question it answers |
|---|---|
GET /profile/readiness | What is still missing, in order, and the one next thing to do about it. |
GET /profile/freshness | When this profile's attribution was last recomputed. A dashboard that looks wrong is often just not recomputed yet. |
GET /quality/attribution | How many conversions carry a touch at all — attribution coverage, not accuracy. |
GET /trust | The trust signals behind the dashboard's own honesty banners. |
GET /profile is the profile's rendering context: name, currency, PII mode,
entitlements, and the legacy onboarding_completed boolean.
`onboarding_completed` is not readiness
It means one thing: a person pressed Finish in the setup wizard. Every wizard step is skippable, so it is not evidence that any step is done. Use readiness for that, and this only to tell "has been through onboarding and is still missing things" from "nobody has started".
Attribution windows
GET / PATCH /api/v1/profile/attribution-settings read and write the click,
view-through, first-touch and cash windows. They are documented in full, with
both tracks, on Attribution windows —
including the part that matters most: every successful PATCH queues a
full-profile replay, because a window change redefines which touches attach
to which conversion retroactively.
UTM health
GET /api/v1/quality/utm, /quality/utm/anomalies and
POST /quality/utm/refresh are the instrumentation audit: links that lost their
parameters, campaigns whose UTMs disagree with the ad they came from, sudden
drops in tagged traffic. POST /quality/utm/refresh runs the audit now rather
than waiting for the scheduled pass.
| Method | Path | What it does |
|---|---|---|
GET | /api/v1/profile | Get the authenticated profile's rendering context |
PATCH | /api/v1/profile | Update the authenticated profile's settings |
GET | /api/v1/profile/attribution-settings | Get the profile's attribution windows |
PATCH | /api/v1/profile/attribution-settings | Update the profile's attribution windows |
POST | /api/v1/profile/audit-events | Stamp one allowlisted UI-interaction audit event |
GET | /api/v1/profile/dark-messaging-spend | Estimate revenue at risk from unattributed Instagram DM conversations |
GET | /api/v1/profile/freshness | Get when this profile's attribution data was last recomputed |
PUT | /api/v1/profile/outcome-definitions | Replace one family of outcome definitions |
GET | /api/v1/profile/readiness | Get the profile's setup checklist and the one next thing to do |
GET | /api/v1/quality | Get attribution data quality |
GET | /api/v1/quality/attribution | Get attribution coverage — how many conversions can be attributed at all |
GET | /api/v1/quality/instrumentation-health | Get instrumentation health |
GET | /api/v1/quality/utm | Get UTM / tracking-health quality signals |
GET | /api/v1/quality/utm/anomalies | Get the UTM anomaly breakdown |
POST | /api/v1/quality/utm/refresh | Run the UTM health audit now |
GET | /api/v1/trust | Get attribution trust signals |
Generated from openapi.json. The full request and response schema for every operation is in the OpenAPI document.