Vessel CRM API

The Crm API from Vessel — 9 operation(s) for crm.

Operations 11

POST /crm/users/associations Associations for Users #
PATCH /crm/contact/custom-field Update Contact Custom Field #
PATCH /crm/account/custom-field Update Account Custom Field #
PATCH /crm/lead/custom-field Update Lead Custom Field #
GET /crm/calls Get All Calls #
POST /crm/calls/search Search Calls #
GET /crm/call Get Call #
POST /crm/call Create Call #
PATCH /crm/call Update Call #
GET /crm/call/details Get Call Details #
POST /crm/call/batch Batch Calls #

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/vessel-crm-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 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 Specification

vessel-crm-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Reference CRM API
  version: '2.0'
  summary: API
servers:
- url: https://api.vessel.dev
security:
- VesselAPIToken: []
tags:
- name: Crm
paths:
  /crm/users/associations:
    post:
      summary: Associations for Users
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                objectType:
                  type: string
                  enum:
                  - account
                  - contact
                  - deal
                  - note
                  - email
                  - event
                  - task
                  - call
                ids:
                  type: array
                  items:
                    type: string
                accessToken:
                  type: string
                cursor:
                  type: string
      operationId: get-all-crm-users-associations
      description: Associations for given User Ids
      tags:
      - Crm
  /crm/contact/custom-field:
    patch:
      summary: Update Contact Custom Field
      description: Supported for Salesforce and HubSpot
      operationId: patch-contact-custom-field
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                description: ''
                type: object
                x-examples:
                  example-1:
                    success: true
                properties:
                  key:
                    type: string
                    description: The key used to access the custom field
              examples:
                example-1:
                  value:
                    success: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                accessToken:
                  $ref: '#/components/parameters/accessToken'
                customField:
                  $ref: '#/components/schemas/CustomFieldUpdate'
              required:
              - accessToken
              - customField
      tags:
      - Crm
  /crm/account/custom-field:
    patch:
      summary: Update Account Custom Field
      description: Supported for Salesforce and HubSpot
      operationId: patch-account-custom-field
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                description: ''
                type: object
                x-examples:
                  example-1:
                    success: true
                properties:
                  key:
                    type: string
                    description: The key used to access the custom field
              examples:
                example-1:
                  value:
                    success: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                accessToken:
                  $ref: '#/components/parameters/accessToken'
                customField:
                  $ref: '#/components/schemas/CustomFieldUpdate'
              required:
              - accessToken
              - customField
      tags:
      - Crm
  /crm/lead/custom-field:
    patch:
      summary: Update Lead Custom Field
      description: Supported for Salesforce and HubSpot
      operationId: patch-lead-custom-field
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                description: ''
                type: object
                x-examples:
                  example-1:
                    success: true
                properties:
                  key:
                    type: string
                    description: The key used to access the custom field
              examples:
                example-1:
                  value:
                    success: true
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                accessToken:
                  $ref: '#/components/parameters/accessToken'
                customField:
                  $ref: '#/components/schemas/CustomFieldUpdate'
              required:
              - accessToken
              - customField
      tags:
      - Crm
  /crm/calls:
    parameters: []
    get:
      summary: Get All Calls
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  calls:
                    type: array
                    items:
                      $ref: '#/components/schemas/Call'
                  nextPageCursor:
                    type: string
                title: responseBody
              examples:
                example-1:
                  value:
                    calls:
                    - id: v.call.3ab3a9562af957228c1019127e3c81e1
                      nativeId: '23'
                      subject: BlueCross <> Dunder Mifflin
                      disposition: ANSWERED
                      direction: inbound
                      description: Call from Greg
                      date: '2019-08-24T14:15:22Z'
                      createdTime: '2019-08-24T14:15:22Z'
                      modifiedTime: '2019-08-24T14:15:22Z'
                      associations:
                        accountIds:
                        - v.account.0dcb45e051315a6ea63b0f16e73689d9
                        leadIds:
                        - v.lead.d08f345ace24509e911a0ea8e3d2203c
                        contactIds:
                        - v.contact.e5f32d4fd2115220bd20a2ccf81210ec
                        dealIds:
                        - v.deal.497fb529e6805351b5dc8057c74a4a52
                        ownerUserId: v.user.56f653659ea9524b9e0fb0ba67e6f8a0
                      additional: {}
                    nextPageCursor: string
      operationId: get-all-crm-calls
      description: Retrieve all Calls
      parameters:
      - schema:
          type: string
        in: query
        name: accessToken
        description: The token for the customer's CRM account. This was generated when they connected their account.
        required: true
      - schema:
          type: string
        in: query
        name: cursor
      - schema:
          type: number
        in: query
        name: limit
        description: The number of records to return per page.
      - schema:
          type: boolean
        in: query
        name: allFields
        description: Returns all fields including non-unifiable and custom fields under the "additional" property in the response
      tags:
      - Crm
  /crm/calls/search:
    post:
      summary: Search Calls
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                filters:
                  type: object
                  properties:
                    id:
                      $ref: '#/components/schemas/StringFilter'
                    nativeId:
                      $ref: '#/components/schemas/StringFilter'
                    disposition:
                      $ref: '#/components/schemas/StringFilter'
                    direction:
                      $ref: '#/components/schemas/StringFilter'
                    subject:
                      $ref: '#/components/schemas/StringFilter'
                    description:
                      $ref: '#/components/schemas/StringFilter'
                    date:
                      $ref: '#/components/schemas/DateFilter'
                    status:
                      $ref: '#/components/schemas/StringFilter'
                    duration:
                      $ref: '#/components/schemas/NumberFilter'
                    from:
                      $ref: '#/components/schemas/StringFilter'
                    to:
                      $ref: '#/components/schemas/StringFilter'
                    recordingUrl:
                      $ref: '#/components/schemas/StringFilter'
                    createdTime:
                      $ref: '#/components/schemas/DateFilter'
                    modifiedTime:
                      $ref: '#/components/schemas/DateFilter'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  calls:
                    type: array
                    items:
                      $ref: '#/components/schemas/Call'
                  nextPageCursor:
                    type: string
                title: responseBody
              examples:
                example-1:
                  value:
                    calls:
                    - id: v.call.3ab3a9562af957228c1019127e3c81e1
                      nativeId: '23'
                      subject: BlueCross <> Dunder Mifflin
                      disposition: ANSWERED
                      direction: inbound
                      description: Call from Greg
                      date: '2019-08-24T14:15:22Z'
                      createdTime: '2019-08-24T14:15:22Z'
                      modifiedTime: '2019-08-24T14:15:22Z'
                      associations:
                        accountIds:
                        - v.account.0dcb45e051315a6ea63b0f16e73689d9
                        contactIds:
                        - v.contact.e5f32d4fd2115220bd20a2ccf81210ec
                        leadIds:
                        - v.lead.d08f345ace24509e911a0ea8e3d2203c
                        dealIds:
                        - v.deal.497fb529e6805351b5dc8057c74a4a52
                        ownerUserId: v.user.56f653659ea9524b9e0fb0ba67e6f8a0
                      additional: {}
                    nextPageCursor: string
      operationId: search-crm-calls
      description: Search all Calls using filters
      parameters:
      - $ref: '#/components/parameters/accessToken'
      - $ref: '#/components/parameters/cursor'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/allFields'
      tags:
      - Crm
  /crm/call:
    parameters: []
    get:
      summary: Get Call
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  call:
                    $ref: '#/components/schemas/Call'
                title: responseBody
              examples:
                example-1:
                  value:
                    call:
                      id: v.call.3ab3a9562af957228c1019127e3c81e1
                      nativeId: '23'
                      subject: BlueCross <> Dunder Mifflin
                      disposition: ANSWERED
                      direction: inbound
                      description: Call from Greg
                      date: '2019-08-24T14:15:22Z'
                      createdTime: '2019-08-24T14:15:22Z'
                      modifiedTime: '2019-08-24T14:15:22Z'
                      associations:
                        accountIds:
                        - v.account.0dcb45e051315a6ea63b0f16e73689d9
                        contactIds:
                        - v.contact.e5f32d4fd2115220bd20a2ccf81210ec
                        leadIds:
                        - v.lead.d08f345ace24509e911a0ea8e3d2203c
                        dealIds:
                        - v.deal.497fb529e6805351b5dc8057c74a4a52
                        ownerUserId: v.user.56f653659ea9524b9e0fb0ba67e6f8a0
                      additional: {}
      operationId: get-one-crm-call
      parameters:
      - schema:
          type: string
        in: query
        name: accessToken
        description: The token for the customer's CRM account. This was generated when they connected their account.
        required: true
      - schema:
          type: string
        in: query
        name: id
        required: true
      - schema:
          type: boolean
        in: query
        name: allFields
        description: Returns all fields including non-unifiable and custom fields under the "additional" property in the response
      description: Retrieve a single Call by Id
      tags:
      - Crm
    post:
      summary: Create Call
      operationId: post-crm-call
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                description: ''
                type: object
                x-examples:
                  example-1:
                    id: '0'
                properties:
                  id:
                    type: string
                required:
                - id
              examples:
                example-1:
                  value:
                    id: '0'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                accessToken:
                  type: string
                call:
                  $ref: '#/components/schemas/CallCreate'
              required:
              - accessToken
            examples:
              example-1:
                value:
                  accessToken: string
                  call:
                    subject: BlueCross <> Dunder Mifflin
                    disposition: ANSWERED
                    direction: inbound
                    description: Call from Greg
                    date: '2019-08-24T14:15:22Z'
                    accountId: v.account.0dcb45e051315a6ea63b0f16e73689d9
                    contactIds:
                    - v.contact.e5f32d4fd2115220bd20a2ccf81210ec
                    ownerUserId: v.user.56f653659ea9524b9e0fb0ba67e6f8a0
                    additional: {}
        description: ''
      description: Create a new Call.
      tags:
      - Crm
    patch:
      summary: Update Call
      operationId: put-crm-call
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                description: ''
                type: object
                x-examples:
                  example-1:
                    id: '0'
                properties:
                  id:
                    type: string
                required:
                - id
              examples:
                example-1:
                  value:
                    id: '0'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                accessToken:
                  type: string
                id:
                  type: string
                call:
                  $ref: '#/components/schemas/CallUpdate'
              required:
              - accessToken
              - id
              - call
            examples:
              example-1:
                value:
                  accessToken: string
                  id: string
                  call:
                    ownerUserId: v.user.56f653659ea9524b9e0fb0ba67e6f8a0
                    disposition: ANSWERED
                    additional: {}
      description: Update an Call by Id.
      tags:
      - Crm
  /crm/call/details:
    get:
      summary: Get Call Details
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  fields:
                    type: array
                    items:
                      $ref: '#/components/schemas/Field'
                  nextPageCursor:
                    type: string
                title: responseBody
              examples:
                example-1:
                  value:
                    fields:
                    - key: subject
                      name: Subject
                      type: string
                      options: null
                      isArray: false
                      custom: false
                      universal: true
                      required: false
                      creatable: true
                      updatable: true
                    nextPageCursor: string
      operationId: get-details-crm-call
      description: 'Get details about all Calls.

        Details include the type, possible values, and other meta data about the fields.'
      parameters:
      - schema:
          type: string
        in: query
        name: accessToken
        description: The token for the customer's CRM account. This was generated when they connected their account.
        required: true
      - schema:
          type: string
        in: query
        name: cursor
      - schema:
          type: boolean
        in: query
        name: allFields
        description: Returns details about native fields.
      tags:
      - Crm
  /crm/call/batch:
    parameters: []
    post:
      summary: Batch Calls
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                type: object
                properties:
                  calls:
                    type: array
                    items:
                      $ref: '#/components/schemas/Call'
                  invalidIds:
                    $ref: '#/components/schemas/InvalidIds'
                title: responseBody
              examples:
                example-1:
                  value:
                    call:
                      id: v.call.3ab3a9562af957228c1019127e3c81e1
                      nativeId: '23'
                      subject: BlueCross <> Dunder Mifflin
                      disposition: ANSWERED
                      direction: inbound
                      description: Call from Greg
                      date: '2019-08-24T14:15:22Z'
                      createdTime: '2019-08-24T14:15:22Z'
                      modifiedTime: '2019-08-24T14:15:22Z'
                      associations:
                        accountIds:
                        - v.account.0dcb45e051315a6ea63b0f16e73689d9
                        contactIds:
                        - v.contact.e5f32d4fd2115220bd20a2ccf81210ec
                        leadIds:
                        - v.lead.d08f345ace24509e911a0ea8e3d2203c
                        dealIds:
                        - v.deal.497fb529e6805351b5dc8057c74a4a52
                        ownerUserId: v.user.56f653659ea9524b9e0fb0ba67e6f8a0
                      additional: {}
      operationId: get-batch-crm-call
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                accessToken:
                  type: string
                  description: The token for the customer's CRM account. This was generated when they connected their account.
                ids:
                  type: array
                  items: string
                  description: List of call Ids.
                allFields:
                  type: boolean
                  description: Returns all fields including non-unifiable and custom fields under the "additional" property in the response
              required:
              - accessToken
              - ids
            examples:
              example-1:
                value:
                  accessToken: string
                  ids:
                  - v.call.abc
                  - v.call.xyz
      description: Retrieve Call by a set of Id's
      tags:
      - Crm
