DE
Die Customermates-REST-API entdecken
API-Endpunkte durchsuchen, Request- und Response-Formate prüfen und Integrationen planen. Die API-Referenz selbst ist nur auf Englisch verfügbar.
Das Ausführen von Operationen im API-Playground wirkt sich auf Ihre Live-Daten aus.
Die technische API-Endpunkt-Dokumentation ist nur auf Englisch verfügbar. Dies liegt daran, dass API-Dokumentation präzise technische Terminologie und Konsistenz mit Industriestandards erfordert.
Get own user profile
GETRetrieves the authenticated user's profile information.
Get users
POSTRetrieves a list of users with optional filtering, sorting and pagination.
Update own user profile
PATCHPartially updates the authenticated user's own profile, the same fields as the account settings page: firstName, lastName, avatarUrl (an http or https URL, or '' or null to clear), theme, displayLanguage and formattingLocale. Omitted fields keep their values. Returns the saved profile. Requires: an active workspace membership; no further permission.
Accept a relation request
POSTAccepts a received relation request by invitationId on a connected LinkedIn or Instagram account. Requires a connected LinkedIn or Instagram account.
Apply a configuration change
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Writes require their documented revision and idempotency preconditions; pending results refer to a durable operation. Requires: data-model management; role management suffices when every operation is setTypeGrants or putAccessPreset.
Attach a pending file to a record
POSTFiles of file fields. Upload in three steps: start an upload, send the bytes to the returned URL, then write the file id into the file field with /v1/records/mutate or attach it with /v1/files/{id}/attach. To remove a file, write the field's list without its id with /v1/records/mutate. Access to a file follows read access to its record and field. Writes a pending file you uploaded into a record's file field: a pending upload of that field, or a file you gave to Mate in a chat, which is not in any field yet. This is a record update, checked like /v1/records/mutate: mode append adds the file after the existing ones, replace keeps only this file, and expectedVersion guards against a concurrent change. Attaching a file that is already in that field returns it unchanged; a file in another record or field is refused with recordFileUnavailable. Once attached, access follows the record and the field. When the write continues in the background, operationId names the operation to read.
Requires: update access to the record and the file field
Browse a Sales Navigator list
POSTReturns the leads (kind leads, default) or accounts (kind accounts) saved in a Sales Navigator list of a connected LinkedIn account, page by page (offset pagination).
Cancel an operation before publication
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Writes require their documented revision and idempotency preconditions; pending results refer to a durable operation. Requires: the user who started the operation, or an administrator.
Cancel a relation request
POSTWithdraws or refuses a relation request by invitationId on a connected LinkedIn or Instagram account. Requires a connected LinkedIn or Instagram account.
Check address parts offline
POSTChecks address parts the way every address write does, without saving anything and without asking an outside service. Returns the parts as a write would store them (trimmed, the postal code in the country's format, a region name or ISO code turned into the country's region code), the issues, and the cities and regions the postal code directory lists for the postal code, with the centre of the postal code. Errors (countryUnknown, postalCodeInvalid, regionInvalid) make a write with these parts fail with 422; warnings (countryMissing, partMissing, regionUnknown, postalCodeRegionMismatch, cityMismatch) are returned with the write result. The country formats come from Google's libaddressinput metadata (CC BY 4.0) shipped with the app. The postal code directory holds GeoNames postal codes (CC BY 4.0) in this server's own database: a country is loaded the first time someone enters one of its postal codes, so the first check can answer status loading; show the attribution with places. Requires: an active member of the workspace; no record permission, because a check changes nothing.
Create a link to connect a messaging channel
POSTCreates a secure link that connects a messaging channel to the inbox of the key's owner, as Connect on the Channels settings page and the MCP connect_messaging_account tool do. The connection cannot be completed over the API: open the url in a browser and finish there, by scanning the QR code for WhatsApp or signing in for email and LinkedIn; the new account then appears in GET /v1/messaging/connected-accounts. The link works once and expires after 30 minutes. Each member gets a number of connected accounts from the plan: Pro 1, Business 3, Enterprise unlimited, Starter none. Without a free slot or without a plan that includes messaging the request answers 400. Requires: Inbox messages Create and a plan that includes messaging.
Create a saved view
POSTCreates a named view with its initial state and selects it. The state is validated against the surface's configuration: fields, operators, sort and grouping keys and columns must come from /v1/data-views/config. Dashboard views hold no list state; create them with an empty state and place widgets on them with viewId.
Requires: read access to the surface's page: read access to the record type for a records:<typeId> surface, read on users for Members and Roles, read all on api for Webhooks, read all on activityLog for Activity, read on routines for Routines, and read on inboxMessages plus the messaging entitlement for Inbox. Dashboard and record timeline views need no extra permission. Saved views are personal: only the caller's own views are listed or changed.
Start a file upload
POSTFiles of file fields. Upload in three steps: start an upload, send the bytes to the returned URL, then write the file id into the file field with /v1/records/mutate or attach it with /v1/files/{id}/attach. To remove a file, write the field's list without its id with /v1/records/mutate. Access to a file follows read access to its record and field. Checks the file field, your create or update access to its list, the size limit and the workspace storage. Returns a pending fileId and where to send the bytes within 15 minutes: send exactly size bytes with the given method and headers. The URL is either this API's content route or a presigned URL of the workspace's object store. A pending file that is never written into a file field is deleted after 24 hours.
Requires: create or update access to the list
Send a relation request
POSTSends a real connection / relation request from a connected LinkedIn or Instagram account to identifier, with an optional short message. Requires a connected LinkedIn or Instagram account.
Create a routine
POSTCreates a routine owned by the caller. The example fires on new records of one type whose field matches recordTrigger.query.filters; filters on record.created and record.updated match the resulting record and are rechecked at admission, and the owner's current access is always rechecked. Creation may be refused when the owner has used the plan's per-user routine allowance (409). Requires: create permission on routines.
Create or update a webhook subscription
POSTSubscribes an endpoint to the given events (url and events are required). The endpoint must use HTTP or HTTPS, have a valid host, and contain no username or password. Deliveries are signed with HMAC-SHA-256 in the X-Webhook-Signature header when a secret is set. The signing secret is never returned. Optional headers are sent with every delivery for endpoints that require their own authentication; their values are never returned, the response reports headerNames instead, Content-Type, Host and X-Webhook-Signature cannot be overridden, and an endpoint carrying headers must use HTTPS. An optional bodyTemplate replaces the standard envelope for endpoints that expect a fixed shape, and the signature is computed over the rendered body. Providing an existing id updates that subscription instead; omitted fields keep their stored values. Both creating and updating answer 201 with the saved subscription.
Create Knowledge Base pages
POSTCreates one to five pages atomically and appends them to the saved order. kind defaults to knowledge; a procedure needs whenToUse and numbered steps; the workspace has at most one guide. With requireEmpty, the call fails with 409 unless the Knowledge Base is empty. Requires: Knowledge Base Create.
Delete a saved view
POSTMoves a named view to Trash; when it was the active view, the surface falls back to All. Deleting a dashboard view moves its widgets to Trash with it, and restoring the view brings them back. The view is deleted permanently after 30 days unless /v1/trash/restore restores it with the returned trashBatchId. Records are never deleted, and the All view cannot be deleted.
Requires: read access to the surface's page: read access to the record type for a records:<typeId> surface, read on users for Members and Roles, read all on api for Webhooks, read all on activityLog for Activity, read on routines for Routines, and read on inboxMessages plus the messaging entitlement for Inbox. Dashboard and record timeline views need no extra permission. Saved views are personal: only the caller's own views are listed or changed.
Delete a widget
POSTMoves one widget to Trash, as deleting it on the dashboard does. It is deleted permanently after 30 days unless /v1/trash/restore restores it with the returned trashBatchId. Its source records are never changed. Requires: ownership of the widgets; the list holds only the caller's own widgets and their results stay filtered by read access to the widgets' lists.
Delete an unused custom role
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Writes require their documented revision and idempotency preconditions; pending results refer to a durable operation. Requires: role management: delete access to users.
Delete a routine
POSTMoves a routine to Trash, where it stops running. Restore it through the trash API with the returned trashBatchId; only permanent deletion removes its history. A routine with a running run answers 409. Only an active system administrator may delete. Requires: delete permission on routines and the system administrator role.
Delete Trash items permanently and erase their values from history
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Writes require their documented revision and idempotency preconditions; pending results refer to a durable operation. Requires: delete access to each item: to its list for records, data-model management for lists, fields and relationships, Knowledge Base delete access for pages, an administrator role for routines, and ownership for personal views and widgets.
Delete a webhook subscription
DELETERemoves a webhook subscription so it stops receiving deliveries.
Delete a Knowledge Base page
POSTMoves one page to Trash, where it is deleted permanently after 30 days unless POST /v1/trash/restore restores it with the returned trashBatchId. Send updatedAt from your latest read as expectedUpdatedAt. Requires: Knowledge Base Delete.
Discard a message draft
DELETEDeletes exactly the saved draft revision identified by id and draftRevision. A newer edit is never discarded; sent messages are unaffected. An id that holds no draft visible to the key (already discarded or sent, or not a draft) is a safe no-op that returns threadId: null. A draftRevision that no longer matches the saved draft answers 409 with customCode draftChanged, and a draft that is being sent answers 409 with customCode draftSendInProgress; both delete nothing.
Disconnect a connected account
DELETEDisconnects one of your connected accounts: it is removed from the workspace and from the messaging provider, and its synced conversations disappear. If the provider cannot be reached, the workspace removal still completes and a daily cleanup removes the provider account later. This cannot be undone; connecting the account again starts a new sync. Only the account owner can change it; another member's account answers 404. Requires: Inbox messages Delete.
Discover record types by name
POSTPages through the record types the caller can access, with each type's id, labels, description, icon, field count, readable record count (null when the caller cannot read the type) and the record actions the caller may take. search matches labels and descriptions, typeIds restricts the result, and includeEmbedded adds line-item types. Continue with page until total is covered, then read the relevant schemas with /v1/model/read. Names and descriptions are customer data; use ids, never labels, as references. Requires: read access to the list; data-model and role managers see every list.
Download a file
GETFiles of file fields. Upload in three steps: start an upload, send the bytes to the returned URL, then write the file id into the file field with /v1/records/mutate or attach it with /v1/files/{id}/attach. To remove a file, write the field's list without its id with /v1/records/mutate. Access to a file follows read access to its record and field. Streams the file with its stored media type. PDFs and PNG, JPEG, GIF and WebP images open in the browser unless download is 1; every other type downloads. Supports a single byte range. Access is checked on every request, also for a signed downloadUrl.
Requires: read access to the record and the file field, or a valid download token
Empty Trash (administrators)
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Writes require their documented revision and idempotency preconditions; pending results refer to a durable operation. Requires: an administrator.
Export accessible records as a JSON document or an Excel workbook
POSTExports the selected type's filtered and sorted records with their readable embedded descendants from one consistent workspace snapshot. Maximum 5,000 records and 50,000 candidate links; with page and pageSize (up to 500) json returns one page of top-level records with their descendants and links, plus total and nextPage, so larger lists can be exported page by page. format json (default) returns a document with stable type, field, relationship and record IDs, readable outbound links and the current schema revision; restricted values remain marked restricted, and import accepts it. format xlsx returns an Excel workbook with one sheet per exported list: readable fields in field order headed by their labels, then relationship columns with linked record names, assignees, timestamps and a hidden record ID. Dates are spreadsheet dates, numbers and money are numbers with the currency in the header, multiple choice and links are comma-separated names, and formatted text is plain text. A field the caller cannot read on any exported record is left out. Incoming links from records outside the selection are not included. Requires: read access to the list.
Get a calendar by ID
GETFetches one calendar of a connected account visible to the caller. An id that is unknown, belongs to another workspace or to a calendar the caller cannot see answers 404 not_found with customCode calendarNotFound. The id matches the entityId of the messaging.calendar.changed webhook event.
Get a calendar event by ID
GETFetches one calendar event visible to the caller, including organizer and attendees. An id that is unknown, belongs to another workspace or to an event the caller cannot see answers 404 not_found with customCode calendarEventNotFound. The id matches the entityId of the messaging.calendar.event.changed webhook event.
Get calendar events
POSTRetrieves calendar events visible to the caller, ordered by start time, with optional filtering (calendarId, connectedAccountId, startsAt date range), sorting, and pagination. Event ids match the entityId of the messaging.calendar.event.changed webhook event.
Get calendars
POSTRetrieves the calendars of connected accounts visible to the caller (own accounts plus shared ones), with optional filtering (connectedAccountId), search, sorting, and pagination. Calendar ids match the entityId of the messaging.calendar.changed webhook event.
List own connected accounts
GETLists the messaging accounts connected to the workspace and visible to the authenticated user.
Read file details
GETFiles of file fields. Upload in three steps: start an upload, send the bytes to the returned URL, then write the file id into the file field with /v1/records/mutate or attach it with /v1/files/{id}/attach. To remove a file, write the field's list without its id with /v1/records/mutate. Access to a file follows read access to its record and field. Returns the file's metadata and a downloadUrl that works without other credentials for 15 minutes. A pending file is visible only to the person who uploaded it. A file of another workspace, of a record in Trash or removed from its field answers 404.
Requires: read access to the record and the file field
Get the workspace invitation link
POSTReturns the workspace invitation link and when it expires, as the Share link tab of the Invite dialog shows it. The link is reused until it expires after 7 days; the first call after that creates a new one. Anyone who opens it can register and joins with status Waiting for approval and no role. Requires: Users & Roles Create.
Get a messaging thread by ID
GETFetches one message thread with its full message list. Returns the thread plus each message's direction, sender, subject, text body, and attachment metadata (HTML bodies and raw attachment urls are omitted).
Get messaging threads
POSTRetrieves inbox threads with search, sorting, pagination and shared filter syntax. Filters include connectedAccountId, emailFolder (in/notIn), lastMessageDirection (inbound/outbound), lastMessageSentAt (last actual message date) and lastMessageAt (activity including drafts). Use caller-scoped filterableFields.options; folder values encode [account UUID, provider folder ID] as a JSON string and groupKey identifies the account heading. Folder membership matches visible placements. Last direction/date exclude drafts, hidden/deleted messages and system events. Filters combine with AND; lastMessageSentAt inLastDays 7 plus notInLastDays 3 finds messages from three to seven days ago, using the standard start-of-day cutoff.
List post comments or reactions
POSTReads engagement on a social post: kind=comments (default) lists the post's comments, kind=reactions lists who reacted to the post, or set commentId to list reactions on that specific comment (kind is ignored). Requires a connected LinkedIn or Instagram account.
List or fetch social posts
POSTReads LinkedIn or Instagram posts through a connected account. Use [].id from GET /v1/messaging/connected-accounts as connectedAccountId. Use authorIdentifier='me' for the account owner, id from POST /v1/messaging/social-profiles/search, data[].author.id from a post-list response, or author.id from a single-post response. A messaging participant can first be resolved from items[].participants[].identifier returned by POST /v1/messaging/threads/search. For the first page, omit cursor and offset. For a cursor continuation, repeat connectedAccountId, authorIdentifier and limit, copy next_cursor from the previous response into cursor, and omit offset. Stop when next_cursor is null. An offset continuation requires a positive cumulative offset. Set postId instead to data[].id from a previous post-list response to fetch that post.
Get a social profile
POSTReads a person or company profile through a connected account. Use [].id from GET /v1/messaging/connected-accounts as connectedAccountId. For a person, use profileType=person with 'me', items[].participants[].identifier from POST /v1/messaging/threads/search, id returned by this endpoint, data[].author.id from a social-post or comment list, author.id from a single-post response, data[].sender.id from a reaction list, a LinkedIn Classic public profile slug, or an Instagram username. Reuse this endpoint's id with profileType=person or as a social-post authorIdentifier. For a LinkedIn company, use profileType=company with data[].id from POST /v1/messaging/sales-navigator/search/companies or data[].current_positions[].company_id from POST /v1/messaging/sales-navigator/search/people. Company lookup is LinkedIn-only.
Get a webhook subscription
GETReturns one webhook subscription by ID. An id that does not exist or belongs to another workspace answers 404 not_found. The signing secret itself is never returned.
Import a same-workspace record document
POSTCreates records with their exported IDs or updates matching IDs in one transaction. Embedded descendants are created after their parents, saved-price snapshots are preserved, and readable outbound links are merged. The document must match the current workspace's type IDs and schema revision. Maximum 100 records and 500 links and unlinks per request. Rows are sparse: a row needs only ref and the fields to set; an omitted field stays empty on create and unchanged on update, and state missing clears it. Create rejects existing IDs; update checks the version of a row when given, so one request can patch different values per record, and unlinks (update only) removes links. For more records, send consecutive requests of up to 100 rows with their own idempotency keys. Retries of the identical request use its idempotency key. Requires: create access to the list in create mode, edit access in update mode.
Invite members by email
POSTSends a workspace invitation email with the workspace's invitation link to each address, 1 to 20 per call; duplicate addresses receive one email. An invited person joins with no role until an administrator assigns one through POST /v1/members/update. Returns how many emails were sent, how many the email service did not accept (failed) and their addresses (failedEmails); share the link from POST /v1/members/invite-link with those people instead. Sending the same invitation to an address again within 24 hours does not email it twice. Requires: Users & Roles Create.
List the pages that support saved views
POSTReturns every surface the caller may manage views on, with its label and app path. Surfaces are the record lists (records:<typeId>), the Members, Roles, Webhooks, Webhook deliveries, Inbox, Activity and Routines lists, record activity timelines and the dashboard (dashboard); operator-console surfaces are not available. Timeline views accept only filters and sortDescriptor. Send an empty object.
Requires: read access to the surface's page: read access to the record type for a records:<typeId> surface, read on users for Members and Roles, read all on api for Webhooks, read all on activityLog for Activity, read on routines for Routines, and read on inboxMessages plus the messaging entitlement for Inbox. Dashboard and record timeline views need no extra permission. Saved views are personal: only the caller's own views are listed or changed.
List saved views of a surface
POSTReturns the caller's saved views of one surface as paged summaries (id, name, position) with the active view key. The All view (__all__) is the surface's own personalization and is not listed; read it with viewKey __all__. Narrow with query by view id or name.
Requires: read access to the surface's page: read access to the record type for a records:<typeId> surface, read on users for Members and Roles, read all on api for Webhooks, read all on activityLog for Activity, read on routines for Routines, and read on inboxMessages plus the messaging entitlement for Inbox. Dashboard and record timeline views need no extra permission. Saved views are personal: only the caller's own views are listed or changed.
List all dashboard widgets
POSTReturns every widget the caller owns across the main dashboard and every dashboard view, oldest first, with current authorized results. viewId names the dashboard view a widget belongs to (null for the main dashboard) and layout holds its stored position per breakpoint (xs, sm, md, lg) in grid units: x and w count columns (12 on lg, 8 on md, 4 on sm, 2 on xs) and y and h count rows of 54 px with 12 px gaps. A breakpoint without a stored position is placed automatically when the dashboard renders. Send an empty object. Requires: ownership of the widgets; the list holds only the caller's own widgets and their results stay filtered by read access to the widgets' lists.
List received relation requests
POSTLists the connection / relation requests received by the owner of a connected LinkedIn or Instagram account. Requires a connected LinkedIn or Instagram account.
List roles
POSTLists the workspace's roles with their system permissions, record type grants and whether any member holds them, as the Roles settings page and the roles of the MCP get_workspace_context tool show them. Supports searchTerm on the name, sortDescriptor with field type (system roles first, then by name) and pagination. Read one role with its record type catalog through /v1/roles/read, and assign a role to a member through /v1/members/update. Requires: read access to users; without role management (edit access to users) only the caller's own role is listed.
List a routine's runs
POSTReturns one routine's run history newest first, each with its status, trigger, summary and charged credits. Pass nextCursor from the previous page as cursor to continue; a null nextCursor ends the history. An id outside the workspace or the caller's access answers 404. Requires: read permission on routines.
List routines
POSTLists the workspace's routines newest first, each with its prompt, trigger and last run. Supports searchTerm against the name, filters on ownerUserId, createdAt and updatedAt, sortDescriptor and pagination. Send an empty object for the first page. Requires: read permission on routines.
List Sales Navigator lists
POSTLists the Sales Navigator lead lists (kind leads, default) or account lists (kind accounts) of a connected LinkedIn account. Lists can only be created in the Sales Navigator UI; the API reads and fills existing lists.
List Sales Navigator search parameters
POSTResolves the parameter ids used by the Sales Navigator people and company search filters. Pass a type (LOCATION, INDUSTRY, JOB_TITLE, COMPANY, LEAD_LIST, ACCOUNT_LIST and more) and optional keywords to look up matching ids with display names. LEAD_LIST and ACCOUNT_LIST also resolve existing list ids by name.
List a webhook's deliveries
GETLists the deliveries of one webhook newest first, with status, response code and the delivered body. searchTerm matches url and event name. A webhook outside the workspace answers 404. Requires: read all permission on the API.
List webhook subscriptions
GETLists the workspace's webhook subscriptions. searchTerm matches url and description; sortField takes name, createdAt or updatedAt. Secrets and header values are never returned. Requires: read all permission on the API.
List Knowledge Base pages
POSTLists Knowledge Base pages without their Markdown: the Operating Guide first, then the other pages in the workspace's saved order. Filter by kind (guide, procedure or knowledge). Requires: Knowledge Base read access.
List deliveries across all webhooks
GETLists the deliveries of every webhook in the workspace newest first, as the Deliveries page shows them, with status, response code and the delivered body. searchTerm matches url and event name. The deliveries of a single webhook come from GET /v1/webhooks/{id}/deliveries. Requires: read all permission on the API.
Look up postal addresses
POSTFinds postal addresses for free text, as the Search address box of an address field does: a street with house number and city, a postal code and city, or the name of a place. Each candidate carries its formatted address parts, the map location and a candidateToken. Write {"kind":"address","candidateToken":"…"} to an address field through /v1/records/mutate to store that candidate as a verified address; the token is valid for 24 hours and only in this workspace. Any other address write is stored as unverified, so a client cannot mark an address verified itself. countryCode limits the results to one country; without it, addresses in the caller's country come first. Show the attribution with the results. The server asks the address provider on the caller's behalf, so the provider never sees the caller's IP address or session. When the operator has not configured ADDRESS_LOOKUP_URL, nothing leaves the server and available is false. Requests are limited to 30 per user in 10 seconds (429 addressLookupRateLimited), and a provider that does not answer within 2 seconds returns 422 addressLookupUnavailable.
Requires: an active member of the workspace; no record permission, because a lookup changes nothing.
Move an email conversation to a folder
POSTMoves the eligible emails of one email conversation to a folder of its mailbox at the provider, as the Inbox and the MCP move_email_thread tool do. Take folderId from folderContext.folders of GET /v1/messaging/threads/{id}, which can move when folderContext.canMove is true; Sent and Drafts are never targets and their emails stay in place. Pass messageId to move a single email of the conversation. Emails moved outside the synced folders leave the inbox (hiddenFromInbox). movedCount, skippedCount and failedCount report each email; when the provider rate-limits a move part way, rateLimited and retryAfter say when to move the rest. A conversation you cannot see answers 404, an unknown folder or message 404, and a conversation that is not email 400. Requires: Inbox messages Edit and a plan that includes messaging.
Move a Knowledge Base page
POSTPlaces a page before or after another page in the order the whole workspace shares. Content and edit timestamps are unchanged. The Operating Guide stays pinned first: it can be neither moved nor used as the target. Requires: Knowledge Base Edit.
Link or unlink one conversation record
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Writes require their documented revision and idempotency preconditions; pending results refer to a durable operation. Requires: read and edit access to inbox messages, and edit access to the record's list.
Create, update, delete or link records
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Writes require their documented revision and idempotency preconditions; pending results refer to a durable operation. Requires: create access to the list for create; edit access for update, updateMany, link and unlink (on the source record's list); delete access for delete and deleteMany. Every referenced record must be readable.
Pause a routine
POSTDisables a routine and settles its queued runs as skipped. Resuming restores the schedule but never those runs. Only an active system administrator may pause. Requires: delete permission on routines and the system administrator role.
Preview a document or spreadsheet
GETFiles of file fields. Upload in three steps: start an upload, send the bytes to the returned URL, then write the file id into the file field with /v1/records/mutate or attach it with /v1/files/{id}/attach. To remove a file, write the field's list without its id with /v1/records/mutate. Access to a file follows read access to its record and field. Returns readable Word (.docx), TXT, Markdown or JSON content, or read-only Excel (.xlsx) and CSV sheets. Independent of background indexing and embeddings. Files up to 25 MiB are read; previews contain at most 100,000 characters, 10 sheets, 200 rows and 50 columns per sheet, and 2,000 characters per cell. truncated identifies a partial preview. Formatting, embedded images and charts are not reproduced; formulas use their stored results. Unsupported, empty, oversized or unreadable files return kind unavailable. Requires a session or API key; signed content links do not authorize this endpoint.
Requires: read access to the record and file field, or ownership of a pending upload
Preview a configuration change
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: data-model management; role management suffices when every operation is setTypeGrants or putAccessPreset.
Preview record deletion and cascading effects
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: delete access to the list.
Preview exactly what deleting Trash items permanently removes
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: delete access to each item: to its list for records, data-model management for lists, fields and relationships, Knowledge Base delete access for pages, an administrator role for routines, and ownership for personal views and widgets.
Read the activity timeline through declared record paths
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: read access to the record's list; change history also requires read all on activityLog.
Aggregate record values at an explicit grain
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: read access to the source list; restricted inputs are hidden.
Query records
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: read access to the list; only readable records and values are returned.
List items in Trash (deleted records, lists, fields, relationships, views, widgets, routines, Knowledge Base pages)
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: delete access to each item: to its list for records, data-model management for lists, fields and relationships, Knowledge Base delete access for pages, an administrator role for routines, and ownership for personal views and widgets. Items without access are not listed.
Read accessible conversation records
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: read access to inbox messages; only records of readable lists are returned.
Read one saved view's state
POSTReturns one view with its complete state: filters, search term, sort, page size, view mode (table or card), grouping with its group summaries, column order, column widths and hidden columns. viewKey __all__ reads the All view. Read immediately before an update.
Requires: read access to the surface's page: read access to the record type for a records:<typeId> surface, read on users for Members and Roles, read all on api for Webhooks, read all on activityLog for Activity, read on routines for Routines, and read on inboxMessages plus the messaging entitlement for Inbox. Dashboard and record timeline views need no extra permission. Saved views are personal: only the caller's own views are listed or changed.
Read what a surface's views can filter, sort, group and show
POSTReturns one section of a surface's view capabilities. overview (the default) reports totals, whether search is supported, the view modes and the writable state keys. filters lists filterable fields with their operators and valid values (select filters use stable option IDs), sorting the sortable fields, grouping the groupable fields, and appearance the columns available for columnOrder, columnWidths and hiddenColumns. Sections are paged with page and pageSize (1 to 25, default 10) and can be narrowed with query.
Requires: read access to the surface's page: read access to the record type for a records:<typeId> surface, read on users for Members and Roles, read all on api for Webhooks, read all on activityLog for Activity, read on routines for Routines, and read on inboxMessages plus the messaging entitlement for Inbox. Dashboard and record timeline views need no extra permission. Saved views are personal: only the caller's own views are listed or changed.
Read one record
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: read access to the list and to the record. A missing or foreign record answers 404; a record of the workspace you cannot read answers 403.
Read personal record detail layout
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: read access to the list.
Read record types and their configuration
POSTReturns the configuration revision with the fields, stable select option ids, relationships, relationship paths and capabilities of the requested types, or of every accessible type when typeIds is omitted. Access presets are included only for schema and role managers. Pass the smallest set of typeIds you need, and send revision as expectedRevision on record and configuration writes. Requires: read access to the list; data-model and role managers see every list and its access presets.
Read the status of a staged operation and its recommended retryAfterMs polling interval
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: the user who started the operation, or an administrator.
Read a widget with current authorized results
POSTReturns one widget of the caller, or a template shared in the workspace, with results computed for the caller's read access. A calendar widget also accepts window with from and to (at most 42 days) to read another month or a single day instead of its own range; other kinds refuse a window.
Requires: read access to the widget's lists; restricted values stay hidden.
Read role permissions and the record type catalog
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: role management (edit access to users), or read or create access to users. Without role management only the caller's own role is readable, and record types and grants are limited to the types the caller can read.
Read a routine
POSTReturns one routine with its full configuration. An id outside the workspace or the caller's access answers 404. Requires: read permission on routines.
Read a record in Trash
POSTReads one deleted record read only, as the Trash preview in the app shows it: its field values and related records as they were when it was deleted, the configuration of its type, and its Trash item with deletion and expiry dates, who deleted it and whether the caller can restore it. Find records with /v1/trash/query, where an item of kind record carries the typeId and its targetId is the recordId, and restore them with /v1/trash/restore. A record that is not in the caller's Trash answers 404. Requires: delete access to the record's list and read access to the record (read all, or read own when it is assigned to the caller), the rule that shows it in Trash; field values stay filtered by field access.
Read a Knowledge Base page
POSTReads one page with its full Markdown. Keep updatedAt: update and delete require it as expectedUpdatedAt. Link pages as /wiki?page=<id>; ids survive renames. A missing page answers 404. Requires: Knowledge Base read access.
Record Created
WEBHOOKSent when a record that matches the webhook's record source is created, with its values after the change.
Record Moved to Trash
WEBHOOKSent when a matching record moves to Trash, with its values before the delete; record-query filters match the record just before the move.
Record Deleted Permanently
WEBHOOKSent when a record is deleted permanently, by hand or 30 days after it moved to Trash; it carries only the record reference because the values are erased.
Record Restored
WEBHOOKSent when a matching record comes back from Trash, with its restored values.
Record Updated
WEBHOOKSent when a field, assignment, identity or link of a matching record changes, with the values before and after the change.
Remove a member from the workspace
POSTRemoves another member from this workspace, as Remove from workspace in the members settings and the MCP remove_member action do. Name the member by userId or email (both must match when you send both). Works for active, inactive and waiting-for-approval members; removing a member waiting for approval declines the request. The member's status becomes inactive and they are shown as left (a declined request is no longer listed), their API keys and MCP connections for this workspace stop working, the mailboxes and LinkedIn accounts they connected here are disconnected, their routines pause, and an active member's seat is freed. The member gets an email that they were removed; a declined request sends none. Records they own and their history stay. To come back they ask to join again with an invitation link, and an admin has to approve the request. Returns the removed member and the status they had. You cannot remove yourself (leave the workspace in the app instead), the only active membership of the last Customermates platform operator, a member who already left, or the last active member with the Admin role. Requires: Users & Roles Edit.
Rename a file
PATCHFiles of file fields. Upload in three steps: start an upload, send the bytes to the returned URL, then write the file id into the file field with /v1/records/mutate or attach it with /v1/files/{id}/attach. To remove a file, write the field's list without its id with /v1/records/mutate. Access to a file follows read access to its record and field. Changes the name a file shows and downloads with. Folders are refused, control characters are removed and the name is cut to 255 characters; a name without an extension keeps the file's current one, so "Offer" renames "Draft.pdf" to "Offer.pdf". Renaming a file in a record's file field is a record update: it appears in the record's activity like any change of the field, but leaves the record version unchanged. Renaming a pending file is possible for the person who uploaded it. An empty or invalid name answers 400 with recordFileNameInvalid.
Requires: update access to the record and the file field, or ownership of a pending upload
Resend a webhook delivery
POSTQueues a new delivery of a finished delivery's event to the webhook's current url. The webhook must still be enabled and subscribed to the event; otherwise, or when its record trigger changed since, the request answers 409. A delivery that does not belong to the webhook answers 404. Requires: create permission on the API.
Reset saved view settings
POSTRemoves the caller's overrides for the given state keys so the list falls back to every field in its configured order, ungrouped and unsorted. Only records:<typeId> surfaces support reset.
Requires: read access to the surface's page: read access to the record type for a records:<typeId> surface, read on users for Members and Roles, read all on api for Webhooks, read all on activityLog for Activity, read on routines for Routines, and read on inboxMessages plus the messaging entitlement for Inbox. Dashboard and record timeline views need no extra permission. Saved views are personal: only the caller's own views are listed or changed.
Resolve exact channel identifiers to every accessible linked record
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: read access to the lists; records the caller cannot read are omitted.
Restore Trash items, or every item of one delete by batchId. Restoring a field or saved view reports filters, columns, sort and grouping removed when the field was deleted in droppedViewReferences; restoring the field does not recreate those settings.
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Writes require their documented revision and idempotency preconditions; pending results refer to a durable operation. Requires: delete access to each item: to its list for records, data-model management for lists, fields and relationships, Knowledge Base delete access for pages, an administrator role for routines, and ownership for personal views and widgets.
Resume an interrupted operation
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Writes require their documented revision and idempotency preconditions; pending results refer to a durable operation. Requires: the user who started the operation.
Resume a routine
POSTRe-enables a paused or draft routine the caller owns, which is the same change as update with enabled true. A routine whose owner is deactivated cannot be resumed. Requires: update permission on routines.
Resync a connected account
POSTFetches the account's history again in the background. Send an empty JSON object. Only the account owner can change it; another member's account answers 404. Requires: Inbox messages Edit.
Run a routine now
POSTStarts an enabled schedule routine the caller owns immediately and returns the id of the queued run. Manual test runs use triggerKind schedule. Event routines, disabled routines and inactive owners answer 409; another owner's routine answers 403. Paused AI work answers 422 and exhausted credits answer 429 before a run is queued. Run history includes the error block reason when a queued run cannot start. Requires: update permission on routines.
Save a message draft
POSTSaves or updates the draft reply on a thread for the current user to review and send from the inbox. Local only; nothing is delivered. subject, cc, and bcc apply to email threads. An explicit recipients array overrides To; use [] for Cc-only or Bcc-only email. Omit recipients to retain the thread-derived primary recipients. There is one draft per thread; saving again replaces it. While that draft is being sent, saving answers 409 with customCode draftSendInProgress and changes nothing.
Save a draft for a new conversation
POSTSaves a draft for a conversation that does not exist yet, so it can be reviewed and sent from the inbox. Provide connectedAccountId and recipients; a local draft thread is created and appears in the inbox with the draft filter. Local only; nothing is delivered, and the provider conversation is created when the draft is sent. subject, cc, and bcc apply to email accounts. Email needs at least one recipient across recipients, cc and bcc; use recipients: [] for Cc-only or Bcc-only email. Hidden Bcc recipients are never public thread participants. Every call creates a new draft conversation, also for recipients that already have one; to change a saved draft, save it again on its returned thread with POST /v1/messaging/threads/{id}/drafts.
Save or reset personal record detail layout
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Writes require their documented revision and idempotency preconditions; pending results refer to a durable operation. Requires: read access to the list; the layout applies only to the caller.
Save a schema-aware widget
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Writes require their documented revision and idempotency preconditions; pending results refer to a durable operation. kind chart (the default for new widgets) aggregates a measure, activityTimeline lists activity, calendar shows the records of one date or date-time field as the upcoming days or as a month heat grid, and map places records at the location stored with an address field. A saved widget keeps its kind. Requires: an active workspace member; widgets are personal and show only readable values.
Save system and record type permissions atomically
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Writes require their documented revision and idempotency preconditions; pending results refer to a durable operation. Requires: role management: create access to users for a new role, edit access for an existing one.
Save a lead or account to a Sales Navigator list
POSTSaves a person (kind leads, providerId is the LinkedIn user id) or a company (kind accounts, providerId is the LinkedIn company id) to an existing Sales Navigator list on a connected LinkedIn account. New lists must be created in the Sales Navigator UI first.
Search the text of files
POSTFiles of file fields. Upload in three steps: start an upload, send the bytes to the returned URL, then write the file id into the file field with /v1/records/mutate or attach it with /v1/files/{id}/attach. To remove a file, write the field's list without its id with /v1/records/mutate. Access to a file follows read access to its record and field. Searches the extracted text of the files you can read, ranked by relevance, and returns each hit with its record, a snippet and the character offset of the matching passage. A file's text is searchable once its text extraction has run.
Requires: read access to the record and the file field
Search accessible record types
POSTConfigurable CRM record contract. Record references contain both typeId and recordId. Workspace scope comes from authentication. Decimal values are strings. Reads change nothing and return only what the caller may read. Requires: read access to the list; only readable records are returned.
Search Sales Navigator companies (accounts)
POSTRuns a structured LinkedIn Sales Navigator company search through a connected LinkedIn account. Filters take parameter ids resolved via the search-parameters endpoint (location, industry, account lists) plus native ranges like headcount, annual revenue and spotlights. Returns company rows page by page (offset pagination, LinkedIn caps a single company search at 1000 results). Requires the connected account to have a Sales Navigator subscription.
Run a Sales Navigator search from a URL
POSTExecutes a LinkedIn Sales Navigator search from a pasted search URL through a connected LinkedIn account and returns the result rows page by page (offset pagination). Requires the connected account to have a Sales Navigator subscription.
Search Sales Navigator people (leads)
POSTRuns a structured LinkedIn Sales Navigator people search through a connected LinkedIn account. Filters take parameter ids resolved via the search-parameters endpoint (location, industry, company, job title, and more) plus native enums like seniority and company headcount. Returns lead rows page by page (offset pagination, LinkedIn caps a single search at 2500 results). Requires the connected account to have a Sales Navigator subscription.
Search Knowledge Base pages
POSTSearches titles, headings and text, ranked by relevance. Each hit carries a snippet, its section and the character offset of that section. total is a lower bound unless totalIsExact; continue with the next page while hasMore. didYouMean reports a corrected spelling. Later pages reuse the first page's order for five minutes. Requires: Knowledge Base read access.
Select a saved view
POSTRemembers the view as the caller's active view of the surface, as choosing it in the app does.
Requires: read access to the surface's page: read access to the record type for a records:<typeId> surface, read on users for Members and Roles, read all on api for Webhooks, read all on activityLog for Activity, read on routines for Routines, and read on inboxMessages plus the messaging entitlement for Inbox. Dashboard and record timeline views need no extra permission. Saved views are personal: only the caller's own views are listed or changed.
Send a chat message
POSTSends a real message into an existing chat thread (LinkedIn, WhatsApp, etc.). This delivers a real message as a side effect. When delivering a saved draft, pass both draftMessageId and its opaque draftRevision so a newer edit cannot be consumed. The id may also be a conversation that exists only as a saved draft; the chat is then started with the draft's recipients. Each draft revision is sent at most once: repeating the request returns the first result with repeated true and sends nothing. A draft that cannot be sent answers 409 conflict, sends nothing and names the reason in customCode: draftChanged when the draft was saved again after this draftRevision; draftTargetMismatch when the draft belongs to another conversation or account; draftSendInProgress while an earlier send of this draft is still running, which counts as draftSendOutcomeUnknown after five minutes; draftSendOutcomeUnknown when an earlier send could not be confirmed and may have been delivered, so the draft is sent again only after an edit changes its content; draftAlreadySent when this draft was already sent and the request carries other content or another draftRevision. An unknown thread answers 404 not_found, and a draft that no longer exists and was never sent answers 404 with customCode draftMessageNotFound.
Send an email
POSTSends a real email (or reply) from a connected email account. Provide either threadId (reply; takes precedence if both are given) or connectedAccountId (new email). At least one recipient is required across to, cc and bcc; use to: [] for Cc-only or Bcc-only email. cc and bcc are plain email strings, unlike to which uses the { identifier } object form. Never promote hidden Bcc recipients into To or Cc. The connected account's enabled signature is appended automatically, and its email appearance is applied to plain-text and Markdown bodies. Explicit HTML remains caller-controlled. Set bodyFormat when the body is explicitly plain text, Markdown, or HTML. When delivering a saved draft, pass both draftMessageId and its opaque draftRevision so a newer edit cannot be consumed. threadId may also be the id of a conversation that exists only as a saved draft; it then sends that draft like connectedAccountId does. Each draft revision is sent at most once: repeating the request returns the first result with repeated true and sends nothing. A draft that cannot be sent answers 409 conflict, sends nothing and names the reason in customCode: draftChanged when the draft was saved again after this draftRevision; draftRecipientsChanged when To differs from the saved draft or a saved Bcc recipient was moved into To or Cc; draftTargetMismatch when the draft belongs to another conversation or account; draftSendInProgress while an earlier send of this draft is still running, which counts as draftSendOutcomeUnknown after five minutes; draftSendOutcomeUnknown when an earlier send could not be confirmed and may have been delivered, so the draft is sent again only after an edit changes its content, and once the sent copy of that send syncs from the mailbox the draft counts as sent; draftAlreadySent when this draft was already sent and the request carries other content or another draftRevision. A draft that no longer exists and was never sent answers 404 not_found with customCode draftMessageNotFound.
Choose the synced email folders
POSTReplaces the set of email folders that sync, as the account's Folders tab does. Pass folder ids from GET /v1/messaging/connected-accounts; unknown ids are ignored, and newly enabled folders sync in the background. Only the account owner can change it; another member's account answers 404. Returns the saved account. Requires: Inbox messages Edit.
Share or unshare a connected account
POSTshared true shows every conversation of the account to all members who can read the Inbox; false makes it private again. Needs a plan with shared accounts (Business or Enterprise). Only the account owner can change it; another member's account answers 404. Returns the saved account. Requires: Inbox messages Edit.
Set the email signature and appearance
POSTSaves the signature text (Markdown, up to 2,000 characters, empty to clear), the complete email settings (appearance and signature layout), or both, as the account's Email tab does. An omitted field keeps its stored value; send at least one. Only the account owner can change it; another member's account answers 404. Returns the saved account. Requires: Inbox messages Edit.
Start a chat
POSTStarts a new chat thread (LinkedIn, WhatsApp, etc.) with one or more attendees from a connected account and sends the first message. This delivers a real message as a side effect. When delivering a saved draft, pass both draftMessageId and its opaque draftRevision so a newer edit cannot be consumed. Each draft revision is sent at most once: repeating the request returns the first result with repeated true and sends nothing. A draft that cannot be sent answers 409 conflict, sends nothing and names the reason in customCode: draftChanged when the draft was saved again after this draftRevision; draftRecipientsChanged when attendeeIdentifiers differ from the saved draft's recipients; draftTargetMismatch when the draft belongs to another conversation or account; draftSendInProgress while an earlier send of this draft is still running, which counts as draftSendOutcomeUnknown after five minutes; draftSendOutcomeUnknown when an earlier send could not be confirmed and may have been delivered, so the draft is sent again only after an edit changes its content; draftAlreadySent when this draft was already sent and the request carries other content or another draftRevision. A draft that no longer exists and was never sent answers 404 not_found with customCode draftMessageNotFound.
Update a saved view
POSTPatches a view: send only the keys to change. Omitted state keys keep their value, arrays replace the previous value, an empty filters array clears filters, an empty searchTerm clears search, and null clears sortDescriptor or grouping. name renames a named view; the All view cannot be renamed. A request that changes nothing returns the current view unchanged.
Requires: read access to the surface's page: read access to the record type for a records:<typeId> surface, read on users for Members and Roles, read all on api for Webhooks, read all on activityLog for Activity, read on routines for Routines, and read on inboxMessages plus the messaging entitlement for Inbox. Dashboard and record timeline views need no extra permission. Saved views are personal: only the caller's own views are listed or changed.
Change a member's role or status
POSTSaves another member's profile, role and status in one call, as the members settings page and the MCP update_member action do. Name the member by userId or email (both must match when you send both) and send the fields to change; omitted fields keep their current values. status inactive deactivates the member and frees their seat, active reactivates them; a member waiting for approval needs a status, and a member without a role needs a roleId. An unknown member or roleId answers 404. You cannot update your own membership, the only active membership of the last Customermates platform operator cannot be deactivated, and the workspace always keeps an active member with a system role (roleSystemRequired). Requires: Users & Roles Edit.
Set a conversation's state
POSTSets the state of one conversation in the Customermates inbox, as the Inbox and the MCP update_messaging_thread tool do: unread, open (read), closed or spam. The state shows as a badge and is filterable in the inbox; it never hides or deletes anything, and the provider mailbox, the messages and linked records stay untouched. Setting the state a conversation already has changes nothing. Only state can be set here; any other field answers 400. A conversation you cannot see answers 404. Requires: Inbox messages Edit and a plan that includes messaging.
Move and resize widgets in one batch
POSTSaves the position and size of several widgets at once, as dragging and resizing on the dashboard does. Each breakpoint (xs, sm, md, lg) lists placements in grid units: i is the widget id, x and w count columns (12 on lg, 8 on md, 4 on sm, 2 on xs, and x + w must fit), and y and h count rows of 54 px with 12 px gaps. A widget named in any breakpoint has its whole stored layout replaced by the placements sent for it, so send all four breakpoints for every widget you move; a breakpoint it is missing from loses its stored position and is placed automatically. Layouts are per dashboard view because a widget belongs to one view. expectedVersions must name the version you last read for every widget in layouts; when a widget changed, was deleted or is not yours, nothing is saved and the request fails with 409 widgetLayoutChanged, so read again and retry. A large-breakpoint (lg) placement that overlaps another widget of the same dashboard view fails with 400 widgetLayoutOverlap; empty rows between widgets are allowed, and the dashboard moves widgets up into them, and one smaller than its widget minimum (2 rows for charts and numbers, 2 columns and 5 rows for activity timelines, 2 columns and 5 rows for calendars, 3 columns and 5 rows for maps) fails with 400 widgetLayoutTooSmall. Unchanged placements are omitted from the result. Read positions and versions with /v1/widgets/list first. Requires: ownership of the widgets; the list holds only the caller's own widgets and their results stay filtered by read access to the widgets' lists.
Update a routine
POSTChanges the supplied fields of a routine the caller owns and leaves the rest unchanged. The example moves a routine to a weekday schedule. Requires: update permission on routines.
Update a webhook subscription
PATCHChanges the supplied fields of one webhook subscription and leaves the rest unchanged. The endpoint must use HTTP or HTTPS, have a valid host, and contain no username or password. The example disables a webhook and replaces its events. An id outside the workspace answers 404. Requires: update permission on the API.
Update a Knowledge Base page
POSTChanges the title, Markdown, kind or whenToUse of one page; omitted fields keep their values. Send updatedAt from your latest read as expectedUpdatedAt: a page changed since answers 409, so read it again and retry. Requires: Knowledge Base Edit.
Send the bytes of a pending file
PUTFiles of file fields. Upload in three steps: start an upload, send the bytes to the returned URL, then write the file id into the file field with /v1/records/mutate or attach it with /v1/files/{id}/attach. To remove a file, write the field's list without its id with /v1/records/mutate. Access to a file follows read access to its record and field. The upload URL that /v1/files/uploads returns for workspaces that keep files in their database points here and carries a token, so no other credentials are needed. Send exactly the announced number of bytes; a shorter or longer body is refused with recordFileUploadIncomplete. Only the uploader can send the bytes, and only while the file is pending.
Requires: the upload token or the uploader's API key
Check an address entered by hand
POSTChecks address parts entered by hand, as the Check address action of an address field does. The server asks the address provider for the formatted address and returns a match only when the provider's address has the same postal code and city and, when given, the same street and house number, compared without case, accents and common street abbreviations. The match keeps the input's line2 and carries a candidateToken: write it as {"kind":"address","candidateToken":"…"} to store the suggested address as verified, or write the parts as {"kind":"address","value":{…}} to keep them unverified. Input without a postal code or city returns no match. The server asks the address provider on the caller's behalf, so the provider never sees the caller's IP address or session. When the operator has not configured ADDRESS_LOOKUP_URL, nothing leaves the server and available is false. Requests are limited to 30 per user in 10 seconds (429 addressLookupRateLimited), and a provider that does not answer within 2 seconds returns 422 addressLookupUnavailable.
Requires: an active member of the workspace; no record permission, because a check changes nothing.
Calendar Changed
WEBHOOKSent when a calendar on a connected account is created, updated, or deleted.
Calendar Event Changed
WEBHOOKSent when a calendar event on a connected account is created, updated, or deleted.
Chat Deleted
WEBHOOKSent when the provider reports a chat thread deletion.
Chat Updated
WEBHOOKSent when a chat thread's provider attributes change (name, mute state, read state).
Email Deleted
WEBHOOKSent when the provider reports an email deletion.
Email Received
WEBHOOKSent when a new email is ingested on a connected email account.
Message Deleted
WEBHOOKSent when the provider reports a message deletion.
Message Reaction
WEBHOOKSent when a reaction is added to or removed from a message.
Message Received
WEBHOOKSent when a new chat message or email is ingested on a connected account.
Message Updated
WEBHOOKSent when the provider reports an edit or status change for an ingested message.
Relation Created
WEBHOOKSent when the provider reports a new connection (e.g. an accepted LinkedIn invitation).