Close Contacts API

The contacts API from Close — 2 operation(s) for contacts.

Operations 5

GET /contact/ List contacts #
POST /contact/ Create a new contact #
GET /contact/{id}/ Fetch a single contact #
PUT /contact/{id}/ Update an existing contact #
DELETE /contact/{id}/ Delete a contact #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/close-contacts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

close-contacts-api-openapi.yml Raw ↑
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:
    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
    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
    WorkflowRunStatus:
      title: WorkflowRunStatus
      type: string
      enum:
      - active
      - paused
      - finished
      - goal
      - error
    ContactUrl:
      title: ContactUrl
      type: object
      properties:
        type:
          title: Type
          type: string
        url:
          title: URL
          type: string
      required:
      - type
      - url
    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
    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
    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
    WorkflowStatus:
      title: WorkflowStatus
      type: string
      enum:
      - active
      - paused
      - draft
    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
    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
    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
  parameters:
    FieldsParam:
      description: Comma-separated list of fields to include in the response.
      in: query
      name: _fields
      required: false
      schema:
        type: string
    LimitParam:
      description: Number of results to return.
      in: query
      name: _limit
      required: false
      schema:
        default: 100
        type: integer
    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