The Simple Model
| Thing | What it means | Main API |
|---|---|---|
| Lead | One person or company record | /api/leads |
| Lead Search Task | A background job that finds potential Leads from a natural-language prompt | /api/leads/search |
| Lead Search Result | A raw provider result saved while the result List is populated | /api/leads/search/results |
| List | A named working set of Leads | /api/lists and /api/lists/{id}/leads |
| Lead Attribute | Extra data on a Lead, from enrichment or manual edits | /api/leads |
How Leads Flow
- Search, import, signals, or another integration finds possible Leads.
- Puffle stores the provider results so you can inspect them.
- The search task creates or reuses Lead records and attaches them to the result List.
- Lists group those Leads for qualification, enrichment, export, or campaign targeting.
- Enrichment and manual edits write attributes onto the Lead, so the improved data follows that Lead across Lists.
Common API Recipes
Find new people
POST /api/leads/searchwithpromptandfetch_count.- Poll
GET /api/leads/search?taskId=...until the task is complete. - Use the
list.idfrom the search response as the populated result List. PasslistIdon the initial POST when you want to populate an existing List. - Optionally read raw result rows with
GET /api/leads/search/results?taskId=....
Create a Lead directly
UsePOST /api/leads when you already have structured person or company data. Send stable identifiers when possible, such as LinkedIn URL, work email, company domain, or provider ids, so Puffle can avoid duplicates.
Work inside one List
UseGET /api/lists/{id}/leads for List-scoped Lead paging. Use GET /api/lists first when you need to discover the List id.
Move toward outreach
Once a List is clean, campaigns can import the List’s person Leads into outreach. The campaign gets its own lead records for outreach state, while the underlying Lead remains available for research, enrichment, and future Lists.Related Concepts
Lists
Organize leads into working sets.
Signals
Prioritize outreach when there is a timely reason to contact someone.