Skip to main content
PATCH
/
api
/
signals
/
settings
Update Settings
curl --request PATCH \
  --url https://app.puffle.ai/api/signals/settings \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "paused": true,
  "scanTimeUtc": "<string>"
}
'
{
  "paused": true,
  "scanTimeUtc": "14:30"
}
CLI:
puffle signal setting update
puffle signal setting update --paused --scan-time-utc <scan-time-utc>

Overview

Partial update for the caller’s signals settings. Pass paused to flip the pause state and/or scanTimeUtc to move the daily scan window. Returns the persisted state so the client always reflects authoritative server values. Use this when a user pauses signals (vacation mode, account migration) or moves their daily scan to a different time of day.

AI agent notes

Time validation. scanTimeUtc must be HH:MM on a 15-minute boundary (00, 15, 30, or 45 minutes past the hour). Other values return 400.Pausing. paused: true stops the daily scan from picking up the workspace. In-flight scans complete normally — pause only affects future scheduler slots.Read-after-write. The response is the authoritative state. Always reflect the response’s values rather than echoing the request payload.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json

Partial update. paused and scanTimeUtc are independent — sending only one leaves the other unchanged.

paused
boolean
scanTimeUtc
string

String value with endpoint-specific validation.

Response

Settings updated.

paused
boolean
required

When true, the daily scan cron skips this user. Folded in from the dropped DAT-91 /signals/pause route.

scanTimeUtc
string
required

Daily scan time in UTC, 15-minute boundaries only. Display time-zone conversion is the FE's responsibility.

pipelineStatus
object
required

Current signal_pipeline_status row for the caller. null if no scan has ever run. Use this on the FE to switch the empty-feed copy between 'next scan in Xh' (idle) and 'scan running now' / 'first scan complete' states.