Menu

API reference · CRM

My leads

crm · my_leads · 1 operation

GET/v1/crm/my-leads

List an owner's deals and prospects with everything needed to work them

crm.my_leads.list

ReadIdempotentSince 2026-11-01

Lists in one paginated read the deals and the live prospects (new or reviewing) of one owner, by default the caller, each already joined with what you need to work the lead: the primary person (name, email, phone, country, person labels, do_not_contact, unsubscribed_at, bounced_at, whatsapp_unreachable), the company (name, domain, website, country, industry), the pipeline and stage names (prospects: their interest, the inbox status), the labels, the next step (the earliest pending task, call or meeting), the next meeting (a pending meeting in the future, with its booking_id and link when it comes from a booking), last_activity_at, last_inbound_at and last_outbound_at across all channels (the channel of the last contact is not stored), the action state, and per messaging channel (whatsapp, instagram, facebook, tiktok) the person's most recent conversation with its reply window (open, human_agent, closed or no_window) and when it closes; WhatsApp also says the line. Deals come first, most recently moved first (open by default; deal_status won, lost or all), then prospects, newest first; kinds limits it to one of the two. Follow next_cursor until has_more is false (limit up to 200). Archived deals and merged duplicates are skipped, so a page can bring fewer than limit while has_more is true. Pass owner_id to read another member's or an AI agent's leads: it needs view_all_deals (owners, admins, crm admins, sales managers and members without a restricted scope); a viewer or a seller with restricted scope gets 403 crm_action_denied. Read only, about 3 to 5 reads per lead returned. Use crm.deals.get or crm.persons.context to go deeper into one lead. With LinkedIn or TikTok, their terms limit it through the API and the MCP: what they do not allow answers 403 platform_terms_restricted, and their records are left out of the response (the permissions guide lists what each platform allows).

Scope
crm:read
Permission
View the module · CRM action: view_own_deals
MCP tool
crm_my_leads_listOn the full surface; on the compact one, mb_execute_operation with id: "crm.my_leads.list".

Declared cost: up to 1200 reads and 0 writes per call (they count against the daily quota).

Parameters

limitintegerqueryoptional

How many leads this page brings at most (default 20, up to 200; each lead carries its person, company, next step and channels, about 2 KB).

Default: 20

cursorstringqueryoptional

The next_cursor of the previous page, exactly as it came (only for the same list and filters); without it, the first page.

owner_idstringqueryoptional

Whose leads: a member's user id (members.members.list or crm.team.list) or an AI position's ai-… id (crm.ai_team.positions.list). Without it, the caller's. One that is not a member nor an AI position of the organization is owner_not_found.

kindsarray<enum>queryoptional

deal, prospect or both (default both).

Values: deal, prospect

deal_statusenumqueryoptional

The status of the deals (default open). Prospects are always the live ones: new and reviewing.

Values: open, won, lost, all · Default: "open"

Response

dataarray<object>
has_moreboolean
next_cursorstring

Errors

Example

curl "https://api.mb-suite.com/v1/crm/my-leads" \
  -H "Authorization: Bearer $MB_API_KEY"

Try it with your test API key

With a test API key the request always goes to your practice organization: example data you can reset.

curl "https://api.mb-suite.com/v1/crm/my-leads" \
  -H "Authorization: Bearer $MB_TEST_KEY"