Acknowledge a version

write

Tell the network the station has this version.

POSThttps://affiliates.radioworkflow.com/api/v1/affiliations/{id}/weeks/{week}/versions/{version}/acknowledge
Write: this tells the network the station has the version; repeating it changes nothing more.

Tells the network the station has the latest version of the week in its log. The network sees who acknowledged it and when.

Only the latest version can be acknowledged: an older one answers 409 stale_version with latest, the version to read and acknowledge instead. Acknowledging again changes nothing. The body is an empty JSON object.

Authentication

Send a station key as Authorization: Bearer rwaff_k_.... A key with the acknowledge scope. Keys and scopes

Path parameters

idstring1 to 64 charactersrequired
The affiliation id from GET /v1/affiliations: one station's relationship with one network.
weekdaterequired
Monday of the broadcast week, YYYY-MM-DD. Any other day answers 400.
versionintegerat least 0required
The version to acknowledge: the latest one, as get-week or get-changes shows it.

Idempotency

Send a new Idempotency-Key header with every request (8 to 48 letters, digits, dashes or underscores; a UUID is a good choice). To retry a request that timed out, send it again with the same key: if the first attempt saved, the repeat answers its first result instead of recording twice. A reused key records nothing new: here it answers its first result even when the body changed, and after a request to another endpoint it usually fails with 502 upstream_failed. Never reuse one for a new request. How it works

Response

200application/jsonThe acknowledgement as the network sees it.

Response schema

acknowledgedobjectrequired
acknowledged.bystringrequired
acknowledged.atstringrequired
acknowledged.atTsintegerrequired
acknowledged.versionintegerrequired

Errors

400bad_requestThe request is not valid: a path value, a query value or a body field is missing, malformed or out of range.
403forbiddenThe key is valid but cannot do this for this affiliation: the affiliation is not one of the key's, or the person who made the key lacks the role.
403read_onlyThe affiliation is read-only: the network paused or ended it, or the station outlet is inactive. Its history stays readable.
403insufficient_scopeThe key does not carry the scope this endpoint needs (`read`, `report` or `acknowledge`).
409stale_versionA newer version of the week exists than the one you sent: acknowledging the older one, or reporting dropped breaks by its break numbers after the show's breaks were renumbered, would be wrong.
413payload_too_largeThe request body is over the limit: 256 KB of JSON (512 KB when applying log matches), or 10 MB for an uploaded log.
415unsupported_media_typeThe body was not sent as JSON.
500not_savedThe change could not be saved, so nothing changed.
502upstream_failedThe service behind the API answered in a way the portal could not use.
Possible on every endpoint
401invalid_principalThe key is missing, malformed, unknown, revoked or expired; all of these answer the same way.
429rate_limitedToo many requests: the key's bucket, a daily limit or the failed sign-in brake refused this one.
500server_errorSomething went wrong on our side. The answer never carries internal detail.
503unavailableThe service is not available right now: it could not be reached, or it is not set up yet.

Every code, its fix and when to retry

Rate limits

Failed sign-ins per address10 per minuteportal:auth
Burst per key60 per minuteportal:key
Calls per key600 per 10 minuteskey:{prefix}
Writes per key120 per minutew:{prefix}

The limits and the RateLimit headers

MCP

An assistant calls this as the tool acknowledge_version, with the same input as one object. The MCP server
Request
# A new Idempotency-Key for every new request. Reuse it only to retry this same request.
IDEMPOTENCY_KEY=$(uuidgen)

curl -X POST 'https://affiliates.radioworkflow.com/api/v1/affiliations/srn-ksmt/weeks/2026-09-21/versions/3/acknowledge' \
  -H "Authorization: Bearer $AFFILIATE_API_KEY" \
  -H 'Content-Type: application/json' \
  -H "Idempotency-Key: $IDEMPOTENCY_KEY" \
  -d '{}'
Request body
{}
Response200
{
  "acknowledged": {
    "version": 3,
    "by": "Automation key",
    "at": "Thu, Sep 24, 10:31 AM",
    "atTs": 1790263860
  }
}

Try it

Demo data, no key, nothing saved