Reference
Every operation.
Generated from the gateway's manifest with every release, so this list is exactly what POST /api/v1/call accepts in production.
619 of 619
Contacts107
getContactMERGED IDS RESOLVE: an id merged into another contact returns the SURVIVING record, so the id that comes back can differ from the one you sent.READgetContactsPropertiesMany contacts' linked properties in ONE read: contactIds in (a bulk selection's ids, up to 200), each contact's properties[] out (propertyString, and property.id, the property id a skip trace,...READfindContactsByNoteContacts by what their NOTES say; for calls, texts and emails too, use searchInteractions.READsearchInteractionsContacts by what was SAID on calls, notes, texts or emails.READcountContactsThe number of active contacts visible to you, in one call: the total the Contacts page shows (archived and hidden contacts excluded).READfindContactsFuzzy-search contacts by name, phone, email, or address.READsearchContactTagsSearch contact tags and lists. tags are free-form TAGS; lists, uploadTags and exportTags are LISTS (the last two from imports and exports), each with folderId (listFilterFolders).READcontactTagUsageFree-form tags, least-used first: contactCount (visible, unarchived), orgContactCount (org, +archived; null w/o view-all: 0 proves nothing), dependents. maxContactCount 0 = unused (view-all)....READlistSmsOptOutsWho opted out of texts (texted STOP, unsubscribed, carrier opt-out, blocked by a teammate), newest first: source, optedOutAt, reason, phoneNumber and the contacts you can see carrying it.READcountRecordsCount records grouped by any field in ONE call: tasks per contact or per teammate, mine vs others, contacts by source, deals by stage.READlistContactCustomFieldsThe organization's contact custom-field DEFINITIONS (id, name, type: TEXT/NUMBER/DOLLAR/DATE/LINK/DROPDOWN, dropdown options, allowMultiple, defaultValue).READlistContactFiltersList the saved contact filters VISIBLE to the key owner; run one with filterContacts, delete one with deleteContactFilter.READfilterContactsRun a contact filter and paginate the matches with limit/offset.READlistContactActivitiesA contact's activity timeline (calls, texts, emails, notes, system events), most recent first.READgetContactIdentityA contact's own email addresses: never its related people's (sub-contacts'), and never one marked WRONG.READlistContactSuggestionsA contact's pending suggestion cards, newest first: what each proposes (action: a text or email reply and its words, a note, a task, a booking, a fix to the record), with how sure it is. dirtyAt...READcreateContactCreate a contact; needs sellerFirstName, sellerLastName, and type (LISTING | INVESTMENT | BUYER | UNDETERMINED); phones/emails optional.WRITEupdateContactUpdate a contact by contactId: the general-purpose per-contact write.WRITEaddContactNoteAdd a text note to a contact, synchronously (getContact returns it at once).WRITEeditContactNoteRewrite an existing note's body (by noteId).WRITEdeleteContactNotePERMANENTLY delete a note (by noteId): it leaves the contact's timeline with NO undo, so ALWAYS show its text and get their yes; a card counts.WRITEcreateNoteReplyReply to a note (getContact notes[]) as the key owner; AI employees cannot.WRITEeditNoteReplyReplace a reply's body (replyId from getContact notes[].replies); echoes the saved body.WRITEdeleteNoteReplyDelete a reply for good.WRITEchangeNotePinnedPin (isPinned true) or unpin a note (getContact notes[]); any teammate may.WRITEaddContactTagsAdd tags to contacts: existing ones by tagIds (searchContactTags), new ones by exact name in newTagNames, created as this runs, never createContactTag first. removeContactTags is the twin.WRITEremoveContactTagsStrip tags (tag ids from searchContactTags) off contacts: the removal twin of addContactTags, and the undo for a bulk tag that leaves the tag definition alone.WRITEaddContactsToListAdd contacts to one or more LISTS (segments) by list id (searchContactTags lists / createContactList): the selection-wide form of updateContact’s addToListIds; removeContactsFromList is the twin.WRITEremoveContactsFromListTake contacts OFF one or more lists by list id: the removal twin of addContactsToList and the undo for a bulk add.WRITEassignContactAssign a teammate to contacts (get userId from listTeammates). role defaults to POINT_PERSON; pass PARTICIPANT for a secondary assignment.WRITEunassignContactTake teammates OFF contacts: the removal twin of assignContact, and the offboarding op. userIds is a LIST, so one call clears several teammates from the selection; each is removed from every...WRITEsetContactsCustomFieldSet ONE DROPDOWN custom field to the same value across a selection of contacts: the bulk form of updateContact’s updateCustomFieldValues. customFieldId from listContactCustomFields; read the...WRITEcreateContactTagCreate an org-wide free-form contact tag, synchronously.WRITErenameContactTagRename a FREE-FORM contact tag in place (tagId from searchContactTags tags).WRITEcreateContactCustomFieldCreate an org-wide contact custom-field DEFINITION (name + type: TEXT | NUMBER | DOLLAR | DATE | LINK | DROPDOWN; options required for DROPDOWN; allowMultiple optional), synchronously.WRITEupdateContactCustomFieldEdit a contact custom-field DEFINITION in place (id from listContactCustomFields).WRITEreorderContactCustomFieldsSet the DISPLAY ORDER of the organization's contact custom fields.WRITEcreateContactListCreate an org-wide contact list (segment), synchronously.WRITErenameContactListRename a contact LIST in place (listId from searchContactTags lists): "rename Hot Leads to Priority Sellers".WRITEarchiveContactsArchive (soft-delete) contacts by id.WRITEunarchiveContactsRestore archived contacts by id: the undo for archiveContacts.WRITEfindDuplicateContactGroupsEvery duplicate group (same name + shared phone or email) in ONE call, never contact by contact. matchBy: NAME = name alone, unverified, each group listing the phones and emails its members share...READfindContactDataProblemsContact data problems in ONE call, never contact by contact: EMAIL_NOT_LOWERCASE, NAME_EMPTY, NAME_ONE_WORD (a first or last name missing; which is unknown), PHONE_NOT_NORMALIZED (not the 10-digit...READfindSharedPropertyAddressesGroups of 2+ contacts linked to the same property address (the parcel, else the mailing address row, else the text folded for case and punctuation), largest first, in ONE call: address,...READcontactListUsageEVERY list in ONE call, import uploads ("Contacts from … .csv", kind UPLOAD) and exports included, emptiest first: contactCount (unarchived you see), orgActiveContactCount /...READduplicateContactsByRepfindDuplicateContactGroups tallied per assigned rep (point person) in ONE call: per rep, groupCount (groups holding one of their contacts) and contactCount; userId null = unassigned. totalGroups,...READlowercaseContactEmailsLowercase every capitalised email on these contacts (≤500; the ids findContactDataProblems problem EMAIL_NOT_LOWERCASE lists), in place: changedEmails, changedContacts, left (the contact already...WRITEgetContactConnectionsA contact's Links card (externalLinks), related people (linkedRelationships, with linkedContactId), relatives not yet contacts (subContacts) and the AI pause in force (aiPause, null when AI is on:...READlistContactDirectMailThe letters sent to one contact by any mail provider, newest first, 20 a page (pass nextCursor as after): id, campaignLabel, status, preparedAt, mailedAt.READsetContactDoNotContactMark a contact Do Not Contact (optional reason): every text, email and call to it is blocked, its workflow runs stop for good and its AI employees come off.WRITEsetPhoneDoNotContactOpt one phone number out of texts AND calls for the whole organization, on every contact that carries it (suppressChannel does one medium).WRITEpauseContactAiPause AI on one contact. mode ALL: no AI employee runs, and workflow AI employee steps that come due are skipped, not deferred; MESSAGES: runs go on but no AI text, email or Slack message is...WRITEresumeContactAiTurn AI back on for one contact (a contact with no pause is a no-op); its AI employees can text and email it again.WRITEpauseContactsAipauseContactAi (same mode and pausedUntil) for many contacts, as a bulk task (bulkTaskId, getBulkTask).WRITEresumeContactsAiresumeContactAi for many contacts, as a bulk task (bulkTaskId, getBulkTask).WRITEaddContactExternalLinkAdd a titled URL to a contact's Links card (getContactConnections externalLinks): a web address, or an app path starting with / (it becomes the app's own URL).WRITEremoveContactFilesTake files off a contact's Files & Photos by file id (a Library filing's uploadedFileId, or a files[].id), as the Files card's delete does.WRITEupdateContactExternalLinkChange a contact link's title or URL (an omitted one is kept).WRITEremoveContactExternalLinkRemove a contact link, for good.WRITEupdateContactRelationshipSet the relation label and note on a related person (getContactConnections linkedRelationships id).WRITEunlinkRelatedContactDisconnect a related person (linkedRelationships id), for good.WRITEconvertSubContactToLinkedRelationshipPromote a relative (getContactConnections subContacts id) to its own contact, linked back as a related person; returns the link with linkedContactId. linkToExisting: true links the org's existing...WRITErequestDirectMailCancellationAsk the mail provider to cancel one letter (listContactDirectMail id). contactId must be the contact the letter is on: the id getContact returns, which differs from a merged-away id (this write...WRITEcontrolContactsWorkflowRunsPAUSE or RESUME the workflow runs of contacts (optional workflowGroupIds narrows it).WRITEdecideContactSuggestionsInBulkAccept or dismiss many cards at once (verb ACCEPT or DISMISS, suggestionIds at most 500): each runs as its own Accept or Dismiss would, so an ACCEPT can send a reply per card.WRITEdecideSuggestionAccept or dismiss any card in the suggestion feed (a contact's, an AI employee's or an account card) by its id (verb ACCEPT or DISMISS), the same door Work through uses.WRITEdismissContactSuggestionDismiss a suggestion card with the reason the person gave (NOT_RELEVANT, WRONG_TONE, WRONG_FACTS, ALREADY_DONE, OTHER, …).WRITEmarkContactSuggestionHandledClose a card the person already handled themselves (they sent the text, made the task): it is marked done WITHOUT running its action, and the reply's paired cards stay pending.WRITEsetAsideContactSuggestionsTake cards out of an import's bulk review: they stay pending on each contact's own card.WRITEcommentOnSuggestionCardComment on a suggestion card ("too pushy").WRITEacceptContactSuggestionAccept a contact's suggestion card as written: a reply card SENDS its text or email to the contact; another card applies its action.WRITEacceptEditedContactSuggestionAccept a text or email reply card with the person's own words (text) in place of the draft; it SENDS.WRITEmergeContactsMerge duplicate contacts into one survivor. contactIds: the full set (2+); primaryContactId MUST be one of them; it keeps its custom fields and agent, absorbing the others’ notes, tags,...WRITElinkContactAsRelatedPersonConnect linkedContactId to parentContactId as a related person, with an optional relation label.WRITEdeleteContactTagsDelete free-form contact tags by id (from createContactTag), removing them from every contact.WRITEdeleteContactFilterPERMANENTLY delete a saved CONTACT filter by id (from listContactFilters): no archive, no undo.WRITEdeleteContactListsDelete contact lists by id (from createContactList), dropping their membership.WRITEdeleteContactCustomFieldPermanently delete a contact custom-field DEFINITION (id from listContactCustomFields).WRITEenrichContactSkip-trace a contact to discover phone numbers and emails.ADMINcreateContactFromPropertyCreate a CRM contact from a property (id/esId).ADMINshareContactWithPartnerShare one contact with a partner organization, the contact page's Share: the partner gets its own copy. partnerOrganizationId from listPartnerships; assignments name the PARTNER org users who get...WRITEunshareContactWithPartnerStop sharing a contact with a partner organization: the partner's users lose access to their copy (revokedUsersCount), and sharing it again makes them a new one, never theirs back.WRITEshareContactsWithPartnershareContactWithPartner for many contacts (contactIds), as a bulk task (bulkTaskId, getBulkTask). partnerOrganizationId from listPartnerships; assignments name the PARTNER org users who get it...WRITEsetContactsTeamsPut contacts on teams (addTeamIds, from listTeams) and take them off (removeTeamIds); replaceExisting makes addTeamIds the exact set. addTeamIds is required: pass [] to only take them off.WRITEgetContactFieldVisibilityEach contact field's show-when rule: visibleWhen { fieldId, optionIds } (shown only when that dropdown is any of those options), null when always shown.READaddContactCustomFieldOptionAdd one option to a contact DROPDOWN field (listContactCustomFields).WRITEsetContactCustomFieldVisibilityShow fields only when one dropdown is any of optionIds (that dropdown's option ids), replacing each field's rule (read it first: getContactFieldVisibility); optionIds empty = always show.WRITEstartContactImportStart importing contacts from a spreadsheet the person attached to the chat.WRITEauthorContactImportMappingBring an import from startContactImport to a ready mapping when it was not ready yet (transformerAuthoringState IN_PROGRESS, or hasAuthoredTransformer false).WRITEreviseContactImportMappingChange how an import maps the spreadsheet’s columns, in plain words: message is the change the person asked for (for example "the Owner 2 column is a second contact name, not a note" or "put the...WRITEpreviewContactImportThe first rows of an import as the contacts they will become, in the app’s own fields: name, phones, emails, property addresses, mailing addresses, tags, lists, deals, and custom fields (every...READconfirmContactImportImport every row of the spreadsheet as contacts: the step the Import page’s Import button runs.WRITEgetContactImportThe status of an import: status (CREATED and AUTHORING_TRANSFORMER = not confirmed yet, PENDING_PROCESSING and PROCESSING = importing, COMPLETED, FAILED, NOT_ENOUGH_BALANCE), totalRows, the...READgetContactImportRowFindingsThe rows of an import whose phone the import cannot store (not a full US number): they come in without that phone. unstorablePhoneRowIndexes are 0-based, so row N is index + 1; checkedRows is how...READimportContactCreate-or-get a contact migrated from an external system.IMPORTimportContactNoteCreate-or-get a historical note on a contact, attributed to a real member of the organization (authorUserId).IMPORTimportDealCreate-or-get a deal migrated from an external system.IMPORTlistCallListsThe call lists you can open: your own and the ones shared with your team, newest first (at most 50).READgetCallListOne call list with its progress, plus one page of its contacts in dial order: each slot's position, status (PENDING = still to call, IN_PROGRESS = being dialed, COMPLETED, SKIPPED with...READgetCallListDialLinkThe in-app link that opens a call list in the dialer, where a person presses Start: dialPath is a path inside the app (/contacts?callListId=…).READcreateCallListBuild a call list from contact ids, dialed in the order given (duplicates collapse).WRITEcreateCallListFromContactFilterBuild a call list from a saved CONTACT filter (filterId from listContactFilters): the contacts it matches for you right now, in the filter's order, up to 10,000.WRITEaddCallListContactsAdd contacts to the end of a call list, so they are called after everyone already on it.WRITEremoveCallListContactsTake contacts off a call list before they are called: their slots close as skipped by hand (skipReason USER), so the list keeps its record.WRITErenameCallListRename a call list.WRITEendCallListArchive a call list: it moves to ENDED, stays readable with its outcomes, and can no longer be dialed or edited.WRITEdeleteCallListDelete a call list: it disappears from Call lists for everyone.WRITEProperties & coverage47
getPropertyFetch one property by id: address, skip-trace status, signal recency, owner of record and mailing address (metadata, as the page shows them), and visible tags and lists (each { id, name,...READgetPropertySignalsA property's filings (newest 50), notice text in adBody.READgetPropertyOwnersA property's people. crmContacts: your own contacts at it (linked, or at its street and ZIP), with relation (OWNS or null = owner; FORMER_OWNER, MAILING and the rest are not) and the phones and...READfindPropertiesSearch properties by (partial) address.READlistPropertyFiltersList the saved property filters VISIBLE to the key owner; run one by id with filterProperties (the tree stays server-side: getFilter reads it).READlistFilterFoldersSaved-filter folders of one type (PROPERTY, CONTACT, DEAL), empty ones included: the org's shared ones plus your private ones.READfilterPropertiesRun a property filter and paginate the matches with limit/offset.READcountPropertySignalsCount PUBLIC-RECORD SIGNAL EVENTS in an area, by type and publication-day window.READsearchPropertyTagsSearch your organization's property tags and lists by name.READfindPropertiesByParcelSearch properties by (partial) parcel id.READfindPropertiesByMlsIdSearch properties by (partial) MLS id.READfindPropertiesNearPointProperties within ~150 m of a point, the parcel it is on first: candidates, not one answer (match a house number).READgetRelatedPropertiesBatch property attributes by id (esId): owner of record and mailing address, beds/baths/size, year built, last sale, value, occupancy, county, lat/long, years owned, ownerPortfolioSize (parcels...READgetZoningCodesList the zoning codes available for a location (by state + city id or county FIPS).READsearchCountiesFind US counties by (partial) name and return each match's name, fullName, state and fips.READsearchCitiesFind US cities by (partial) name and return each match's id, name and state.READlistFilterFieldNamesThe COMPLETE vocabulary of filterable fields for a domain (CONTACT, PROPERTY or DEAL): every fieldId saveFilter accepts, with label, category and UI component.READlistFilterFieldsThe filterable-field catalog for a filter domain WITH full value shapes: how to WRITE a condition once you know which field you want (CONTACT, PROPERTY or DEAL; other FilterType values are rejected).READgetFilterFetch ONE saved filter by id, including its full root criteria tree: the only operation that returns the tree (listPropertyFilters / listContactFilters / listDealFilters return metadata only).READaddPropertyTagsAdd existing tag(s) (by tag id) to a property.WRITEremovePropertyTagRemove one tag (by tag id) from a property.WRITEcreatePropertyListGet or create an org-wide PROPERTY list by exact name (synchronous).WRITEaddPropertiesToListAdd properties to one or more lists (list ids from searchPropertyTags).WRITEremovePropertiesFromListRemove properties from ONE list (listId from searchPropertyTags or getProperty's lists).WRITEsaveFilterCreate a saved filter. type CONTACT runs with filterContacts, PROPERTY with filterProperties, DEAL (status, title, pipeline stage, assignees, deal custom fields) with filterDeals: find deal...WRITEupdateFilterEdit a saved filter IN PLACE by id (property, contact or deal): its criteria, name, description, folder or visibility.WRITEcreateFilterFolderCreate a saved-filter folder (returns id). scope is the filters' type (PROPERTY, CONTACT, DEAL); personal: true makes it private, else it and filters filed in it are shared; with parentId it takes...WRITErenameFilterFolderRename a filter folder (listFilterFolders id); onto a sibling’s name it MERGES into it.WRITEdeleteFilterFolderDelete a filter folder (listFilterFolders id); its contents move up a level.WRITElistFoldersEvery folder on one surface (scope: PROPERTY, CONTACT, DEAL, FORM, …), flat: the org's shared tree plus your personal one. ownerUserId set = personal. itemCount counts items filed directly in it.READrenameFolderRename a folder by id (listFolders); a name a sibling already has is refused.WRITEmoveFolderPut a folder under another folder of the same surface (parentId), or at the top level (parentId: null).WRITEreorderFoldersSet the order of one set of sibling folders: scope, their parentId (null = top level), personal (which side), and orderedIds first to last.WRITEdeleteFolderDelete a folder by id (listFolders).WRITEmoveItemsToFolderFile items into a folder (folderId), or to the top level (folderId: null). items are { kind, id }; kind is FILTER, CONTACT_LIST, PROPERTY_LIST, FORM, TEMPLATE, LIBRARY_FILE or WORKFLOW_GROUP.WRITEreorderFolderItemsSet the display order of items inside one folder: orderedItems ({ kind, id }) first to last.WRITEreorderFiltersSet the display order of saved filters: filterIds first to last (listPropertyFilters / listContactFilters / listDealFilters ids).WRITEdeleteFilterPERMANENTLY delete a saved filter by id (any type): no archive, no undo.WRITEskipTracePropertySkip-trace a property (by id/esId) to discover its owner and their phone numbers/emails.ADMINmanualSkiptraceSkip-trace an explicitly-provided owner + mailing address (no property record needed).ADMINlistMyCoverageRequestsThe org's coverage requests: signal family and county (countyFips), when asked, status, expectedBy (the promise) and liveSince.READrequestCoverageAsk for coverage of places ("Cook County, IL"; a county keys to its cell, anything else comes back in gaps) for signals by name (signals, always sent: [] when asking by family), or families picked...WRITErequestSignalsInMyCountiesAsk for signal types that are not live yet in every county the org works, as a builder's "Request it" does; the 2-week promise starts now. context names what was being built (workflowGroup:<id>,...WRITEcancelCoverageRequestWithdraw the org's request for one family in one county (countyFips): the request is deleted, and asking again starts a new one.ADMINrunPropertyComparablesComparable sales for a property (its id from a property read), as the property page's Comps tab: each comp's facts, distance and price per square foot, and the medians with the subject's implied...WRITEgetCoverageCellsThe Coverage page for a whole state (stateAbbr, e.g. TX) or up to 300 named counties (countyFips, five digits): one row per county and signal type (FORECLOSURE, PREFORECLOSURE, PROBATE,...READgetCoverageAvailabilityWhether each named signal type (a property signal type, e.g. FORECLOSURE or TAX_DELINQUENT) is live across your organization's counties (its markets): LIVE, BUILDING, REQUESTED, NOT_REQUESTED...READDeals & contracts70
getDealFetch one deal by id: title, value, close date, stage, pipeline, COMMISSION AND TEAM SPLIT, CUSTOM-FIELD VALUES, assigned users (empty = unassigned), linked contacts (id + name), and linked deals...READfindDealsSearch AND TOTAL the deals you can see: totals sums EVERY match, not the page (price, average, commission; totalCount is the count), so a total is one call.READsurveyDealsSurvey deals: findDeals' search (same visibility), without stageName/outcome/windows/totals, with a deliberately LEAN row: deal id, title, isArchived, stage NAME, pipeline NAME, assigned users by...READlistStalledDealsList deals going cold: no activity for a while, ordered by days inactive, of deals you can see.READlistPipelinesList the organization's deal pipelines with per-stage deal counts and values.READlistDealFiltersList the saved DEAL filters VISIBLE to the key owner: every shared deal filter in the organization plus your own private ones.READfilterDealsRun a SAVED deal filter (filterId from listDealFilters or saveFilter type DEAL) over ONE pipeline (pipelineId from listPipelineNames) and page the matching deals with limit/offset: id, title,...READlistPipelineNamesList the organization's own deal pipelines, id and name only, oldest first. sameNameCount is how many share the row's name.READlistPipelineStagesOne pipeline's stages, in order (all pipelines: listStagesOfPipelines).READlistStagesOfPipelinesEvery owned and shared pipeline and its stages, in order; a large organization's answer is cut short.READlistDealCustomFieldsList a deal pipeline's custom-field DEFINITIONS (by pipelineId from listPipelines): id, name, type (TEXT/NUMBER/DOLLAR/DATE/LINK/DROPDOWN), dropdown options, allowMultiple, defaultValue.READgetDeletionImpactPreview what deleting an org-owned record affects before you do it: it serves every delete op that takes a dependencyResolution, not just the deal ones.READlistDealActivityOne deal's activity feed, most-recent-first: the audit trail behind "who changed the price on this deal, and when did it get reassigned?".READlistDealCommentsOne deal's comment thread, most-recent-first (the activity feed narrowed to COMMENT events, paged at the database: the full thread stays reachable however busy the rest of the feed is).READlistDealFilesFiles attached to a deal, most-recent-first: screenshots, recordings, documents.READaddDealCommentAppend a comment to a deal's activity feed, attributed to the API key's owner.WRITEattachDealFileAttach a CHAT file to a deal: the write twin of listDealFiles.WRITEremoveDealFileDetach one file from a deal by fileId (fileIds come from listDealFiles).WRITEcreateDealCreate a deal in a pipeline stage.WRITEupdateDealUpdate a deal by id: title, price, close date, stage.WRITEarchiveDealArchive or RESTORE one deal by id (isArchived true or false); archiveDeals archives many.WRITEcreatePipelineCreate a deal pipeline in your organization.WRITEcreateDealCustomFieldCreate a custom-field DEFINITION on a deal pipeline you OWN (pipelineId from listPipelines): name + type (TEXT | NUMBER | DOLLAR | DATE | LINK | DROPDOWN; options required and non-empty for...WRITEupdateDealCustomFieldEdit an existing deal custom-field DEFINITION in place (by id from listDealCustomFields).WRITEupdatePipelineUpdate a deal pipeline's title and/or description (by pipelineId from listPipelines).WRITEaddPipelineStagesAppend one or more stages to a pipeline (by pipelineId).WRITEupdatePipelineStageUpdate one pipeline stage (by stageId from listPipelineStages): rename, change description, toggle isTerminal / terminalType (WON|LOST|NEUTRAL), or set winProbability (0-100).WRITEreorderPipelineStagesReorder a pipeline's stages (by pipelineId): pass every stage id in the desired order.WRITEdeletePipelineDelete a deal pipeline (owner-only).WRITEdeletePipelineStageDelete a single pipeline stage (owner-only).WRITEgetPipelineAnalyticsPer-pipeline TRENDS for a rolling period (SEVEN_DAYS | FOURTEEN_DAYS | THIRTY_DAYS | YEAR_TO_DATE; THIRTY_DAYS is the last 30 days, not this month) from a NIGHTLY snapshot (asOfDate): stage...ADMINlistPipelineTransitionsStage-to-stage deal movement (the funnel) for a reporting period (same period values as getPipelineAnalytics), optionally narrowed to one pipelineId: per transition: deal counts, exits from the...ADMINarchiveDealsArchive many deals of one pipeline by id (restore with archiveDeal); a whole filter is the board's own select-all Archive.WRITEdeleteDealDelete a deal for good; archiveDeal hides it instead, so prefer that unless they said delete.WRITEbulkUpdateDealsOne updateDeal input for many deals (stage, close date, owners, contacts); every id must be a deal your org owns or shares, or the whole call is refused.WRITEbulkCreateDealsOnContactsA new deal per contact from a createDeal deal template (the bulk bar's Add to pipeline). propertyAttachmentMode ALL attaches each contact's properties as the bulk bar does (default NONE);...WRITEeditDealCommentReplace the body of your own deal comment (listDealComments id).WRITEdeleteDealCommentDelete a deal comment you wrote, for good.WRITEaddDealExternalLinkAdd a titled URL to a deal's Links card (getDeal externalLinks).WRITEremoveDealExternalLinkRemove a deal link.WRITElinkPipelineItemsLink two unarchived deals on your org's own pipelines; both list it (getDeal linkedItems).WRITEunlinkPipelineItemsRemove a deal link (getDeal linkedItems id).WRITEgetDealPipelineLayoutOne pipeline's field layout: each custom field with its display order, showOnCard and cardDisplayOrder (the up-to-5 fields the board card shows), and hiddenDetailFieldKeys (what the deal sheet and...READaddDealCustomFieldOptionAppend ONE option to a DROPDOWN deal custom field (id from listDealCustomFields).WRITEreorderDealCustomFieldsSet the display order of one pipeline's custom fields: pass every field id of that pipeline (listDealCustomFields), first = top.WRITEdeleteDealCustomFieldPermanently delete a deal custom-field DEFINITION (id from listDealCustomFields).WRITEsetDealCardFieldsChoose the fields every deal card on one pipeline's board shows: at most 5 field ids of that pipeline, built-ins included, in order.WRITEsetDealDetailHiddenFieldsHide fields from one pipeline's deal sheet and create/edit form, for everyone: hiddenFieldKeys REPLACES the hidden set (getDealPipelineLayout first; an empty list shows everything).WRITEgetDealDetailTabsOne pipeline's deal-sheet tabs: each tab's name and its fields in order (native:<key> or custom:<fieldId>), with the layout version.READsetDealDetailTabsReplace one pipeline's deal-sheet tabs for everyone (getDealDetailTabs first, and pass its version as expectedVersion: a stale one is refused).WRITEupdateDealExternalLinkChange a deal link's title or url (linkId from getDeal's externalLinks); an omitted one is kept.WRITElistContractTemplatesThe organization's contract templates: name, category, status (only a PUBLISHED one with a currentVersionNumber can be sent), signer roles in signing order, and the records a send asks for (uses:...READlistContractsThe organization's contracts, newest first (at most 200), with status and who signed. held marks a workflow or AI employee send waiting on a blank required value (getHeldContractDraft).READlistContactContractsA contact's contracts (as Contact A or another signer), newest first, at most 50.READlistDealContractsA deal's contracts, held drafts included, newest first, at most 50.READgetContractOne contract: its values, each signer's status (viewed, signed, declined with their reason, a deliveryProblem when their link never arrived) and short-lived PDF links (signedPdfUrl once everyone...READgetContractSendDraftStep 1 of preparing a contract: a PUBLISHED template filled for one contact (optionally a deal, and contactBId for a co-seller).READgetHeldContractDraftA held contract (a workflow or AI employee send stopped on a blank required value) reopened to fill in, shaped as getContractSendDraft.READpreviewContractThe filled PDF a contract would be (pdfUrl, short-lived) and any values that overflow their box or cannot print.WRITEpreviewContractMessagesWhat the first signers would be sent: the signing email's words (email) and the text (text), each null when no first signer is reached that way, worded by the send's own code.WRITEprepareContractStep 2: freeze a contract READY to send, with its unsigned PDF.WRITEarchiveContractTemplateTake a template out of the list and the pickers (status ARCHIVED).WRITEunarchiveContractTemplatePut an archived template back in the list and the pickers, as it was.WRITEkeepContractAsTemplateKeep a one-off contract as a template under a name and category: it joins the template list and pickers. templateId is the contract's own (listContracts, listContactContracts, listDealContracts).WRITEsendContractSend a READY contract (prepareContract) for signature: the first signers in signing order get their links by email or text, and it becomes SENT.WRITEremindContractEmail a fresh link to every signer whose turn it is; their earlier links stop working. expectedRevisionNumber as sendContract.WRITEcompleteContractRetry completing a contract whose last signature is in (sealing the signed PDF), or file and email a completed contract's signed copy to everyone again.WRITEvoidContractVoid a sent contract: every signing link stops working and the signers who were sent one are told, with reason (kept on the evidence chain).WRITEcorrectContractCorrect a sent contract on the same template version, contact and deal: input.contract as prepareContract takes it with the changes, reason (emailed to the signers whose link stops working, and...WRITEissueContractSigningLinkA working signing link for ONE signer whose turn it is (recipientId: getContract's recipients[].id), returned once for you to pass to that signer yourself.WRITEAutomations98
listWorkflowsList the organization's workflow automations (paginated, non-archived by default).READgetWorkflowFetch one workflow automation by group id: status, versions (a workflow is a stable group holding versioned definitions), the live version, the pending draft and draft validation. channels reads...READgetWorkflowVersionGraphFetch one workflow VERSION by workflowAutomationId (from getWorkflow.versions/currentVersion/pendingDraft) with its full node/edge graph: the superjson-serialized WorkflowGraph updateWorkflowGraph...READlistWorkflowRunsList runs of one workflow version (by workflowAutomationId), optionally by run status (PENDING | RUNNING | COMPLETED | PAUSED | STOPPED | FAILED | NOT_ENROLLED).READgetContentTemplateFetch one reusable template by id: name, type (EMAIL | SMS | NOTE | TASK), body, and folder.READlistContentTemplatesList the organization's reusable templates, optionally filtered by type (EMAIL | SMS | NOTE | TASK) or folderId.READlistContentTemplateFoldersList the organization's shared content-library folders (id, name, parentFolderId, displayOrder) with per-kind template counts and a file count.READlistLibraryFilesList the content library's files (Automations → Templates → Files): id, name, description, folderId, contentType.READlistEventWorkflowPayloadSamplesThe example payloads an EVENT workflow has received or been given (what its sender POSTs), to map trigger fields from.READlistWorkflowGraphRevisionsA workflow's save history, newest first: when, who (source HUMAN, AGENT or SYSTEM; actorName; agentRunId for an agent's save), the version it wrote, and diff: what changed against the save before...READlistWorkflowTablesThe organization's Workflow Tables (not archived), by name: each table's key (what rows are matched on: keyKind, e.g. COUNTY_FIPS, STATE, ZIP, FIELD_PATH, and its fallback levels in keyShape), its...READgetWorkflowTableOne Workflow Table with its rows, paged by rowLimit (default 100, at most 500) and rowOffset: keep reading while a page comes back full (rowCount excludes the DEFAULT row, which pages like any...READlistWorkflowTableChangesA Workflow Table's change history, newest first: who saved what and when, how many columns and rows changed. rowId narrows it to one row.READpreviewWorkflowTableLookupCall this before you say which row, or which value, a named contact, property, deal or appointment gets from a table: a county or key guessed from an address is not the answer.READlistWorkflowFoldersList the organization's shared workflow-folder tree (id, name, parentFolderId, displayOrder, itemCount).READgetWorkflowStatsPerformance summary for one workflow (by group id), lifetime, dry runs excluded: run counts by outcome (active/completed/paused/stopped/failed), messages sent, reply rate with its...READgetWorkflowVersionStatsPerformance summary for one VERSION (by workflowAutomationId, from getWorkflow.versions), the shape of getWorkflowStats: compare a new version against the one it replaced.READlistWorkflowPerformanceScoreboard: the org's workflows (paginated, non-archived) each with headline stats: total/active/completed runs, reply rate, and last-run time.READgetWorkflowThrottleUsageDaily send-limit usage for a throttle-backed workflow (by group id): usedToday vs dailyCap and a per-day history over the last rangeDays (1-90, clamped).READcreateWorkflowCreate a workflow automation: a new group plus its initial DRAFT version. workflowDomain is CONTACT | DEAL | PROPERTY | APPOINTMENT | EVENT.WRITEcreateOrReturnWorkflowDraftIdempotent "edit": return the existing DRAFT version under this workflow, or clone the live (or most recently paused) version into a fresh DRAFT.WRITEpatchWorkflowGraphEdit a workflow version's graph by sending ONLY THE CHANGE (updateWorkflowGraph writes a whole new graph).WRITEupdateWorkflowGraphReplace a workflow version's node/edge graph AND its triggers (to edit, patchWorkflowGraph).WRITErenameWorkflowRename a workflow version (by workflowAutomationId) and optionally update its description.WRITEpromoteWorkflowDraftShip it: promote the workflow's current DRAFT to ACTIVE (live).WRITEdiscardWorkflowDraftDiscard the workflow's current DRAFT version, if any.WRITEpauseWorkflowPause the ACTIVE version of a workflow: no new runs will start. pauseInFlightRuns=true also pauses runs already in flight; false lets them finish.WRITEupdateWorkflowSendWindowSet the workflow's SENDING SCHEDULE, the hours its messages may go out.WRITEresumeWorkflowResume the most-recently-paused version of a workflow, and wake the runs the workflow pause parked (getWorkflow.runsPausedWithWorkflow counts them): each continues at the step it had reached, and...WRITEduplicateWorkflowDuplicate a workflow into a fresh group with the given name, as a paused/draft copy that never starts by itself.WRITEdeleteWorkflowDelete a workflow (the UI's "Delete"): archives the group, pauses any active version and PERMANENTLY stops its in-flight runs; everyone mid-sequence drops out and restoring the workflow does not...WRITErestoreWorkflowUndo deleteWorkflow: bring a deleted (archived) workflow back to the list, by group id, to edit again.WRITEtriggerWorkflowRunManually start one run of a workflow's ACTIVE version against a record. recordId must match the workflow's domain: a contactId for CONTACT workflows, propertyId for PROPERTY, dealId for DEAL,...WRITEenrollInWorkflowEnroll MANY contacts in one CONTACT workflow's ACTIVE version: the app's bulk "Add to workflow" on the Contacts table.WRITEpauseWorkflowRunPause one in-flight run (PENDING or RUNNING → PAUSED).WRITEresumeWorkflowRunResume one paused run (PAUSED → PENDING) and kick its executor.WRITEstopWorkflowRunPermanently stop one run: PENDING, RUNNING or PAUSED (terminal: a stopped run cannot be resumed).WRITEresumeWorkflowVersionResume a specific PAUSED version (by workflowAutomationId), pausing the active sibling first.WRITEbulkPauseWorkflowRunsPause many runs at once by explicit id (cap 500).WRITEbulkResumeWorkflowRunsResume many paused runs at once by explicit id (cap 500).WRITErestoreWorkflowVersionAsDraftRoll back: copy an OLDER version (workflowAutomationId from getWorkflow.versions) into the DRAFT, then publish it with promoteWorkflowDraft.WRITErewriteWorkflowDraftTextStepThe publish dialog's "Rewrite for me": reword one DRAFT text step to lower its carrier-filter risk, saved on the draft.WRITEaddLibraryFileFromArtifactAdd a file the person attached (or you made) to the content library by its artifactId, under a name, with an optional description and folderId (listContentTemplateFolders).WRITEupdateLibraryFileRename a library file or change its description (fileId from listLibraryFiles); description null clears it.WRITEmoveLibraryFileFile a library file into a folder (listContentTemplateFolders), or folderId null for the root.WRITEdeleteLibraryFileTake a file out of the library for good (its name and description go).WRITErecordEventWorkflowPayloadSampleSave an example payload (a JSON object, what the sender would POST) on an EVENT workflow, so its fields can be mapped before anything arrives.WRITEdeleteEventWorkflowPayloadSampleDelete one pasted example payload for good (sampleId from listEventWorkflowPayloadSamples).WRITEupdateWorkflowPrioritySet a workflow's priority, which orders its runs and sends against the org's other workflows (higher wins): 1.25 Low, 1.5 Normal (the default), 1.75 High; any other value is refused.WRITEresumeRunsPausedWithWorkflowWake the runs a workflow pause left parked (getWorkflow runsPausedWithWorkflow) on a workflow that is live again; each restarts at the step it reached and its messages go out.WRITEmoveAndResumeParkedRunsRestart the runs a publish paused on a workflow (getWorkflow runsParkedByPublish; mostly publishes before 2026-10-23, which paused everyone in flight): moves up to limit (at most 200) of them onto...WRITEpreviewWorkflowAiTextPreview what an AI text step with this systemPrompt would write to 1 to 5 contacts, through the real generation path.WRITEcreateContentTemplateCreate a reusable template. type is EMAIL | SMS | NOTE | TASK | TASK_SET.WRITEapplyTaskTemplateRun a TASK template against a contact: creates one task, assigned to the acting user, linked to the contact (and any dealIds).WRITEapplyTaskSetRun a whole TASK_SET against a contact: creates every step as a task in one call, all assigned to the acting user and linked to the contact (and any dealIds).WRITEupdateContentTemplateUpdate a template by id (name, body, subject).WRITEdeleteContentTemplateDelete a template by id; returns the remaining templates.WRITEmoveContentTemplateToFolderMove a template into a folder by id.WRITEcreateContentTemplateFolderCreate a template folder.WRITErenameContentTemplateFolderRename a template folder by id.WRITEmoveContentTemplateFolderMove a template folder under another, or pass parentFolderId null for the root.WRITEdeleteContentTemplateFolderDelete a template folder by id.WRITEsaveWorkflowTableCreate a Workflow Table (workflowTableId omitted) or replace an existing one's name, description and columns.WRITEsaveWorkflowTableRowsCreate or replace rows (rows: a row is replaced WHOLE, never merged) and delete rows (deleteRowIds) of one table in a single write; a deleted row or a replaced cell is gone for good, so this needs...WRITEdeleteWorkflowTableArchive a Workflow Table.WRITEcreateWorkflowFolderCreate an empty workflow folder, optionally nested under parentFolderId, and return its id.WRITEmoveWorkflowToFolderMove a workflow into a folder by folderId (from listWorkflowFolders), or folderId null to ungroup it.WRITEmoveWorkflowFolderMove a workflow folder under another folder, or pass parentFolderId null to move it to the root.WRITErenameWorkflowFolderRename a workflow folder by folderId.WRITEdeleteWorkflowFolderDelete a workflow folder by folderId.WRITEreorderWorkflowFoldersPersist the display order for one sibling set.WRITEsetSkipTraceDailyCapSet the ORGANIZATION's daily cap on property-signal skip-trace workflow runs: the dailyCap getWorkflowThrottleUsage reports, shared by every PROPERTY_SIGNAL_SKIP_TRACE workflow in the org.ADMINlistFormsThe org's lead-capture forms (embed forms): name, slug, status (DRAFT | ACTIVE | INACTIVE), lifetime submissions, public URL, folderId.READgetFormFetch one lead-capture form by id - full configuration including fieldConfig (the page-and-field document: either a flat array of fields for a single-page form, or a { fields, steps,...READlistFormSubmissionsList form submissions (leads), newest first, optionally filtered to one form via formId.READgetFormSubmissionFetch one form submission (lead) by id - its submitted field values (submittedData) and the linked CRM contactId.READgetFormAnalyticsConversion funnel for one form over a date range - views, starts, submits, the start/submit/submit-of-started rates (0-1 fractions), median seconds-to-submit, plus a per-day time series. startDate...READgetFormTrafficSourcesWhere a form's traffic and submissions come from - breakdowns by traffic source, device class, and location, each with views, submits, and the submit rate.READlistFormActivityRecent per-session activity for one form, newest first, cursor-paginated via after.READgetFormActiveTimeDaily active-engagement time on one form over a date range - per day: session count and active-millisecond percentiles (p50/p90), split by submitted vs abandoned sessions. startDate and endDate...READlistFormActivityLocationsApproximate geo coordinates of recent sessions for one form, for plotting a lead map.READgetFormRoutingDistributionLead-assignment distribution for one form's round-robin pool - the number of leads routed to each assigned user. userId maps to a teammate from listTeammates.READcreateFormCreate a lead-capture form.WRITEupdateFormUpdate a lead-capture form by id.WRITEdeleteFormHARD-DELETE a lead-capture form by id.WRITEcreateFormContactLinkA link to an ACTIVE form for one contact, opening prefilled with their details; their answers land on their contact. url for an email's link, shortUrl for a text.WRITEduplicateFormCopy a form: its fields, steps and settings, never its submissions or analytics. name defaults to "<name> copy".WRITEgetAutomationMapYour organization's Automations Map.READlistAutomationMapVersionsThe Map's version history, newest first (pageId from getAutomationMap): each version's number, note, when, who, and bySession (Ask Goliath wrote it rather than a person).READgetAutomationMapVersionOne earlier version of the Map (pageId, version), with the story it was written with.READrestoreAutomationMapVersionPut an earlier Map version back, as the Map's Versions menu does: it is copied forward as the new current version, so nothing is lost and the step can be undone the same way.WRITElistScheduledTasksEvery scheduled task in your organization (yours first, then teammates', newest first), each a chat that runs Ask Goliath on a schedule as its owner: title, status (ACTIVE, PAUSED, PAUSED_ERRORS...READgetScheduledTaskOne scheduled task by id (listScheduledTasks): its instruction (what Ask Goliath is told on every run), cronExpression and timezone (a one-off has oneOffAt), abilities (actions its runs may take...READcreateScheduledTaskSchedule Ask Goliath to run instruction as the key owner: give exactly one of cronExpression (recurring, 5 fields) or fireAt (once), read in timezone (IANA).WRITEupdateScheduledTaskChange a scheduled task; only what you send changes. timing is { cronExpression or fireAt, timezone }, exactly one of the two. clearExpiresAt: true removes its end (do not send it with expiresAt).WRITEpauseScheduledTaskPause a scheduled task: it stops running until resumed.WRITEresumeScheduledTaskResume a paused task from its next occurrence; missed runs are not made up.WRITEdeleteScheduledTaskDelete a scheduled task for good (its chat stays).WRITEAI employees & Ask Goliath93
listEmployeesThe organization's AI employees: id, name, job title, status (ACTIVE = working, INACTIVE = hired but switched off), the template it started from, whether it can answer calls, and how many contacts...READgetEmployeeOne AI employee in full. abilities is what it can do RIGHT NOW, resolved (a tool missing from the stored config follows its default, and most defaults are on, so read abilities, never infer from...READgetEmployeeCaseloadThe contacts one AI employee is on, newest attachment first, offset-paged (offset, limit; total is the full count).READlistEmployeeChannelOptionsWhat an AI employee can be bound to right now: availableMailboxes (connected Gmail or Outlook inboxes shared with the organization that no employee owns yet; the id attachEmployeeMailbox takes)...READlistEmployeeSuggestionsAn AI employee's pending suggestion cards, newest first: edits it proposes to its own instructions (action), with how sure it is (confidence).READlistEmployeeRevisionsAn AI employee's saved versions, newest first (offset-paged; advance by nextOffset).READcreateEmployeeHire an AI employee.WRITEupdateEmployeeConfigChange an AI employee's configuration.WRITEupdateEmployeeIdentityRename an AI employee or change its job title or avatar, nothing else (an omitted field is kept; an empty title clears it).WRITEsetEmployeeDailyCapsSet an AI employee's own daily caps, which bound what it spends: dailyRunCap (live runs a day) and dailyCallCap (connected calls a day).WRITErestoreEmployeeRevisionPut an AI employee back to a saved version (revisionId from listEmployeeRevisions): its instructions, settings, name and job title as that version held them (the avatar is kept, and a setting that...WRITEsetEmployeeStatusSwitch an AI employee on (ACTIVE) or off (INACTIVE).WRITEattachEmployeeToContactsPut an AI employee on contacts (at most 200 ids per call; send more in further calls).WRITEdetachEmployeeFromContactsTake an AI employee off contacts (at most 200 ids per call).WRITErunEmployeesOnContactsPut AI employees on contacts and wake each pairing once (runNow, default true), and/or on a schedule (cron, timezone, maxRuns; no denser than daily). message (max 2000 chars) is an internal...WRITEremoveEmployeesFromContactsTake AI employees off contacts: they stop working them and their schedules are dropped; the history stays.WRITEattachEmployeeMailboxGive an AI employee a mailbox to email from and be woken by (mailboxId from listEmployeeChannelOptions): a connected inbox, shared with the organization, with a live connection, that no other...WRITEdetachEmployeeMailboxTake a mailbox off an AI employee (an id from getEmployee mailboxes): it stops emailing from it and is no longer woken by mail to it.WRITEdetachEmployeePhoneLineRelease a phone line an AI employee still holds from before lines were shared (an id from getEmployee legacyPhoneLines).WRITEsetEmployeeTriggerFormsSet which forms wake an AI employee when someone submits one. formIds REPLACES the set (ids from listEmployeeChannelOptions; every one must be this organization's); [] means no form wakes it.WRITEsetEmployeeDefaultAssigneesWho becomes the owner of a contact an AI employee works when the contact has no owner. mode decides what assigneeUserIds holds (teammate user ids, listTeamMembers): TEAM_RANDOM (the default, any...WRITEdeleteEmployeeDelete an AI employee, the employee page's Fire.WRITEacceptEmployeeSuggestionAccept one of an AI employee's suggestion cards (listEmployeeSuggestions): its edit lands on the employee's instructions, as the employee page's Accept does. outcome APPLIED, RETIRED (the...WRITEdismissEmployeeSuggestionDismiss one of an AI employee's suggestion cards (listEmployeeSuggestions) with a reason (NOT_RELEVANT, WRONG_TONE, WRONG_FACTS, ALREADY_DONE or OTHER).WRITEcommentOnEmployeeSuggestionComment on one of an AI employee's suggestion cards ("keep the opener shorter").WRITEcreateEmployeeAnswerWorkflowCreate the DRAFT workflow that hands an employee its contacts' inbound texts (on its lines, else the org's) or emails (its mailboxes, else any).WRITEgetContactEmployeesThe AI employees on one contact, as the contact page's card shows them. aiEmployees[].id is the attachment id setEmployeeSchedule and clearEmployeeSchedule take (agentId is the employee); status...READlistContactReplyDraftsRetired (#41897): always returns an empty list.READassignEmployeeToContactPut one AI employee on one contact, optionally on a schedule, the contact card's Add.WRITEsetEmployeeScheduleReplace (or add) the schedule of one employee on one contact (attachmentId from getContactEmployees).WRITEclearEmployeeScheduleDrop the schedule of one employee on one contact (attachmentId from getContactEmployees).WRITEstopEmployeeRunsStop what one AI employee is doing on one contact right now (getContactEmployees' isWorkingNow).WRITEcancelEmployeeFollowUpCancel a follow-up an AI employee booked on a contact before it runs (followUpId: a FOLLOW_UP row's id from getContactEmployees' upcomingAgentRuns).WRITEdiscardEmployeeReplyDraftRetired (#41897): always refused, since no reply is held any more.WRITEgetAgentTurnOne message sent to Ask Goliath (conversationId, turnId): status RUNNING, WAITING_FOR_CALLER (answer questions with answerAgentQuestions), COMPLETED (a card only Goliath answers is inAppCard),...WRITElistAgentConversationsThe key owner's own Ask Goliath chats, newest first, with appName (the key that last talked in it).WRITEstartAgentConversationStart a new Ask Goliath chat as the key owner with its first message; it shows in their chat list as "via" this key's name.WRITEprepareAgentConversationA voice assistant warming Ask Goliath up while the person is still speaking, before startAgentConversation with spoken.WRITEsendAgentMessageSend a message in one of the key owner's chats (conversationId), as if they typed it.WRITEanswerAgentQuestionsAnswer the questions the latest reply ended on (a question or an approval) as the key owner's click would: answers maps each question id to a label, a list of labels, free text, or {"other": "text"}.WRITEcancelAgentTurnStop the reply to one message (conversationId, turnId); changes it already made stay made.WRITEsubmitFeedbackSend our team a BUG report, FEATURE_REQUEST or QUESTION as the key owner: a one-line title, the message (10+ characters) and optional details.WRITEaddMemoryEntriesAdd conversation records from another system to your memory, idempotent on externalId.IMPORTlistSpaceRootsLibrary's roots (files and folders only; Team's templates, forms, contracts and tables: listContentTemplates, listForms, listContractTemplates, listWorkflowTables).READlistSpaceFolderOne folder's files and folders only (a root when folderId is omitted).READgetSpaceItemOne folder or file by id, with its path, owner, creator, current version and what you may do to it.READsearchSpaceItemsFind folders and files by NAME (case-insensitive substring) across everything you can see: at most 50, most recently changed first.READgetSpaceTextContentThe text of a text file (Markdown, JSON, CSV, HTML, code, plain text): up to 2 MB, truncated when cut.READgetSpaceTextLinesA text file's lines, numbered, a page at a time (N| line; up to 12000 characters a page from startLine, totalLines and endLine say where you are).READreadSpaceSheetA spreadsheet's cells (.xlsx, CSV, TSV) by A1 range (any size, any sheet) instead of reading it whole: range B2:F40, C7, A:C (whole columns) or 5:9 (whole rows), default every filled cell; sheet...READsearchSpaceTextFind words INSIDE one text file: the numbered lines (N| line) holding any of terms (case-insensitive, matches inside longer words), with contextLines (default 2) around each and … between blocks:...READlistSpacesSharedWithMeThe "Shared with me" view: folders and files teammates shared with you directly, newest first.READlistRecentSpaceItemsThe "Recent" view: files you can see (pages and documents included), most recently CHANGED first, limit of them (default 100, at most 200), each with createdAt and createdBy. "What did I make...READlistSpaceTrashThe "Trash" view: what was trashed (by anyone) that you can see, with trashedAt.READlistSpaceItemVersionsA file's saved versions, newest first: at most the newest 200: number, size, who saved it, and which is current.READlistSpaceItemActivityA folder or file's history, newest first (only the latest 50 events, so an older event's absence proves nothing: created, renamed, moved, edited, shared, trashed, restored, downloaded, attached)...READgetSpaceAccessListA folder or file's audience (ORGANIZATION = everyone in the org, OWNER = the owner of My files, RESTRICTED = only people granted access, here or on a parent folder, SYSTEM = everyone, read-only)...READsearchSpacesOne search across everything the Library rail reaches (FILES (folders and files), LIBRARY (templates, contracts, contract templates, forms, tables, pages) and DATA (uploads, downloads)) matching...READlistSpaceContactFilesRecords › Contact files: attachments and voicemails contacts sent or received, newest first.READlistSpaceCallsRecords › Calls: the organization's calls, newest first: direction, when, how long, whether recorded, the contact, status and disposition.READlistMemoryShelvesMemory: the shelves you may open (PERSON (yours), TEAM (the organization's), EMPLOYEE and CONTACT (only the contacts the key owner may open in the CRM)) and how many subjects each list shelf holds...READlistMemorySubjectsMemory: one list shelf's subjects (EMPLOYEE or CONTACT: the AI employees or contacts Goliath remembers things about; contacts only as the CRM lets the key owner open them), newest first, with how...READgetMemorySubjectNotesMemory: one subject's notes (shelf PERSON with no subjectId is yours, TEAM is the organization's, otherwise the subject's id) in reading order (rules, preferences, decisions, procedures, facts …),...READcreateSpaceFolderCreate a folder at a root (My files or Team; folderId omitted) or inside a folder you can edit.WRITEcreateSpaceTextFileSave text as a new file (a report, notes, a JSON or CSV export, a memo) in a folder you can edit.WRITEsaveSpaceTextFileSave new text as the next version of a text file you can edit (earlier versions are kept and can be restored in the app).WRITEinsertSpaceTextLinesInsert lines into a text file by line number (from getSpaceTextLines), every existing line left exactly as it was (headings, an intro, a summary) as a new version, like a save. beforeLine 1 is the...WRITEeditSpaceTextLinesReorganize or rewrite part of a text file by line number (from getSpaceTextLines), as one new version like a save: each edit replaces a range startLine-endLine with text (empty deletes it), MOVES...WRITEeditSpaceSheetCellsChange cells of a spreadsheet (.xlsx, CSV, TSV) by A1 address as one new version, without re-sending the sheet: each of edits writes values (rows of cells) right and down from its start cell (a...WRITEfilterSpaceSheetA filtered list from a spreadsheet as a NEW CSV beside it, every row read on the server.WRITErenameSpaceItemRename a folder or file you can edit.WRITEmoveSpaceItemsMove up to 200 items into a folder or a root (destination.folderId omitted), all or nothing.WRITEcopySpaceItemCopy a FILE into a folder or root you can edit.WRITEcopyUploadedFileToSpaceCopy an upload's original file (listFiles uploads[].file.id) into a folder or root you can edit, as Uploads' "Copy to My files" does: a new file of your own, independent of the upload.WRITEfileLibraryItemsOnContactPut Library items on a contact's Files & Photos, as the contact's Attach › From Library does: a snapshot copy of each file (up to 20, 300 MB each), and a PAGE as its PDF printed now as you see it.WRITEfileLibraryItemsOnDealfileLibraryItemsOnContact for a deal's files: a snapshot copy of each Library file, a page as its PDF.WRITEsavePagePdfSave a PAGE as a PDF file in Library ("turn this into a PDF", "give it to me as a PDF"): printed now as you see it, saved where the files you make for this person go (their chosen folder, else My...WRITEsetAgentFilesFolderChoose where the files you make in this person's chats are saved for them: a folder they can edit (folderId), or null for the root of My files, the default.WRITEtrashSpaceItemsMove up to 200 items (folders with everything in them) to the trash.WRITErestoreSpaceItemsRestore trashed items to where they were: exactly what was trashed together comes back.WRITEdescribeSpaceItemSet (or clear, with description null) the short description shown under a folder or file you can edit.WRITErestoreSpaceItemVersionMake an older version of a file you can edit current again, as a NEW version: nothing is lost; the version it replaces stays in the history.WRITEsetSpaceAccessModeRESTRICTED closes a folder or file (and everything in it) to all but its owner and the people it is shared with; INHERIT opens it back to the audience of the folder it is in, which can WIDEN who...WRITEsetSpaceGrantShare a folder or file (and everything in it) with one teammate (userId, an active member of your organization) as VIEWER, EDITOR or MANAGER, or stop sharing with role null.WRITEdeleteSpaceItemsForeverPERMANENTLY delete items that are already in the trash: rows, every version and the stored bytes.WRITEaddMemoryNoteMemory: add a note to a shelf the key owner may open, as a person stated it, pinned.WRITEeditMemoryNoteMemory: correct a note's words (noteId from getMemorySubjectNotes).WRITEpinMemoryNoteMemory: pin (pinned true) or unpin a note.WRITEforgetMemoryNoteMemory: forget a note, with an optional reason.WRITErestoreMemoryNoteMemory: bring a forgotten note back (noteId from getMemorySubjectNotes with retired: true).WRITEgetMemoryDreamLogMemory: what dreaming (the nightly pass that merges, rewrites and retires notes) did to one subject, only the newest limit entries (at most 50; no paging back, hasMore says older ones exist).READundoMemoryDreamMemory: undo one dreaming change (eventId from getMemoryDreamLog): what it retired or merged comes back, what it wrote is forgotten.WRITEqueueMemoryDreamMemory: queue one dreaming pass now for the key owner's own PERSON shelf (no subjectId), outside the nightly run: a model run that spends, at most $0.50, so it needs the person's approval.WRITECommunication63
listCommunicationChannelsWhat can I send from? All the organization's phone lines (each with its user and canSendSms) and your mailboxes; your lines have user.id = currentUser.id. "My number" to text from or give a...READgetSendingLimitsHow much can we text and email today? Per line, brand (team) and mailbox: used / cap / remaining today (text segments; null cap = no limit; a mailbox also meters recipients, and the tighter of its...READgetMeetingTranscriptThe full speaker-by-speaker transcript behind a meeting-summary note, as a PAGEABLE window of ordered { speaker, text } utterances.READlistMeetingSummariesThe organization's notetaker calls created after after, in any status, oldest first: each call's status (COMPLETED and FAILED are terminal), summary note id and text (null when the key owner may...READrenderContentTemplateRender a content template against a contact: collapse [a|b] spintax and substitute merge fields: the CONTACT vocabulary updateWorkflowGraph lists ({{firstName}}, {{contactPropertyAddress}},...READgetSendConsentAttestationWhether the organization's send consent attestation stands: an org admin's one-time statement that every contact the organization texts or emails through the developer API consented.READgetTextingRegistrationStatusThe organization's A2P 10DLC texting registration, STATUS ONLY: each brand (status, statusLabel, useCaseLabel) and its sending campaigns (sendReady true = approved and able to text;...READsendTextSend an SMS to a phone number (E.164, e.g. +13235550100; an unparseable number is rejected up front with INVALID_PHONE_NUMBER) as the key owner.WRITEsendEmailSend an email as the key owner through their connected Gmail/Outlook mailbox.WRITEclearChannelSuppressionLift an organization-wide opt-out (suppressChannel's undo): the value can be texted, called or emailed again on that medium, on every contact carrying it.WRITEclearContactDoNotContactTake one contact off Do Not Contact, as the contact page's toggle does, so texts, calls, emails and workflows reach them again.WRITEsuppressChannelValue-level opt-out: block a phone number or email address for your organization on one medium (SMS, VOICE or EMAIL).WRITEsetSendConsentAttestationAttest (attested: true) or withdraw (false) the organization's send consent: the org admin who owns this key states, once for the whole organization, that every contact it texts or emails through...ADMINgetCallWorkspaceSettingsThe dialer's settings (Settings → Calls): auto-advance, the after-call actions in order, callCardFieldIds (contact custom fields shown on the call card) and callerIdTableColumnId; plus a person's...READupdateCallOutcomeRecord or correct a call's outcome (disposition) and its note (at most 280 characters), as the dialer's outcome gate does.WRITErenameVoicemailTemplateRename a voicemail drop (templateId from getCallWorkspaceSettings).WRITEreorderVoicemailTemplatesSet the order of a person's voicemail drops: items are { id, displayOrder } for that userId.WRITEdeleteVoicemailTemplateDelete a voicemail drop.WRITEsetCallerIdTableColumnSet the PHONE_LINE Workflow Table column the dialer reads each contact's outbound caller ID from (listWorkflowTables), or null to stop.WRITEreorderAfterCallActionsOrder the after-call actions the dialer offers: items list every kind once with its displayOrder.WRITEsetCallCardFieldsReplace the contact custom fields shown on the call card (at most 8, in order).WRITElistInboxThreadsThe inbox: text conversations, calls and email threads in ONE most-recent-first feed, the read for questions that name no contact ("did they text back", "what is unread"; listContactActivities...READgetTextThreadMessagesThe messages of ONE text conversation, with full bodies, newest first by default.READlistContactTextThreadsEvery text thread ONE contact has, across the org lines the key owner may see.READgetEmailThreadEvery message in one email thread, with full plain-text bodies, OLDEST FIRST (ordered by internalDate ascending): so the latest reply is the LAST element, not the first.READgetCallRecordingOne call's RECORDING and TRANSCRIPT, plus the outcome logged for it: a time-limited signed audio URL (recordingUrl), the speaker-by-speaker transcript ({ speaker, text, start, end }), the AI...READmarkInboxThreadsReadMark inbox rows READ (isRead: true) or UNREAD (false), the app inbox's read/unread.WRITEsetInboxThreadStarredStar (starred: true) or unstar a TEXT thread for everyone in the organization, so it shows under the inbox's Starred filter (listInboxThreads starredOnly). textConversationId is a MESSAGE row's id.WRITEsetInboxThreadHandledMark a TEXT thread HANDLED, the inbox's "no reply needed": it leaves Needs reply (channel NEEDS_RESPONSE) for everyone in the organization until the contact texts again. textConversationId is a...WRITEdismissInboxItemDismiss one inbox row, the app inbox's Dismiss: it is hidden from the inbox of the line or mailbox it belongs to, and listInboxThreads no longer returns it. itemId is the row's id and itemType its...ADMINsearchAvailablePhoneNumbersSearch Twilio for buyable phone numbers, optionally narrowed by areaCode (a 3-digit US area code).READgetVoiceTrustSummaryOne org-wide picture of caller-trust registration: the carrier registration that keeps outbound calls from showing as "Spam Likely". accountState is chosen by loudest call to action, not by...READgetPhoneRoutingWho answers an inbound call or text: the call routing the Automations Map's Phone calls area shows, and who gets a new contact. orgDefaultRingPolicy is the default every line follows unless it has...READgetPhoneLineRingPolicyOne line's own ring policy (its override of the org default), in getPhoneRouting's shape; null when the line follows the default. phoneLineId from getPhoneRouting or listCommunicationChannels.READsetOrgDefaultRingPolicyReplace the org's default call routing (every line without its own): humanStage (targetKind, ringSeconds 5 to 60, its target, an optional schedule) then aiStage (AI employees whose calls are on,...WRITEsetPhoneLineRingPolicyReplace one line's own call routing, shaped as setOrgDefaultRingPolicy's (read it with getPhoneLineRingPolicy first). policy null deletes it and the line follows the org default.WRITEprovisionPhoneNumberBuy a phone number from Twilio (a RECURRING monthly charge) and assign it to targetUserId.ADMINgetDialingPoolThe org's bulk-dialing rotation: each line (id, number, label), its calls today against its daily limit and restUntil, and the day's room.READgetMyDialingRoomCan the key owner start a call list now? null: they have no phone line to call from (an admin assigns them a number).READaddNumbersToDialingPoolPut numbers the org already owns (listCommunicationChannels) into the dialer's rotation.WRITEremoveNumbersFromDialingPoolTake numbers out of the rotation; they stay owned.WRITErestDialingPoolNumberBench one rotation line for the standard rest window: it returns on its own at restUntil (say the date).WRITEunrestDialingPoolNumberReturn a benched line to the rotation now, whoever benched it.WRITEsetPhoneLineLabelName a phone line ("Facebook campaign"), or label null to clear it.WRITEsetPhoneLineRunsOnMetaAdsMark a tracking number as one the org runs only on Meta ads (its calls are attributed there), or false to clear it.WRITEbuyDialingPoolNumbersBuy phone numbers straight into the bulk-dialing rotation: each is a RECURRING monthly charge.ADMINlistNotificationsList your in-app notifications (the bell feed), newest first.READgetNotificationCountsUnread and read counts for your own notification feed (the badge numbers).READgetAvailableNotificationTypesThe catalog of notification types you can filter by: each with its notificationType (the exact string to pass as notificationTypeFilter on listNotifications / getNotificationCounts), a human...READmarkNotificationsReadMark specific notifications read or unread by id.WRITEsetEmailDigestCadenceWhen your notification emails go out: AS_IT_HAPPENS (one email a few minutes after a notification) or DAILY (one email each morning at 8am in your timezone; AI hand-offs and workflow pages still...WRITEmarkAllNotificationsReadMark your WHOLE notification feed read (isSeen: true) or unread (false). userId must be your own (getMyProfile currentUser.id); any other is refused.WRITEmarkContactNotificationsReadMark every one of your notifications about one contact read.WRITEdeleteNotificationsDelete notifications from your feed for good, by id (listNotifications).WRITEskipOnToday"Not now": the row leaves the key owner's Today until their next local day, or sooner when something newer happens (anchorAt: when the row's event happened). subjectGrn is <Model>_<id> of what the...WRITEclearOnToday"Dealt with": the row leaves the key owner's Today until something newer than anchorAt happens to it. subjectGrn is <Model>_<id> of what the row is about (TextConversation, EmailThread, Deal,...WRITEhideOnToday"Don't show this again" on the key owner's Today, until unhideOnToday. subjectGrn is <Model>_<id> of what the row is about (TextConversation, EmailThread, Deal, Call, Task); kind is TODAY.WRITEmarkWrongOnToday"This is wrong": a hide with the person's reason and an optional note (at most 280 characters). subjectGrn is <Model>_<id> of what the row is about (TextConversation, EmailThread, Deal, Call,...WRITEunhideOnTodayShow a row again: undoes a skip, hide or "this is wrong". subjectGrn is <Model>_<id> of what the row is about (TextConversation, EmailThread, Deal, Call, Task); kind is TODAY.WRITEhideTaskSourceOnTodayHide from the key owner's Today every task one workflow (WorkflowGroup_<id>) or AI employee (Agent_<id>) made.WRITElistCatchUpCardsThe key owner's Catch up deck, ranked as the app deals it: each card's id, kind, the sentence it asks (ask, else title), its rows (bundleRows, each defaultChecked) and suggestionIds. nextCursor...READdecideCatchUpCardDecide one HARVEST or BUNDLE card (family; the others are answered through their own operations) as the decision bar does, on the person's word: verb ACCEPT or DISMISS, shownIds every row the card...WRITEundoCatchUpDecisionTake back a decideCatchUpCard: the same cardId and verb, suggestionIds the rows it decided (its ticked rows less remainingIds), and for an ACCEPT setAsideIds its unticked shownIds (only rows it...WRITETasks & calendar29
listMyTasksThe key owner's OWN to-do queue (appointments, never OVERDUE here: listAppointments).READlistContactTasksList every to-do task on one contact (by contactId from findContacts/getContact/listMyTasks): title, description, dueDate, completedAt, and assigned participants.READcreateTaskOnContactCreate a to-do task on a contact: one line item (title, optional description, due day, assignees) in someone's queue, checked off with completeTask; NOT a calendar event (createAppointment) and...WRITEcreateTaskOnDealCreate a to-do task on a deal with no contact: pipeline work that belongs to the deal (order the title search, chase the inspection report). dealId from findDeals/getDeal. createTaskOnContact's...WRITEupdateTaskFix an existing task by taskId + its linked contactId (from listMyTasks or listContactTasks): title, description, taskType, dueDate (ISO, with timezone), timezone, or participants (teammate...WRITErescheduleTasksMove MANY tasks to ONE due date in one call ('all my overdue tasks to tomorrow'): taskIds (up to 200, from listMyTasks) OR dueBefore + expectedCount: the key owner's own open tasks due before...WRITEdeleteTaskPERMANENTLY delete ONE task by taskId + its contactId: gone from the contact and the queue with NO undo, so ALWAYS confirm with the user, naming the task.WRITEcompleteTaskMark a task complete by taskId + its contactId (listMyTasks/listContactTasks).WRITEcompleteTaskByIdComplete a task by taskId ALONE, for tasks with NO contact (listMyTasks contact: null; typically deal tasks).WRITEdeleteTasksdeleteTask for many: items [{ id: taskId, contactId }] (up to 200), each task on its own contact; returns deletedCount.WRITEbulkCreateTasksOnContactsThe Contacts bulk bar's Add task: ONE task (createTaskOnContact's rules) on each of contactIds, as a background task (bulkTaskId, getBulkTask). assignToPointPerson gives each contact's task to...WRITEupdateTaskOnDealupdateTask ONLY for a row whose contact is null, by taskId + its dealId (listMyTasks deals); one with a contact is refused (use updateTask), an appointment too, and for a non-admin key one it is...WRITEdeleteTaskOnDealdeleteTask ONLY for a row whose contact is null, by taskId + its dealId; refused like updateTaskOnDeal for a contact (use deleteTask), an appointment (deleteAppointment) or a task the non-admin...WRITEclearStaleWorkflowTasksClear the key owner's stale workflow tasks: open to-dos a workflow made, on their list alone, due more than 7 days before today in timezone (an IANA zone).WRITEcancelTaskClearUndo a clear inside its 10 seconds (CANCELLED, nothing changed); ALREADY_STARTED means use restoreClearedTasks.WRITErestoreClearedTasksBring back the tasks a clear removed (for 30 days after it), by the clear's bulkTaskId.WRITElistAppointmentsList appointments: org-wide for a team-admin key, the key owner's own otherwise (MEMBER keys always only their own, whatever the filters).READcheckAvailabilityLive conflict check for a proposed slot: run it BEFORE createAppointment, and before moving a time with updateAppointment.READlistAppointmentRemindersThe organization's appointment reminders: each with its steps (one SMS each, its message and amountBefore + unitBefore lead time, longest lead first) and isGlobal (true on the flagged default).READgetMyAvailabilityScheduleThe key owner's saved availability schedule: timezone, weeklyHours, dateOverrides; null if never saved: booking then uses Mon-Fri 9:00-17:00 in a fallback zone (America/New_York, or a booking...READcreateAppointmentCreate an appointment: title, timezone, startDate, endDate; optional location, description, contactIds (accessible to the key owner), participant userIds (listTeammates),...WRITEupdateAppointmentUpdate an appointment by id (listAppointments): title, times, location, description, outcome; addUserIds/removeUserIds, addContactIds/removeContactIds; switch or clear the reminder with...WRITEdeleteAppointmentDelete an appointment by id (from listAppointments).WRITEcreateAppointmentReminderA reminder TEXTS REAL CONTACTS automatically.WRITEupdateAppointmentReminderA reminder TEXTS REAL CONTACTS automatically.WRITEsetDefaultAppointmentReminderTurn "Run for every appointment" on or off for one reminder (appointmentReminderId), its messages and timing untouched. isGlobal: true makes it the org default and clears any previous one (an org...WRITEdeleteAppointmentReminderDelete a reminder by appointmentReminderId.WRITEsetMyAvailabilityScheduleCreate or replace the key owner's availability schedule, a FULL replacement: read getMyAvailabilitySchedule and send back a modified copy, every override to keep included.WRITEgetBulkTaskStatus of an async bulk task by the bulkTaskId an async op returned (addPropertiesToList and the like): status (CREATED = queued, PROCESSING = being applied, COMPLETED, FAILED = the change was NOT...READFiles & library21
listFilesThe Files list, newest first: uploads (imports (status, type, file name, rows, who and when; the id is the fileProcessingTaskId for getUploadReport) and downloads (standalone exports) the id is...READgetUploadReportOne upload's report: what its report sheet shows: rows in the file, how many contacts or properties it created, matched to existing records, restored, merged, skipped, failed or duplicated, and...READlistUploadReportRowsThe rows of one upload's report in one bucket (ALL_ROWS, CREATED, MATCHED, RESTORED, MERGED_AFTER_IMPORT, DUPLICATE_ROWS, SKIPPED, FAILED): the row number, its outcome and reason, the original CSV...READgetExportReportOne export's report, by dataExportId (a listFiles downloads id, or the one a bulk task returns): its type, rows, the saved filter it was run from, and its skip-trace and enrichment outcomes and spend.READrenameDataExportRename an export's file.WRITEdeleteDataExportDismiss a FAILED standalone export from the Files list (the row is kept for the record).WRITEdeletePendingUploadPERMANENTLY remove an upload that is still waiting for review (not yet imported).WRITElistExportConfigurationsThe org's saved export presets (the download dialog's row shapes): id, name, description, and which one is the default the dialog opens with.READsetDefaultExportConfigurationMake one export preset (listExportConfigurations id) the org's default in the download dialog, for everyone.WRITEdeleteExportConfigurationDelete an export preset for the whole org, for good (listExportConfigurations id).WRITErenameUploadedFileRename an uploaded file (listFiles uploads[].file.id, or a deal's or contact's file).WRITEexportContactsExport contacts to a spreadsheet, the download dialog's Start.ADMINskipTraceContactsBulk skip trace contacts for phones and emails.ADMINexportPropertiesExport properties (esIds) to a spreadsheet.ADMINskipTraceAndExportPropertiesBulk skip trace properties (esIds) and export owners, phones and emails to a spreadsheet.ADMINskipTraceAndCreateContactsFromPropertiesBulk skip trace properties (esIds) and make a contact for each owner, into an export list, plus contactListIds and enrolled in contactWorkflowIds (which can text or email them).ADMINstartLibraryFileRunStart a run on a Library file (a .csv, .xlsx or .xls spreadsheet; spaceItemId from the chat trailer or searchSpaceItems): a skip trace finds owner phones and emails, a tag puts its properties on a...WRITEmapLibraryFileRunMap a run's columns with the import mapper (up to a few minutes). skipTrace is true for a SKIPTRACE run and false for TAG_PROPERTIES.WRITEreviseLibraryFileRunChange how a run maps the spreadsheet's columns, in the person's words (message), then read previewLibraryFileRun again. skipTrace is true for a SKIPTRACE run and false for TAG_PROPERTIES.WRITEpreviewLibraryFileRunThe first rows of a mapped run as it reads them: for a skip trace each row's lookups (inputs: whose owner, at which address), for a tag the properties.READconfirmLibraryFileRunRun it: the step the Files review's confirm runs.WRITEAccount & team91
getIntegrationSetupUrlsIn-app settings page URLs where a human connects an email account (Google/Microsoft) or sets up Twilio phone numbers for calling/SMS.READgetMyProfileFetch the key owner's own profile (id, name, email, phone number (personal, via updateMyProfile; lines: listCommunicationChannels), profile picture URL) plus WHO THEY ARE IN THE ORGANIZATION and...READgetMyCapabilitiesThe key owner's own permissions: CHECK THIS BEFORE OFFERING OR ATTEMPTING A GATED ACTION, or saying why one is unavailable.READgetOrganizationAreasOfOperationThe organization's markets: regions and drawn polygons; null until set.READlistDirectMailLettersThe letters on contacts you can see (Automations → Letters), newest first: totalCount, then a page (limit default 50, offset) of contactName, campaignLabel, workflowName, mode, status (QUEUED,...READupdateMyProfileUpdate the key owner's own profile.WRITElistIntegrationsEvery integration on the app's Integrations page and whether it is CONNECTED, in one read: currentUser.connectedEmailIntegrations (the key owner's own Google/Microsoft mailboxes; email is per...ADMINupdateOrganizationAreasOfOperationReplace the organization's markets: {version: 1, regions, polygons, updatedAt}, a region {kind: "county"|"city"|"zip", fips|cityId|zip, label} (searchCounties/searchCities).ADMINdisconnectSlackDisconnect the organization's Slack workspace (the Integrations page's Slack Disconnect).ADMINdisconnectCallToolsDisconnect CallTools: revokes the organization's CallTools key and the webhook automations Goliath created there, so dispositions stop syncing.ADMINdisconnectSmrtPhoneDisconnect the smrtPhone dialer for the organization; its calls stop syncing.ADMINdisconnectDialerDisconnect a campaign dialer, provider ENZO or READYMODE, with EVERY campaign the organization linked to it (listIntegrations shows them); their calls stop syncing.ADMINdisconnectFacebookLeadAdsDisconnect Facebook Lead Ads for the key owner's own Facebook account.ADMINdisconnectDirectMailDisconnect one direct-mail provider connection by connectionId (from listIntegrations directMailConnectionQuery.list).ADMINdisconnectPhoneEnrichmentProviderDisconnect a phone-enrichment provider by providerKey (provider.key from listIntegrations phoneEnrichmentQuery.providers, e.g. Trestle); phone checks through it stop.ADMINsetSuggestionAudienceSet who contact suggestion cards go to: WHOLE_TEAM or POINT_PERSON.ADMINgetLineIntakeAssignmentsEach phone line's own intake assignment (who gets the contacts its inbound traffic creates); null when the line follows the org default (getPhoneRouting's defaultInboundIntakePolicy).READgetMetaPageIntakeAssignmentsEach Facebook Page's own intake assignment (who gets the contacts its Lead Ads create), through the key owner's own Facebook sign-in as listIntegrations reads the Pages; null for a Page nobody has...ADMINgetWorkflowIntakeAssignmentOne EVENT workflow's intake assignment (who owns a contact its find/create step creates); assignmentPolicy null when it has none, workflowGroup null when the id is not one of the org's workflows.READsetIntakeAssignmentReplace who gets the contacts an owner's inbound traffic creates: assigneeUserIds (in order; 2+ rotate), participants, teams, tags, AI employees attached (agentAssigneeIds) and workflows fired...ADMINclearIntakeAssignmentDelete an owner's intake assignment for good (its people, teams, employees, workflows and rotation place); a line then falls back to the org default, and an ORG clear deletes that default, so a...ADMINgetOrganizationSettingsYour organization's profile and org-wide settings in one read: name, booking-link slug, websiteUrl, timezone (null = never set, not UTC), alwaysExcludeDncTexts (texts skip National DNC numbers),...READsetMyTimezoneSet the key owner's own time zone (an IANA id such as "America/Chicago"); null or omitted CLEARS it, so their times fall back to the organization's zone (resolvedTimezone says which zone applies now).WRITErenameOrganizationRename the organization.ADMINsetOrganizationTimezoneSet the organization's own clock: an IANA zone the product schedules in ("America/Chicago"; EST, CST, MST, AZ, PST and HST are accepted and normalized).ADMINsetOrganizationSlugSet the organization's booking-link slug: lowercase letters, numbers and hyphens, not starting or ending with a hyphen, at most 100 characters.ADMINsetOrganizationTextDncSkipTurn "Always skip National DNC numbers when texting" on or off.ADMINsetOrganizationAiLineHeadStartHow long, in seconds (0 to 3600), a person sharing a line with an AI employee gets to answer a new text before the AI replies.ADMINsetOrganizationTextReplyLinePolicyWhich line a contact's text composer opens on: USER_PRIMARY_LINE (the sender's own line) or LAST_THREAD_LINE (the line the contact last talked to, which widens who may text from a line).ADMINsetOrganizationCallLinePolicyWhich line a manual dial to a contact defaults to: ASK_BEFORE_DIALING (ask when the contact last called on another line), USER_PRIMARY_LINE (the caller's own line) or LAST_CALL_LINE (the contact's...ADMINsetOrganizationInboxDefaultViewWhat the inbox shows before a person chooses: INDIVIDUAL (their own lines) or TEAM (every line, for members who may view all phones; it grants no one that permission).ADMINsetOrganizationOutboundPause"Pause everything": paused: true stops every automated outbound message (workflow texts and emails, AI employee texts, emails and calls, drips, mail) until it is turned off; queued work waits and...ADMINsetOrganizationLeadRoutingWho gets the new leads a property-signal skip trace creates: active members' user ids (listTeammates).ADMINlistTeammatesFuzzy-search ACTIVE teammates by name, email or phone (optional searchTerm; omit it for an alphabetical page).READlistTeamMembersList EVERY member of your organization with their membership facts: the roster.READgetTeammatesByIdsResolve teammate USER IDS to names: pass userIds, get back id, firstName, lastName, email for each.READcountOutboundTextsHOW MANY TEXTS WENT OUT in a time window: one call, exact, live (not a nightly snapshot).READgetTeamCallStatsPer-member CALL COUNTS AND TALK TIME in a time window: one call, exact, live (not a nightly snapshot).READgetMemberActivityWHAT ONE PERSON DID in a time window ("what did I do today", "how was my week", "what did Sam get done yesterday") in ONE call: their own texts (sent/delivered/failed), calls (outbound, inbound,...READlistTeamInvitesList the organization's team invitations: pending (isAlive: true) and spent/revoked (isAlive: false), single-use and permanent; acceptUrl is a full link.ADMINcreateTeamInviteCreate a team-member invitation. userType: ADMIN or MEMBER (default MEMBER).ADMINrevokeTeamInviteRevoke a team invitation by id: the one this chat created, else match it in listTeamInvites.ADMINresendTeamInviteRe-send a team invitation by id (from listTeamInvites): the same invitation email goes out again to the same address.ADMINemailPermanentTeamInviteEmail the organization's PERMANENT (reusable) invite link to 1-50 addresses per request; duplicates are sent once.ADMINchangeTeamMemberRoleChange a teammate's ROLE, the team page's Change Role: ADMIN (every permission, and the role every ADMIN-scoped operation needs; moving to it drops the member's permission settings) or MEMBER...ADMINremoveTeamMemberRemove a teammate from the team, the team page's Remove from team.ADMINrestoreTeamMemberRestore a removed (SUSPENDED) teammate to the team, the team page's Restore to team.ADMINgetTeamMemberCapabilitiesA teammate's permissions, as Manage permissions on their row shows them: every capability they HOLD (one missing is one they do not have). userId comes from listTeamMembers.ADMINgrantTeamMemberCapabilityTurn ONE permission on for a teammate, a switch in Manage permissions on their row.ADMINrevokeTeamMemberCapabilityTurn ONE permission off for a teammate, the same switch and the same capabilities as grantTeamMemberCapability, which turns it back on.ADMINgetTeamAnalyticsOverviewTeam performance (SEVEN_DAYS | FOURTEEN_DAYS | THIRTY_DAYS | YEAR_TO_DATE; default THIRTY_DAYS): totals, deltas, per-agent rows.ADMINgetTeamActivityTimeseriesDaily team activity rows for a reporting period (same period values as getTeamAnalyticsOverview): calls, texts, emails, tasks, appointments, active agents, and new leads per day.ADMINgetGoalPlanYour goals for the month containing periodStartDate (YYYY-MM-DD): draftPlan (being edited) and activePlan (published), either null.READcreateGoalPlanOpen a DRAFT goal plan for the month containing periodStartDate, seeded with the active plan's commission goals; an existing draft is returned instead.WRITEupsertCommissionGoalSet a commission target on a DRAFT plan: targetCents (> 0, cents), metric EARNED | TOTAL, pipelineId (null = all pipelines).WRITEupsertPersonalGoalAdd (no id) or edit (id) a personal goal on a DRAFT plan: title, optional description and displayOrder. goalPlanId/goalId from getGoalPlan.WRITEdeletePersonalGoalDelete a personal goal from a DRAFT plan for good; updatePersonalGoalStatus ARCHIVED keeps it. goalPlanId/goalId from getGoalPlan.WRITEupdatePersonalGoalStatusMark a personal goal ACTIVE, COMPLETED or ARCHIVED, on a draft or active plan (not an archived one). goalPlanId/goalId from getGoalPlan.WRITEpublishGoalPlanPublish a DRAFT plan (planId from getGoalPlan): it becomes the month's active plan, the one Agent Performance tracks, and the previous active plan is archived.WRITEgetTeammateGoalPlanA teammate's plan (userId, ADMIN; the key owner must be an org admin who sees the team directory): getGoalPlan for them.ADMINcreateTeammateGoalPlanA teammate's plan (userId, ADMIN; the key owner must be an org admin who sees the team directory): createGoalPlan for them.ADMINupsertTeammateCommissionGoalA teammate's plan (userId, ADMIN; the key owner must be an org admin who sees the team directory): upsertCommissionGoal for them; ids from getTeammateGoalPlan.ADMINupsertTeammatePersonalGoalA teammate's plan (userId, ADMIN; the key owner must be an org admin who sees the team directory): upsertPersonalGoal for them; ids from getTeammateGoalPlan.ADMINdeleteTeammatePersonalGoalA teammate's plan (userId, ADMIN; the key owner must be an org admin who sees the team directory): deletePersonalGoal for them (for good; ARCHIVED status keeps it); ids from getTeammateGoalPlan.ADMINupdateTeammatePersonalGoalStatusA teammate's plan (userId, ADMIN; the key owner must be an org admin who sees the team directory): updatePersonalGoalStatus for them; ids from getTeammateGoalPlan.ADMINpublishTeammateGoalPlanA teammate's plan (userId, ADMIN; the key owner must be an org admin who sees the team directory): publishGoalPlan for them; confirm with the user first.ADMINlistTeamsThe organization's teams (groups of teammates a contact or form can be given to), newest first, with their members; search narrows by name.READcreateTeamCreate a team (name, optional description, emoji, color, memberUserIds).ADMINupdateTeamEdit a team (teamId from listTeams); omitted fields are untouched. memberUserIds (active teammates, listTeamMembers) REPLACES the whole member list.ADMINsetTeamMembersSet a team's members. memberUserIds (active teammates, listTeamMembers) REPLACES the whole member list.ADMINdeleteTeamDelete a team for good.ADMINgetCreditPricesFixed credit packs for EVERY credit type.READgetCreditsPurchaseUrlThe in-app Billing > Credits page URL where a human buys credits.READgetSeatsPurchaseUrlThe in-app Billing page URL where a human buys extra seats.READgetPhoneNumbersPurchaseUrlThe in-app Team & Phones page URL where a human registers and buys phone numbers.READgetAddOnPricesThe monthly price of one extra seat, in cents, live from Stripe.READgetAiCreditUsageWhy the AI employees stopped, and what AI use costs: burn over a trailing window (windowDays 1..90, default 30), balanceCredits, outOfCredits, planAllowance.READcheckBillingActionThe check the app runs before a skip trace, export or email verification of count records.READgetPlanCatalogEvery plan on sale: monthly and annual (whole-year) price, and what each includes per month.READgetBillingSummaryRead the organization's plan, subscription lifecycle, seat utilization, feature limits and credit balances.ADMINgetCreditUsageByTypeWhat used the credits this billing period, per credit type: series[].totalUnits for AI_CREDITS, SMS_CREDITS (outbound text segments), CALLING_MINUTES, SKIPTRACE, EMAIL_VERIFICATION and...ADMINlistPartnershipsList every partnership your organization has with another organization (ACTIVE, PENDING and TERMINATED) always viewed from your side: partnerOrg is the OTHER organization, and its id is the...READlistPendingPartnershipInvitesList the partnership invitations OTHER organizations have sent you that are still waiting on your answer (awaitingCurrentOrgResponse is always true here).READcanShareWithPartnersTrue when your organization has at least one ACTIVE partnership in a sending direction (SEND_ONLY or BIDIRECTIONAL from your side): i.e. there is a partner your organization could share leads with.READlookupPartnerOrgResolve a prospective partner organization by exactly one of an admin's phone number or email.ADMINcreatePartnershipInviteSend a partnership invitation to another organization (partnerOrgId from lookupPartnerOrg). direction is SEND_ONLY, RECEIVE_ONLY, or BIDIRECTIONAL (whose leads flow to whom). permittedUserIds...ADMINacceptPartnershipInviteAccept a pending partnership invitation from another organization (partnerOrgId from listPendingPartnershipInvites). permittedUserIds optionally limits which of your users are visible to the...ADMINrejectPartnershipInviteReject a pending partnership invitation the other organization sent you (partnerOrgId from listPendingPartnershipInvites).ADMINcancelPartnershipInviteCancel a pending partnership invitation your organization initiated (partnerOrgId from listPartnerships, status PENDING), before the partner has accepted it.ADMINterminatePartnershipEnd an active partnership (partnerOrgId from listPartnerships); either party may.ADMINupdatePartnershipPermittedUsersUpdate which of your organization's users are visible to a partner when they send leads (partnerOrgId).ADMIN
No operation matches .
Operation ids are camelCase verbs. Try one of these, or ask Goliath what you're trying to do.