Vessel Platform API

The Vessel Platform API is the control plane of the Vessel embedded integrations platform. It covers the Link authentication handshake (session tokens and access tokens), the catalog of supported integrations, connection lifecycle (list, find, delete), customer-managed OAuth apps, the /api/passthrough escape hatch for calling a downstream provider's native API directly, and webhook subscription management. Every request is authenticated with an x-vessel-api-token header. Published by Vessel as OpenAPI 3.1.0 with 15 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/platform-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-platform-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: API Reference
  version: '1.0'
  summary: API
security:
  - VesselAPIToken: []
servers:
  - url: 'https://api.vessel.dev'
paths:
  /api/connections/list:
    post:
      summary: List Connections
      operationId: get-all-connections
      responses:
        '200':
          description: List Connections
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  connections:
                    type: array
                    items:
                      $ref: '#/components/schemas/Connection'
              examples:
                example-1:
                  value:
                    connections:
                      - id: v_connection_development_apollo_eb97282c54ff6c5d9bdf4c716a01d6950c02d361183088769acbe302f94caf52
                        projectId: v_project_123123123
                        syncState: initial-sync-in-progress
                        integrationId: apollo
                        createdTime: 2022-11-09T23:11:28.617Z
      description: 'List all connections associated with this api token.'
      security:
        - VesselAPIToken: []
    parameters: []
  /api/connections/find:
    post:
      summary: Find Connection
      operationId: get-one-connection
      responses:
        '200':
          description: Find a Connection
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  connection:
                    $ref: '#/components/schemas/Connection'
              examples:
                example-1:
                  value:
                    connection:
                      id: v_connection_development_apollo_eb97282c54ff6c5d9bdf4c716a01d6950c02d361183088769acbe302f94caf52
                      integrationId: apollo
                      projectId: v_project_123123123
                      syncState: initial-sync-in-progress
                      createdTime: 2022-11-09T23:11:28.617Z
      description: 'Find a connection'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
              required:
                - id
            examples:
              example-1:
                value:
                  id: 'v_connection_development_apollo_eb97282c54ff6c5d9bdf4c716a01d6950c02d361183088769acbe302f94caf52'
      security:
        - VesselAPIToken: []
    parameters: []
  /api/connections/delete:
    post:
      summary: Delete Connection
      operationId: delete-one-connection
      responses:
        '200':
          description: Delete a Connection
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  success: true
              examples: {}
      description: 'Delete a connection'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
              required:
                - id
            examples:
              example-1:
                value:
                  id: 'v_connection_development_apollo_eb97282c54ff6c5d9bdf4c716a01d6950c02d361183088769acbe302f94caf52'
      security:
        - VesselAPIToken: []
    parameters: []
  /api/integrations/list:
    post:
      summary: List Integrations
      operationId: get-all-integrations
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                filters:
                  type: object
                  properties:
                    ids:
                      type: array
                      items:
                        type: string
            examples:
              example-1:
                value:
                  ids:
                    - salesforce
                    - hubspot
      responses:
        '200':
          description: List Integrations
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  integrations:
                    type: array
                    items:
                      $ref: '#/components/schemas/Integration'
              examples:
                example-1:
                  value:
                    integrations:
                      - id: apollo
                        display:
                          name: Apollo
                          iconURI: '1f12532...'
      description: 'List all available Integrations.'
      security:
        - VesselAPIToken: []
    parameters: []
  /api/auth/access-token:
    post:
      summary: Get Access Token
      operationId: get-one-access-token
      responses:
        '200':
          description: Exchange Session Token for Access Token
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  accessToken:
                    type: string
                  connectionId:
                    type: string
                  integrationId:
                    type: string
              examples: {}
      description: 'Exchange the session token for an access token. The access token is the secret key used to refer to a specific connected integration.'
      parameters:
        - in: header
          name: x-vessel-session-token
          schema:
            type: string
          required: true
      security:
        - VesselAPIToken: []
    parameters: []
  /api/auth/session-token:
    post:
      summary: Get Session Token
      operationId: get-one-session-token
      responses:
        '200':
          description: Get Session Token
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  sessionToken:
                    type: string
              examples:
                example-1:
                  value:
                    sessionToken: 'v_session_eb97282c54ff6c5d9bdf4c716a01d6950c02d361183088769acbe302f94caf52'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                integrationId:
                  type: string
                  description: Required when creating a session token for a synced connection
                connection:
                  type: object
                  properties:
                    sync:
                      type: object
                      properties:
                        objects:
                          description: Set any of these objects to true to sync these objects to the [synced-cache](/pages/home/synced-cache)
                          type: object
                          properties:
                            accounts:
                              type: boolean
                            contacts:
                              type: boolean
                            deals:
                              type: boolean
                            leads:
                              type: boolean
                            events:
                              type: boolean
                            attendees:
                              type: boolean
                            tasks:
                              type: boolean
                            notes:
                              type: boolean
                            calls:
                              type: boolean
                            users:
                              type: boolean
                            emails:
                              type: boolean
            examples:
              example-1:
                value:
                  id: 'v_oauthapp_apollo_12312312'
      description: "Call this endpoint to start a new Authentication Session before authenticating your User's integration."
      security:
        - VesselAPIToken: []
    parameters: []
  /api/auth/oauth-apps/list:
    post:
      summary: List OAuth Apps
      operationId: get-all-oauth-apps
      responses:
        '200':
          description: List OAuth Apps
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  oauthApps:
                    type: array
                    items:
                      $ref: '#/components/schemas/OAuthApp'
              examples: {}
      description: 'List all OAuth Apps.'
      security:
        - VesselAPIToken: []
    parameters: []
  /api/auth/oauth-apps/find:
    post:
      summary: Find OAuth App
      operationId: get-one-oauth-app
      responses:
        '200':
          description: Find an OAuth App
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  oauthApp:
                    $ref: '#/components/schemas/OAuthApp'
              examples: {}
      description: 'Find an OAuth App'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
              required:
                - id
            examples:
              example-1:
                value:
                  id: 'v_oauthapp_apollo_12312312'
      security:
        - VesselAPIToken: []
    parameters: []
  /api/auth/oauth-apps/create:
    post:
      summary: Create OAuth App
      operationId: post-oauth-app
      responses:
        '200':
          description: Create an OAuth App
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  oauthApp:
                    $ref: '#/components/schemas/OAuthApp'
              examples: {}
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                integrationId:
                  type: string
                clientId:
                  type: string
                clientSecret:
                  type: string
                scopes:
                  type: array
                  items:
                    type: string
              required:
                - integrationId
                - clientId
                - clientSecret
            examples:
              example-1:
                value:
                  integrationId: 'apollo'
                  clientId: '123123123'
                  clientSecret: '123123123'
                  scopes:
                    - 'read'
                    - 'write'
      description: 'Create an OAuth App'
      security:
        - VesselAPIToken: []
    parameters: []
  /api/auth/oauth-apps/delete:
    post:
      summary: Delete OAuth App
      operationId: delete-oauth-app
      responses:
        '200':
          description: Delete an OAuth App
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  id:
                    type: string
              examples: {}
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
              required:
                - id
            examples:
              example-1:
                value:
                  id: 'v_oauthapp_apollo_12312312'
      description: 'Delete an OAuth App'
      security:
        - VesselAPIToken: []
    parameters: []
  /api/passthrough:
    post:
      summary: Passthrough Request
      operationId: passthrough
      parameters:
        - name: x-vessel-access-token
          in: header
          description: Access Token
          required: true
          schema:
            type: string
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                description: ''
                type: object
                properties:
                  $native:
                    type: object
                    properties:
                      headers:
                        type: object
                      body:
                        type: object
                      url:
                        type: string
                required:
                  - id
              examples:
                example-1:
                  value:
                    $native:
                      headers:
                        content-type: application/json
                      body:
                        id: 123123123123
                      url: 'https://test.my.salesforce.com/services/data/v52.0/sobjects/Account/0011A00001XQ4ZUQA1'

      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                method:
                  type: string
                  enum:
                    - GET
                    - POST
                    - PUT
                    - PATCH
                    - DELETE
                path:
                  type: string
                  description: The path to send the request to. Vessel handles the domain, for example, a request to Salesforce would use `/services/data/v52.0/sobjects/Account` instead of `https://mydomain.my.salesforce.com/services/data/v52.0/sobjects/Account`.
                json:
                  type: object
                  description: The JSON body of the request.
                query:
                  type: object
                  description:
                    The query parameters to send with the request as key
                    value pairs. These are appended to the URL when the request is
                    sent to the integration provider.
              required:
                - method
                - path
            examples:
              example-1:
                value:
                  method: PATCH
                  path: '/services/data/v53.0/sobjects/Account/0011A00001XQ4ZUQA1'
                  json:
                    - Name: Vessel
        description: ''
      description:
        Send an authenticated passthrough request to the downstream system.
        This is useful for making requests to endpoints that are not yet supported
        by Vessel.
  /webhooks/list:
    post:
      summary: List Webhooks
      operationId: list-webhooks
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  webhooks:
                    type: array
                    items:
                      type: object
                      properties:
                        id:
                          type: string
                        projectId:
                          type: string
                        url:
                          type: string
                        createdTime:
                          type: string
              examples:
                example-1:
                  value:
                    webhooks:
                      - id: v_webhook_1231241
                        projectId: v_project_c63a7fbd9123123
                        url: 'https://mycompany.io/webhooks/12312312'
                        createdTime: '2021-10-20T23:11:28.617Z'
  /webhooks/find:
    post:
      summary: Find Webhook
      operationId: find-webhook
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  webhook:
                    type: object
                    properties:
                      id:
                        type: string
                      projectId:
                        type: string
                      url:
                        type: string
                      createdTime:
                        type: string
              examples:
                example-1:
                  value:
                    webhook:
                      id: v_webhook_1231241
                      projectId: v_project_c63a7fbd9123123
                      url: 'https://mycompany.io/webhooks/12312312'
                      createdTime: '2021-10-20T23:11:28.617Z'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
              required:
                - id
  /webhooks/create:
    post:
      summary: Create Webhook
      operationId: create-webhook
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  webhook:
                    type: object
                    properties:
                      id:
                        type: string
                      projectId:
                        type: string
                      url:
                        type: string
                      createdTime:
                        type: string
              examples:
                example-1:
                  value:
                    webhook:
                      id: v_webhook_1231241
                      projectId: v_project_c63a7fbd9123123
                      url: 'https://mycompany.io/webhooks/12312312'
                      createdTime: '2021-10-20T23:11:28.617Z'
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                url:
                  type: string
              required:
                - url
  /webhooks/delete:
    post:
      summary: Delete Webhook
      operationId: delete-webhook
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                title: responseBody
                type: object
                properties:
                  id:
                    type: string
              examples:
                example-1:
                  value:
                    id: v_webhook_1231241
      requestBody:
        content:
          application/json:
            schema:
              type: object
              properties:
                id:
                  type: string
              required:
                - id
components:
  schemas:
    Connection:
      title: Connection
      type: object
      properties:
        id:
          type: string
        projectId:
          type: string
        integrationId:
          type: string
        syncState: 
          type: string
          enum:
            - 'initial-sync-in-progress'
            - 'initial-sync-complete'
        createdTime:
          type: string
    Integration:
      title: Integration
      type: object
      properties:
        id:
          type: string
        display:
          type: object
          properties:
            name:
              type: string
            iconURI:
              type: string
      examples:
        - id: apollo
          display:
            name: Apollo
            iconURI: '1f12532...'
    OAuthApp:
      title: OAuthApp
      type: object
      properties:
        id:
          type: string
        integrationId:
          type: string
        createdTime:
          type: string
      examples:
        - id: v_oauthapp_apollo_12312312
          integrationId: apollo
          createdTime: 2022-11-09T23:11:28.617Z