Campaign metrics breakdown export (JSONL)
Streams the full country-level metrics dataset for a campaign as
newline-delimited JSON (JSONL). Every line is a complete, valid
JSON object conforming to the campaign_country_daily v1.0 schema
— identical to the rows returned by GET /metrics/breakdown but
without pagination or an envelope wrapper.
Designed for data pipeline consumers: load directly into BigQuery, Snowflake, or any JSONL-aware ingest tool without cursor logic.
Usage: GET /v1/campaigns/{campaignId}/metrics/breakdown/export with header Accept: application/x-ndjson.
Date range: defaults to the full campaign active period. Override
with startDate / endDate. Responses are capped at 90 days —
use startDate / endDate to slice through longer windows manually.
Mutability: rows for a given report_date can be revised for up
to 7 days after the date closes due to delayed events from Meta and
Spotify. Re-fetching and re-ingesting on the primary key is safe
(idempotent).
Authorizations
Pass your Soundlink sk_* API key in the x-api-key header.
Keys can carry explicit scopes (for example campaigns:read, metrics:read) enforced by the backend.
Path Parameters
Campaign identifier (e.g. camp_abc123)
Query Parameters
Inclusive start date (YYYY-MM-DD). Defaults to campaign start date.
Inclusive end date (YYYY-MM-DD). Defaults to today.
Response
JSONL stream. Each line is a campaign_country_daily v1.0 row.
Lines are sorted by (report_date asc, country_code).
One row of the campaign_country_daily v1.0 schema.
Primary key: (provider, account_id, report_date, campaign_id, country_code).
Rows are idempotent — re-ingesting on the primary key is safe.
Values for a given report_date may be revised for up to 7 days after
the date closes due to delayed events from Meta and Spotify.
Always soundlink. Identifies the data provider for multi-source warehouses.
soundlink Soundlink organization ID (UUID).
Schema version. Pin your ingest pipeline to this value.
"1.0"
UTC calendar date the metrics belong to (YYYY-MM-DD).
Always UTC.
UTC ISO 8601 UTC timestamp when this row was generated. Use for deduplication if the same report_date is re-delivered.
Soundlink campaign UUID. Stable for the lifetime of the campaign.
Human-readable campaign name.
Whether this campaign promotes a track or playlist. null if undetermined.
track, playlist ISO 3166-1 alpha-2. Derived from the listener's IP at time of engagement. Uppercase.
Spotify streams attributed to this campaign in this country on this day (7-day click-through window). Observed events, not modelled estimates.
Unique Spotify listeners attributed to this campaign in this country on this day (7-day click-through window). Summing country rows gives the correct campaign-level total.
Spotify artist follower gains attributed to this campaign in this country on this day (7-day click-through window).
streams / listeners for this row. Zero if listeners is zero.
Amount billed to Meta for ad delivery in this country on this day. Excludes Soundlink service fees. In currency.
Total billed by Soundlink (spend_media + fees). Computed as spend_media / (1 - fee_pct).
Soundlink service fee (spend_total - spend_media).
Currency for spend fields. Currently always USD.
Account billing currency. Currently always USD. Will differ from currency once EUR delivery is available.
Cost per listener (spend_media / listeners). Zero if listeners is zero.
Cost per follower (spend_media / followers). Zero if followers is zero.
Cost per primary campaign result. Currently equivalent to cpf (cost per follower). See result_type.
ISRC of the promoted track. Populated when campaign_target_type = track; otherwise null.
Spotify track ID of the promoted track. Populated when campaign_target_type = track; otherwise null.
Spotify playlist ID. Populated when campaign_target_type = playlist; otherwise null.
Total Meta ad impressions served in this country on this day.
Total clicks on the Meta ad (all click types). Use ctr_adclick for ad-level CTR.
Clicks on "Continue with Spotify" on the Soundlink landing page. Use cpc_linkclick / ctr_linkclick for outbound CPC/CTR.
Cost per outbound click (spend_media / link_clicks). Null if link_clicks is null or zero.
Outbound CTR (link_clicks / impressions). Null if impressions is null or zero.
Meta ad CTR (ad_clicks / impressions). Null if impressions is null or zero.
The conversion event used for cost_per_result. Currently always follow.
lp_click, stream, follow