Vessel Sales Engagement Unified API

The Vessel Sales Engagement Unified API normalizes sales engagement objects across Outreach, Salesloft, Apollo and similar tools under /api/unifications/engagement, covering users, contacts, accounts, sequences, tasks, calls, emails and mailboxes behind one schema. Published by Vessel as OpenAPI 3.1.0 with 20 operations.

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/engagement-unified-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

vessel-engagement-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Sales Engagement API Reference
  version: "1.0"
  summary: API
servers:
  - url: "https://api.vessel.dev"
security:
  - VesselAPIToken: []
paths:
  /api/unifications/engagement/users/list:
    post:
      summary: List Users
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  users:
                    type: array
                    items:
                      $ref: "#/components/schemas/User"
                  nextPageCursor:
                    type: string
              examples:
                example-1:
                  value:
                    users:
                      - id: 34f5b4b0b6b650c981a174b02753c390
                        firstName: Micheal
                        lastName: Scott
                        email: micheal@dundermifflin.com
                        createdTime: "2019-08-24T14:15:22Z"
                        modifiedTime: "2019-08-24T14:15:22Z"
                    nextPageCursor: string
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                include:
                  $ref: "#/components/schemas/IncludeFields"
                cursor:
                  type: string
            examples:
              example-1:
                value:
                  cursor: "123123"
                  include:
                    $native: false
      operationId: get-all-users
      description: Retrieve all Users
    parameters: []
  /api/unifications/engagement/users/find:
    post:
      summary: Get User
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  user:
                    $ref: "#/components/schemas/User"
              examples:
                example-1:
                  value:
                    user:
                      id: 34f5b4b0b6b650c981a174b02753c390
                      firstName: Micheal
                      lastName: Scott
                      email: micheal@dundermifflin.com
                      createdTime: "2019-08-24T14:15:22Z"
                      modifiedTime: "2019-08-24T14:15:22Z"
      operationId: get-one-user
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                include:
                  $ref: "#/components/schemas/IncludeFields"
                id:
                  type: string
              required:
                - id
            examples:
              example-1:
                value:
                  id: "123123"
                  include:
                    $native: false
      description: Retrieve a single User by Id
    parameters: []
  /api/unifications/engagement/accounts/list:
    post:
      summary: List Accounts
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  accounts:
                    type: array
                    items:
                      $ref: "#/components/schemas/Account"
                  nextPageCursor:
                    type: string
              examples:
                example-1:
                  value:
                    accounts:
                      - id: 59f5b4b0b6b650c981a174b02753c390
                        name: Blue Cross
                        description: Blue Cross of Pennsylvania is responsible for providing services to the good people of Scranton
                        industry: TV and Media
                        numberOfEmployees: 100
                        website: www.bluecross.penn
                        createdTime: "2019-08-24T14:15:22Z"
                        modifiedTime: "2019-08-24T14:15:22Z"
                        phone: "8192223333"
                        locality: Scranton
                        address:
                          line1: 100 Blue Dr
                          line2: Suite 100
                          city: Scranton
                          state: Pennsylvania
                          postalCode: "281332"
                          country: USA
                        associations:
                          ownerUserId: 56f653659ea9524b9e0fb0ba67e6f8a0
                    nextPageCursor: string
      operationId: get-all-accounts
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                include:
                  $ref: "#/components/schemas/IncludeFields"
                cursor:
                  type: string
                filters:
                  type: object
                  properties:
                    name:
                      type: object
                      properties:
                        equals:
                          type: string
                      required: equals
                    domain:
                      type: object
                      properties:
                        equals:
                          type: string
                      required: equals
            examples:
              example-1:
                value:
                  cursor: "123123"
                  include:
                    $native: false
                  filters:
                    name:
                      equals: "Acme Co."
      description: |-
        Retrieve all Accounts
    parameters: []
  /api/unifications/engagement/accounts/find:
    post:
      summary: Get Account
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  account:
                    $ref: "#/components/schemas/Account"
              examples:
                example-1:
                  value:
                    account:
                      - id: 59f5b4b0b6b650c981a174b02753c390
                        name: Blue Cross
                        description: Blue Cross of Pennsylvania is responsible for providing services to the good people of Scranton
                        industry: TV and Media
                        numberOfEmployees: 100
                        website: www.bluecross.penn
                        createdTime: "2019-08-24T14:15:22Z"
                        modifiedTime: "2019-08-24T14:15:22Z"
                        phone: "8192223333"
                        locality: Scranton
                        address:
                          line1: 100 Blue Dr
                          line2: Suite 100
                          city: Scranton
                          state: Pennsylvania
                          postalCode: "281332"
                          country: USA
                        associations:
                          ownerUserId: 56f653659ea9524b9e0fb0ba67e6f8a0
      operationId: get-one-account
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                include:
                  $ref: "#/components/schemas/IncludeFields"
                id:
                  type: string
              required:
                - id
            examples:
              example-1:
                value:
                  id: "123123"
                  include:
                    $native: false
      description: Retrieve a single Account by Id
  /api/unifications/engagement/accounts/create:
    post:
      summary: Create Account
      operationId: post-account
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  id:
                    type: string
              examples:
                example-1:
                  value:
                    id: "0"
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                account:
                  $ref: "#/components/schemas/AccountCreate"
              required:
                - account
            examples:
              example-1:
                value:
                  account:
                    name: Blue Cross
                    description: Blue Cross of Pennsylvania is responsible for providing services to the good people of Scranton
                    industry: TV and Media
                    numberOfEmployees: 100
                    website: www.bluecross.penn
                    phone: "8192223333"
                    $native: {}
                    address:
                      line1: 100 Blue Dr
                      line2: Suite 100
                      city: Scranton
                      state: Pennsylvania
                      postalCode: "281332"
                      country: USA
      description: Create a new Account
  /api/unifications/engagement/accounts/update:
    post:
      summary: Update Account
      tags:
        - Accounts
      operationId: put-account
      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"
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                account:
                  $ref: "#/components/schemas/AccountUpdate"
              required:
                - id
                - account
            examples:
              example-1:
                value:
                  id: string
                  account:
                    name: Blue Cross
                    description: Blue Cross of Pennsylvania is responsible for providing services to the good people of Scranton
                    industry: TV and Media
                    numberOfEmployees: 100
                    website: www.bluecross.penn
                    phone: "8192223333"
                    address:
                      line1: 100 Blue Dr
                      line2: Suite 100
                      city: Scranton
                      state: Pennsylvania
                      postalCode: "281332"
                      country: USA
                    $native: {}
          application/xml:
            schema:
              type: object
              properties: {}
        description: ""
      description: Update an existing Account
    parameters: []
  /api/unifications/engagement/contacts/list:
    post:
      summary: List Contacts
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  contacts:
                    type: array
                    items:
                      $ref: "#/components/schemas/Contact"
                  nextPageCursor:
                    type: string
              examples:
                example-1:
                  value:
                    contacts:
                      - id: 34f5b4b0b6b650c981a174b02753c390
                        firstName: Tom
                        lastName: Smith
                        jobTitle: Director of Operations
                        phones:
                          - number: "8192223333"
                            type: "work"
                            isPrimary: true
                        emails:
                          - address: "tom@dunder.com"
                            type: "work"
                            isPrimary: true
                        address:
                          line1: 100 Blue Dr
                          line2: Suite 100
                          city: Scranton
                          state: Pennsylvania
                          postalCode: "281332"
                          country: USA
                        openCount: 0
                        clickCount: 3
                        replyCount: 1
                        bouncedCount: 1
                        createdTime: "2019-08-24T14:15:22Z"
                        modifiedTime: "2019-08-24T14:15:22Z"
                        associations:
                          accountId: 0dcb45e051315a6ea63b0f16e73689d9
                          ownerUserId: 56f653659ea9524b9e0fb0ba67e6f8a0
                        customFields: {}
                    nextPageCursor: string
      operationId: get-all-contacts
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                include:
                  $ref: "#/components/schemas/IncludeFields"
                cursor:
                  type: string
                filters:
                  type: object
                  properties:
                    emails:
                      type: object
                      properties:
                        address:
                          type: object
                          properties:
                            equals:
                              type: string
                          required: equals
                      required: address
                    tagIds:
                      type: object
                      properties:
                        in:
                          type: array
                          items:
                            type: string
                      required: in
                    sequenceIds:
                      type: object
                      properties:
                        in:
                          type: array
                          items:
                            type: string
                      required: in
            examples:
              example-1:
                value:
                  cursor: "123123"
                  include:
                    $native: false
                  filters:
                    emails:
                      address:
                        equals: fake@email.com
                    tagIds:
                      in:
                        - "some_tag"
                    sequenceIds:
                      in:
                        - "123"
      description: Retrieve all Contacts
    parameters: []
  /api/unifications/engagement/contacts/find:
    post:
      summary: Get Contact
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  contact:
                    $ref: "#/components/schemas/Contact"
              examples:
                example-1:
                  value:
                    contact:
                      id: 34f5b4b0b6b650c981a174b02753c390
                      firstName: Tom
                      lastName: Smith
                      jobTitle: Director of Operations
                      phones:
                        - number: "8192223333"
                          type: "work"
                          isPrimary: true
                      emails:
                        - address: "tom@dunder.com"
                          type: "work"
                          isPrimary: true
                      address:
                        line1: 100 Blue Dr
                        line2: Suite 100
                        city: Scranton
                        state: Pennsylvania
                        postalCode: "281332"
                        country: USA
                      openCount: 0
                      clickCount: 3
                      replyCount: 1
                      bouncedCount: 1
                      createdTime: "2019-08-24T14:15:22Z"
                      modifiedTime: "2019-08-24T14:15:22Z"
                      associations:
                        accountId: 0dcb45e051315a6ea63b0f16e73689d9
                        ownerUserId: 56f653659ea9524b9e0fb0ba67e6f8a0
                      customFields: {}
      operationId: get-one-contact
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                include:
                  $ref: "#/components/schemas/IncludeFields"
                id:
                  type: string
              required:
                - id
            examples:
              example-1:
                value:
                  id: "123123"
                  include:
                    $native: false
      description: Retrieve a Contact by Id
  /api/unifications/engagement/contacts/create:
    post:
      summary: Create Contact
      operationId: post-contact
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  id:
                    type: string
              examples:
                example-1:
                  value:
                    id: "0"
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                contact:
                  $ref: "#/components/schemas/ContactCreate"
              required:
                - contact
            examples:
              example-1:
                value:
                  contact:
                    firstName: Tom
                    lastName: Smith
                    jobTitle: Director of Operations
                    address:
                      line1: 100 Blue Dr
                      line2: Suite 100
                      city: Scranton
                      state: Pennsylvania
                      postalCode: "281332"
                      country: USA
                    customFields: {}
                    $native: {}
      description: Create a Contact
  /api/unifications/engagement/contacts/update:
    post:
      summary: Update Contact
      operationId: put-contact
      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"
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                contact:
                  $ref: "#/components/schemas/ContactUpdate"
              required:
                - id
                - contact
            examples:
              example-1:
                value:
                  id: string
                  contact:
                    firstName: Tom
                    lastName: Smith
                    jobTitle: Director of Operations
                    address:
                      line1: 100 Blue Dr
                      line2: Suite 100
                      city: Scranton
                      state: Pennsylvania
                      postalCode: "281332"
                      country: USA
                    customFields: {}
                    $native: {}
          application/xml:
            schema:
              type: object
              properties: {}
        description: ""
      description: Update an existing Contact
    parameters: []
  /api/unifications/engagement/contacts/list-custom-fields:
    post:
      summary: List Custom Fields
      operationId: get-all-customFields
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                include:
                  $ref: "#/components/schemas/IncludeFields"
                cursor:
                  type: string
            examples:
              example-1:
                value:
                  cursor: "123123"
                  include:
                    $native: false
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  customFields:
                    type: array
                    items:
                      $ref: "#/components/schemas/ContactCustomField"
                  nextPageCursor:
                    type: string
              examples:
                example-1:
                  value:
                    customFields:
                      - key: customField1
                        name: Custom Field
                        type: string
                    nextPageCursor: d9806400e2daa25de2322707bbc41577
      description: Get all Contact Custom Fields
  /api/unifications/engagement/contacts/create-custom-field:
    post:
      summary: Create Custom Field
      operationId: post-customFields
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  name:
                    type: string
              examples:
                example-1:
                  value:
                    key: "customField1"
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                customField:
                  $ref: "#/components/schemas/ContactCustomFieldCreate"
              required:
                - customField
            examples:
              example-1:
                value:
                  customField:
                    name: "customField1"
                    $native: {}
      description: Create a Contact Custom Field
  /api/unifications/engagement/emails/list:
    post:
      summary: List Emails
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  emails:
                    type: array
                    items:
                      $ref: "#/components/schemas/Email"
                  nextPageCursor:
                    type: string
              examples:
                example-1:
                  value:
                    emails:
                      - id: 2322707bbc41577d9806400e2daa25de
                        subject: "Re: Paper renewal"
                        hasReplied: true
                        isBounced: false
                        openCount: 1
                        clickCount: 2
                        replyCount: null
                        modifiedTime: "2019-08-24T14:15:22Z"
                        createdTime: "2019-08-24T14:15:22Z"
                        associations:
                          sequenceId: d08f345ace24509e911a0ea8e3d2203c
                          ownerUserId: 56f653659ea9524b9e0fb0ba67e6f8a0
                    nextPageCursor: string
      operationId: get-all-emails
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                include:
                  $ref: "#/components/schemas/IncludeFields"
                cursor:
                  type: string
                filters:
                  type: object
                  properties:
                    sequenceId:
                      type: object
                      properties:
                        equals:
                          type: string
                    contactId:
                      type: object
                      properties:
                        equals:
                          type: string
            examples:
              example-1:
                value:
                  cursor: "123123"
                  include:
                    $native: false
                  filters:
                    sequenceId:
                      equals: d08f345ace24509e911a0ea8e3d2203c
      description: Retrieve all Emails
    parameters: []
  /api/unifications/engagement/emails/find:
    post:
      summary: Get Email
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  email:
                    $ref: "#/components/schemas/Email"
              examples:
                example-1:
                  value:
                    email:
                      id: 2322707bbc41577d9806400e2daa25de
                      subject: "Re: Paper renewal"
                      hasReplied: true
                      isBounced: false
                      openCount: 1
                      clickCount: 2
                      replyCount: null
                      modifiedTime: "2019-08-24T14:15:22Z"
                      createdTime: "2019-08-24T14:15:22Z"
                      associations:
                        sequenceId: d08f345ace24509e911a0ea8e3d2203c
                        ownerUserId: 56f653659ea9524b9e0fb0ba67e6f8a0
      operationId: get-one-email
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                include:
                  $ref: "#/components/schemas/IncludeFields"
                id:
                  type: string
              required:
                - id
            examples:
              example-1:
                value:
                  id: "123123"
                  include:
                    $native: false
      description: "Retrieve a Email by Id"
    parameters: []
  /api/unifications/engagement/sequences/list:
    post:
      summary: List Sequences
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  sequences:
                    type: array
                    items:
                      $ref: "#/components/schemas/Sequence"
                  nextPageCursor:
                    type: string
              examples:
                example-1:
                  value:
                    sequences:
                      - id: "2322707bbc41577d9806400e2daa25de"
                        isEnabled: true
                        name: "Reaching out about My Company"
                        tags: ["cold"]
                        numSteps: 1
                        scheduledCount: 0
                        openedCount: 0
                        optedOutCount: 0
                        repliedCount: 0
                        clickedCount: 0
                    nextPageCursor: d9806400e2daa25de2322707bbc41577
      operationId: get-all-sequences
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                include:
                  $ref: "#/components/schemas/IncludeFields"
                cursor:
                  type: string
            examples:
              example-1:
                value:
                  cursor: "123123"
                  include:
                    $native: false
      description: Retrieve all Sequences
      security:
        - VesselAPIToken: []
    parameters: []
  /api/unifications/engagement/sequence/start:
    post:
      summary: Start Sequence
      operationId: post-start-sequence
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  id:
                    type: string
              examples:
                example-1:
                  value:
                    id: "0"
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
                fields:
                  $ref: "#/components/schemas/SequenceStart"
              required:
                - id
                - fields
            examples:
              example-1:

# --- truncated at 32 KB (59 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/vessel/refs/heads/main/openapi/vessel-engagement-openapi.yml