Close Contacts API
The contacts API from Close — 2 operation(s) for contacts.
Operations 5
Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay
The contacts API from Close — 2 operation(s) for contacts.
Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/close:close-contacts-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
description: Close CRM REST API
title: Close Contacts API
version: 1.0.0
servers:
- url: https://api.close.com/api/v1
security:
- ApiKeyAuth: []
- OAuth2: []
tags:
- name: Contacts
externalDocs:
url: https://developer.close.com/api/resources/contacts
paths:
/contact/:
get:
operationId: contacts_list
tags:
- Contacts
summary: List contacts
parameters:
- $ref: '#/components/parameters/LimitParam'
- $ref: '#/components/parameters/SkipParam'
- $ref: '#/components/parameters/FieldsParam'
- in: query
name: lead_id
required: false
schema:
type: string
responses:
'200':
content:
application/json:
example:
data:
- created_by: null
date_created: '2013-02-01T00:54:51.300000+00:00'
date_updated: '2013-02-06T20:53:09.334000+00:00'
display_name: Tobias Fünke
emails:
- email: tobiasfunke@close.com
is_unsubscribed: false
type: office
id: cont_q4xYmlGhA3060dEl0NDJuHRxPMuVjqLn30AFSzh1fRk
name: Tobias Fünke
organization_id: orga_RbREgmiiwcr1w2b4cOnCMQaQPSIFxMqAD2Dh243uxcH
phones: []
title: Blue Man Group (Understudy)
updated_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
- created_by: null
custom.cf_j0P7kHmgFTZZnYBFtyPSZ3uQw4dpW8xKcW7Krps8atj: CEO
date_created: '2013-02-01T00:54:51.331000+00:00'
date_updated: '2013-02-06T20:53:01.954000+00:00'
display_name: Bruce Wayne
emails:
- email: thedarkknight@close.com
is_unsubscribed: true
type: office
id: cont_o0kP3Nqyq0wxr5DLWIEm8mVr6ZpI0AhonKLDG0V5Qjh
name: Bruce Wayne
organization_id: orga_RbREgmiiwcr1w2b4cOnCMQaQPSIFxMqAD2Dh243uxcH
phones:
- country: US
phone: '+16503334444'
phone_formatted: +1 650-333-4444
type: office
title: The Dark Knight
updated_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
- created_by: null
date_created: '2013-02-01T00:54:51.298000+00:00'
date_updated: '2013-02-06T20:48:55.240000+00:00'
display_name: Gob Bluth
emails:
- email: bluth@close.com
is_unsubscribed: false
type: office
id: cont_E7dYM0ecRoFQosxiPFz8IxazhN4k11uW8Sh1UsXjNjo
name: Gob Bluth
organization_id: orga_RbREgmiiwcr1w2b4cOnCMQaQPSIFxMqAD2Dh243uxcH
phones: []
title: Magician
updated_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
- created_by: null
date_created: '2013-02-01T00:54:51.203000+00:00'
date_updated: '2013-02-01T00:59:33.689000+00:00'
display_name: Close Support
emails:
- email: support@close.com
is_unsubscribed: false
type: office
id: cont_uw6ONU4iBcQg4TyqOKAwl0F1amULG9ZZsY57kHHdJNE
name: Close Support
organization_id: orga_RbREgmiiwcr1w2b4cOnCMQaQPSIFxMqAD2Dh243uxcH
phones:
- country: US
is_unsubscribed: false
phone: '+18552567346'
phone_formatted: +1 855-256-7346
type: office
title: null
updated_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
- created_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
date_created: '2013-02-08T05:02:39.552000+00:00'
date_updated: '2013-02-08T05:02:39.552000+00:00'
display_name: phil
emails:
- email: phil@close.com
is_unsubscribed: false
type: office
id: cont_eXZwc2SVL4G3xSR85jnfPny2ykvoAQndSyi1Doa2YLO
name: phil
organization_id: orga_RbREgmiiwcr1w2b4cOnCMQaQPSIFxMqAD2Dh243uxcH
phones: []
title: ''
updated_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
- created_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
date_created: '2013-02-20T05:30:24.844000+00:00'
date_updated: '2013-02-20T05:44:14.700000+00:00'
display_name: Gob
emails:
- email: gob@example.com
is_unsubscribed: false
type: office
id: cont_qpjDKxbN3WWsuhaJjg2Qr9pkqHqe1yviZ5BS0dEyz05
name: Gob
organization_id: orga_RbREgmiiwcr1w2b4cOnCMQaQPSIFxMqAD2Dh243uxcH
phones:
- country: US
phone: '+18004445555'
phone_formatted: +1 800-444-5555
type: office
title: sr. vice president
updated_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
- created_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
date_created: '2013-02-20T05:44:31.929000+00:00'
date_updated: '2013-02-20T05:44:31.929000+00:00'
display_name: Gob
emails:
- email: gob@example.com
is_unsubscribed: false
type: office
id: cont_kfaRMPzwQ9yAOn96gVGUxKRKqsYv6QJStoLhlDEpquY
name: Gob
organization_id: orga_RbREgmiiwcr1w2b4cOnCMQaQPSIFxMqAD2Dh243uxcH
phones:
- country: US
phone: '+18004445555'
phone_formatted: +1 800-444-5555
type: office
title: sr. vice president
updated_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
- created_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
date_created: '2013-02-20T05:44:35.625000+00:00'
date_updated: '2013-02-20T05:44:35.625000+00:00'
display_name: Gob
emails:
- email: gob@example.com
is_unsubscribed: false
type: office
id: cont_3lUrUYmceYjzeqrIqF5jpSppZemyxvgquE8Oq1kM6p0
name: Gob
organization_id: orga_RbREgmiiwcr1w2b4cOnCMQaQPSIFxMqAD2Dh243uxcH
phones:
- country: US
phone: '+18004445555'
phone_formatted: +1 800-444-5555
type: office
title: sr. vice president
updated_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
has_more: false
schema:
type: object
properties:
data:
items:
$ref: '#/components/schemas/Contact'
type: array
has_more:
type: boolean
required:
- data
- has_more
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
post:
operationId: contacts_create
tags:
- Contacts
summary: Create a new contact
description: '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"`.'
parameters:
- $ref: '#/components/parameters/FieldsParam'
requestBody:
content:
application/json:
example:
custom.cf_j0P7kHmgFTZZnYBFtyPSZ3uQw4dpW8xKcW7Krps8atj: Account Executive
emails:
- email: john@example.com
type: office
lead_id: lead_QyNaWw4fdSwxl5Mc5daMFf3Y27PpIcH0awPbC9l7uyo
name: John Smith
phones:
- phone: '9045551234'
type: mobile
title: President
urls:
- type: url
url: http://twitter.com/google/
schema:
$ref: '#/components/schemas/CreateContact'
required: true
responses:
'200':
content:
application/json:
example:
created_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
custom.cf_j0P7kHmgFTZZnYBFtyPSZ3uQw4dpW8xKcW7Krps8atj: Account Executive
date_created: '2013-03-07T23:23:21.495000+00:00'
date_updated: '2013-03-07T23:23:21.495000+00:00'
display_name: John Smith
emails:
- email: john@example.com
is_unsubscribed: false
type: office
id: cont_sNIdBgngvbdTTEN1mspKgUqKAWfbul4IITvnWoRw1T7
name: John Smith
organization_id: orga_RbREgmiiwcr1w2b4cOnCMQaQPSIFxMqAD2Dh243uxcH
phones:
- country: US
phone: '+19045551234'
phone_formatted: +1 904-555-1234
type: mobile
title: President
updated_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
urls:
- type: url
url: http://twitter.com/google/
schema:
$ref: '#/components/schemas/Contact'
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
/contact/{id}/:
get:
operationId: contacts_get
tags:
- Contacts
summary: Fetch a single contact
parameters:
- in: path
name: id
required: true
schema:
type: string
- $ref: '#/components/parameters/FieldsParam'
responses:
'200':
content:
application/json:
example:
created_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
date_created: '2013-02-20T05:44:35.625000+00:00'
date_updated: '2013-02-20T05:44:35.625000+00:00'
display_name: Gob
emails:
- email: gob@example.com
is_unsubscribed: false
type: office
id: cont_3lUrUYmceYjzeqrIqF5jpSppZemyxvgquE8Oq1kM6p0
lead_id: lead_etYl6PwL12hkj14567kjolJwZuZehb9b85EDH9CKuAI
name: Gob
organization_id: orga_RbREgmiiwcr1w2b4cOnCMQaQPSIFxMqAD2Dh243uxcH
phones:
- country: US
phone: '+18004445555'
phone_formatted: +1 800-444-5555
type: office
title: sr. vice president
updated_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
schema:
$ref: '#/components/schemas/Contact'
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
put:
operationId: contacts_update
tags:
- Contacts
summary: Update an existing contact
description: '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" }
```'
parameters:
- in: path
name: id
required: true
schema:
type: string
- $ref: '#/components/parameters/FieldsParam'
requestBody:
content:
application/json:
example:
name: Johnny Smith
schema:
$ref: '#/components/schemas/UpdateContact'
required: true
responses:
'200':
content:
application/json:
example:
created_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
custom.cf_j0P7kHmgFTZZnYBFtyPSZ3uQw4dpW8xKcW7Krps8atj: Sales Rep
date_created: '2013-03-07T23:23:21.495000+00:00'
date_updated: '2013-03-08T13:13:21.495000+00:00'
display_name: Johnny Smith
emails:
- email: john@example.com
is_unsubscribed: false
type: office
id: cont_sNIdBgngvbdTTEN1mspKgUqKAWfbul4IITvnWoRw1T7
lead_id: lead_QyNaWw4fdSwxl5Mc5daMFf3Y27PpIcH0awPbC9l7uyo
name: Johnny Smith
organization_id: orga_RbREgmiiwcr1w2b4cOnCMQaQPSIFxMqAD2Dh243uxcH
phones:
- country: US
phone: '+19045551234'
phone_formatted: +1 904-555-1234
type: mobile
title: President
updated_by: user_N6KhMpzHRCYQHdn4gRNIFNN5JExnsrprKA6ekxM63XA
urls:
- type: url
url: http://twitter.com/google/
schema:
$ref: '#/components/schemas/Contact'
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
delete:
operationId: contacts_delete
tags:
- Contacts
summary: Delete a contact
parameters:
- in: path
name: id
required: true
schema:
type: string
responses:
'200':
description: Successful response
'400':
description: Bad request
'401':
description: Unauthorized
'404':
description: Not found
components:
schemas:
WorkflowStatus:
title: WorkflowStatus
type: string
enum:
- active
- paused
- draft
ContactRecentCall:
title: ContactRecentCall
type: object
properties:
dialer_id:
title: Dialer ID
anyOf:
- type: string
- type: 'null'
duration:
title: Duration
type: integer
finish_timestamp:
title: Finish Timestamp
type: string
format: date-time
id:
title: ID
type: string
status:
$ref: '#/components/schemas/CallStatus'
required:
- dialer_id
- duration
- finish_timestamp
- id
- status
RenderedIntegrationLink:
title: RenderedIntegrationLink
type: object
properties:
name:
title: Name
type: string
url:
title: Url
type: string
required:
- name
- url
UpdateContact:
type: object
properties:
emails:
type:
- array
- 'null'
maxItems: 100
items:
type: object
properties:
email:
type: string
format: email
type:
type: string
required:
- email
lead_id:
type:
- 'null'
- string
name:
type:
- 'null'
- string
maxLength: 1000
phones:
type:
- array
- 'null'
maxItems: 100
items:
type: object
properties:
phone:
description: Phone number in E.164 format
type:
- 'null'
- string
type:
type: string
timezone:
description: IANA timezone identifier
type:
- 'null'
- string
title:
type:
- 'null'
- string
maxLength: 1000
urls:
type:
- array
- 'null'
maxItems: 100
items:
type: object
properties:
type:
type: string
url:
type: string
format: uri
required:
- url
additionalProperties: false
patternProperties:
^custom\.:
not:
type: object
ContactUrl:
title: ContactUrl
type: object
properties:
type:
title: Type
type: string
url:
title: URL
type: string
required:
- type
- url
StatusReason:
title: StatusReason
description: Reason for each higher level status on a Workflow run.
type: string
enum:
- manual
- pending-call-timed-out
- bulk-action
- rate-limited
- sequence-deleted
- workflow-paused
- filter-not-matched
- insufficient-ai-credit-balance
- reply-received
- call-answered
- meeting-booked
- lead-status-changed
- outcome-met
- account-invalid
- account-failures
- sending-throttled-too-long
- membership-inactive
- send-as-error
- email-bounced
- call-failed
- sms-failed
- no-user-phone
- billing-error
- assignment-field-invalid
- lead-status-field-invalid
- assignees-missing
- run-as-disabled
- lead-not-visible
- internal-error
- field-mapping-error
- filter-config-invalid
- email-ai-generation-failed
ContactPhone:
title: ContactPhone
type: object
properties:
country:
title: Country
anyOf:
- type: string
- type: 'null'
outbound_sms_blocked:
title: Outbound SMS Blocked
type: boolean
phone:
title: Phone
type: string
phone_formatted:
title: Phone Formatted
type: string
type:
title: Type
type: string
tz_ids:
title: TZ IDs
type: array
items:
type: string
required:
- phone
- type
BasicSubscriptionInfoForContact:
title: BasicSubscriptionInfoForContact
type: object
properties:
contact_email:
title: Contact Email
anyOf:
- type: string
- type: 'null'
date_created:
title: Date Created
type: string
format: date-time
initial_email_id:
title: Initial Email ID
anyOf:
- type: string
- type: 'null'
sequence_id:
title: Sequence ID
type: string
sequence_name:
title: Sequence Name
type: string
sequence_status:
$ref: '#/components/schemas/WorkflowStatus'
start_date:
title: Start Date
anyOf:
- type: string
format: date-time
- type: 'null'
subscription_id:
title: Subscription ID
type: string
subscription_status:
$ref: '#/components/schemas/WorkflowRunStatus'
subscription_status_reason:
anyOf:
- $ref: '#/components/schemas/StatusReason'
- type: 'null'
required:
- contact_email
- date_created
- initial_email_id
- sequence_id
- sequence_name
- sequence_status
- start_date
- subscription_id
- subscription_status
- subscription_status_reason
WorkflowRunStatus:
title: WorkflowRunStatus
type: string
enum:
- active
- paused
- finished
- goal
- error
CreateContact:
type: object
properties:
created_by:
type:
- 'null'
- string
date_created:
type:
- 'null'
- string
format: date-time
emails:
type:
- array
- 'null'
maxItems: 100
items:
type: object
properties:
email:
type: string
format: email
type:
type: string
required:
- email
lead_id:
type:
- 'null'
- string
name:
type:
- 'null'
- string
maxLength: 1000
phones:
type:
- array
- 'null'
maxItems: 100
items:
type: object
properties:
phone:
description: Phone number in E.164 format
type:
- 'null'
- string
type:
type: string
timezone:
description: IANA timezone identifier
type:
- 'null'
- string
title:
type:
- 'null'
- string
maxLength: 1000
urls:
type:
- array
- 'null'
maxItems: 100
items:
type: object
properties:
type:
type: string
url:
type: string
format: uri
required:
- url
additionalProperties: false
patternProperties:
^custom\.:
not:
type: object
Contact:
title: Contact
type: object
properties:
created_by:
title: Created By
anyOf:
- type: string
- type: 'null'
date_created:
title: Date Created
type: string
format: date-time
date_updated:
title: Date Updated
type: string
format: date-time
display_name:
title: Display Name
type: string
emails:
title: Emails
type: array
items:
$ref: '#/components/schemas/ContactEmail'
id:
title: ID
type: string
integration_links:
title: Integration Links
type: array
items:
$ref: '#/components/schemas/RenderedIntegrationLink'
lead_id:
title: Lead ID
default: null
anyOf:
- type: string
- type: 'null'
lead_suggestions_operation_id:
title: Lead Suggestions Operation ID
anyOf:
- type: string
- type: 'null'
name:
title: Name
anyOf:
- type: string
- type: 'null'
organization_id:
title: Organization ID
type: string
phones:
title: Phones
type: array
items:
$ref: '#/components/schemas/ContactPhone'
recent_calls:
title: Recent Calls
type: array
items:
$ref: '#/components/schemas/ContactRecentCall'
subscriptions:
title: Subscriptions
type: array
items:
$ref: '#/components/schemas/BasicSubscriptionInfoForContact'
timezone:
title: Timezone
anyOf:
- type: string
- type: 'null'
timezone_source:
title: Timezone Source
anyOf:
- type: string
- type: 'null'
title:
title: Title
anyOf:
- type: string
- type: 'null'
updated_by:
title: Updated By
anyOf:
- type: string
- type: 'null'
urls:
title: URLs
type: array
items:
$ref: '#/components/schemas/ContactUrl'
required:
- created_by
- date_created
- date_updated
- display_name
- id
- name
- organization_id
- title
- updated_by
CallStatus:
title: CallStatus
description: Current status of the call.
type: string
enum:
- created
- in-progress
- completed
- cancel
- no-answer
- busy
- failed
- timeout
ContactEmail:
title: ContactEmail
type: object
properties:
email:
title: Email
type: string
is_unsubscribed:
title: Is Unsubscribed
type: boolean
type:
title: Type
type: string
required:
- email
- is_unsubscribed
- type
parameters:
LimitParam:
description: Number of results to return.
in: query
name: _limit
required: false
schema:
default: 100
type: integer
FieldsParam:
description: Comma-separated list of fields to include in the response.
in: query
name: _fields
required: false
schema:
type: string
SkipParam:
description: Number of results to skip before returning, for pagination.
in: query
name: _skip
required: false
schema:
default: 0
type: integer
securitySchemes:
ApiKeyAuth:
description: Use your API key as the username and leave the password empty.
scheme: basic
type: http
OAuth2:
flows:
authorizationCode:
authorizationUrl: https://app.close.com/oauth2/authorize/
scopes:
all.full_access: Full access to all resources
offline_access: Request a refresh token
tokenUrl: https://api.close.com/oauth2/token/
type: oauth2
x-provenance:
method: harvested
publisher: Close
source: https://developer.close.com/openapi.json
note: split by refine-openapis from the provider's own published document, verified by fetch (openapi/_original/*.fetch.json);
stamped by stamp-openapi-provenance.py (roadmap#793)