Contacts
People and companies in the book, with their notes and tags.
List contacts
Everyone in the brokerage book: leads, clients, partners and co-brokers. Use updated_since to sync incrementally rather than re-reading page 1.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
updated_sinceISO 8601 date-time, for example 2026-10-01T00:00:00Z. Returns only rows changed at or after it, in updated_at order and then id order, oldest first. A value that is not ISO 8601 gets 400 VALIDATION_ERROR.
after_idUse with updated_since to read the next page of a sync. Send the updated_at and id of the last row you read: the list then starts after that row, and a row that changes while you sync cannot be skipped. Keep page at 1. Without updated_since it gets 400 VALIDATION_ERROR.
emailExact email address. Case and surrounding spaces are ignored. Matches the contact's main email or any additional email. No match returns an empty list, not 404.
phonePhone number in any format. Matches on the last 10 digits, so +1 (587) 555-1234 and 5875551234 find the same contact. Matches the main phone or any additional phone.
qText search over the name, nickname, company, email and phone. Every word must match part of one of them. The same search as the search bar in BrokerPlus.
Filter by a contact custom field: custom_field[<key>]=<value>, for example custom_field[lead_source]=Google. The value takes the same text as a write. An empty value finds records with no answer. Send up to 10; a record must match all of them. Get the keys from GET /v1/custom-fields?entity=contact.
List contacts › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Create a contact
One of first_name or company_name is required. The API does not check the book for a duplicate unless you ask it to with check_duplicates.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Create a contact › Request Body
kindDefaults to individual.
typesDefaults to ["lead"].
first_nameGiven name. Expected on an individual.
last_nameFamily name.
company_nameBusiness name. Expected on a company.
email^(?:[A-Za-z0-9_'+\-]…Must be a valid address if provided.
phoneStored as sent. Any format is accepted.
nicknameThe name the person goes by.
phone_extensionThe extension to dial after phone.
date_of_birth^(?:(?:\d\d[2468][04…Date of birth, YYYY-MM-DD.
check_duplicatesDefault false. Set it to true to check the book first. The API then refuses the create when a contact has the same email address, or the same first and last name. It returns 409 DUPLICATE_CONTACT, and the matches are in details. For a safe retry, use Idempotency-Key instead.
Create a contact › Responses
Success
successAlways true on a successful response.
The requested record.
Retrieve a contact
A single contact by id. Returns 404 if it belongs to another brokerage. A contact that was merged into another returns 410 with the other contact's id.
path Parameters
idResource id.
Retrieve a contact › Responses
Success
successAlways true on a successful response.
The requested record.
Update a contact
Only the fields you send are changed.
path Parameters
idResource id.
Update a contact › Request Body
kindDefaults to individual.
typesDefaults to ["lead"].
first_nameGiven name. Expected on an individual.
last_nameFamily name.
company_nameBusiness name. Expected on a company.
email^(?:[A-Za-z0-9_'+\-]…Must be a valid address if provided.
phoneStored as sent. Any format is accepted.
nicknameThe name the person goes by.
phone_extensionThe extension to dial after phone.
date_of_birth^(?:(?:\d\d[2468][04…Date of birth, YYYY-MM-DD.
languageThe language to write and speak to this person in: en. Send null to go back to no stated preference.
Update a contact › Responses
Success
successAlways true on a successful response.
The requested record.
List duplicate contacts
The sets of contacts that look like the same person, as the Duplicates page shows them: the same email, the same phone, or the same name. Merge a set with POST /contacts/{id}/merge. A set the broker marked as not a duplicate is not listed. updated_since returns the sets with a contact changed at or after it. A set has no position to resume after, so after_id gets 400 VALIDATION_ERROR: page with page.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
updated_sinceISO 8601 date-time, for example 2026-10-01T00:00:00Z. Returns only rows changed at or after it, in updated_at order and then id order, oldest first. A value that is not ISO 8601 gets 400 VALIDATION_ERROR.
List duplicate contacts › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Merge contacts into one
Merges the contacts in duplicate_ids into this contact, the same as Merge on the Duplicates page. Their deals, notes, documents, tasks and history move to this contact, which survives. The duplicates are retired, and GET /contacts/{id} on one of them returns 410 with this contact's id. A merge cannot be undone. Returns the merged contact.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Merge contacts into one › Request Body
duplicate_idsThe contacts to merge into the contact in the path. Their deals, notes, documents and history move to it, and they are retired.
The values the merged contact keeps. Leave a field out to keep the value BrokerPlus picks.
Merge contacts into one › Responses
Success
successAlways true on a successful response.
The requested record.
Archive a contact
Takes the contact out of the book, the same as Archive on the contact page. The contact keeps their history, and an import or a new lead with the same email finds them. Archiving an archived contact also succeeds. Returns the contact.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Archive a contact › Responses
Success
successAlways true on a successful response.
The requested record.
Restore an archived contact
Puts an archived contact back in the book. Restoring a contact in the book also succeeds. Returns the contact.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Restore an archived contact › Responses
Success
successAlways true on a successful response.
The requested record.
List a contact's extra emails, phones and social profiles
The ways to reach a contact beyond the primary email and phone on the contact: extra emails, phones and fax numbers, and social profiles with a link to each. Oldest first.
path Parameters
idResource id.
List a contact's extra emails, phones and social profiles › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Add an email, phone or social profile to a contact
Adds an extra email, phone, fax number or social profile. A social profile takes a link or a handle. Adding one the contact already has returns 409.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Add an email, phone or social profile to a contact › Request Body
kindWhat it is. The primary email and phone are fields on the contact, not methods.
valueThe address, the number, or the profile link or handle.
extensionThe extension. Only for a phone or fax.
labelYour word for it, e.g. work.
Add an email, phone or social profile to a contact › Responses
Success
successAlways true on a successful response.
The requested record.
Remove an email, phone or social profile from a contact
Removes one extra email, phone, fax number or social profile. The primary email and phone are not methods.
path Parameters
idResource id.
methodIdResource id.
Remove an email, phone or social profile from a contact › Responses
Success
successAlways true on a successful response.
The requested record.
List a contact's relationships
The people this contact is related to, as the contact page shows them, worded from this contact's side. A relationship to a contact your key cannot read is not listed.
path Parameters
idResource id.
List a contact's relationships › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
List notes on a contact
Pinned first, then newest - the order a broker sees in BrokerPlus.
path Parameters
idResource id.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
List notes on a contact › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Add a note to a contact
The note is attributed to the broker your key acts as.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Add a note to a contact › Request Body
bodyThe note body. Plain text or HTML. Unsafe HTML is removed. The result must contain visible content.
pinnedDefaults to false.
parent_idReply to this note. Must belong to the same record, and cannot itself be a reply.
typeThe kind of note, as a slug from GET /v1/note-types for the same scope (deal or contact). Defaults to general. A reply always has the kind of its parent, so this is ignored on a reply.
Add a note to a contact › Responses
Success
successAlways true on a successful response.
The requested record.
Delete a note from a contact
Deletes the note and its replies. You cannot undo this. Any teammate who can edit the contact can delete its notes, as in BrokerPlus.
path Parameters
idResource id.
noteIdResource id.
Delete a note from a contact › Responses
Success
successAlways true on a successful response.
The requested record.
Update a note on a contact
Edit the words, pin or unpin the note, or change its kind. Only the fields you send change. A teammate newly named with a mention gets a notification, as in BrokerPlus.
path Parameters
idResource id.
noteIdResource id.
Update a note on a contact › Request Body
bodyThe new note body. Plain text or HTML. Unsafe HTML is removed. The result must contain visible content.
pinnedtrue pins the note to the top of the record. A pin does not change updated_at.
typeChange the kind of note, for example underwriting. The brokerage must have this kind. A reply always has the kind of its parent, so you cannot change it on a reply.
Update a note on a contact › Responses
Success
successAlways true on a successful response.
The requested record.
List who a contact note can mention
The teammates on the contact's team, by name. To mention one in a note, put <span data-mention="USER_ID">@Name</span> in the body. The teammate gets a notification, as in BrokerPlus. A mention of somebody who is not in this list is kept as text, and nobody gets a notification.
path Parameters
idResource id.
List who a contact note can mention › Responses
Success
successAlways true on a successful response.
The teammates a contact note can mention.
React to a contact note
Adds or takes off one emoji reaction of the broker your key acts as. Sending the same reaction again changes nothing. A reaction also marks a mention of that broker in the note as seen.
path Parameters
idResource id.
noteIdResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
React to a contact note › Request Body
emojiOne emoji, for example 👍.
activetrue adds the reaction of the broker your key acts as. false takes it off.
React to a contact note › Responses
Success
successAlways true on a successful response.
The requested record.
Attach a PDF to a contact note
Send the file as multipart/form-data in a file field, or as JSON with content_base64. The file must be a PDF of at most 25 MB. BrokerPlus checks the content, not the name. The response does not include a link: get one with the file's id.
path Parameters
idResource id.
noteIdResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Attach a PDF to a contact note › Request Body
fileThe PDF, at most 25 MB. Its file name is the name that BrokerPlus shows.
Attach a PDF to a contact note › Responses
Success
successAlways true on a successful response.
The requested record.
Get a link to a file on a contact note
A signed link to the PDF, valid for five minutes.
path Parameters
idResource id.
noteIdResource id.
attachmentIdResource id.
Get a link to a file on a contact note › Responses
Success
successAlways true on a successful response.
The requested record.
File a message for the broker to review
Writes an sms or email draft into the review queue of the broker your key acts as. The API never sends it. The broker reads the draft in BrokerPlus, and approves, edits, or rejects it there. Use this endpoint when your own system writes the message and a person must read it before a client does.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
File a message for the broker to review › Request Body
channelsms or email.
bodyThe message text. Plain text. An sms body over 1600 characters is refused.
subjectRequired for email. Not accepted for sms.
deal_idLink the draft to a deal. The deal must be one that your key can reach.
File a message for the broker to review › Responses
Success
successAlways true on a successful response.
The requested record.
Send a message to a contact
Sends an email or sms to this contact now, from the connected mailbox or phone number of the broker your key acts as. Set send_at to send it later instead. The message is the broker's own: it is in their drafts folder as sent (or scheduled), and in Sent. The response is 201 with the draft. Read the sent message with GET /v1/communications/{id} and the draft's communication_id. An email is sent in the background, so communication_id can be null for a short time. A key with the no_sending limit gets 403. Supports Idempotency-Key.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Send a message to a contact › Request Body
channelsms or email.
bodyThe message text, exactly as the client will read it. Plain text. An sms body over 1600 characters is refused.
subjectRequired for email. Not accepted for sms.
deal_idLink the draft to a deal. The deal must be one that your key can reach.
send_atWhen the message goes out, as an ISO 8601 timestamp in the future. Leave it out to send now. Until then the draft is scheduled: move it with POST /drafts/{id}/schedule, or stop it with POST /drafts/{id}/unschedule.
Send a message to a contact › Responses
Success
successAlways true on a successful response.
The requested record.
List filed drafts
The drafts filed through the API (new messages, replies and forwards) that the broker your key acts as can review, newest first. Use status to see which ones were sent, scheduled or discarded. Drafts written in BrokerPlus itself are not listed.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
updated_sinceISO 8601 date-time, for example 2026-10-01T00:00:00Z. Returns only rows changed at or after it, in updated_at order and then id order, oldest first. A value that is not ISO 8601 gets 400 VALIDATION_ERROR.
contact_idOnly drafts addressed to this contact.
deal_idOnly drafts about this deal.
statuspending_review, scheduled, sent, discarded, or failed.
channelsms or email.
List filed drafts › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Edit a draft
Changes a draft that waits for review, as the broker does in their drafts folder: the subject, the text, who it goes to, and its files. Send only the fields to change. Nothing goes to the client. Send it afterwards with POST /drafts/{id}/send.
path Parameters
idResource id.
Edit a draft › Request Body
subjectThe new subject line. Not accepted for a text.
bodyThe new message text. Plain text. A text over 1600 characters is refused.
body_htmlThe new formatted version of an email body, or null to send body as written. Send it with body, or the two can say different things. Not accepted for a text.
Replaces the addresses the email goes to. Not accepted for a text.
Replaces the copied addresses. Send an empty list to remove them all. Not accepted for a text.
Replaces the blind-copied addresses. Not accepted for a text.
Replaces the files the email carries, at most 10. Send an empty list to remove them all. Not accepted for a text.
Edit a draft › Responses
Success
successAlways true on a successful response.
The requested record.
List a contact's addresses
The broker's own addresses for this contact, primary first. Residence history from a mortgage application is not here; read it through the application.
path Parameters
idResource id.
List a contact's addresses › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Add an address to a contact
The first address on a contact becomes primary whatever you send. Send is_primary: true on a later one to move the primary; the previous primary is demoted in the same write.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Add an address to a contact › Request Body
street_addressStreet number and name, as one line. Required.
labelThe broker's own word for it, e.g. Home. Free text.
unit_numberUnit or suite.
cityCity or town.
provinceTwo-letter province or territory code, e.g. ON. Only Canadian codes are recognized.
postal_codePostal or ZIP code. Stored as sent.
countryDefaults to CA.
is_primarySend true to make this the primary address. The first address on a contact is primary regardless.
Add an address to a contact › Responses
Success
successAlways true on a successful response.
The requested record.
Remove an address
If the removed address was primary, the oldest remaining address becomes primary.
path Parameters
idResource id.
addressIdResource id.
Remove an address › Responses
Success
successAlways true on a successful response.
The requested record.
Update an address
Send only the fields to change. is_primary: false is ignored: a contact always has one primary, so demote an address by promoting another.
path Parameters
idResource id.
addressIdResource id.
Update an address › Request Body
labelThe broker's own word for it, e.g. Home. Free text.
unit_numberUnit or suite.
street_addressStreet number and name, as one line. Required.
cityCity or town.
provinceTwo-letter province or territory code, e.g. ON. Only Canadian codes are recognized.
postal_codePostal or ZIP code. Stored as sent.
countryDefaults to CA.
is_primarySend true to make this the primary address. The first address on a contact is primary regardless.
Update an address › Responses
Success
successAlways true on a successful response.
The requested record.
Read a contact's deal statistics
How many deals the contact borrowed on, how many funded, the dollars funded, whether they are a repeat client, their referrals, and the last thing that happened with them. Computed on read from the deals your key can see. Each figure names its basis.
path Parameters
idResource id.
Read a contact's deal statistics › Responses
Success
successAlways true on a successful response.
The requested record.
Read a contact's email and SMS consent
Whether the brokerage may send this person commercial email and SMS, by category, and whether a hard suppression stands. A missing preference is implied consent.
path Parameters
idResource id.
Read a contact's email and SMS consent › Responses
Success
successAlways true on a successful response.
The requested record.
Record a contact's email or SMS consent
Records an opt-out, clears one, or records express consent from something the client did. Opting in never records express consent on its own. A hard suppression is not changed here.
path Parameters
idResource id.
Record a contact's email or SMS consent › Request Body
sourceWhere this standing comes from, e.g. website_form or crm_import. Recorded on the row as api:<source>.
Send only the categories to change.
SMS standing to change.
Record a contact's email or SMS consent › Responses
Success
successAlways true on a successful response.
The requested record.
List a contact's tags
Only the tags currently on this contact. For the full vocabulary see GET /contact-tags.
path Parameters
idResource id.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
List a contact's tags › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Put a tag on a contact
Assigning a tag the contact already has is a no-op, not an error. A tag newly put on fires the contact.tag_assigned automation trigger.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Put a tag on a contact › Request Body
tag_idA tag id from GET /contact-tags or GET /deal-tags.
Put a tag on a contact › Responses
Success
successAlways true on a successful response.
The requested record.
List a contact's partner roles
What the contact does for the broker's clients, for example realtor or lawyer, with their title, website, booking link and photo. A contact with any role is a partner.
path Parameters
idResource id.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
List a contact's partner roles › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Give a contact a partner role
Adds a role, for example realtor, and makes the contact a partner, as the role picker on the contact page does. If the contact already holds the role, the role is kept and its title is updated when you send one.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Give a contact a partner role › Request Body
roleThe role, for example realtor or lawyer. The contact becomes a partner. If the contact already holds the role, it is kept and title is updated when you send it.
titleThe person's job title.
Give a contact a partner role › Responses
Success
successAlways true on a successful response.
The requested record.
Take a partner role off a contact
Removes the role. When the contact's last role goes, the contact is no longer a partner. The contact itself stays in the book.
path Parameters
idResource id.
roleIdResource id.
Take a partner role off a contact › Responses
Success
successAlways true on a successful response.
The requested record.
Update a partner role
Changes the title, website or booking link on one of the contact's roles. Only the fields you send change. The photo is uploaded in BrokerPlus.
path Parameters
idResource id.
roleIdResource id.
Update a partner role › Request Body
titleThe job title. null clears it.
websiteThe public profile page. null clears it.
calendar_urlThe booking link. null clears it.
Update a partner role › Responses
Success
successAlways true on a successful response.
The requested record.
Create or update contacts in a batch
Creates or updates up to 100 contacts in one request. Each item is the body of POST /v1/contacts for a new contact, or of PATCH /v1/contacts/{id} for a contact that exists. Send external_id with namespace, and the next batch with that id updates the same contact. The items are not one transaction: an item that fails does not stop the others. Each item counts as one request against the rate limit. Refer to Migrate from another CRM.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Create or update contacts in a batch › Request Body
From 1 to 100 records. BrokerPlus writes them in this order.
namespace^[A-Za-z0-9_.-]+$The name of the system that your external_id values come from, for example zoho. It is not case-sensitive. It is necessary when an item has an external_id. Two systems can then use the same id without a conflict.
Create or update contacts in a batch › Responses
Success
successAlways true on a successful response.
The requested record.
Send a draft
Sends a draft that waits for review now, as it is written, the same as Send in the broker's drafts folder. The response is the draft, with status sent, or scheduled when the draft has a send time. A key with the no_sending limit gets 403.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Send a draft › Responses
Success
successAlways true on a successful response.
The requested record.
Schedule a draft
Sets a draft that waits for review to go out at send_at, the same as Schedule in the broker's drafts folder. A draft that is already scheduled moves to the new time. It goes out without anybody pressing Send, so a key with the no_sending limit gets 403. Stop it with POST /drafts/{id}/unschedule.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Schedule a draft › Request Body
send_atWhen the draft goes out, as an ISO 8601 timestamp in the future. A draft that is already scheduled moves to this time.
Schedule a draft › Responses
Success
successAlways true on a successful response.
The requested record.
Stop a scheduled draft
Takes a scheduled draft back to pending_review, so it does not go out. It keeps its time: sending it with POST /drafts/{id}/send schedules it for that time again, unless the time has passed.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Stop a scheduled draft › Responses
Success
successAlways true on a successful response.
The requested record.
Discard a draft
Discards a draft that waits for review, the same as Discard in the broker's drafts folder. It stays in the list as discarded and can no longer be sent. You cannot undo this.
path Parameters
idResource id.
Headers
Idempotency-KeyOptional for POST. An authorized retry with the same method, path, and exact body returns the stored response. Reservations last 24 hours. They belong to the original API key and broker. Reconcile uncertain results before you use a new key.
Discard a draft › Request Body
reasonWhy the draft is discarded. The broker sees it on the draft.
Discard a draft › Responses
Success
successAlways true on a successful response.
The requested record.
List a contact's custom fields
Every custom field the brokerage keeps on a contact, with this contact's value. A field that nobody has answered returns a value of null, so the list is the same length on every contact.
path Parameters
idResource id.
List a contact's custom fields › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.
Set a custom field on a contact
Sets one field by its key. The write is idempotent: the same request twice leaves the same value. Send an empty string to clear the field, which makes it unanswered again.
path Parameters
idResource id.
keyResource id.
Set a custom field on a contact › Request Body
valueThe value to store, as text. A short_text field takes one line of 200 characters or fewer, and line breaks change to spaces. A number,money or percent field takes a number like 1200 or 4.5, a date field takes YYYY-MM-DD, a checkbox takes true or false, a url takes a full web address, a select field takes one of its options, and a multi_select field takes a JSON array of its options, like ["Appraisal","Insurance"]. Send an empty string to clear the field.
Set a custom field on a contact › Responses
Success
successAlways true on a successful response.
The requested record.
List a contact's activity
The activity trail of a person across every deal, newest first: the messages and calls with them, and the changes to the deals that they are on. It holds the newest 200 entries of each kind.
path Parameters
idResource id.
query Parameters
page1-indexed page number, up to 1000000.
page_sizeRows per page. Capped at 100.
updated_sinceISO 8601 date-time, for example 2026-10-01T00:00:00Z. Returns only entries that happened at or after it. A value that is not ISO 8601 gets 400 VALIDATION_ERROR.
List a contact's activity › Responses
Success
successAlways true on a successful response.
The page of results. The endpoint description and the Pagination guide give the order.
Offset pagination. Page forward until page reaches total_pages.