Update a announcement
/announcements/{id}Needscontent.editSaves changes to the working draft. Fields you leave out keep their value; null clears a nullable field. If it's live, visitors keep seeing the published version until you publish again. PUT is accepted as an alias.
Authorization
secretKeyAuthorizationBearer <sk_…>A secret API key from Settings → API keys. It acts with its creator's role.
Path Parameters
id*integerThe announcement's id.
1 <= valueRequest Body
application/json- body
name?stringName. Only your team sees this. Default: "New announcement".
length <= 255urlPattern?stringPages it appears on: a full URL or path with * wildcards, e.g. https://app.acme.com/billing*, */settings/*, or * for every page.
length <= 500isActive?booleantrue also publishes the item to production in the same request (needs content.publish; refused with approval_required when the workspace requires review). Omit it to keep a draft.
title?stringTitle. Default: "What's new".
length <= 200body?stringBody. Bold, italic, links and lists.
length <= 40000imageUrl?|Image. Optional picture at the top of the card. Absolute https URL.
imageAlt?|Image description. What the image shows, for screen readers. Leave empty if it's decorative.
ctaLabel?stringButton label. Empty = no button.
length <= 60ctaAction?||Button action. Open a link or start a tour.
labels?array<>Labels. Up to 5 tags, like "New" or "Improvement".
items <= 5display?stringDisplay. The banner or pop-up shows once per person. One of: "feed" (What's new feed only), "banner" (Feed, and a banner on publish), "modal" (Feed, and a pop-up on publish). Default: "feed".
"feed""banner""modal"scheduleType?"scheduled"Schedule. One of: "scheduled" (On the publish date). Default: "scheduled".
"scheduled"scheduleDate?stringPublish date. Shown on the card. Nobody sees the announcement before this date.
scheduleTime?|Publish time. In each visitor's own timezone. Empty = midnight.
audienceRules?|Audience Rules. Advanced audience targeting rules.
priority?integerPriority. When several pop-ups qualify on the same page, the highest priority shows first. Default: 50.
0 <= value <= 100frequencyType?"once"Frequency. One of: "once" (Pop-up once per person). Default: "once".
"once"Response Body
OK
application/json- response
announcement*A announcement with its working draft. What visitors see is the version in publication.
curl -X PATCH 'https://app.cueston.com/api/announcements/1' \
-H 'Content-Type: application/json' \
-d '{}'{
"announcement": {
"id": 42,
"name": "Onboarding tour",
"urlPattern": "https://app.acme.com/*",
"isActive": true,
"title": "Welcome to Acme",
"body": "Here's a quick look at where everything is.",
"imageUrl": "string",
"imageAlt": "string",
"ctaLabel": "string",
"ctaAction": {
"type": "none"
},
"labels": [],
"display": "feed",
"scheduleType": "scheduled",
"scheduleDate": "string",
"scheduleTime": "string",
"audienceRules": {
"enabled": false,
"matchType": "all",
"rules": [
{
"id": "string",
"attribute": "string",
"operator": "equals",
"value": "string",
"key": "string"
}
]
},
"priority": 0,
"frequencyType": "once",
"createdAt": "2026-10-26T09:30:00Z",
"updatedAt": "2026-10-26T09:30:00Z",
"publication": {
"production": {
"versionId": 7,
"version": 3,
"publishedAt": "2026-10-26T09:30:00Z"
},
"staging": {
"versionId": 7,
"version": 3,
"publishedAt": "2026-10-26T09:30:00Z"
}
},
"hasUnpublishedChanges": true
}
}