Skip to main content
GET
/
api
/
settings
Read unified user settings
curl --request GET \
  --url https://app.puffle.ai/api/settings \
  --header 'Authorization: Bearer <token>'
{
  "timezone": {
    "timezone": "America/New_York",
    "isDefault": false
  },
  "admin": null,
  "campaign_accounts": [
    {
      "id": "aaaa1111-1111-1111-1111-111111111111",
      "type": "email",
      "provider_account_id": null,
      "is_premium": null,
      "weekly_connection_limit": null,
      "weekly_message_limit": null,
      "display_name": "Sarah at Acme",
      "email_address": "[email protected]",
      "status": "active",
      "daily_limit": 50,
      "weekly_stats": {
        "connections_sent": 0,
        "messages_sent": 0
      },
      "limits": {
        "weekly_connection_limit": 100,
        "weekly_message_limit": 150,
        "max_connection_limit": 150,
        "max_message_limit": 150,
        "recommended_connection_limit": 100,
        "recommended_message_limit": 150
      },
      "daily_stats": {
        "sent": 12,
        "daily_limit": 50
      }
    }
  ]
}

Overview

Returns the full settings surface in one call:
  • timezone — user-level IANA timezone (defaults to America/New_York with isDefault: true when unset).
  • admin — admin-only flags. null for non-admins.
  • campaign_accounts — every sendable sender account (status connected / warming / active) with rolling 7-day weekly_stats, per-account limits (current plus max / recommended metadata), and daily_stats for email accounts when Instantly analytics were available within the 5 s timeout.
This operation shares the URL path /api/settings with the update verb. See Update user settings to change timezone, admin flags, or campaign-account limits.

AI agent notes

Timezone matters for operating hours. Before configuring a campaign’s operating_hours, read the timezone from here. If isDefault: true, the user has never set one — ask the human to confirm before using the America/New_York fallback.Instantly analytics are best-effort. daily_stats is omitted on email accounts when the upstream call timed out (5 s). Treat a missing daily_stats as “unknown, try later,” not as “zero sends.”Replaces three legacy endpoints. Earlier versions split these reads across per-section URLs. Prefer this unified endpoint — it’s one round-trip, same auth, same tenancy rules.

Authorizations

Authorization
string
header
required

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

Response

Unified settings payload.

Unified settings payload. Replaces three previously-separate endpoints (timezone, admin, account settings) to eliminate a round-trip storm on page load.

timezone
object
required

User-level timezone setting.

admin
object
required

Only populated for admin users. null for non-admins.

campaign_accounts
object[]
required

Sendable sender accounts with weekly stats and current limits. Empty when the user has no connected accounts.