Banners
Get a banner
GET
/banners/{id}Needscontent.viewThe banner's working draft — every field — and what each environment serves.
Authorization
secretKeyheader
AuthorizationBearer <sk_…>A secret API key from Settings → API keys. It acts with its creator's role.
Path Parameters
id*integerThe banner's id.
Range
1 <= valueResponse Body
OK
application/json- response
banner*A banner with its working draft. What visitors see is the version in publication.
Shell
curl -X GET 'https://app.cueston.com/api/banners/1'Example Response
JSON
{
"banner": {
"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",
"buttonText": "Next",
"imagePosition": "top",
"showCloseButton": true,
"positionX": "left",
"positionY": "top",
"offsetX": -1000,
"offsetY": -1000,
"width": 200,
"height": "string",
"showBackdrop": true,
"backdropOpacity": 0,
"cardBgColor": "string",
"cardTextColor": "string",
"cardBorderRadius": 0,
"cardPadding": 0,
"cardShadow": "none",
"textAlign": "left",
"cardBlurIntensity": 0,
"cardBgOpacity": 0,
"showBorder": true,
"borderColor": "string",
"borderThickness": 0,
"titleSize": 10,
"bodySize": 10,
"bodyLineHeight": 1,
"buttonColor": "string",
"buttonTextColor": "string",
"buttonBorderRadius": 0,
"buttonSize": "xxs",
"buttonPosition": "left",
"buttonType": "regular",
"zIndex": 0,
"delayMs": 0,
"scheduleType": "immediate",
"scheduleDate": "string",
"scheduleTime": "string",
"timezone": "string",
"forceTimezone": true,
"frequencyType": "once",
"frequencyCount": 1,
"frequencyDays": 1,
"audienceRules": {
"enabled": false,
"matchType": "all",
"rules": [
{
"id": "string",
"attribute": "string",
"operator": "equals",
"value": "string",
"key": "string"
}
]
},
"priority": 0,
"goal": {
"type": "event",
"event": "string",
"urlPattern": "https://app.acme.com/*",
"contentRef": "string",
"withinDays": 7
},
"holdoutPercent": 0,
"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
}
}Create a bannerPOST
Creates a draft banner. Nothing is shown to visitors until you publish it (or send `isActive: true`).
Update a bannerPATCH
Saves 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.