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.
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
Your user grants Close access once (OAuth) — the token lands in the vault.
- 2
Your agent calls a tool over MCP or the typed API; Open Connector injects the credential server-side.
- 3
Every routed call appends a hash-chained audit record — nothing leaves your infra.
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
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.