Close integrationClose logo

Close integration for AI agents.

Close integration for AI agents with secure authentication and server-side credential injection. Open Connector runs the OAuth, seals the token in an encrypted vault, and serves Close tools to your agent over MCP or a typed API — credentials injected server-side, every call audited, nothing leaving your infrastructure. Open source (AGPL-3.0) and self-hostable.

What your agents can do

Real Close actions, managed and audited.

Your user connects Close once; your agent can then use Close API to manage CRM leads, contacts, opportunities, activities, tasks, calls, emails, SMS, sequences, users, custom objects, and reporting — scoped to the OAuth permissions you grant and the tool allowlist you configure. Every action is least-privilege and written to a tamper-evident audit trail.

  1. 1

    Your user grants Close access once (OAuth) — the token lands in the vault.

  2. 2

    Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.

  3. 3

    Every routed call appends a hash-chained audit record — nothing leaves your infra.

Tools & triggers

Supported Close tools.

297 tools are generated from the published Close catalog. Descriptions are plain text; each action remains subject to its configured authentication and tool allowlist.

Showing 297 tools. All published catalog entries are included in this page's server-rendered HTML.

Add a User to a Group
Add a user to a group by providing the `user_id`. If the user is already a member, nothing changes.
groups
Archive a playbook
Archive an existing playbook. Archived playbooks are hidden from active listings but retain their associated history.
playbooks
Edit Send As Associations in bulk
You can allow and disallow many other users to send as you in a single command by supplying the user IDs you want to allow and disallow. Once completed, this endpoint returns all existing associations where your user is the allowing user.
send_as
Bulk-update tasks
Any of the filters of the GET endpoint may be used as query parameters or passed in the request body (see [Filter Parameters](https://developer.close.com/api/overview/filter-parameters)). For example: ```json {"_params": {"id__in": "task_A,task_B,task_C"}, "is_complete": true} ``` Only the `assigned_to`, `date` and `is_complete` fields may be updated.
tasks
Create a new lead
Contacts, addresses, and custom fields can all be nested in the lead. Activities, tasks, and opportunities must be posted separately. **status / status_id** (optional): Post either `status` or `status_id` (but not both). If neither is provided, the organization's default (first) status will be used. Using `status_id` is recommended so that users can rename statuses in the UI without breaking your implementation. **custom.FIELD_ID** (optional): Set custom fields by setting `custom.FIELD_ID` to the field value, where FIELD_ID is the ID of the custom field, e.g.: ```json { "custom.cf_v6S011I6MqcbVvB2FA5Nk8dr5MkL8sWuCiG8cUleO9c": "value", "custom.cf_8wtBWsdRU2Fur7GDnEeXQ7ra2Vu7R4hG1SNYdiEhh0F": "other value" } ``` If a custom field has `accepts_multiple_values: true`, the entire value will be replaced. For example, given a Lead has a Custom Choice Field with value `["A", "B"]`, adding choice `"C"` would mean setting the value to `["A", "B", "C"]`. Note that using the `custom` field dict or the `custom.FIELD_NAME` syntax (instead of custom field IDs) is deprecated and will be removed from the API. See [Custom Fields](https://developer.close.com/api/resources/custom-fields) for more details.
leads
Associate a Shared Custom Field with an object type
Associates a Shared Custom Field with an object type such as Lead, Contact, or Custom Activity Type. Once associated, the Shared Custom Field can be set on objects of that type. This endpoint accepts the following attributes: - `object_type` – can be one of: `lead`, `contact`, `opportunity`, `custom_activity_type`, `custom_object_type`. - `custom_activity_type_id` – ID of the Custom Activity Type that you want to associate this Shared Field with. Only relevant if you chose the `object_type` of `custom_activity_type`. - `custom_object_type_id` – ID of the Custom Object Type that you want to associate this Shared Field with. Only relevant if you chose the `object_type` of `custom_object_type`. - `editable_with_roles` – list of [Roles](https://developer.close.com/api/resources/roles) that can edit the values of this Field on the given object. Note that this is a per-association setting, meaning that editing of the Shared Custom Field can be restricted on one object and not restricted on another. - `required` – whether a value *must* be provided for this Field on the given object. Only relevant if you chose the `object_type` of `custom_activity_type` or `custom_object_type`. Note that this is a per-association setting, meaning that this Shared Custom Field can be required on one object and not required on another.
custom_fields.shared
Create or update third-party Meeting integration
Please note that only OAuth apps can perform this operation. Using API key will result in an error. See [Authentication with OAuth](https://developer.close.com/api/overview/oauth-authentication) for more information. Third party integrations are presented as tabs titled with OAuth app name in the activity feed. When invoked for the first time with a given OAuth app a new integration is created, subsequent calls with the same OAuth app will update an existing integration. Submitting an empty JSON body does nothing.
activities.meetings
Export leads based on a search query
You will receive a link to the generated file via email once the export is done. The exported file is GZIP compressed to make your download and our upload faster. The `content-encoding` HTTP header will be set to `gzip` and the `content-type` HTTP header will be set to `text/csv` for CSV exports or `application/json` for JSON exports. Parameters: - `s_query/results_limit/sort` (optional) - The [Advanced Filtering API](https://developer.close.com/api/resources/advanced-filtering) parameters used to narrow the exported results down. By default, all leads are exported. - `format` - Format of the exported file. The choices are: `csv`, `json`. JSON is recommended for raw backups or data migrations. - `type` - Type of the export. - `leads` - For CSV exports, it results in one row per lead. For JSON exports, this is the recommended type and is a superset of the other two types. - `contacts` - For CSV exports, it results in one row per contact. - `lead_opps` - For CSV exports, it results in one row per opportunity. - `date_format` (optional) - Controls the format of date objects. Note: this only works with the `csv` format. - `original` (default) - A date format that includes microseconds and timezone information. - Date: `[YYYY]-[MM]-[DD]` - Date w/ time: `[YYYY]-[MM]-[DD] [hh]:[mm]:[ss.sssss]±[hh]:[mm]` - `iso8601` (recommended) - An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compatible date representation that does not include microseconds. - Date: `[YYYY]-[MM]-[DD]` - Date w/ time: `[YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]±[hh]:[mm]` - `excel` - An Excel compatible date format. Dates are always in UTC, do not include timezone information or microseconds, and use a 12 hour clock with an AM or PM designation. - Date: `[YYYY]-[MM]-[DD]` - Date w/ time: `[YYYY]-[MM]-[DD] [hh]:[mm]:[ss] [AM|PM]` - `fields` (optional) - By default we return all the data fields in each export type. If you only need specific fields exported, you can explicitly list them in `fields` to get smaller exports. - `include_activities` (optional) - Activities aren't included in any exports by default. If you want all your Activities exported as well, pass `"include_activities": true`. Note: this only works for `leads` type with `json` format. - `include_smart_fields` (optional) - Smart Fields aren't included in any exports by default. If you want all of them exported as well, pass `"include_smart_fields": true`. Note: this only works for `leads` type with `json` format or any type formatted as `csv`. Smart fields are calculated fields, like number of emails on a lead. - `send_done_email` - Set to `false` if you don't want to get a confirmation email after the bulk action is done.
exports
Export opportunities, based on opportunity filters
Parameters: - `params` (optional) - A dictionary of filters, which would be used for the `/opportunity/` endpoint. - `format` - Format of the exported file. The choices are: `csv`, `json` - `date_format` (optional) - Controls the format of date objects. Note: this only works with the `csv` format. - `original` (default) - A date format that includes microseconds and timezone information. - Date: `[YYYY]-[MM]-[DD]` - Date w/ time: `[YYYY]-[MM]-[DD] [hh]:[mm]:[ss.sssss]±[hh]:[mm]` - `iso8601` (recommended) - An [ISO 8601](https://en.wikipedia.org/wiki/ISO_8601) compatible date representation that does not include microseconds. - Date: `[YYYY]-[MM]-[DD]` - Date w/ time: `[YYYY]-[MM]-[DD]T[hh]:[mm]:[ss]±[hh]:[mm]` - `excel` - An Excel compatible date format. Dates are always in UTC, do not include timezone information or microseconds, and use a 12 hour clock with an AM or PM designation. - Date: `[YYYY]-[MM]-[DD]` - Date w/ time: `[YYYY]-[MM]-[DD] [hh]:[mm]:[ss] [AM|PM]` - `fields` (optional) - By default we return all the data fields. If you only need specific fields exported, you can explicitly list them in fields to get smaller exports. - `send_done_email` - Set to `false` if you don't want to get a confirmation email after the bulk action is done.
exports
Create a Shared Scheduling Link
Create a Shared Scheduling Link
scheduling_links
Map a Shared Scheduling Link
Map a Shared Scheduling Link to either a User Scheduling Link or a URL. See the examples below for both mapping options.
scheduling_links
Subscribe a Contact to a Sequence
Subscribe a Contact to a Sequence
sequences
Delete a lead
Delete a lead
leads
Delete a Call activity
Delete a Call activity
activities.calls
Delete a Custom Activity instance
Delete a Custom Activity instance
activities.custom_activities
Delete an Email activity
Delete an Email activity
activities.emails
Delete an EmailThread activity
This will also delete all the email activities belonging to this thread.
activities.email_threads
Delete a FormSubmission activity
Delete a FormSubmission activity
activities.form_submissions
Delete a Meeting activity
Delete a Meeting activity
activities.meetings
Delete a Note activity
Delete a Note activity
activities.notes
Delete an SMS activity
Delete an SMS activity
activities.sms
Delete a single LeadStatusChange activity
Deleting a LeadStatusChange does not change the status of the Lead. It only removes the status change event from the Lead's activity feed. It should only be used if the status change is irrelevant (such as records for a change that has been reverted) and having it in the activity feed is causing integration problems with another system.
activities.lead_status_changes
Delete a single OpportunityStatusChange activity
Deleting an OpportunityStatusChange does not change the status of the Opportunity. It only removes the status change event from the Lead's activity feed. It should only be used if the status change is irrelevant (such as records for a change that has been reverted) and having it in the activity feed is causing integration problems with another system.
activities.opportunity_status_changes
Delete a TaskCompleted activity
Delete a TaskCompleted activity
activities.task_completions
Delete a WhatsAppMessage activity
Delete a WhatsAppMessage activity
activities.whatsapp_messages
Disassociate a Shared Custom Field from an object type
Remove the association between a shared custom field and an object type. The field will immediately disappear from API responses for that object type and all stored values will be permanently deleted. The `object_type` in the URL can be `lead`, `contact`, `opportunity`, `custom_activity_type/<catype_id>`, or `custom_object_type/<cotype_id>`. If the field was `required` on the associated type, removing the association also removes that requirement.
custom_fields.shared
Delete a Blocked Phone Number
Once the given Blocked Phone Number record is deleted, the specified " "phone number will again be able to make calls into your organization " "and you'll be able to make calls to it.
blocked_phone_numbers
Delete a Send As Association by allowed user
The `allowing_user_id` must be equal to your user ID. Supply both the `allowing_user_id` and the `allowed_user_id` to delete an association by those users.
send_as
Remove a comment
Note that contrary to the HTTP verb, this does not necessarily _delete_ a comment (but it will _remove_ it). Comments bodies are removed, but the comment object still exists until all comments in a thread are removed (at which point the entire thread is deleted). Permissions around removing comments inherit from the users permission to delete their own or other users' activities.
comments
Delete a contact
Delete a contact
contacts
Delete a Custom Activity Type
Delete a Custom Activity Type
custom_activity_types
Delete an Activity Custom Field
Delete an activity custom field. The field will immediately disappear from API responses and values on existing activities will be permanently removed.
custom_fields.activity
Delete a Contact Custom Field
Delete a contact custom field. The field will immediately disappear from API responses and values on existing contacts will be permanently removed.
custom_fields.contact
Delete a Custom Object Custom Field
Delete a custom field from a custom object type. The field will immediately disappear from API responses and values on existing custom object instances will be permanently removed.
custom_fields.custom_object
Delete a Lead Custom Field
Delete a lead custom field. The field will immediately disappear from API responses and values on existing leads will be permanently removed.
custom_fields.lead
Delete an Opportunity Custom Field
Delete an opportunity custom field. The field will immediately disappear from API responses and values on existing opportunities will be permanently removed.
custom_fields.opportunity
Delete a Shared Custom Field
Delete a shared custom field and all its associations. The field will immediately disappear from API responses and values on all associated object types will be permanently removed.
custom_fields.shared
Delete a Custom Object instance
Delete a Custom Object instance
custom_objects
Delete a Custom Object Type
Delete a Custom Object Type
custom_object_types
Delete an email template
Delete an email template
email_templates
Delete a Group
Delete a group. Members will be removed from the group but not from the organization. Deletion is only allowed if the group is not referenced by saved reports or smart views.
groups
Delete a User Scheduling Link via OAuth integration
Please note that only OAuth apps can perform this operation. Using API key will result in an error. See [Authentication with OAuth](https://developer.close.com/api/overview/oauth-authentication) for more information. Uses the `source_id` field to identify and delete the specified User Scheduling Link created by your OAuth Application.
scheduling_links
Delete an integration link
Delete an integration link
integration_links
Delete a membership
Deactivates a membership, removing the user from the associated organization.
memberships
Delete an opportunity
Delete an opportunity
opportunities
Delete an outcome
Delete an existing outcome. All of the calls and/or meetings associated with this outcome will still retain that reference, but you won't be able to set that outcome on any new calls & meetings nor find its definition in the API.
outcomes
Delete a phone number
You need the "Manage Group Phone Numbers" permission to delete a group number. You can only delete your own personal numbers.
phone_numbers
Delete a Pipeline
Deletion is only allowed if the Pipeline doesn't contain any Opportunity Statuses. Delete all statuses first or move them to another pipeline.
pipelines
Delete a playbook
Delete an existing playbook.
playbooks
Delete a role
Delete a custom role. You must first move all users off this role by reassigning them to another role.
roles
Delete a Smart View
Delete a Smart View
smart_views
Delete a User Scheduling Link
Delete a User Scheduling Link
scheduling_links
Delete a Send As Association by ID
Delete a Send As Association by ID
send_as
Delete a Sequence
Delete a Sequence
sequences
Delete a Shared Scheduling Link
Delete a Shared Scheduling Link
scheduling_links
Unmap a Shared Scheduling Link
Unmap a Shared Scheduling Link
scheduling_links
Delete an SMS template
Delete an SMS template
sms_templates
Delete a lead status
You should make sure no leads are assigned this status, first.
lead_statuses
Delete an opportunity status
You should make sure no opportunities are assigned this status, first.
opportunity_statuses
Delete a Sequence Subscription
Unsubscribe a contact from a sequence by deleting their subscription.
sequences
Delete a task
Delete a task
tasks
Resubscribe an email address
Resubscribe an email address
unsubscribed_emails
Delete Webhook subscription
Delete Webhook subscription
webhooks
Retrieve a Form
Retrieve a single form and its published field definitions by ID.
forms
Get a single Lead
Get a single Lead
leads
List or filter all Call activities
List or filter all Call activities
activities.calls
Get a single Call activity
Get a single Call activity
activities.calls
List or filter all Created activities
List or filter all Created activities
activities.creations
Get a single Created activity
Get a single Created activity
activities.creations
List or filter all Custom Activity instances
Custom Fields appear in the format: `custom.{custom_field_id}`. See [Custom Fields](https://developer.close.com/api/resources/custom-fields/custom-fields-activity). If you're filtering by `custom_activity_type_id` or `custom_activity_type_id__in` parameter, the `lead_id` parameter will be required as well. If you want to retrieve all Custom Activity instances of a specific type regardless of the lead, you will need to get leads that contain such an activity type using [Advanced Filtering](https://developer.close.com/api/resources/advanced-filtering) and provide those Lead IDs one at a time to this endpoint.
activities.custom_activities
Get a single Custom Activity instance
Get a single Custom Activity instance
activities.custom_activities
List or filter all Email activities
You'll get one object per email message.
activities.emails
Get a single Email activity
Get a single Email activity
activities.emails
List or filter all EmailThread activities
You'll get one object per email conversation (generally grouped by subject).
activities.email_threads
Get a single EmailThread activity
Get a single EmailThread activity
activities.email_threads
List or filter all FormSubmission activities
Get a list of matching FormSubmission activities. In addition to standard Activity filtering parameters, you can filter by specific form(s) using the `form_id` or `form_id__in` parameters.
activities.form_submissions
Get a single FormSubmission activity
Get a single FormSubmission activity
activities.form_submissions
List or filter all activity types
To list only a specific activity type (e.g., only `Call` or `LeadStatusChange`), use the other resources listed separately. When querying activities for a single lead (using the `lead_id` parameter), you can ask for multiple activity types using `_type__in`. When listing [Custom Activities](https://developer.close.com/api/resources/activities/custom-activities), `_type` and `_type__in` can include Custom Activity Type ids (e.g. `actitype_1h5m6uHM9BZOpwVhyRJb4Y`) to filter by a specific custom activity type or `Custom` to list custom activities of any type. The following filtering parameters can only be used for listing activities on a single lead (using the `lead_id` parameter): `user_id`, `user_id__in`, `contact_id`, `contact_id__in`, `_type`, `_type__in`. All activities have two sortable datetime fields: `date_created` and `activity_at`. `date_created` denotes when an activity was created or synced into Close and `activity_at` denotes when that activity actually occurred. For example, on outgoing Email activities, `date_created` is equal to when the email was first created in Close, and `activity_at` is equal to when the email was actually sent. For Meeting activities, `activity_at` is equal to the scheduled time of the meeting. On custom activities, users are able to update the `activity_at` field at any time. Sorting by `-activity_at` can only be used when listing activities on a single lead using the `lead_id` parameter. In addition, you can only use the date-based filters of the field you're currently sorting on. This means that if you want to use `activity_at__lt` and `activity_at__gt` as filters, you need to include `_order_by=-activity_at` in your request. `thread_emails` parameter: - (Default) when this parameter is not present, `Email` objects will be returned for each email message. - A value of `true` will return `EmailThread` objects representing email conversations. Stripped-down version of `Email` objects will also be returned. - A value of `only` will return `EmailThread` objects representing email conversations. `Email` objects will not be returned.
activities
List or filter all LeadMerge activities
List or filter all LeadMerge activities
activities.lead_merges
Get a single LeadMerge activity
Get a single LeadMerge activity
activities.lead_merges
List or filter all Meeting activities
List or filter all Meeting activities
activities.meetings
Get a single Meeting activity
Meeting transcripts can be accessed using this API but are not loaded by default. To load transcripts, use the `_fields` parameter with `transcripts` value. The `transcripts` field is an array of objects for each Close Notetaker bot that joined the meeting. Typically, there will be only one transcript. Transcripts are ordered by the time bots joined the meeting. Example transcripts in response: ```json { "transcripts": [ { "utterances": [ { "speaker_label": "John Lead", "speaker_side": "contact", "start": 0.1, "end": 1.2, "text": "Hey, what's up? How is it going?" }, { "speaker_label": "Jane User", "speaker_side": "close-user", "start": 1.3, "end": 2.4, "text": "Hey John, I'm doing great. How about you?" } ], "summary_text": "Summary text", "summary_html": "<p>Summary text</p>" } ] } ```
activities.meetings
List or filter all Note activities
List or filter all Note activities
activities.notes
Get a single Note activity
Get a single Note activity
activities.notes
Get an activity report
The activity report returns the organization's metrics per time period (**overview** report) or user (**comparison** report). Every report accepts the following parameters: * `datetime_range`: a time range to fetch data for. Either this field or `relative_range` needs to be specified. * `relative_range`: a relative time range to fetch data for. The allowed values are: `today`, `this-week`, `this-month`, `this-quarter`, `this-year`, `yesterday`, `last-week`, `last-month`, `last-quarter`, `last-year`, and `all-time`. Either this field or `datetime_range` needs to be specified. * `query`: a query to apply to the report to filter out data. The value of the field is a dictionary with the key `type` and any type-specific keys. For now only the type `saved_search` is allowed which takes the extra key `saved_search_id` to specify the ID of a saved search. This parameter is *optional*. * `users`: a list of user IDs to limit the report results to. This parameter is *optional*. * `type`: the type of the report. The available values are `overview` and `comparison`. This parameter is *mandatory*. * `metrics`: a list of metrics (see [List Activity Metrics](/api/resources/reporting/list-activity-metrics)) to fetch for the report. This parameter is *mandatory*. The report can be requested either in a JSON format or in a CSV file. The format can be specified with the `accept` header.
reporting
List or filter all SMS activities
Get a list of matching SMS activities. MMS messages are considered SMS messages with attachments. Attachments have identical fields to email attachments (`url`, `filename`, `size` and `content_type`), a `media_id` uniquely identifying an attachment, and if Close was able to generate a thumbnail, a `thumbnail_url` too. Accessing `url` or `thumbnail_url` requires an authenticated session and leads to a temporarily signed S3 URL.
activities.sms
Get a single SMS activity
Get a single SMS activity
activities.sms
List or filter all LeadStatusChange activities
List or filter all LeadStatusChange activities
activities.lead_status_changes
Get a single LeadStatusChange activity
Get a single LeadStatusChange activity
activities.lead_status_changes
List or filter all OpportunityStatusChange activities
List or filter all OpportunityStatusChange activities
activities.opportunity_status_changes
Get a single OpportunityStatusChange activity
Get a single OpportunityStatusChange activity
activities.opportunity_status_changes
List or filter all TaskCompleted activities
List or filter all TaskCompleted activities
activities.task_completions
Get a single TaskCompleted activity
Get a single TaskCompleted activity
activities.task_completions
List or filter all WhatsAppMessage activities
Filter by `external_whatsapp_message_id` to find messages to update or delete based on changes in WhatsApp.
activities.whatsapp_messages
Get a single WhatsAppMessage activity
Get a single WhatsAppMessage activity
activities.whatsapp_messages
Fetch a Shared Custom Field Association
Fetch a Shared Custom Field Association
custom_fields.shared
List Blocked Phone Numbers
List Blocked Phone Numbers
blocked_phone_numbers
Retrieve a single Blocked Phone Number
Retrieve a single Blocked Phone Number
blocked_phone_numbers
List bulk deletes
List bulk deletes
bulk_actions.delete
Fetch a single bulk delete object
Fetch a single bulk delete object
bulk_actions.delete
List bulk edits
List bulk edits
bulk_actions.edit
Fetch a single bulk edit object
Fetch a single bulk edit object
bulk_actions.edit
List bulk emails
List bulk emails
bulk_actions.email
Fetch a single bulk email object
Fetch a single bulk email object
bulk_actions.email
List bulk sequence subscriptions
List bulk sequence subscriptions
bulk_actions.sequence_subscriptions
Fetch a single bulk sequence subscription object
Fetch a single bulk sequence subscription object
bulk_actions.sequence_subscriptions
Fetch multiple comments
Comments may be fetched by `object_id` (the object that was commented on) or by `thread_id`. Exactly one of those filters must be provided. Comments on leads the requestor cannot see are omitted from the response.
comments
Fetch an individual comment
A `404` is returned both when the comment does not exist and when the requestor cannot see its lead.
comments
List connected accounts
You can filter down to a specific user by passing the `?user_id` query parameter.
connected_accounts
Fetch a single connected account
Fetch a single connected account
connected_accounts
List contacts
List contacts
contacts
Fetch a single contact
Fetch a single contact
contacts
Get custom report (Explorer)
This endpoint returns data that allows graphing of arbitrary metrics and is what powers "Explorer" in the UI. - `query` is an optional search query filter. When reporting on leads, any regular lead search query may be used. When reporting on activities or opportunities, only properties of the chosen object type may be used. For example, `direction:incoming` may be used if `x` starts with `email.`. Defaults to `*`, which includes all objects. - `y` is made up of the object type and field which is reported on the Y axis. For example the value `lead.count` (used by default) may be used to graph the number of leads, or a numeric field may be used. Examples: `call.duration` (for call length), `opportunity.value` (for value of opportunities). - `x` is the field which is reported on the X axis, for example "lead.custom.MRR" or "opportunity.date_created". - `interval`: Graph interval, i.e. the precision of the X axis. For time based graphs (`x` is a date field), one of `auto`, `hour`, `day`, `week`, `month`, `quarter`, `year` (defaults to `auto`, which is chosen based on `start` and `end`). For graphs with a numeric X axis, an integer number can be specified to indicate the histogram interval (`auto` by default). - `group_by`: Optional field name by which the report will be grouped. When grouping, a separate series will be returned for each group. By default no grouping is applied. - `transform_y`: Transformation function that gets applied to the `y` parameter. One of `sum` (default), `avg`, `min`, or `max`. Does not apply for `.count` `y` values if `x` is of the same object type. - `start`: Date or integer of the start of the X axis range. For dates, defaults to the date of creation of your organization. - `end`: Date or integer of the end of the X axis range. For dates, defaults to now. To get a full list of fields that can be used, do a GET to `/report/custom/fields/`. Only the `number` data type can be used for the `y` parameter.
reporting
List Custom Activity Types
List all custom activity types defined in the organization. The response includes all Custom Activity Types, including their Custom Field metadata.
custom_activity_types
Retrieve a single Custom Activity Type
The response contains the Custom Activity Type including most Custom Field metadata.
custom_activity_types
List Activity Custom Fields
List all the activity custom fields for your organization.
custom_fields.activity
Fetch Activity Custom Field's details
Fetch Activity Custom Field's details
custom_fields.activity
List Contact Custom Fields
List all the contact custom fields for your organization.
custom_fields.contact
Fetch Contact Custom Field's details
Fetch Contact Custom Field's details
custom_fields.contact
List Custom Object Custom Fields
List all the custom object custom fields for your organization.
custom_fields.custom_object
Fetch Custom Object Custom Field's details
Fetch Custom Object Custom Field's details
custom_fields.custom_object
List Lead Custom Fields
List all the lead custom fields for your organization.
custom_fields.lead
Fetch Lead Custom Field's details
Fetch Lead Custom Field's details
custom_fields.lead
List Opportunity Custom Fields
List all the opportunity custom fields for your organization.
custom_fields.opportunity
Fetch Opportunity Custom Field's details
Fetch Opportunity Custom Field's details
custom_fields.opportunity
Retrieve a custom field schema
Retrieve a custom field schema
custom_field_schemas
List Shared Custom Fields
List all the shared custom fields for your organization.
custom_fields.shared
Fetch Shared Custom Field's details
Fetch Shared Custom Field's details
custom_fields.shared
List Custom Object instances
The `lead_id` parameter is required. If you want to retrieve all Custom Object instances regardless of the lead, you will need to use [Advanced Filtering](https://developer.close.com/api/resources/advanced-filtering). Custom Fields values appear in the format: `custom.{custom_field_id}`. See [Custom Fields](https://developer.close.com/api/resources/custom-fields/custom-fields-custom-object). Back references to each Custom Object are not collected in this response. If you need to access this information, please use the `back_reference_fields` on the Custom Object Type and [Advanced Filtering](https://developer.close.com/api/resources/advanced-filtering) to search for objects that reference the Custom Object Instance.
custom_objects
Retrieve a single Custom Object instance
Retrieve a single Custom Object instance
custom_objects
List Custom Object Types
The response will include all Custom Object Types, including Custom Field metadata for your organization. Each Custom Object Type has two lists of Custom Fields. The `fields` property contains the list of fields that belong to the Custom Object Type. The `back_reference_fields` property contains the list of any objects (Leads, Contacts, Opportunities, Custom Activities, Custom Objects) that reference the Custom Object Type.
custom_object_types
Retrieve a single Custom Object Type
Retrieve a single custom object type by ID. The response contains the Custom Object Type including most Custom Field metadata.
custom_object_types
List or filter all dialer sessions
List or filter all dialer sessions
dialers
Get a single dialer session
Once you have a `source_value` for a dialer session and `source_type=saved-search`, you can use the [saved_search endpoint](https://developer.close.com/api/resources/smart-views/get) to find out more information about the Smart View being used.
dialers
List email templates
List email templates
email_templates
Fetch an email template
Fetch an email template
email_templates
Retrieve a list of events
The list of available object types and actions is available [here](https://developer.close.com/api/resources/events/list-of-event-types). The event log can be filtered by the following parameters: - `date_updated`: The date/time of when the event was last updated, in ISO format. Can be filtered by range (`date_updated__gte=X&date_updated__lte=Y`). Note: For pagination, it is recommended to use cursors instead of this filter (see below). - `object_type`: If specified, only events for objects of a given type are returned. Example: `object_type=lead` - `object_id`: If specified, only events for the given object are returned. No related object events are returned. Example: `object_id=lead_123` - `action`: Only events of specified actions are returned. Example: `action=deleted` - `lead_id`: If specified, events for the given lead, including any of its related objects (contacts, activities, opportunities, tasks) are returned. - `user_id`: Only return events of the given user. - `request_id`: Only events emitted while processing this specific API request. Only certain combinations of filters are supported. `date_updated` can be optionally used with any allowed filter combination. Supported combinations are: - `object_type` and `object_id` - `object_type` and `action` - `object_id` and `action` - `lead_id` and `object_type` - `lead_id`, `object_type` and `action` - `lead_id`, `user_id` and `object_type` - `lead_id`, `user_id`, `object_type` and `action` - `lead_id` and `user_id` - `user_id` and `object_id` - `user_id`, `object_id` and `action` - `user_id` and `object_type` - `user_id`, `object_type` and `action` - Just `lead_id` - Just `user_id` - Just `request_id` The response is a dictionary with the following fields: - `data`: A list of events (dictionaries), using the format outlined in “Event format”. - `cursor_next`: Cursor string to retrieve the next page of events, i.e. events before the given ID (earlier date), or `null` if no more objects are available. - `cursor_previous`: Cursor string to retrieve the previous page of events, i.e. events after the given ID (later date), or `null` if no more objects are available. Events are always ordered by date (latest first), i.e. the `date_updated` field. Note that even though `date_created` and `date_updated` may only have millisecond-precision, two or more events for the same object are guaranteed to be returned in the proper order. The endpoint supports the following parameters for pagination, and does *not* support `_skip`: - `_cursor`: Pagination using a cursor string (`cursor_next` or `cursor_previous` from a previous response). Note that you still need to supply any other filters (except for `date_updated`) that were used in the previous query. - `_limit`: Maximum number of events to return (capped at and defaulting to 50). Cursors are a reliable way to go to the next or previous page of events (unlike filtering by `date_updated`, where you may need to account for and filter out multiple events happening in the same millisecond). However, cursors are not designed to stream new events: Events may be visible through the API in a different order than they were triggered (but the ordering returned by the API is correct). Also, event consolidation of multiple recent events to the same object may occur. To avoid missing recent events when paginating, we recommend to scan the latest five minutes of events. In the example response, to retrieve the next older batch of events, specify `_cursor=cursor2`.
events
Retrieve a single event by ID
The response contains a dictionary with a single event, using the format outlined in “Event format”.
events
List all the exports
List all the exports
exports
Get a single Export
You can get a single export to do things like check its `status` or get a `download_url` - `status` can have one of these values: `created`, `started`, `in_progress`, `done`, `error`.
exports
List Forms
List all forms and their published field definitions for your organization.
forms
Get a funnel report (stages)
The opportunity funnel "stages" report returns the pipeline funnel's metrics for the selected opportunities, aggregated (JSON format only) and per-user (JSON and CSV formats). Every report accepts the following parameters: * `pipeline`: ID of the pipeline defining the funnel statuses. * `type`: the type of the report. The available values are `created-cohort` and `active-stage-cohort`. * `report_relative_range`: a relative time range to fetch data for. The allowed values are: `today`, `this-week`, `this-month`, `this-quarter`, `this-year`, `yesterday`, `last-week`, `last-month`, `last-quarter`, `last-year`, and `all-time`. * `report_datetime_range`: a time range to fetch data for. * `cohort_relative_range`: a relative time range defining the cohort of created opportunities to fetch data for, by date of creation of those opportunities. The allowed values are: `today`, `this-week`, `this-month`, `this-quarter`, `this-year`, `yesterday`, `last-week`, `last-month`, `last-quarter`, `last-year`, and `all-time`. Either this field or `cohort_datetime_range` needs to be specified for `created-cohort` reports. Its value will be ignored for `active-stage-cohort` reports. * `cohort_datetime_range`: a time range defining the cohort of created opportunities to fetch data for, by date of creation of those opportunities. Either this field or `cohort_relative_range` needs to be specified for `created-cohort` reports. Its value will be ignored for `active-stage-cohort` reports. * `compared_relative_range`: a relative time range to fetch comparison data for. Only allowed in combination with `report_relative_range` (for `active-stage-cohort` reports) or `cohort_relative_range` (for `created-cohort` reports). The allowed values are: `today`, `this-week`, `this-month`, `this-quarter`, `this-year`, `yesterday`, `last-week`, `last-month`, `last-quarter`, `last-year`, and `all-time`. * `compared_datetime_range`: a relative time range to fetch comparison data for. Only allowed in combination with `report_datetime_range` (for `active-stage-cohort` reports) or `cohort_datetime_range` (for `created-cohort` reports). The allowed values are: `same-days-last-week`, `same-days-last-month`, `same-days-last-quarter`, `same-days-last-year`. * `compared_custom_range`: a time range to fetch comparison data for. * `query`: a query to apply to the report to filter out data. The value of the field is a dictionary with the key `type` and any type-specific keys. For now only the type `saved_search` is allowed which takes the extra key `saved_search_id` to specify the ID of a saved search. This parameter is *optional*. * `users`: a list of user IDs or group IDs to limit the report results to. When it's empty, the report will include all the available users. This parameter is *optional*. The report can be requested either in JSON format or in CSV format. The format can be specified with the `accept` header. In JSON format, it includes aggregated and per-user data. When requested in CSV format, it includes only per-user data. When `compared_datetime_range`, `compared_relative_range`, or `compared_custom_range` are used, the report returned is the compared one, not the base one.
reporting
Get a funnel report (totals)
The opportunity funnel "totals" report returns the pipeline funnel's metrics for the selected opportunities, aggregated (JSON format only) and per-user (JSON and CSV formats). Every report accepts the following parameters: * `pipeline`: ID of the pipeline defining the funnel statuses. * `type`: the type of the report. The available values are `created-cohort` and `active-stage-cohort`. * `report_relative_range`: a relative time range to fetch data for. The allowed values are: `today`, `this-week`, `this-month`, `this-quarter`, `this-year`, `yesterday`, `last-week`, `last-month`, `last-quarter`, `last-year`, and `all-time`. * `report_datetime_range`: a time range to fetch data for. * `cohort_relative_range`: a relative time range defining the cohort of created opportunities to fetch data for, by date of creation of those opportunities. The allowed values are: `today`, `this-week`, `this-month`, `this-quarter`, `this-year`, `yesterday`, `last-week`, `last-month`, `last-quarter`, `last-year`, and `all-time`. Either this field or `cohort_datetime_range` needs to be specified for `created-cohort` reports. Its value will be ignored for `active-stage-cohort` reports. * `cohort_datetime_range`: a time range defining the cohort of created opportunities to fetch data for, by date of creation of those opportunities. Either this field or `cohort_relative_range` needs to be specified for `created-cohort` reports. Its value will be ignored for `active-stage-cohort` reports. * `compared_relative_range`: a relative time range to fetch comparison data for. Only allowed in combination with `report_relative_range` (for `active-stage-cohort` reports) or `cohort_relative_range` (for `created-cohort` reports). The allowed values are: `today`, `this-week`, `this-month`, `this-quarter`, `this-year`, `yesterday`, `last-week`, `last-month`, `last-quarter`, `last-year`, and `all-time`. * `compared_datetime_range`: a relative time range to fetch comparison data for. Only allowed in combination with `report_datetime_range` (for `active-stage-cohort` reports) or `cohort_datetime_range` (for `created-cohort` reports). The allowed values are: `same-days-last-week`, `same-days-last-month`, `same-days-last-quarter`, `same-days-last-year`. * `compared_custom_range`: a time range to fetch comparison data for. * `query`: a query to apply to the report to filter out data. The value of the field is a dictionary with the key `type` and any type-specific keys. For now only the type `saved_search` is allowed which takes the extra key `saved_search_id` to specify the ID of a saved search. This parameter is *optional*. * `users`: a list of user IDs or group IDs to limit the report results to. When it's empty, the report will include all the available users. This parameter is *optional*. The report can be requested either in JSON format or in CSV format. The format can be specified with the `accept` header. In JSON format, it includes aggregated and per-user data. When requested in CSV format, it includes only per-user data. When `compared_datetime_range`, `compared_relative_range`, or `compared_custom_range` are used, the report returned is the compared one, not the base one.
reporting
List Groups for your organization
Note that list endpoint does not support retrieving members for all groups. Use individual group endpoint instead.
groups
Fetch an individual Group
Fetch an individual Group
groups
Get all integration links for your organization
Get all integration links for your organization
integration_links
Get a single integration link
Get a single integration link
integration_links
Get a single Lead Export
Get a single lead export to do things like check its `status` or get a `download_url`. `status` can have one of these values: `created`, `started`, `in_progress`, `done`, `error`.
exports
Get lead status change report
Get a lead status change report. The date range is optional. A report may be requested for a specific time period or overall. You can specify either a `query` or `smart_view_id` (but not both) to filter leads included in the report. The following fields are returned (when requesting an overall report, some inapplicable fields will not be returned): * `status_overview`: A list of all statuses with: * `status_id`, `status_label`, `status_is_deleted`: The ID and label of the status, and whether it was deleted. * `started`: Number of leads in this status at the start of the period. * `ended`: Number in this status at the end. * `change`: Net change during the period (`ended` minus `started`). * `change_percent`: Net change in percent. * `gained`: Number that were not in this status at the beginning but were at the end. * `lost`: Number that were in this status at the beginning but were not at the end. * `entered`: Number that entered this status at some point during the period. * `left`: Number that left this status at some point during the period. * `_queries`: A dictionary containing search queries for the different states (`started`, `ended`, `gained`, `lost`, `entered`, `left`). * `_leads_page_urls`: A dictionary containing paths to the lead search UI page. * `status_transitions`: A list of all status transitions (aggregated by start/end status) for the given period with: * `from_status_id`, `from_status_label`, `from_status_is_deleted`: Starting status (null for created leads). * `to_status_id`, `to_status_label`, `to_status_is_deleted`: Ending status. * `count`: The number that transitioned. * `_query`: The search query for those records. * `_leads_page_url`: Path to the search UI page. * `status_transitions_summary`: Status transitions summarized for the period. E.g. a lead that went A→B→C is counted as A→C.
reporting
Fetch information about yourself
A special instance of the Users endpoint for the current user. Useful for determining your own `id` and `organization_id`.
users
Get a single Opportunity Export
Get a single opportunity export to do things like check its `status` or get a `download_url`. `status` can have one of these values: `created`, `started`, `in_progress`, `done`, `error`.
exports
List or filter opportunities
* All opportunity list responses contain the following aggregate values about all the matching objects (regardless of pagination / limits): * `total_results`: the total number of objects, * `count_by_value_period`: a dictionary containing the number of opportunities by value period, e.g. `{ 'one_time': 2, 'annual': 1, 'monthly': 1 }`, * `total_value_one_time`: the sum of the values of all one time opportunities, * `total_value_monthly`: the sum of the values of all monthly opportunities, * `total_value_annual`: the sum of the values of all annual opportunities, * `total_value_annualized`: the sum of the values of all opportunities where monthly opportunity values are multiplied by 12, * `expected_value_one_time`: the sum of the values of all one time opportunities multiplied by their confidence, * `expected_value_monthly`: the sum of the values of all monthly opportunities multiplied by their confidence, * `expected_value_annual`: the sum of the values of all annual opportunities multiplied by their confidence, * `expected_value_annualized`: the sum of the values of all opportunities multiplied by their confidence where monthly opportunity values are multiplied by 12, * `query` is an optional search query filter. Only opportunity properties may be used in the filter. For example, `note:important` will only show opportunities which contain the text `important` in their note. Or, `status_change(old_status:active new_status:won date:yesterday)` will only show opportunities that transitioned from status `active` to status `won` on the previous day. * `_order_by` allows: `date_won`, `date_updated`, `date_created`, `confidence`, `user_name`, `value`, `annualized_value`, `annualized_expected_value` (each of them allows descending order by prepending a minus, e.g. `_order_by=-date_won`). * `value_period` allows: `one_time`, `monthly`, `annual`. * Multiple values for `user_id`, `status_id`, `status_label`, `status_type` and `value_period` can be specified using the *in* operator, e.g. `status_type__in=active,won`. * `_group_by` allows: `user_id`, `date_won__week`, `date_won__month`, `date_won__quarter` `date_won__year` to group results by the given criteria. When grouping results, the `data` array contains a list of groups instead of objects. A group consists of the following fields: * `key` containing a unique group key, * `objects` containing the list of objects for the given group, * `total_results` containing the number of total objects for the given group, * all aggregate values for the given group, * if grouping by year: `year`, containing the year for the given group, * if grouping by month: `year` and `month`, containing the year and month (1-12) for the given group, * if grouping by quarter: `year` and `quarter`, containing the year and quarter (1-4) for the given group, * if grouping by week: `weekyear` and `week`, containing the ISO week year and ISO week number for the given group, * if grouping by user: `user_id` and `user_name`, containing the user ID and full name of the user for the given group. Note that pagination still applies to objects and not groups. The last or first group may be cut off during pagination, therefore `total_results` may not match the length of `objects`. When paginating, the `key` value may be used to combine groups across multiple pages. Sorting using `_order_by` may be applied and sorts the items within each of the groups. Group order can be reversed by prepending a minus. For example, `_group_by=-date_won__week` will show the most recent weeks first. When grouping by `user_id`, results are ordered by the user's full name. * `lead_saved_search_id` is an optional lead Smart View filter. * (deprecated) `lead_query` is an optional lead search text-based query filter. This parameter is now deprecated in favor of using the `lead_saved_search_id` Smart View ID parameter.
opportunities
Retrieve an opportunity
Retrieve an opportunity
opportunities
Get opportunity status change report
Get an opportunity status change report. The date range is optional. A report may be requested for a specific time period or overall. You can specify either a `query` or `smart_view_id` (but not both) to filter opportunities included in the report. The report may optionally be filtered by the opportunity user. The following fields are returned (when requesting an overall report, some inapplicable fields will not be returned): * `status_overview`: A list of all statuses with: * `status_id`, `status_label`, `status_is_deleted`: The ID and label of the status, and whether it was deleted. * `started`: Number of opportunities in this status at the start of the period. * `ended`: Number in this status at the end. * `change`: Net change during the period (`ended` minus `started`). * `change_percent`: Net change in percent. * `gained`: Number that were not in this status at the beginning but were at the end. * `lost`: Number that were in this status at the beginning but were not at the end. * `entered`: Number that entered this status at some point during the period. * `left`: Number that left this status at some point during the period. * `_queries`: A dictionary containing search queries for the different states (`started`, `ended`, `gained`, `lost`, `entered`, `left`). Search queries are wrapped in a nested `opportunity(...)` clause. To pass the query to the opportunities API endpoint, use only the query within the parentheses. * `_leads_page_urls`: A dictionary containing paths to the lead search UI page. * `_opportunities_page_urls`: A dictionary containing paths to the opportunity UI page. * `status_transitions`: A list of all status transitions (aggregated by start/end status) for the given period with: * `from_status_id`, `from_status_label`, `from_status_is_deleted`: Starting status (null for created opportunities). * `to_status_id`, `to_status_label`, `to_status_is_deleted`: Ending status. * `count`: The number that transitioned. * `_query`: The search query for those records. * `_leads_page_url`: Path to the search UI page. * `_opportunities_page_url`: Path to the opportunity UI page. * `status_transitions_summary`: Status transitions summarized for the period. E.g. an opportunity that went A→B→C is counted as A→C.
reporting
Get an organization's details
By default, `memberships` and `inactive_memberships` are populated with user data prefixed with `user_`. If you'd rather have a nested `user` field, use a query string like `?_expand=memberships__user,inactive_memberships__user`.
organizations
List or filter outcomes
Fetch a list of outcomes.
outcomes
Fetch a single outcome
Fetch a single outcome
outcomes
List or search for phone numbers
List or search for phone numbers
phone_numbers
Retrieve a single phone number
Retrieve a single phone number
phone_numbers
Get pinned views for a membership
Get the ordered list of pinned views for the given membership.
memberships
List Pipelines for your organization
List Pipelines for your organization
pipelines
Fetch a single Pipeline
Fetch a single Pipeline
pipelines
List or filter playbooks
Fetch a list of playbooks for the organization. Results are sorted by position ascending.
playbooks
Fetch a single playbook
Fetch a single playbook
playbooks
List all the roles defined for your organization
List all the roles defined for your organization
roles
Fetch a single role
Fetch a single role
roles
List Smart Views
Accepts: - A `type` filter that accepts either `lead` or `contact`. Defaults to `lead`. - A `type__in` filter that can be used to select multiple comma-separated types: `lead,contact`.
smart_views
Get a single Smart View
Get a single Smart View
smart_views
List User Scheduling Links
List User Scheduling Links
scheduling_links
Fetch a User Scheduling Link
Fetch a User Scheduling Link
scheduling_links
List Send As Associations
A user only has access to associations they are involved in. This means that when using this endpoint, `allowing_user_id` or `allowed_user_id` must be equal to your user ID. If neither filter is provided, `allowing_user_id` is assumed by default.
send_as
Retrieve a single Send As Association
Retrieve a single Send As Association
send_as
Get sent emails report
Get sent emails report
reporting
List Sequences
List Sequences
sequences
Fetch a Sequence
Fetch a Sequence
sequences
Retrieve Blocked Phone Number settings
Retrieve Blocked Phone Number settings
blocked_phone_numbers
Fetch a Shared Scheduling Link
Fetch a Shared Scheduling Link
scheduling_links
List SMS templates
List SMS templates
sms_templates
Fetch an SMS template
Fetch an SMS template
sms_templates
List lead statuses for your organization
List lead statuses for your organization
lead_statuses
Fetch a single lead status
Fetch a single lead status
lead_statuses
List opportunity statuses for your organization
List opportunity statuses for your organization
opportunity_statuses
Fetch a single opportunity status
Fetch a single opportunity status
opportunity_statuses
Fetch a single Sequence Subscription
Fetch a single Sequence Subscription
sequences
List or filter tasks
The `view` parameter can be used to conveniently access the different task views. It accepts one of the following values: * `inbox`: Shows incomplete tasks up to the end of the user's day only (taking the time zone into account). * `future`: Shows incomplete tasks starting from the user's tomorrow only (taking the time zone into account). * `archive`: Shows complete tasks only. Note that a `view` value of `inbox` or `future` will override any `date__lt` or `date__gte` parameters included in the same request. The `_order_by` field allows ordering by `date` or `date_created` (descending order by prepending a minus, e.g. `_order_by=-date`).
tasks
Fetch a task's details
Fetch a task's details
tasks
Fetch an individual comment thread
A `404` is returned both when the comment thread does not exist and when the requestor cannot see its lead.
comments
List all unsubscribed emails
Get a list of unsubscribed email addresses.
unsubscribed_emails
List users in your organization
List all the users who are members of the same organizations as you are.
users
Fetch a single user
Fetch a single user
users
List Webhook subscriptions
List all webhook subscriptions for the organization.
webhooks
Retrieve a single Webhook subscription
The response contains the subscription details.
webhooks
List Leads
List Leads
leads
List the predefined metrics used in activity reports
List available metrics that can be used in activity reports.
reporting
List user availability statuses
List user availability statuses for all users in an organization. The `active_calls` field is an array of call metadata for calls that the user is currently participating in.
users
List Lead Exports
List Lead Exports
exports
List Opportunity Exports
List Opportunity Exports
exports
List Shared Scheduling Links
List Shared Scheduling Links
scheduling_links
List Sequence Subscriptions
At least one of `sequence_id`, `contact_id`, and `lead_id` is required.
sequences
Fetch multiple comment threads
Users with restricted lead visibility cannot list comment threads across all leads, and must scope the request to specific threads or objects via the `ids` or `object_ids` filters. Unscoped requests from such users return a `403`.
comments
Merge two leads
For details and definitions of 'source' and 'destination', see the Merge Leads feature in the UI.
leads
Log an external Call activity
Use this endpoint to log calls made outside of the Close built-in VoIP system. *status*: defaults to `completed` *direction* (optional): `outbound` or `inbound` *recording_url*: you can post a URL pointing to the MP3 recording of your call. For security reasons, we require the URL to be secure (i.e. starting with https://)
activities.calls
Create a new Custom Activity instance
Custom Activity instances will be created by default with the 'published' status. All required fields will be validated in this status. To create an activity without setting all required fields, you can use the "draft" status. A Custom Activity can be pinned or unpinned by setting the `pinned` field to `true` or `false` when creating or updating a Custom Activity.
activities.custom_activities
Create an Email activity
*status* must be one of the following: - `inbox` to log an already received email. - `draft` to create a draft email. - `scheduled` to send an email at a scheduled date and time, which must be specified in the `date_scheduled` field. - `outbox` to actually **send** an email. To delay email sending by a few seconds (to allow undo), specify `send_in` in seconds (must be less than 60). - `sent` to log an already sent email. Only drafts can be modified, and their status can be changed to `scheduled` (to send later) or `outbox` (to send immediately). Scheduled emails, or emails in outbox that weren't sent yet can be canceled by setting the status back to `draft`. For scheduled, outbox, or sent emails, a `followup_date` may be posted, which will have Close create an email followup task if no response was received. We'll render an Email Template server-side if you include a `template_id` _without_ including `body_text` or `body_html` in your POST. To specify both a sender name and a sender email address when posting an email, you can use the `sender` field with the format `"sender": ""John Smith" <emailaddress@example.com>"` The `sender` field is **required** for emails with status `inbox`, `scheduled`, `outbox`, or `error`. It may be omitted for `draft` (since the sender can be specified later before sending) and `sent` (where it defaults to the email address of the `user` associated with the email or the owner of the API key). To include an attachment, you must first upload the file to Close using the [Files API](https://developer.close.com/api/resources/files). Then, add an object to the `attachments` array with the following fields: `url`, `filename`, `content_type`, and `size`. The `url` should be the URL provided in the `download.url` field of the response from the [Files API](https://developer.close.com/api/resources/files). It must begin `https://app.close.com/go/file/`.
activities.emails
Create a Note activity
To include an attachment, you must first upload the file to Close using the [Files API](https://developer.close.com/api/resources/files). Then, add an object to the `attachments` array with the following fields: `url`, `filename` and `content_type`. The `url` should be the URL provided in the `download.url` field of the response from the [Files API](https://developer.close.com/api/resources/files). It must begin `https://app.close.com/go/file/`. A note can be pinned or unpinned by setting the `pinned` field to `true` or `false` when creating or updating a note.
activities.notes
Create an SMS activity
*status* must be one of the following: - `inbox` to log an already received SMS. - `draft` to create a draft SMS. - `scheduled` to send an SMS at a scheduled date and time, which must be specified in the `date_scheduled` field. - `outbox` to actually **send** an SMS. To delay SMS sending by a few seconds (to allow undo), specify `send_in` in seconds (must be less than 60). - `sent` to log an already sent SMS. Only drafts can be modified, and their status can be changed to `scheduled` (to send later) or `outbox` (to send immediately). Scheduled SMS, or SMS in outbox that weren't sent yet can be canceled by setting the status back to `draft`. You have to provide a `local_phone` that will be used to send the SMS. The number you choose has to be associated with a Phone Number of type `internal`. See the [Phone Numbers](https://developer.close.com/api/resources/phone-numbers) paragraph for more details. A `template_id` referencing an SMS Template may be provided instead of `text` to automatically render that template and use the content as `text`. When `direction` is not provided, but `status="inbox"`, `direction` will default to "inbound". Otherwise, `direction` defaults to "outbound". When creating a new SMS with the status set to `inbox`, you can pass the query parameter `send_to_inbox` with the value of `true` to create a corresponding Inbox Notification for the SMS.
activities.sms
Create a new LeadStatusChange activity
Creating a lead status change does not change the lead's status. It only logs the status change event in the lead's activity feed. This should only be used to import historical status changes from another system.
activities.lead_status_changes
Create a new OpportunityStatusChange activity
Creating an opportunity status change does not change the opportunity's status. It only logs the status change event. This should only be used to import historical status changes from another system.
activities.opportunity_status_changes
Create a WhatsAppMessage activity
`external_whatsapp_message_id` must be the ID of the message inside WhatsApp. You can filter by this field to find messages in Close to update or delete based on updates or deletions in WhatsApp. `message_markdown` must be the body of the message in the WhatsApp Markdown format. The `message_html` read-only field will return the HTML representation of this message. To include an attachment, you must first upload the file to Close using the [Files API](https://developer.close.com/api/resources/files). Then, add an object to the `attachments` array with the following fields: `url`, `filename`, and `content_type`. The `url` should be the URL provided in the `download.url` field of the response from the [Files API](https://developer.close.com/api/resources/files). It must begin with `https://app.close.com/go/file/`. `integration_link` (optional) is a URL string that can be provided by the integration partner creating the WhatsApp message. This can be used to link back to the message in the external system. `response_to_id` (optional) is the Close activity ID of another WhatsApp message activity (not the WhatsApp native message ID) that this message is replying to. This field creates a thread relationship between messages, allowing you to track conversation flow and message replies within WhatsApp threads. The ID must be a valid WhatsApp message activity ID in Close (e.g., `acti_...`). Only WhatsApp Markdown messages and file attachments are supported. No support is provided for Polls, Events, Locations, etc. **Important**: The total size of all attachments for a single WhatsApp message activity cannot exceed 25MB. When creating a new WhatsApp message with the direction set to `incoming`, you can pass the query parameter `send_to_inbox` with the value of `true` to create a corresponding Inbox Notification for the message.
activities.whatsapp_messages
Create a Blocked Phone Number
Once this record is created, the phone number you have specified will no longer work for outbound nor inbound calls. That means: * Nobody in your organization will be able to call that phone number. * That phone number will not be able to call anybody in your organization.
blocked_phone_numbers
Initiate a new bulk delete
Use `"send_done_email": false` if you don't want to get a confirmation email after the bulk action is done.
bulk_actions.delete
Initiate a new bulk edit
Pass additional parameters depending on which `type` is passed: - `set_lead_status` will set the Lead Status on all leads. It expects: - `lead_status_id` - ID of the Lead Status to use. - `clear_custom_field` will clear/remove/unset a specific custom field from all leads. It expects: - `custom_field_id` or `custom_field_name` - ID or exact name of the custom field to remove. - `set_custom_field` will set/update/add a specific custom field on all leads. It expects: - `custom_field_id` or `custom_field_name` - ID or exact name of the custom field to set/update. - `custom_field_value` - New value. Use `custom_field_values` to pass multiple values to custom fields that support it. - `custom_field_operation` - `replace`, `add`, or `remove` (defaults to `replace`). Only applicable for custom fields that accept multiple values. Use `"send_done_email": false` if you don't want to get a confirmation email after the bulk action is done.
bulk_actions.edit
Initiate a new bulk email
`contact_preference` can be set to `lead` (only email the primary/first contact email of the lead) or `contact` (email the first contact email of each contact of the lead).
bulk_actions.email
Initiate a new bulk sequence subscription
`action_type` must be one of: - `subscribe` to create a new sequence subscription for contacts that have never received the given sequence. - `resume` to resume any paused sequence subscriptions for the given sequence or all sequences if `sequence_id` is not provided. - `resume_finished` to resume any finished sequence subscriptions for the given sequence or all sequences if `sequence_id` is not provided. - `pause` to pause any active sequence subscriptions for the given sequence or all sequences if `sequence_id` is not provided. `sequence_id`, `sender_account_id`, `sender_name`, `sender_email` and `contact_preference` are required if `action_type` is `subscribe`. `contact_preference` can be set to: - `lead` to only subscribe the primary/first contact email of the lead. - `contact` to subscribe the primary email of each contact of the lead.
bulk_actions.sequence_subscriptions
Create a Comment
Create a comment on an object. If a comment thread already exists on that object, a new comment is added to the existing thread. If no thread exists yet, one is created automatically.
comments
Create a new contact
Contacts belong to exactly one Lead (specified by `lead_id`). If you do not provide a `lead_id` then a new lead will be created, named after the contact. Custom field values can be set by including `custom.cf_*` keys in the request body, e.g. `"custom.cf_abc123": "value"`.
contacts
Create new Custom Activity Type
The type must be created before activity custom fields can be added.
custom_activity_types
Create a new Activity Custom Field
Activity Custom Fields belong to Custom Activities, and have additional attributes: - `custom_activity_type_id` – the ID of the Custom Activity Type this Field should belong to. - `required` – whether the Field will be required to publish the activity.
custom_fields.activity
Create a new Contact Custom Field
Create a new Contact Custom Field
custom_fields.contact
Create a new Custom Object Custom Field
Custom Object Custom Fields belong to Custom Objects, and have additional attributes: - `custom_object_type_id` – the ID of the Custom Object Type this Field should belong to. - `required` – whether the Field will be required to save the object.
custom_fields.custom_object
Create a new Lead Custom Field
Create a new Lead Custom Field
custom_fields.lead
Create a new Opportunity Custom Field
Create a new Opportunity Custom Field
custom_fields.opportunity
Create a new Shared Custom Field
Create a new Shared Custom Field
custom_fields.shared
Create a new Custom Object instance
Custom Field values can be set using the format: `custom.{custom_field_id}`. See [Custom Fields](https://developer.close.com/api/resources/custom-fields/custom-fields-custom-object). The following fields are required: - `custom_object_type_id`: The type of Custom Object you are creating determines the Custom Fields that can be used. - `lead_id`: The Lead that this Custom Object instance will belong to. - `name`: Each Custom Object has a name, used for display.
custom_objects
Create new Custom Object Type
The type must be created before Custom Fields can be added. The following fields are required: - `name`: The name of the Custom Object Type - `name_plural`: A pluralized version of the name, for some UI display. The following fields are optional: - `description`: A longer description of the Custom Object Type. - `api_create_only`: If `true`, instances can only be created by API clients. Defaults to `false`. - `editable_with_roles`: Only users with the given roles can edit instances of this type. By default, any user in your organization can make changes to the instances of this type.
custom_object_types
Create an email template
Create an email template
email_templates
Enrich a specific field on a lead or contact using AI
This endpoint uses AI to enrich (populate or enhance) a specific field on a lead or contact. The enrichment process analyzes existing data and external sources to provide intelligent field values. **Parameters:** - `organization_id` (required): The organization ID - `object_type` (required): Either "lead" or "contact" - `object_id` (required): The ID of the lead or contact to enrich - `field_id` (required): The ID of the custom field to enrich - `set_new_value` (optional): Whether to update the field with the enriched value (default: true) - `overwrite_existing_value` (optional): Whether to overwrite existing field values (default: false)
field_enrichment
Generate a signed S3 POST
Get the data needed to make a request to S3 to store your file.
files
Create a Group
Create a new group. The `name` is required and must be unique within the organization. The group is created with no members. Use the member endpoint to add users.
groups
Create an integration link
Create an integration link
integration_links
Create a membership
Ensures an active membership for the given email will be provisioned. - If the user already exists, they will be added to the requestor's organization. - If it doesn't exist, a new user will be provisioned. This request requires "Manage Organization" permissions. API access to this endpoint is supported via OAuth only.
memberships
Create an opportunity
Create an opportunity, optionally linked to an existing lead. **custom.FIELD_ID** (optional): Set custom fields by setting `custom.FIELD_ID` to the field value, where FIELD_ID is the ID of the custom field, e.g.: ```json { "custom.cf_v6S011I6MqcbVvB2FA5Nk8dr5MkL8sWuCiG8cUleO9c": "value", "custom.cf_8wtBWsdRU2Fur7GDnEeXQ7ra2Vu7R4hG1SNYdiEhh0F": "other value" } ``` If a custom field has `accepts_multiple_values: true`, the entire value will be replaced. For example, given an Opportunity has a Custom Choice Field with value `["A", "B"]`, adding choice `"C"` would mean setting the value to `["A", "B", "C"]`. Note that using the `custom` field dict or the `custom.FIELD_NAME` syntax (instead of custom field IDs) is deprecated and will be removed from the API. See [Custom Fields](https://developer.close.com/api/resources/custom-fields) for more details.
opportunities
Create an outcome
Create a new outcome for the organization.
outcomes
Request an internal phone number
Renting a phone number incurs a cost. You need the "Manage Group Phone Numbers" permission to rent group numbers. If a number was rented, a 201 response is returned with the new number. If no number was rented (4xx response code), the response contains a `status` field which may contain one of the values below. New statuses may be added in the future. * `has-voice-only`: This country/prefix combination only has non-SMS-capable numbers. You can attempt renting the number by passing `with_sms` as `false`. * `needs-more-info`: More information (such as proof of address) is needed to rent this number. This number can only be rented by contacting Close support. * `billing-error`: An error related to billing has occurred. For example, the telephony budget has been reached, or there are not enough funds and recharging failed. * `error`: An error has occurred while renting this number. A human-readable message is returned in the `error` field.
phone_numbers
Create a Pipeline
Create a Pipeline
pipelines
Create a playbook
Create a new playbook for the organization.
playbooks
Create a new role
`visibility_user_lcf_ids` (optional) A list of Lead Custom Field IDs that define which leads user with this role can see. If the role has `view_all_leads` permission, this field should be empty. `visibility_user_lcf_behavior` (optional) Defines how lead visibility works for leads that don't have assigned users. If the role has `view_all_leads` permission, this field should be empty. - `require_assignment` - leads without assigned users are not visible to this role - `allow_unassigned` - leads without assigned users are visible to this role
roles
Create a Smart View
Create a Lead or Contact Smart View. For Lead Smart Views, the `type` field is optional (since `lead` is the default `type`). When creating a Smart View, you must specify that you want to get objects of the appropriate type via an `object_type` clause as per the [Advanced Filtering](https://developer.close.com/api/resources/advanced-filtering) section. See the examples below.
smart_views
Create a User Scheduling Link
Create a User Scheduling Link
scheduling_links
Create or update a Scheduling Link via OAuth
Please note that only OAuth apps can perform this operation. Using API key will result in an error. See [Authentication with OAuth](https://developer.close.com/api/overview/oauth-authentication) for more information. Create or update a user scheduling link, managed by your application. Uses the integration-provided `source_id` field to identify and merge duplicate resources created by the same OAuth Application. If a scheduling link created by your OAuth application with the specified `source_id` does not exist, a new one will be created. Otherwise, the scheduling link resource will be updated. Requires authentication via OAuth.
scheduling_links
Create a Send As Association
Create a send-as permission. The `allowing_user_id` must be equal to your own user ID.
send_as
Create a Sequence
Create a Sequence
sequences
Create an SMS template
Create an SMS template
sms_templates
Create a new status that can be applied to leads
Create a new status that can be applied to leads
lead_statuses
Create an opportunity status
Create a new opportunity status. The status must belong to a pipeline (specified by `pipeline_id`) and have a `type` of `active`, `won`, or `lost`.
opportunity_statuses
Create a task
Provide the type of task to be created in the `_type` field. Currently only tasks of type `lead` and `outgoing_call` can be created.
tasks
Unsubscribe an email address
This is useful for when you have an email address that has unsubscribed in another context (like a mailing list) and you want to unsubscribe them from messages from Close as well.
unsubscribed_emails
Create new Webhook subscription
The subscription will send events to the specified URL.
webhooks
Update a Call activity
Most commonly used to update `note_html` or `outcome_id`. Some fields (`status`, `duration`, `direction`) cannot be updated for internal calls made through Close's VoIP system. **`note_html` and `note`**: setting one overwrites the other. If both are provided, `note_html` takes precedence. `note_html` supports rich-text HTML; `note` is plaintext only. **Deleting recordings**: for internal calls, changing or clearing `recording_url` or `voicemail_url`, or setting `recording_transcript` to `null`, permanently deletes the corresponding recording, voicemail, or transcript. This requires the `delete_own_activities` permission for your own calls, or `manage_others_activities` for other users' calls and calls not assigned to a user. Without the required permission the request fails with a `400` error.
activities.calls
Updating a Custom Activity instance
A Custom Activity can be updated to add, change or remove any Custom Fields and to change the status between "draft" and "published". A Custom Activity can be pinned or unpinned by setting the `pinned` field to `true` or `false` when creating or updating a Custom Activity.
activities.custom_activities
Update an Email activity
This can be used to modify a draft or send it once the draft is complete. When changing a draft's status to `scheduled` or `outbox`, the `sender` field is required if not already set on the email.
activities.emails
Update a Meeting activity
Most commonly this can be used to update a meetings's `user_note_html` or `outcome_id`.
activities.meetings
Update a Note activity
**`note_html` and `note`**: setting one overwrites the other. If both are provided, `note_html` takes precedence. `note_html` supports rich-text HTML; `note` is plaintext only. A note can be pinned or unpinned by setting `pinned` to `true` or `false`.
activities.notes
Update an SMS activity
This can be used to modify a draft or send it once the draft is complete. To send an SMS immediately, you can update its `status` to `outbox`. To send it at a later time, change the `status` to `scheduled` and provide the desired date & time in the `date_scheduled` field.
activities.sms
Update a WhatsAppMessage activity
Update a WhatsAppMessage activity
activities.whatsapp_messages
Update a Blocked Phone Number
Update a Blocked Phone Number
blocked_phone_numbers
Update a Comment
You can use this endpoint to edit a comment body. Note that users may only update their own comments.
comments
Update an existing contact
Update a contact's information. Custom field values can be set by including `custom.cf_*` keys in the request body, e.g. `"custom.cf_abc123": "value"`. For custom fields that accept multiple values, you can use `.add` or `.remove` suffixes to modify the existing list without replacing it: ```json { "custom.cf_v6S011I6MqcbVvB2FA5Nk8dr5MkL8sWuCiG8cUleO9c.add": "Wednesday" } ```
contacts
Update existing Custom Activity Type
The type's `name`, `description`, `api_create_only`, `editable_with_roles` and `is_archived` may be updated here. These properties will be updated immediately in the Custom Activity API. Field order can be set here, but adding, modifying or removing fields from a Custom Activity Type must be done using the Custom Field API. The field order is a display property only, and does not affect the request and response for the Custom Activity API.
custom_activity_types
Update an Activity Custom Field
You can rename it, change whether it accepts multiple values or not, change the "required" flag, change whether editing its values is restricted to specific Roles, or update the options for a "choices" field type. The updated name will immediately appear in the Close UI and only valid values for the updated `type` will be returned by the Custom Activity API. The `custom_activity_type_id` and `type` values cannot be changed.
custom_fields.activity
Update a Contact Custom Field
You can rename it, change its type, change whether it accepts multiple values or not, change whether editing its values is restricted to specific Roles, or update the options for a "choices" field type. The updated name will immediately appear in the Close UI and only valid values for the updated `type` will be returned by the Contact API. Some of the type changes need to convert all of the existing values for a given Custom Field to the new type. When this is required, the response will include an additional `converting_to_type` field. When the conversion is done, `converting_to_type` will no longer be returned.
custom_fields.contact
Update a Custom Object Custom Field
You can rename it, change whether it accepts multiple values or not, change the "required" flag, change whether editing its values is restricted to specific Roles, or update the options for a "choices" field type. The updated name will immediately appear in the Close UI and only valid values for the updated `type` will be returned by the Custom Object API. The `custom_object_type_id` and `type` values cannot be changed.
custom_fields.custom_object
Update a Lead Custom Field
You can rename it, change its type, change whether it accepts multiple values or not, change whether editing its values is restricted to specific Roles, or update the options for a "choices" field type. The updated name will immediately appear in the Close UI and only valid values for the updated `type` will be returned by the Lead API. Some of the type changes need to convert all of the existing values for a given Custom Field to the new type. When this is required, the response will include an additional `converting_to_type` field. When the conversion is done, `converting_to_type` will no longer be returned.
custom_fields.lead
Update an Opportunity Custom Field
You can rename it, change its type, change whether it accepts multiple values or not, change whether editing its values is restricted to specific Roles, or update the options for a "choices" field type. The updated name will immediately appear in the Close UI and only valid values for the updated `type` will be returned by the Contact API. Some of the type changes need to convert all of the existing values for a given Custom Field to the new type. When this is required, the response will include an additional `converting_to_type` field. When the conversion is done, `converting_to_type` will no longer be returned.
custom_fields.opportunity
Update a custom field schema
To reorder Custom Fields (and thus change the order in which they are displayed in the Close UI), you simply need to supply a `fields` list with `{"id": ...}` items corresponding to the IDs of the Custom Fields belonging to the given Schema. Note that any IDs that are omitted from the list with be automatically appended to the end of the list. If you want to remove some Fields from the Schema, then delete the Custom Field or – in case of Shared Custom Fields – disassociate the Field from the given object.
custom_field_schemas
Update a Shared Custom Field
You can rename it or update the options for a "choices" field type. The updated name will immediately appear in the Close UI and only valid values for the updated `choices` will be returned by the Lead/Contact/Custom Activity APIs. The `type` value cannot be changed.
custom_fields.shared
Updating a Custom Object instance
A Custom Object can be updated to add, change or remove any Custom Fields, and to change the `name` property.
custom_objects
Update existing Custom Object Type
The type's `name`, `name_plural`, `description`, `api_create_only` and `editable_with_roles` properties may be updated here. These properties will be updated immediately in the Custom Object API. You cannot add, modify, remove or reorder fields from a Custom Object Type using this resource. See [Custom Object Custom Fields](https://developer.close.com/api/resources/custom-fields/custom-fields-custom-object) and [Custom Field Schema API](https://developer.close.com/api/resources/custom-fields/custom-field-schemas) for these features.
custom_object_types
Update an email template
Update an email template
email_templates
Update a Group
You can use this endpoint to rename a Group. If a name is not unique, an error will be returned.
groups
Update an integration link
Update an integration link
integration_links
Bulk update memberships
Any field that can be updated on a membership individually can also be used to bulk update multiple memberships. Pass the comma-separated ids of the memberships to update into `id__in` in `_params`. For example: ```json {"_params": {"id__in": "memb_A,memb_B"}, "role_id": "role_y6eLquXvRUdmwqi61tsmgCJUU7uGfxaRbDuLoONZL9p"} ```
memberships
Update a membership
Update a membership
memberships
Update an opportunity
**custom.FIELD_ID** (optional) - See description for `custom.FIELD_ID` in `POST /opportunity/` above. - Additionally, you can unset a single field by using `{ "custom.FIELD_ID": null }`, e.g.: ``` { "custom.cf_v6S011I6MqcbVvB2FA5Nk8dr5MkL8sWuCiG8cUleO9c": null } ``` If you're trying to update a custom field and that custom field accepts multiple values, you can also specify `.add` or `.remove` as part of the field key to add/remove a single value to/from a list of values, e.g.: ``` { "custom.cf_v6S011I6MqcbVvB2FA5Nk8dr5MkL8sWuCiG8cUleO9c.add": "Wednesday" } ```
opportunities
Update an organization
Update an organization
organizations
Update an outcome
Update an existing outcome.
outcomes
Update a phone number
You need the "Manage Group Phone Numbers" permission to update a group number. You can only update your own personal numbers. You can: - Change a `label` of your number. - Set up call forwarding via `forward_to` and `forward_to_enabled`. - Set up a voicemail greeting by including a URL of an mp3 recording in `voicemail_greeting_url`. We require the URL to be secure (i.e. starting with https://). - Modify which team members are part of a group number via `participants`. This should be a list of user IDs. - Modify which external phone numbers are part of a group number via `phone_numbers`. This should be a list of phone numbers in E.164 international format, e.g. "+16503334444". - Change how long (in seconds, 15-90) the number rings on inbound calls before moving on (e.g. to voicemail) via `inbound_ring_duration`.
phone_numbers
Update a Pipeline
You can use this endpoint to: * Rename a Pipeline. * Reorder Opportunity Statuses within a Pipeline. * Move an Opportunity Status from a different Pipeline into this one. * To do so, include `{"id": "id_of_the_status_from_another_pipeline"}` in the `statuses` list.
pipelines
Update a playbook
Update an existing playbook.
playbooks
Update existing role
Update existing role
roles
Update a Smart View
Update a Smart View
smart_views
Update a User Scheduling Link
Update a User Scheduling Link
scheduling_links
Update a Sequence
**Note**: If you include `steps` in the payload and exclude some of the existing steps in your sequence, it will remove those steps from the sequence entirely.
sequences
Update an SMS template
Update an SMS template
sms_templates
Rename a lead status
Update a lead status. The `label` and `color` can be changed. To update the status of a particular lead, see PUT `/lead/{lead_id}/`.
lead_statuses
Rename an opportunity status
Rename an opportunity status
opportunity_statuses
Update a task
The `assigned_to`, `date` (either a date or a date-time), and `is_complete` fields may be updated on all tasks. If the task type is `lead`, the `text` field may also be modified.
tasks
Update existing Webhook subscription
Update existing Webhook subscription
webhooks
Remove a User from a Group
If the user is not a member of the group, nothing changes.
groups
Render an email template
Render an email template for the given lead/contact using the current user context. Accepts two forms of usage: - Single lead/contact: - `lead_id` and `contact_id` is supplied (both required) - Preview results from a search query - `query` (required) contains a search query - `entry` (optional, ranges from 0 to 99) specifies the index of the lead/contact that should be rendered. - `mode` (optional), which can have a value of: - `lead` (default), the first contact of the lead with the index given by `entry` will be rendered (excluding leads that have no email addresses). - `contact`, then `entry` refers to the index of the contact (excluding contacts that have no emails). Will return an empty dict if there are no more entries.
email_templates
Unarchive a playbook
Restore a previously archived playbook to active status.
playbooks
Update an existing lead
Supports non-destructive patches. Nested `contacts` cannot be updated through this endpoint -- use the Contacts API instead. **status**: See `status` and `status_id` guidance on the create endpoint. **custom.FIELD_ID** (optional): See `custom.FIELD_ID` guidance on the create endpoint. You can also unset a single field, e.g.: ```json { "custom.cf_v6S011I6MqcbVvB2FA5Nk8dr5MkL8sWuCiG8cUleO9c": null } ``` If the custom field accepts multiple values, you can specify `.add` or `.remove` as part of the field key to add/remove a single value to/from a list of values, e.g.: ```json { "custom.cf_v6S011I6MqcbVvB2FA5Nk8dr5MkL8sWuCiG8cUleO9c.add": "Wednesday" } ``` adds "Wednesday" to the list of values which already exist on the given lead.
leads
Update an existing Shared Custom Field Association
You can change the `required` or the `editable_with_roles` attributes. Everything else cannot be changed. The `object_type` in the URL can be either: - `lead` when editing the association with the Lead object. - `contact` when editing the association with the Contact object. - `opportunity` when editing the association with the Opportunity object. - `custom_activity_type/<catype_id>` when editing the association with a specific Custom Activity Type. - `custom_object_type/<cotype_id>` when editing the association with a specific Custom Object Type.
custom_fields.shared
Update pinned views for a membership
Set the pinned views for the given membership. Provide an ordered list that will overwrite the entire current list.
memberships
Update Blocked Phone Number settings
Update Blocked Phone Number settings
blocked_phone_numbers
Update a Shared Scheduling Link
Update a Shared Scheduling Link
scheduling_links
Update a specific Subscription
Update a specific Subscription
sequences
FAQ

Close integration, answered

How do AI agents use Close through Open Connector?
Your user connects Close once with one of its cataloged authentication methods. Open Connector stores the credential in an encrypted vault and exposes Close tools to your agent over MCP or a typed API, with credentials injected server-side on each call.
Is this a Close MCP server?
Yes. Open Connector can serve Close as a named MCP server with a scoped allowlist and a per-user connection URL, so any MCP client can call Close actions with credentials injected server-side.
Where do Close credentials live?
In your own infrastructure. Open Connector keeps credentials in its own vault and injects them at call time, so they never leave your environment.

Give your agents Close — keep the keys.

Open source, self-hostable, with Close credentials that never leave your infrastructure. Run it from source today.