components:
  schemas:
    DateFilter:
      type: object
      properties:
        equals:
          type: string
        gt:
          type: string
        lt:
          type: string
        lte:
          type: string
        gte:
          type: string
        not:
          type: string
        in:
          type: array
          items:
            type: string
        notIn:
          type: array
          items:
            type: string
    InvalidIds:
      type: array
      items:
        type: string
      description: Ids that didn't return anything. Will be an empty array if all Ids are valid.
    Call:
      title: Call
      type: object
      properties:
        id:
          type: string
          description: Unique Vessel Id.
        nativeId:
          type: string
          description: Id of the object in the connected CRM.
        subject:
          type: string
        disposition:
          type: string
          description: Possibly an enum, See /details endpoint for values.
        direction:
          type: string
          enum:
          - inbound
          - outbound
          - internal
        description:
          type: string
        date:
          type: string
          description: The date the call occurred
        status:
          type: string
          description: Possibly an enum, See /details endpoint for values.
        duration:
          type: integer
          description: The duration of the call.
        to:
          type: string
          description: 'The phone number that was called.

            *CRM Caveats* Only supported for HubSpot.'
        from:
          type: string
          description: 'The phone number called from.

            *CRM Caveats* Only supported for HubSpot.'
        recordingUrl:
          type: string
          description: 'The URL of the recording of the call.

            *CRM Caveats* Only supported for HubSpot.'
        createdTime:
          type: string
          description: The timestamp that the call object was created
        modifiedTime:
          type: string
          description: The timestamp the call object was last modified
        associations:
          type: object
          required:
          - accountIds
          - leadIds
          - contactIds
          - dealIds
          - ownerUserId
          properties:
            accountIds:
              type: array
              items:
                type: string
            contactIds:
              type: array
              items:
                type: string
            dealIds:
              type: array
              items:
                type: string
            leadIds:
              type: array
              items:
                type: string
            ownerUserId:
              type: string
              description: The Id of the User that owns this call
        additional:
          type: object
    CallCreate:
      title: CallCreate
      type: object
      properties:
        subject:
          type: string
        disposition:
          type: string
          description: See /details endpoint for possible values.
        direction:
          type: string
          enum:
          - inbound
          - outbound
          - internal
        description:
          type: string
        date:
          type: string
          description: ISO Formatted date for when the call occurred
        status:
          type: string
          description: Possibly an enum, See /details endpoint for values.
        duration:
          type: integer
          description: The duration of the call.
        to:
          type: string
          description: 'The phone number that was called.

            *CRM Caveats* Only supported for HubSpot.'
        from:
          type: string
          description: 'The phone number called from.

            *CRM Caveats* Only supported for HubSpot.'
        recordingUrl:
          type: string
          description: 'The URL of the recording of the call.

            *CRM Caveats* Only supported for HubSpot.'
        contactIds:
          type: array
          description: The participants involved in this call. If this is an inbound call, this is the contacts that called, if this is an outbound call, this is the contacts that were called.
          items:
            type: string
        accountId:
          type: string
        ownerUserId:
          type: string
      required:
      - disposition
      - direction
      - date
    Field:
      title: Field
      type: object
      description: '(Alias: property) A field is a key-value pair on a CRM Object that provides information about that object.'
      properties:
        key:
          type: string
          description: 'The key in the CRM object (ex: annualRevenue, numberOfEmployees, etc)'
        name:
          type: string
          description: 'The display name of this field (ex: number of employees, annual revenue, etc)'
        type:
          type: string
          enum:
          - string
          - number
          - datetime
          - date
          - boolean
          - reference
          - phone
          - url
          - id
          - email
          - percent
          - singleselect
          - multiselect
          - address
          - decimal
          - time
          - daterange
          - object
        options:
          type: array
          description: Possible options for this field
          items:
            type: object
            properties:
              key:
                oneOf:
                - type: string
                - type: number
              name:
                type: string
        isArray:
          type: boolean
          description: If this field is an array
        custom:
          type: boolean
          description: If this field is a custom field
        universal:
          type: boolean
          description: If this is a field we've unified across CRMs
        required:
          type: boolean
          description: If this field is required when creating the object
        creatable:
          type: boolean
          description: If this field can be used when creating the object
        updatable:
          type: boolean
          description: If this field can be updated
      required:
      - key
      - name
      - type
      - custom
      - universal
      - required
      - creatable
      - updatable
      examples:
      - key: numberOfEmployees
        name: number of employees
        type: number
        options: null
        isArray: false
        custom: false
        universal: true
        required: false
        creatable: true
        updatable: true
    NumberFilter:
      type: object
      properties:
        equals:
          type: number
        gt:
          type: number
        lt:
          type: number
        lte:
          type: number
        gte:
          type: number
        not:
          type: number
        in:
          type: array
          items:
            type: number
        notIn:
          type: array
          items:
            type: number
    CallUpdate:
      title: CallUpdate
      type: object
      properties:
        disposition:
          type: string
          description: See /details endpoint for possible values.
        ownerUserId:
          type: string
      required:
      - disposition
    StringFilter:
      type: object
      properties:
        equals:
          type: string
        contains:
          type: string
        startsWith:
          type: string
        endsWith:
          type: string
        not:
          type: string
        in:
          type: array
          items:
            type: string
        notIn:
          type: array
          items:
            type: string
        mode:
          type: string
          enum:
          - insensitive
    CustomFieldUpdate:
      type: object
      description: ''
      properties:
        key:
          type: string
        options:
          type: array
          items:
            type: object
            properties:
              name:
                type: string
              key:
                type: string
            required:
            - name
            - key
      required:
      - key
  parameters:
    cursor:
      name: cursor
      in: query
      description: The cursor to use for pagination
      schema:
        type: string
    accessToken:
      name: accessToken
      in: query
      description: The token for the customer's account. This was generated when they connected their account.
      required: true
      schema:
        type: string
    allFields:
      name: allFields
      in: query
      description: Returns all fields including non-unifiable and custom fields under the "additional" property in the response
      schema:
        type: boolean
    limit:
      name: limit
      in: query
      description: The number of records to return per page.
      schema:
        type: number
  securitySchemes:
    VesselAPIToken:
      name: vessel-api-token
      type: apiKey
      in: header