Vessel · OpenAPI Overlay 1.0.0
Vessel CRM Unified API — API Evangelist Overlay
141 actions
141 updates
documentation
extends
openapi/vessel-crm-openapi.yml
Generated by API Evangelist
Written by API Evangelist tooling for Vessel's API. It is a proposal applied on top of the contract, not a document Vessel publishes.
What the actions change
tags400401409500contactdescriptionVesselAPIToken
Targets 141 · first 16 shown; the file carries all of them
$.info
$
$.paths['/api/unifications/crm/info/find'].post
$.paths['/api/unifications/crm/users/list'].post
$.paths['/api/unifications/crm/users/batch-read'].post
$.paths['/api/unifications/crm/users/find'].post
$.paths['/api/unifications/crm/users/details'].post
$.paths['/api/unifications/crm/contacts/list'].post
$.paths['/api/unifications/crm/contacts/batch-read'].post
$.paths['/api/unifications/crm/contacts/find'].post
$.paths['/api/unifications/crm/contacts/create'].post
$.paths['/api/unifications/crm/contacts/update'].post
$.paths['/api/unifications/crm/contacts/details'].post
$.paths['/api/unifications/crm/deals/list'].post
$.paths['/api/unifications/crm/deals/batch-read'].post
$.paths['/api/unifications/crm/deals/find'].post
OpenAPI Overlay
overlay: 1.0.0
info:
title: Vessel CRM Unified API — API Evangelist Overlay
version: 1.0.0
extends: openapi/vessel-crm-openapi.yml
x-provenance:
generated: '2026-08-13'
method: generated
source: API Evangelist enrichment pipeline — enhancements over the verbatim spec harvested from https://github.com/vesselapi/all-api-docs
note: The underlying OpenAPI is left byte-identical to what Vessel published. Every change below is
an API Evangelist annotation, not a claim about Vessel's contract. The two substantive additions are
tags (the published specs declare none, so no generator or catalog can group these operations) and
the error responses that Vessel documents in prose but never declares in the contract.
actions:
- target: $.info
update:
contact:
name: Vessel Support
email: support@vessel.dev
url: https://www.vessel.dev/
description: 'Unified CRM API (v2). Normalizes contacts, deals, accounts, leads, notes, tasks, events,
event attendees, emails, calls, lists and users across Salesforce, HubSpot, Zoho, Pipedrive, Close,
Freshsales, Microsoft Dynamics, Affinity and monday.com. RPC over POST: reads are POSTs because
filters, includes and synced-cache selectors travel in the body. Cursor pagination via cursor/nextPageCursor.
Every object carries $native with the untranslated source record.'
- target: $
update:
tags:
- name: Accounts
- name: Calls
- name: Connection Info
- name: Contacts
- name: Custom Fields
- name: Deals
- name: Emails
- name: Event Attendees
- name: Events
- name: Leads
- name: Lists
- name: Notes
- name: Tasks
- name: Users
- target: $.paths['/api/unifications/crm/info/find'].post
update:
tags:
- Connection Info
- target: $.paths['/api/unifications/crm/users/list'].post
update:
tags:
- Users
- target: $.paths['/api/unifications/crm/users/batch-read'].post
update:
tags:
- Users
- target: $.paths['/api/unifications/crm/users/find'].post
update:
tags:
- Users
- target: $.paths['/api/unifications/crm/users/details'].post
update:
tags:
- Users
- target: $.paths['/api/unifications/crm/contacts/list'].post
update:
tags:
- Contacts
- target: $.paths['/api/unifications/crm/contacts/batch-read'].post
update:
tags:
- Contacts
- target: $.paths['/api/unifications/crm/contacts/find'].post
update:
tags:
- Contacts
- target: $.paths['/api/unifications/crm/contacts/create'].post
update:
tags:
- Contacts
- target: $.paths['/api/unifications/crm/contacts/update'].post
update:
tags:
- Contacts
- target: $.paths['/api/unifications/crm/contacts/details'].post
update:
tags:
- Contacts
- target: $.paths['/api/unifications/crm/deals/list'].post
update:
tags:
- Deals
- target: $.paths['/api/unifications/crm/deals/batch-read'].post
update:
tags:
- Deals
- target: $.paths['/api/unifications/crm/deals/find'].post
update:
tags:
- Deals
- target: $.paths['/api/unifications/crm/deals/create'].post
update:
tags:
- Deals
- target: $.paths['/api/unifications/crm/deals/update'].post
update:
tags:
- Deals
- target: $.paths['/api/unifications/crm/deals/details'].post
update:
tags:
- Deals
- target: $.paths['/api/unifications/crm/accounts/list'].post
update:
tags:
- Accounts
- target: $.paths['/api/unifications/crm/accounts/batch-read'].post
update:
tags:
- Accounts
- target: $.paths['/api/unifications/crm/accounts/find'].post
update:
tags:
- Accounts
- target: $.paths['/api/unifications/crm/accounts/create'].post
update:
tags:
- Accounts
- target: $.paths['/api/unifications/crm/accounts/update'].post
update:
tags:
- Accounts
- target: $.paths['/api/unifications/crm/accounts/details'].post
update:
tags:
- Accounts
- target: $.paths['/api/unifications/crm/leads/list'].post
update:
tags:
- Leads
- target: $.paths['/api/unifications/crm/leads/batch-read'].post
update:
tags:
- Leads
- target: $.paths['/api/unifications/crm/leads/find'].post
update:
tags:
- Leads
- target: $.paths['/api/unifications/crm/leads/create'].post
update:
tags:
- Leads
- target: $.paths['/api/unifications/crm/leads/update'].post
update:
tags:
- Leads
- target: $.paths['/api/unifications/crm/custom-fields/create'].post
update:
tags:
- Custom Fields
- target: $.paths['/api/unifications/crm/leads/details'].post
update:
tags:
- Leads
- target: $.paths['/api/unifications/crm/notes/list'].post
update:
tags:
- Notes
- target: $.paths['/api/unifications/crm/notes/batch-read'].post
update:
tags:
- Notes
- target: $.paths['/api/unifications/crm/notes/find'].post
update:
tags:
- Notes
- target: $.paths['/api/unifications/crm/notes/create'].post
update:
tags:
- Notes
- target: $.paths['/api/unifications/crm/notes/update'].post
update:
tags:
- Notes
- target: $.paths['/api/unifications/crm/notes/details'].post
update:
tags:
- Notes
- target: $.paths['/api/unifications/crm/tasks/list'].post
update:
tags:
- Tasks
- target: $.paths['/api/unifications/crm/tasks/batch-read'].post
update:
tags:
- Tasks
- target: $.paths['/api/unifications/crm/tasks/find'].post
update:
tags:
- Tasks
- target: $.paths['/api/unifications/crm/tasks/create'].post
update:
tags:
- Tasks
- target: $.paths['/api/unifications/crm/tasks/update'].post
update:
tags:
- Tasks
- target: $.paths['/api/unifications/crm/tasks/details'].post
update:
tags:
- Tasks
- target: $.paths['/api/unifications/crm/events/list'].post
update:
tags:
- Events
- target: $.paths['/api/unifications/crm/events/batch-read'].post
update:
tags:
- Events
- target: $.paths['/api/unifications/crm/events/find'].post
update:
tags:
- Events
- target: $.paths['/api/unifications/crm/events/create'].post
update:
tags:
- Events
- target: $.paths['/api/unifications/crm/events/update'].post
update:
tags:
- Events
- target: $.paths['/api/unifications/crm/events/details'].post
update:
tags:
- Events
- target: $.paths['/api/unifications/crm/attendees/list'].post
update:
tags:
- Event Attendees
- target: $.paths['/api/unifications/crm/attendees/batch-read'].post
update:
tags:
- Event Attendees
- target: $.paths['/api/unifications/crm/attendees/find'].post
update:
tags:
- Event Attendees
- target: $.paths['/api/unifications/crm/attendees/create'].post
update:
tags:
- Event Attendees
- target: $.paths['/api/unifications/crm/attendees/update'].post
update:
tags:
- Event Attendees
- target: $.paths['/api/unifications/crm/attendees/details'].post
update:
tags:
- Event Attendees
- target: $.paths['/api/unifications/crm/emails/list'].post
update:
tags:
- Emails
- target: $.paths['/api/unifications/crm/emails/batch-read'].post
update:
tags:
- Emails
- target: $.paths['/api/unifications/crm/emails/find'].post
update:
tags:
- Emails
- target: $.paths['/api/unifications/crm/emails/create'].post
update:
tags:
- Emails
- target: $.paths['/api/unifications/crm/emails/update'].post
update:
tags:
- Emails
- target: $.paths['/api/unifications/crm/emails/details'].post
update:
tags:
- Emails
- target: $.paths['/api/unifications/crm/calls/list'].post
update:
tags:
- Calls
- target: $.paths['/api/unifications/crm/calls/batch-read'].post
update:
tags:
- Calls
- target: $.paths['/api/unifications/crm/calls/find'].post
update:
tags:
- Calls
- target: $.paths['/api/unifications/crm/calls/create'].post
update:
tags:
- Calls
- target: $.paths['/api/unifications/crm/calls/update'].post
update:
tags:
- Calls
- target: $.paths['/api/unifications/crm/calls/details'].post
update:
tags:
- Calls
- target: $.paths['/api/unifications/crm/lists/list'].post
update:
tags:
- Lists
- target: $.paths['/api/unifications/crm/lists/find'].post
update:
tags:
- Lists
- target: $.paths['/api/unifications/crm/lists/details'].post
update:
tags:
- Lists
- target: $.paths['/api/unifications/crm/info/find'].post.responses
update: &id001
'400':
description: Generic Client Error — invalid body parameters, expired public token, or development-connection
cap reached. Documented at crm/error-handling.mdx; not declared in the published contract.
'401':
description: Authorization Error — invalid API token, link token, or access token.
'409':
description: Data still syncing — the connection has not reached the INITIAL_SYNC state.
'500':
description: 'Internal Server Error. NOTE: Vessel documents that some client-side validation failures
(missing object, endpoint not implemented for that CRM, expired link token, webhook setup problems)
are returned as 5xx. Do not treat as automatically retryable.'
- target: $.paths['/api/unifications/crm/users/list'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/users/batch-read'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/users/find'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/users/details'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/contacts/list'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/contacts/batch-read'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/contacts/find'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/contacts/create'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/contacts/update'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/contacts/details'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/deals/list'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/deals/batch-read'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/deals/find'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/deals/create'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/deals/update'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/deals/details'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/accounts/list'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/accounts/batch-read'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/accounts/find'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/accounts/create'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/accounts/update'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/accounts/details'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/leads/list'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/leads/batch-read'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/leads/find'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/leads/create'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/leads/update'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/custom-fields/create'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/leads/details'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/notes/list'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/notes/batch-read'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/notes/find'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/notes/create'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/notes/update'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/notes/details'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/tasks/list'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/tasks/batch-read'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/tasks/find'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/tasks/create'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/tasks/update'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/tasks/details'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/events/list'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/events/batch-read'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/events/find'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/events/create'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/events/update'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/events/details'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/attendees/list'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/attendees/batch-read'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/attendees/find'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/attendees/create'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/attendees/update'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/attendees/details'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/emails/list'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/emails/batch-read'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/emails/find'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/emails/create'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/emails/update'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/emails/details'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/calls/list'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/calls/batch-read'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/calls/find'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/calls/create'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/calls/update'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/calls/details'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/lists/list'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/lists/find'].post.responses
update: *id001
- target: $.paths['/api/unifications/crm/lists/details'].post.responses
update: *id001
- target: $.components.securitySchemes
update:
VesselAPIToken:
type: apiKey
in: header
name: x-vessel-api-token
description: Project API token. The published v2 specs declare a security requirement referencing
VesselAPIToken but never define the scheme; this restores the definition from the provider mint.json
(api.auth.name).