Base URL
/api prefix, for example GET /api/account. Combine the base URL and documented path directly:
The public product surface uses Lead Finder, Feed, Outbound, Posts, Unibox, and Senders. Lead Finder routes live under
/api/lead-finder; Feed routes live under /api/feed. /api/campaigns powers Outbound execution, and /api/calendar powers Posts and connected social accounts. Use the documented endpoint paths exactly.Public Endpoint Scope
The API Reference lists the supported public Bearer-token contract. Admin routes under/api/admin/*, dashboard-only session routes, inbound webhooks, OAuth callbacks, legacy Leads/Lists/Signals surfaces, and private integration plumbing are intentionally hidden from these docs.
If an endpoint is not documented here, do not infer that it is public or stable. Use the closest documented public endpoint or ask Puffle support for the intended workflow.
Authentication
All public API requests require a Puffle API key as a Bearer token in theAuthorization header. API keys are prefixed with pk_live_.
Generating an API key
- Log in to the Puffle dashboard
- Navigate to Settings -> API
- Click Generate API key
- Copy and store the key. It is shown only once.
Revoking an API key
Keys can be revoked from the dashboard or through the session-authenticated/api/user/api-key endpoint. Revocation is immediate, and subsequent requests using the revoked key fail with 401.
Session authentication
A small set of API key endpoints, specifically those that create, view, and revoke API keys (/api/user/api-key), use session-based authentication through browser cookies rather than Bearer tokens. These are designed to be called from the Puffle dashboard UI, not from your backend integration.
Security best practices
Never expose keys in client-side code
Never expose keys in client-side code
API keys grant full access to your Puffle account. Always make API calls from your backend, never from browser JavaScript or mobile apps where the key could be extracted.
Use environment variables
Use environment variables
Store your key in an environment variable (
PUFFLE_API_KEY) and reference it in code. Never hard-code keys or commit them to version control.Rotate keys periodically
Rotate keys periodically
Plan a maintenance window. Pause API traffic, revoke the active key, generate and securely store the replacement, update every service, verify a low-risk read such as
GET /api/account, and only then resume normal traffic. Requests made between revocation and deployment return 401.Respond to suspected exposure
Respond to suspected exposure
If a key may have been exposed, revoke it immediately from the Puffle dashboard and replace it before making more API requests.
Rate Limits
Rate limits are endpoint-specific. Some routes enforce their own cooldowns or protective limits, and upstream providers may also return rate-limit errors. The endpoint page is the source of truth for request size and polling guidance. If you receive a429 Too Many Requests response, respect the Retry-After header when it is present. If there is no Retry-After, back off exponentially and avoid tight polling loops.
Rate-limit response
Handling rate limits
1
Detect the 429 status
Check for HTTP status
429 in every response before processing the body.2
Read the Retry-After header
Wait the number of seconds specified in
Retry-After before retrying.3
Use exponential backoff
If
Retry-After is not present, implement exponential backoff starting at 1 second.4
Avoid polling loops
Avoid tight polling loops and back off aggressively after 429 responses.
Errors
Public Bearer-authenticated routes generally return the structured error envelope below for framework-level authentication, method, validation, and typed route errors:error.code as stable when it is present; otherwise handle the HTTP status and human-readable error message.
HTTP Status Codes
Error Codes
Pagination
Pagination is endpoint-specific. Feed, Lead Finder, and sender endpoints generally return bounded lists. Unibox and some Outbound endpoints usepage, limit, or route-specific pagination fields. Use the query parameters and response fields shown on each endpoint page.