Get a week's order
readThe week's order: every unit, its window and its affidavit.
https://affiliates.radioworkflow.com/api/v1/affiliations/{id}/weeks/{week}The whole order for one broadcast week: every ROS unit with its window, copy and affidavit, every show day with its spots and certificate, the versions the network has published, the week's creatives and the station's shows.
Windows and times are minutes after midnight in the station's time zone (affiliation.timezone): 360 is 6:00 AM and 1139 is 6:59 PM. now is the station's date and minute when the week was read; a unit takes a time once its window has closed.
The report endpoints check what you read here. Send week.epoch and each unit's or show day's rev back unchanged: when the network reopens the week the epoch moves and a report built on the older read answers 409 epoch_changed, and an item someone else changed answers rev_conflict with its current value.
Send known_version with the version you hold to learn whether the order changed: notModified is true when it did not. Affidavit state is always current. Reading a week records that the station has seen its latest version. A week the network has not published answers week.published false with empty lists.
Authentication
Path parameters
idstring1 to 64 charactersrequiredGET /v1/affiliations: one station's relationship with one network.weekdaterequiredYYYY-MM-DD. Any other day answers 400.Query parameters
known_versionintegerat least 0optionalnotModified says whether the order has changed since.Response
application/jsonThe station, its clock, the week, the week's creatives and the station's shows.Response schema
notModifiedbooleanrequiredAffiliation23 fields
idstringrequirednetworkNamestringrequirednetworkShortstringrequiredstationCallstringrequiredstationNamestringrequiredmarketstringrequiredlane"portal" | "radioworkflow"requiredcanSignbooleanrequiredcanReportbooleanrequiredrole"view" | "report" | "sign"requiredreadOnlybooleanrequiredtimezonestringrequirednetworkContactobjectrequirednetworkContact.namestringrequirednetworkContact.titlestringrequirednetworkContact.emailstringrequirednetworkContact.phonestringrequireddeadlineRulestringrequiredaudioDeliverystringrequiredvehiclesobject[]requiredvehicles[].idstringrequiredvehicles[].namestringrequiredvehicles[].kind"show" | "ros"requiredNow4 fields
datedaterequiredminutesinteger (0 to 1439)requiredtsintegerrequiredtimezonestringrequiredOrderWeek22 fields
startdaterequireddaysdate[]requiredversionintegerrequiredstate"signed" | "ready_to_sign" | "in_progress" | "published"requiredduestringrequireddueAtintegerrequiredepochintegerrequiredrevintegerrequiredpublishedbooleanrequiredsignedobjectoptionalsigned.namestringrequiredsigned.titlestringrequiredsigned.atstringrequiredsigned.atTsintegerrequiredsigned.via"portal" | "mcp"requiredsigned.latebooleanrequiredrosNamestringoptionalacknowledgedVersionintegerrequiredCreative15 fields
idstringrequiredadvertiserstringrequiredtitlestringrequirediscistringrequiredlengthintegerrequiredflightStartdaterequiredflightEnddaterequiredaudioReadybooleanrequiredreplacesstringoptionalinstructionsstringoptionalcartstringrequiredtimesThisWeekintegerrequiredmediaStatus"ready" | "pending" | "external"requiredaudioUrlstringoptionalaudioUrlExpiresAtintegeroptionalShowVehicle11 fields
idstringrequirednamestringrequiredkind"daily" | "weekend"requireddaysinteger[] (0 to 6)requiredhoursinteger (0 to 24)requiredbreakCountintegerrequiredusualStartinteger (0 to 1439)optionalusualEndinteger (0 to 1439)optionallocalBreaksobject[]requiredlocalBreaks[].hourinteger (1 to 24)requiredlocalBreaks[].breakNumberinteger (1 to 1000)requiredShowWeek12 fields
showNumberstringrequiredbreaksobject[]requiredbreaks[].hourinteger (1 to 24)requiredbreaks[].breakNumberinteger (1 to 1000)requiredbreaks[].localbooleanrequiredexcludedDaysobject[]requiredexcludedDays[].datedaterequiredexcludedDays[].reasonstringrequiredAffiliateUnit27 fields
idstringrequireddatedaterequireddaypartstringrequiredwindowStartinteger (0 to 1439)requiredwindowEndinteger (0 to 1439)requiredcreativeIdstringrequiredadvertiserstringrequiredproductstringrequiredtitlestringrequirediscistringrequiredlengthintegerrequiredcartstringrequiredstatus"pending" | "aired" | "outside" | "not_aired"requiredairedAtinteger (0 to 1439)optionalairedDatedateoptionalreasonstringoptionalsource"portal" | "log_upload" | "rw_log" | "network" | "api" | "mcp"optionaladdedInVersionintegerrequiredremovedInVersionintegeroptionalkind"dated" | "weekly"requiredweekStartdaterequiredallowedDaysdate[]optionalrevintegerrequiredcopyStatus"ready" | "to_follow"requiredinstructionsstringoptionalrwState"confirmed" | "not_confirmed"optionalflagsstring[]requiredRevision9 fields
versionintegerrequiredpublishedAtstringrequiredpublishedAtTsintegerrequiredsummarystringrequiredacknowledgedobjectoptionalacknowledged.bystringrequiredacknowledged.atstringrequiredacknowledged.atTsintegerrequiredShowSpot15 fields
idstringrequiredshowIdstringrequireddatedaterequiredhourinteger (1 to 24)requiredbreakNumberinteger (1 to 1000)requiredpositionintegerrequiredcreativeIdstringrequiredadvertiserstringrequiredproductstringrequiredtitlestringrequirediscistringrequiredlengthintegerrequiredaddedInVersionintegerrequiredremovedInVersionintegeroptionalShowAiring12 fields
keystringrequiredshowIdstringrequireddatedaterequiredstatus"pending" | "carried" | "not_carried"requiredstartinteger (0 to 1439)optionalendinteger (0 to 1439)optionaluneditedbooleanoptionaldropped(object or object or object)[]optionalreasonstringoptionalsource"portal" | "log_upload" | "rw_log" | "network" | "api" | "mcp"optionalairedDatedateoptionalrevintegerrequiredChange9 fields
kind"initial" | "added" | "removed" | "changed" | "copy"requiredvehiclestringoptionaldatedateoptionalwherestringoptionaladvertiserstringoptionaliscistringoptionallengthintegeroptionaldetailstringrequiredunitIdstringoptionalErrors
Rate limits
portal:authportal:keykey:{prefix}MCP
get_week, with the same input as one object. The MCP servercurl -X GET 'https://affiliates.radioworkflow.com/api/v1/affiliations/srn-ksmt/weeks/2026-09-21' \ -H "Authorization: Bearer $AFFILIATE_API_KEY"
{
"affiliation": {
"id": "srn-ksmt",
"networkName": "Summit Radio Network",
"networkShort": "SRN",
"stationCall": "KSUMT-FM",
"stationName": "KSUMT 101.5 The Summit",
"market": "Cedar Falls",
"lane": "portal",
"canSign": false,
"canReport": true,
"role": "sign",
"readOnly": false,
"timezone": "America/Chicago",
"networkContact": {
"name": "Marcus Bell",
"title": "Network Traffic Coordinator",
"email": "affiliates@summit-sample.example",
"phone": "(555) 010-2440"
},
"deadlineRule": "Friday after the broadcast week, 5:00 PM",
"audioDelivery": "Delivered by the network's spot delivery service",
"vehicles": [
{
"id": "show-wd",
"name": "The Summit Show",
"kind": "show"
},
{
"id": "demo-ros",
"name": "ROS",
"kind": "ros"
}
]
},
"now": {
"date": "2026-09-24",
"minutes": 630,
"ts": 1790263800,
"timezone": "America/Chicago"
},
"week": {
"start": "2026-09-21",
"days": [
"2026-09-21",
"2026-09-22",
"2026-09-23",
"2026-09-24",
"2026-09-25",
"2026-09-26",
"2026-09-27"
],
"version": 3,
"state": "in_progress",
"due": "Fri, Oct 2, 5:00 PM",
"dueAt": 1790978400,
"epoch": 1,
"rev": 1,
"published": true,
"shows": [
{
"show": {
"id": "show-wd",
"name": "The Summit Show",
"kind": "daily",
"days": [
0,
1,
2,
3,
4
],
"hours": 5,
"breakCount": 19,
"usualStart": 1140,
"usualEnd": 1439,
"localBreaks": [
{
"hour": 2,
"breakNumber": 5
}
]
},
"showNumber": "#26-39",
"spots": [
{
"id": "s-1sjkdlr",
"showId": "show-wd",
"date": "2026-09-21",
"hour": 1,
"breakNumber": 1,
"position": 1,
"creativeId": "mhcl-a",
"advertiser": "Meridian Health Clinics",
"product": "",
"title": "Walk-In Care",
"isci": "SR_MHCL0901030",
"length": 30,
"addedInVersion": 1
}
],
"removed": [],
"airings": [
{
"key": "srn-ksmt:show-wd:2026-09-23",
"showId": "show-wd",
"date": "2026-09-23",
"status": "pending",
"rev": 1
}
],
"breaks": [
{
"hour": 1,
"breakNumber": 1,
"local": false
},
{
"hour": 1,
"breakNumber": 2,
"local": false
}
],
"excludedDays": []
}
],
"rosName": "Summit ROS",
"units": [
{
"id": "u-01oso1x",
"date": "2026-09-22",
"daypart": "ROS",
"windowStart": 360,
"windowEnd": 1139,
"creativeId": "trhd",
"advertiser": "Trailhead Outfitters",
"product": "",
"title": "Hunting Season Kickoff",
"isci": "SR_TRHD0921060",
"length": 60,
"cart": "K90388",
"status": "pending",
"addedInVersion": 1,
"kind": "dated",
"weekStart": "2026-09-21",
"rev": 1,
"copyStatus": "ready",
"flags": []
}
],
"removed": [],
"revisions": [
{
"version": 3,
"publishedAt": "Thu, Sep 24, 9:12 AM",
"publishedAtTs": 1790259120,
"summary": "1 added, 1 removed",
"changes": [
{
"kind": "added",
"vehicle": "The Summit Show",
"date": "2026-09-24",
"where": "Hour 2, Break 6",
"advertiser": "Golden Grain Bakery",
"isci": "SR_GGBK0901030",
"length": 30,
"detail": "Added inside the show. Nothing to schedule: it is in the show audio."
}
]
}
],
"acknowledgedVersion": 2
},
"creatives": [
{
"id": "trhd",
"advertiser": "Trailhead Outfitters",
"title": "Hunting Season Kickoff",
"isci": "SR_TRHD0921060",
"length": 60,
"flightStart": "2026-09-21",
"flightEnd": "2026-10-25",
"audioReady": true,
"cart": "K90388",
"timesThisWeek": 5,
"mediaStatus": "ready"
}
],
"shows": [
{
"id": "show-wd",
"name": "The Summit Show",
"kind": "daily",
"days": [
0,
1,
2,
3,
4
],
"hours": 5,
"breakCount": 19,
"usualStart": 1140,
"usualEnd": 1439,
"localBreaks": [
{
"hour": 2,
"breakNumber": 5
}
]
}
],
"notModified": false
}