By Campaign & Device
const url = 'https://backend.podscribe.ai/api/public/reports/by-campaign/device';const options = { method: 'POST', headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'}, body: '{"fields":["Advertiser","Device","Media Type","Type","Tags","Spend","Publisher","Campaign","Show","Episode","Publish Date","Podcast & Streaming Impressions","YouTube Views","Reach","Visitors","Visits","Leads","Installs","Signups","Purchases","Revenue","Visitors Modeled","Visits Modeled","Leads Modeled","Installs Modeled","Signups Modeled","Purchases Modeled","Revenue Modeled","Clicks","Campaign ID","Campaign Internal ID","Podscribe Campaign ID","Publisher ID","Product","Initiative","Business Line","Rumble Impressions","Spotify Video Impressions","Episode GUID","Campaign & Initiative","Campaign Promo","ROAS","ROAS Modeled","AOV","AOV Modeled","Cost Per Visitor","Cost Per Visitor Modeled","Cost Per Lead","Cost Per Lead Modeled","Cost Per Install","Cost Per Install Modeled","Cost Per Signup","Cost Per Signup Modeled","Cost Per Purchase","Cost Per Purchase Modeled","Campaign Start Date","Campaign Expected Date","Campaign End Date","Week","Day","Month"],"fieldMapping":{"Day":"timestamp","Publish Date":"episode_upload"},"formatting":{"numberFormatting":true,"summary":true},"name":"example","startDate":"2026-04-15","endDate":"2026-04-15","advertiser":[],"ytSimulcastConv":true,"rSimulcastConv":true,"svSimulcastConv":true,"includeYtSpend":true,"spendOnPublishDate":true,"useSettingsProfiles":false,"attributionWindow":1,"attributionStreamingWindow":1,"attributionSaiWindow":1,"attributionModel":"first","attributionPreset":"any","excludeReferrers":["example"],"excludeUtmMediums":["example"],"excludeUtmSources":["example"],"excludePriorCustomers":false,"excludePriorVisitors":false,"showIncrementalResults":true,"incrementalDisplayType":"channel","timeRangeConv":false,"timeRangeConvWithWindow":false,"timeGrouping":"all","useNonPurchasesRevenue":true,"weekStartsOn":"monday","campaignTags":["example"],"campaignTagsExclude":false}'};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request POST \ --url https://backend.podscribe.ai/api/public/reports/by-campaign/device \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "fields": [ "Advertiser", "Device", "Media Type", "Type", "Tags", "Spend", "Publisher", "Campaign", "Show", "Episode", "Publish Date", "Podcast & Streaming Impressions", "YouTube Views", "Reach", "Visitors", "Visits", "Leads", "Installs", "Signups", "Purchases", "Revenue", "Visitors Modeled", "Visits Modeled", "Leads Modeled", "Installs Modeled", "Signups Modeled", "Purchases Modeled", "Revenue Modeled", "Clicks", "Campaign ID", "Campaign Internal ID", "Podscribe Campaign ID", "Publisher ID", "Product", "Initiative", "Business Line", "Rumble Impressions", "Spotify Video Impressions", "Episode GUID", "Campaign & Initiative", "Campaign Promo", "ROAS", "ROAS Modeled", "AOV", "AOV Modeled", "Cost Per Visitor", "Cost Per Visitor Modeled", "Cost Per Lead", "Cost Per Lead Modeled", "Cost Per Install", "Cost Per Install Modeled", "Cost Per Signup", "Cost Per Signup Modeled", "Cost Per Purchase", "Cost Per Purchase Modeled", "Campaign Start Date", "Campaign Expected Date", "Campaign End Date", "Week", "Day", "Month" ], "fieldMapping": { "Day": "timestamp", "Publish Date": "episode_upload" }, "formatting": { "numberFormatting": true, "summary": true }, "name": "example", "startDate": "2026-04-15", "endDate": "2026-04-15", "advertiser": [], "ytSimulcastConv": true, "rSimulcastConv": true, "svSimulcastConv": true, "includeYtSpend": true, "spendOnPublishDate": true, "useSettingsProfiles": false, "attributionWindow": 1, "attributionStreamingWindow": 1, "attributionSaiWindow": 1, "attributionModel": "first", "attributionPreset": "any", "excludeReferrers": [ "example" ], "excludeUtmMediums": [ "example" ], "excludeUtmSources": [ "example" ], "excludePriorCustomers": false, "excludePriorVisitors": false, "showIncrementalResults": true, "incrementalDisplayType": "channel", "timeRangeConv": false, "timeRangeConvWithWindow": false, "timeGrouping": "all", "useNonPurchasesRevenue": true, "weekStartsOn": "monday", "campaignTags": [ "example" ], "campaignTagsExclude": false }'This endpoint utilizes a task system.
Please read the description of Get status of file processing to understand how it works.
Result file format:
| Field | Type | Example | Description |
|---|---|---|---|
| Week | string | 2023-12-18 | Date of the week in the format YYYY-mm-DD. |
| Day | string | 2023-12-23 | Date of the day in the format YYYY-mm-DD. |
| Advertiser | string | demoAdvertiser | Name of the advertiser for the media content. |
| Device | string | Apple IPhone | Name of the device. |
| Media Type | string | podcast | Type of media content, such as “podcast,” “podcast and youtube,” “youtube,” “simulcast,” or “streaming.” |
| Type | string | baked-in | Type of ad integration, either “baked-in” or “dai” (Dynamic Ad Insertion). |
| Tags | string | Retail | Optional tags associated with the campaign. |
| Spend | number | 123 | Amount spent on the advertisement, if applicable. |
| Publisher | string | Some publisher | Name of the publisher or platform hosting the content. |
| Campaign | string | My Campaign | Name of the advertising campaign. |
| SmartServe Targeting Profile | string | My Profile | Name of the SmartServe targeting profile. Excluded by default; add “SmartServe Targeting Profile” to fields to include. Only populated for campaigns served via SmartServe. |
| Show | string | Some Show | Name of the show associated with the media content. |
| Episode | string | Some Ep | Name or identifier of the specific episode, if applicable. |
| Podcast & Streaming Impressions | number | 123 | Number of podcast & streaming impressions, if applicable. |
| YouTube Views | number | 123 | Number of views for YouTube content, if applicable. |
| Reach | number | 123 | Reach represents the total number of unique users who saw the ad. |
| Visitors | number | 123 | Number of visitors to a website, if applicable. |
| Visits | number | 123 | Number of visits to a website, if applicable. |
| Leads | number | 123 | Number of leads generated, if applicable. |
| Installs | number | 123 | Number of app installations, if applicable. |
| Signups | number | 123 | Number of signups or registrations, if applicable. |
| Purchases | number | 123 | Number of purchases made, if applicable. |
| Revenue | number | 123 | Revenue generated, if applicable. |
| Visitors Modeled | number | 123 | Modeled number of visitors based on data analysis, if applicable. |
| Visits Modeled | number | 123 | Modeled number of visits based on data analysis, if applicable. |
| Leads Modeled | number | 123 | Modeled number of leads based on data analysis, if applicable. |
| Installs Modeled | number | 123 | Modeled number of app installations based on data analysis, if applicable. |
| Signups Modeled | number | 123 | Modeled number of signups based on data analysis, if applicable. |
| Purchases Modeled | number | 123 | Modeled number of purchases based on data analysis, if applicable. |
| Revenue Modeled | number | 123 | Modeled revenue based on data analysis, if applicable. |
| Clicks | number | 123 | How many times link was clicked. |
| Campaign ID | string | some-campaign-id | Identifier for the advertising campaign. |
| Campaign Internal ID | string | mycampaign | Podscribe campaign lookup_name. |
| Podscribe Campaign ID | string | 3105cc60-3970-11f1-a827-67ac2fdfebc6 | Unique Podscribe campaign request ID. |
| Publisher ID | string | 123 | Podscribe publisher ID. |
| Product | string | some-product | The product name. |
| Initiative | string | some-initiative | The initiative name. |
| Business Line | string | some-business-line | The business line name. |
| Rumble Impressions | number | 123 | Number of Rumble impressions, if applicable. |
| Spotify Video Impressions | number | 123 | Number of Spotify video impressions, if applicable. |
| Episode ID | number | 123 | Podscribe ID of the episode, if applicable. |
| Campaign Promo | string | SALE20 | A string value representing a promotional code associated with a campaign |
| Campaign Geo | string | United States | Name of the campaign country |
| Campaign Start Date | string | 2015-03-19 | Campaign start date in the format YYYY-mm-DD |
| Campaign End Date | string | 2015-03-19 | Campaign end date in the format YYYY-mm-DD |
| Campaign Expected Date | string | 2015-03-19 | Campaign expected date in the format YYYY-mm-DD |
| Adswizz Campaign ID | string | 12345 | Adswizz campaign ID from pixel params (Adswizz platforms: adswizz, streaming_adswizz, adswizz_ron, streaming_adswizz_simple). Only populated when the column is requested and impressions were served via Adswizz. |
Authorizations
Section titled “Authorizations”Request Bodyrequired
Section titled “Request Bodyrequired”object
Exact CSV column header names to include, in order. If omitted, all CSV columns not excluded by default for the resolved report configuration are included. Allowed values list all built-in static non-incrementality columns. Incrementality columns are controlled by showIncrementalResults and incrementalDisplayType. Advertiser-specific custom action columns may also be available. ROAS, AOV, and Cost Per columns are available only when timeGrouping is “all”. Time bucket columns reflect timeGrouping: “day” includes “Day”, “week” includes “Week”, “month” includes “Month”, and “all” omits time bucket columns.
Object to customize column headers in the CSV output (keys are default header names).
object
Example
{ "Day": "timestamp", "Publish Date": "episode_upload"}Object to setup the formatting of CSV output.
object
Smart-format as currency, percentage, or comma-separated values for readability.
Include a report summary at the top of the report, featuring the Report Title, Advertiser, Publisher, and Dates
Total all columns at the bottom of the report. Total reach will be queried separately.
Example
{ "numberFormatting": true, "summary": true}Optional display name for the generated report. Shown in the Reports UI. Ignored when an identical cached report is reused; pass a new request (or wait for cache expiry) to apply a new name.
Start date ISO date (e.g., “2023-10-10”). Default is 3 months ago.
End date ISO date (e.g., “2023-10-10”). Default is one week forward.
List of advertiser names. Default is all user advertisers.
If true, the audio conversion rate for simulcast buys will be applied to the YouTube views of the corresponding YouTube ad. Default is true.
If true, the audio conversion rate for simulcast buys will be applied to the Rumble views of the corresponding Rumble ad. Default is false.
If true, the audio conversion rate for simulcast buys will be applied to the Spotify video views of the corresponding Spotify video ad. Default is false.
If false (default), spend is not calculated for:
- YouTube-only campaigns
- Simulcast campaigns with YouTube views only
We cannot model YouTube performance without RSS impressions.
Determines how spend is applied for episodic ad buys.
If enabled (default), spend is applied on the ad’s publish date.
If disabled, spend is prorated based on impression delivery over the first 30 days of baked-in campaigns.
Enables the use of settings profiles for the request.
When set to true, the request will use the settings profile associated with the selected advertiser.
Any settings from the profile can still be overridden by explicitly provided request parameters.
Days between converted_at and touched_at. Default is 30.
Days between converted_at and touched_at for streaming. Default is 14.
Days between converted_at and touched_at for SAI. Default is 14.
Attribution model. Default is multi_timedecay.
Device-graph attribution preset, matching the Device Graph Usage control in the UI.
Omitted: the default preset is resolved from the first entry in advertisers. Most advertisers default to any; a small number are configured differently.
Expands into the internal device-graph filters, including any advertiser-specific model version.
Referrers to exclude. Default: [“email”, “facebook”, “tiktok”, “instagram”, “twitter”].
UTM mediums to exclude. Default: [“email”, “facebook”, “fb”, “tiktok”, “sms”, “social”, “klaviyo”, “youtube”, “instagram”, “ig”].
UTM sources to exclude. Default: [“email”, “facebook”, “fb”, “tiktok”, “twitter”, “klaviyo”, “youtube”, “instagram”, “ig”].
If true, the results will exclude prior customers.
If true, the results will exclude prior visitors.
If true, incremental columns will be included in the output.
If true, incremental columns will be included in the output. Default is channel
If true, the results will only include conversions from impressions in this time range (strict when timeRangeConvWithWindow is omitted or false).
Used with timeRangeConv. If true, only impressions inside the selected report date range are eligible and attributed conversions extend through the configured conversion window after the report end date.
Group impressions by day, week, month or without grouping if “all” is passed. Default is day.
Include revenue from custom events where order_value is non-zero.
The day of the week to start the week. Default is user settings, when not set - “sunday”.
Filter campaigns by tags (same as UI reporting campaign tags filter).
If true, exclude campaigns matching campaignTags instead of including them.
Responses
Section titled “Responses”OK
object
Examplegenerated
{ "id": "example", "status": "example", "url": "example"}Invalid data
Unexpected error.
object
Nodejs Error
object
Examplegenerated
{ "message": {}}