Prospects represent external users on messaging platforms. This guide covers retrieving prospect data, updating context, and using prospect information for lead management.
The context object contains your team’s custom data for this prospect:
Field
Type
Description
tags
string[]
Array of tag IDs applied to this prospect
statusId
string | null
Pipeline status ID
valuation
number | null
Deal value
notes
string | null
Free-text notes
threads
array | null
Threads across all account links for this prospect
Tags, status, valuation, and notes are stored on prospects. Assignee and
done/not-done technically live on threads — see Assigning and Marking
Done for details.
Returns the prospect with context directly, or null if not found.
Not all prospects are searchable via the API. Lookup is only guaranteed to
return a prospect if your team has interacted with them (e.g., they messaged
you or you started a conversation). New users who haven’t interacted with
anyone on the platform may not be found. We’re working on improving this.
Update tags, status, valuation, and notes on a prospect. You can also update assigneeId and done — these are applied to all threads belonging to this prospect on your team.
// Assign a prospect to a team memberawait client.patch(`/prospects/${prospectId}/context`, { assigneeId: "r3km7xj9wq5p2bvnhfdteoly",});// Mark a prospect as doneawait client.patch(`/prospects/${prospectId}/context`, { done: true,});// Unassign and reopenawait client.patch(`/prospects/${prospectId}/context`, { assigneeId: null, done: false,});
assigneeId and done technically live on threads, not on the prospect
itself. When you set these via the prospect update endpoint, the change is
applied to all threads for that prospect on your team. If you have
multiple account links talking to the same prospect, every thread with that
prospect will be assigned or marked done. Keep this in mind for multi-account
setups.
Two lookup patterns exist for different use cases:
Use Case
Endpoint
Returns
Get prospect profile + context
GET /prospects/lookup
Prospect with context (or null)
Find conversation thread
GET /threads/lookup
Thread object (or null)
Copy
// When you need prospect profile dataconst prospect = await client.get("/prospects/lookup", { params: { platformId: "1876543210987654321" },});// When you need the conversationconst thread = await client.get("/threads/lookup", { params: { externalPlatformId: "1876543210987654321", accountLinkId: "df6jbw4h36qm5d9iu2sgn7kx", },});
Profile data may be slightly stale. Follower counts and other stats are
updated periodically, not in real-time. Check isFresh, isStale, and
confidence to assess data quality.
Use the notes field for context that doesn’t fit structured fields:
Copy
await client.patch(`/prospects/${id}/context`, { notes: `Meeting 1/15: Discussed pricing. Need to follow up with case study.Key decision maker. Budget approved Q1.`});
assigneeId and done technically live on threads, not on the prospect.
Tags, status, valuation, and notes live on the prospect. When you set
assigneeId or done via the prospect update endpoint, it applies to all
threads for that prospect on your team — so if you have multiple accounts
talking to the same prospect, all of those threads are affected.
For guidance on when to use tags vs statuses, see Tags & statuses.