REST endpoints for retrieving show revenue and download metrics.
https://api.studio.inlet.fmAll endpoints require authentication via the Authorization header:
Authorization: Token <API_KEY>Requests without a valid token return 401 Unauthorized. Rate limiting is applied per API key.
podcastId (path, required): ID of your showfromDate (query, required): ISO 8601 date (e.g. 2025-01-01 or 2025-01-01T00:00:00Z)toDate (query, required): ISO 8601 date. Must be >= fromDateValidation errors return 400 with a structured error payload.
GET https://api.studio.inlet.fm/api/v1/podcasts/:podcastId/revenue
Returns actualized creator revenue and ad-fill metrics for the shows revenue metrics over the date range, filtered to closed billing status.
revenue (number): Revenue paid to the creator for the periodeCPM (number | null): Effective CPM based on revenueToCreator. null if there are no delivered impressionsfillRate (number | null): Fraction of requested impressions that were filled (0–1). null if the denominator is zero or the show is not setup yet{ revenue: 0, eCPM: null, fillRate: null }curl "https://api.studio.inlet.fm/api/v1/podcasts/66ab0123cdef456789abcdef/revenue?fromDate=2025-01-01&toDate=2025-03-31" \
-H "Authorization: Token your-api-key-here"{
"success": true,
"data": {
"revenue": 1234.5678,
"eCPM": 18.9421,
"fillRate": 0.8734
}
}GET https://api.studio.inlet.fm/api/v1/podcasts/:podcastId/downloads
Returns total show downloads for the date range.
downloads (number): Total downloads for the show across the date range (sum of daily totals){ downloads: 0 }{ downloads: 0 }curl "https://api.studio.inlet.fm/api/v1/podcasts/66ab0123cdef456789abcdef/downloads?fromDate=2025-01-01&toDate=2025-03-31" \
-H "Authorization: Token your-api-key-here"{
"success": true,
"data": {
"downloads": 543210
}
}export interface ShowRevenueSummary {
revenue: number;
eCPM: number | null;
fillRate: number | null;
}
export interface ShowDownloadsSummary {
downloads: number;
}
export interface ApiSuccess<T> {
success: true;
data: T;
}All endpoints return consistent error responses:
400: Bad Request (invalid podcastId, missing or malformed dates)401: Unauthorized (missing or invalid API key)403: Forbidden (API key does not have access to this show)404: Not Found (show not found)500: Internal Server ErrorIf you were consuming earlier versions of these endpoints, the response shapes have been slimmed.
/revenue — removed fieldstotalRevenue, revenueToCreator, revenueToAdPartner, impressionsBooked, impressionsDelivered, averageCpm, averageEcpm, lineItemCount, byPeriod, openAmount, closedAmount.
Mapping:
revenue replaces revenueToCreatoreCPM replaces averageEcpmfillRate is newly exposed here (previously only returned by /downloads)/downloads — removed fieldstotalDownloads, totalAvailability, totalPlaceableCapacity, averageAdslotCount, orderWaterfallFill, backfillWaterfallFill, priorityVastWaterfallFill, utwVastWaterfallFill, promoWaterfallFill, fillRate, recordCount.
Mapping:
downloads replaces totalDownloadsfillRate has moved to /revenueeCPM and fillRate can independently be null — render a placeholder (e.g. —) rather than assuming numeric values.revenue and eCPM are rounded to 4 decimal places server-side.fillRate is a fraction in the range 0..1, not a percentage. Multiply by 100 if you need to display it as %.