Menu

API reference · Phones

Calls

crm_phones · calls · 3 operations

GET/v1/crm/calls

List phone calls

crm.calls.list

ReadIdempotentSince 2026-11-01

Lists the calls made and received with the org's phone lines, newest first, paginated by cursor (limit up to 200, default 25): direction, status, from/to and the other party's number (a call from the app's dialer comes from its line's number), the owner and who answered with their names, when it started, was answered and ended, duration, voicemail, whether it was recorded, the linked person, deal, company or prospect, the seller's notes and disposition, and the CRM activity it created. Filter by one of line_id, owner_id, deal_id or direction, plus a since/until range on the creation time. Recordings and costs are not included. Module: Phones (crm_phones), even though the id starts with crm.; the credential needs the crm_phones:read scope.

Scope
crm_phones:read
Permission
View the module
MCP tool
crm_calls_listOn the full surface; on the compact one, mb_execute_operation with id: "crm.calls.list".

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

Parameters

limitintegerqueryoptional

How many items this page brings at most (see the maximum and the default in the schema).

Default: 25

cursorstringqueryoptional

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

line_idstringqueryoptional

Only the calls of this phone line: an id from crm_phones.lines.list.

owner_idstringqueryoptional

Only the calls of this member (the seller who made or took them): a user_id from crm.team.list.

deal_idstringqueryoptional

Only the calls linked to this deal (crm.deals.list).

directionenumqueryoptional

inbound, outbound-api (from an automation or the voice agent) or outbound-dial (from the app's dialer).

Values: inbound, outbound-api, outbound-dial

sinceintegerqueryoptional

Only the calls created from this time on (epoch ms, inclusive).

untilintegerqueryoptional

Only the calls created up to this time (epoch ms, inclusive).

Response

dataarray<object>
has_moreboolean
next_cursorstring

Errors

Example

curl "https://api.mb-suite.com/v1/crm/calls" \
  -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/calls" \
  -H "Authorization: Bearer $MB_TEST_KEY"
POST/v1/crm/calls/{call_sid}/outcome

Save the notes and disposition of a call

crm.calls.save_outcome

WriteIdempotentSince 2026-11-01

Saves the seller's notes (up to 5,000 characters) and the disposition of a call: sale, follow_up, voicemail, no_answer, wrong_number or other. Both go to the call and to its CRM activity (notes become the activity description, the disposition sets the call outcome), creating the activity if the call matches a person or deal. unlinked: true means the call matches nothing in the CRM: link it with crm.calls.link_entity. Requires full access to Phones. Module: Phones (crm_phones), even though the id starts with crm.; the credential needs the crm_phones:write scope.

Scope
crm_phones:write
Permission
Edit in the module
MCP tool
crm_calls_save_outcomeOn the full surface; on the compact one, mb_execute_operation with id: "crm.calls.save_outcome".

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

Parameters

call_sidstringpathrequired

The call: its id (Twilio's call_sid) from crm.calls.list.

notesstringbodyoptional

The seller's notes (up to 5,000 characters); they become the call activity's description.

dispositionenumbodyoptional

How the call ended: sale, follow_up, voicemail, no_answer, wrong_number or other.

Values: sale, follow_up, voicemail, no_answer, wrong_number, other

Response

activity_idstring | null
unlinkedboolean

Errors

Example

curl -X POST "https://api.mb-suite.com/v1/crm/calls/{call_sid}/outcome" \
  -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 -X POST "https://api.mb-suite.com/v1/crm/calls/{call_sid}/outcome" \
  -H "Authorization: Bearer $MB_TEST_KEY"