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).
Work with this as data
Every overlay 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 openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.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.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/vessel-crm-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
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.