Skip to main content
PUT
/
api
/
settings
Update unified user settings
curl --request PUT \
  --url https://app.puffle.ai/api/settings \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "timezone": "<string>",
  "allow_warming_accounts": true
}
'
{
  "success": true,
  "updated": {
    "timezone": {
      "success": true,
      "timezone": "America/Los_Angeles"
    }
  }
}

Overview

Partial update to any combination of three sections: timezone, allow_warming_accounts (admin only), and campaign_account limit overrides. Every section is optional — send only what you want to change. A body with no valid section returns 400. Validation is strict per-section: invalid timezone strings, out-of-range limits, non-boolean admin flags, or unknown account ids all return 400 / 403 / 404 before any write happens. Errors short-circuit the rest of the request; partial successes are not persisted beyond the failing section. For agents: use this to tune sender-account limits programmatically or to set the workspace timezone before configuring operating hours. Never flip allow_warming_accounts without confirming with the human — it bypasses a deliberate safety guard.
This operation shares the URL path /api/settings with other verbs. See the sibling page for related operations on the same resource.

Authorizations

Authorization
string
header
required

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

Body

application/json

All three sections are optional — send only what you want to change. A body with no valid section returns 400.

timezone
string

IANA timezone identifier. Validated with Intl.DateTimeFormat; invalid strings return 400.

allow_warming_accounts
boolean

Admin-only flag. Setting this as a non-admin returns 403; wrong type returns 400.

campaign_account
object

Per-account limit overrides. All three limit fields are optional; at least one must be set to have any effect.

Response

Settings saved. updated echoes which sections were applied.

Partial-success shape: each section is applied independently. Errors from any single section short-circuit the request.

success
enum<boolean>
required
Available options:
true
updated
object
required

Map of section name (timezone / admin / campaign_account) → per-section result. Only sections present in the request appear here.