Deck Connection API

Manage connections

Operations 9

POST /connection/public_token/exchange Exchange public token for an access token #
POST /connection/context Get connection status details #
POST /connection/accounts Get the connection list of account numbers #
POST /connection/accounts/select Update the list of accounts to be considered #
POST /connection/access_token/invalidate Invalidate access_token #
POST /connection/auto_refresh/update Update connection stream config #
POST /connection/refresh Request manual refresh #
POST /connection/webhook/update Update the webhook url for a connection #
POST /connection/destroy Delete all data related to a connection, losing access to it #

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/deck:deck-connection-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

deck-connection-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Deck Connection API
  description: '# Deck API makes it straightforward for users to connect to any portal securely and quickly.


    ### Welcome! Looking for a quick introduction to our API? Check out the 🚀Quickstart guide.


    Starting on the sandbox server is easy:


    1. Create an account using the dashboard to get your client id and sandbox secret

    2. Enter your client id and sandbox secret in the Authentication section below

    3. Hit the "Try" buttons below for each endpoint.


    Happy querying!'
  contact:
    name: Ready to start building? Contact us!
    url: https://deck.co
  version: v1
servers:
- url: https://sandbox.deck.co/api/v1
  description: Deck Sandbox API
- url: https://live.deck.co/api/v1
  description: Deck API
tags:
- name: Connection
  description: Manage connections
paths:
  /connection/public_token/exchange:
    post:
      tags:
      - Connection
      summary: Exchange public token for an access token
      description: Exchange a Link public_token for an API access_token. Link hands off the public_token client-side via the onSuccess callback once a user has successfully created a connection.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ConnectionPublicTokenExchangeRequest'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ConnectionPublicTokenExchangeRequest'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/ConnectionPublicTokenExchangeRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectionPublicTokenExchangeResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ConnectionPublicTokenExchangeResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
        '401':
          description: Unauthorized - Invalid API key
      security:
      - client_id:
        - ''
        secret:
        - ''
      operationId: postConnectionPublicTokenExchange
      x-operation-id-source: derived
  /connection/context:
    post:
      tags:
      - Connection
      summary: Get connection status details
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AccessTokenRequest'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AccessTokenRequest'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AccessTokenRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConnectionContextResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ConnectionContextResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
        '401':
          description: Unauthorized - Invalid API key
      security:
      - client_id:
        - ''
        secret:
        - ''
      operationId: postConnectionContext
      x-operation-id-source: derived
  /connection/accounts:
    post:
      tags:
      - Connection
      summary: Get the connection list of account numbers
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AccessTokenRequest'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AccessTokenRequest'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AccessTokenRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetConnectionAccountsResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/GetConnectionAccountsResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
        '401':
          description: Unauthorized - Invalid API key
      security:
      - client_id:
        - ''
        secret:
        - ''
      operationId: postConnectionAccounts
      x-operation-id-source: derived
  /connection/accounts/select:
    post:
      tags:
      - Connection
      summary: Update the list of accounts to be considered
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/SelectConnectionAccountsRequest'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/SelectConnectionAccountsRequest'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/SelectConnectionAccountsRequest'
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
        '401':
          description: Unauthorized - Invalid API key
      security:
      - client_id:
        - ''
        secret:
        - ''
      operationId: postConnectionAccountsSelect
      x-operation-id-source: derived
  /connection/access_token/invalidate:
    post:
      tags:
      - Connection
      summary: Invalidate access_token
      description: Rotate the access_token associated with a connection. The endpoint returns a new access_token and immediately invalidates the previous access_token.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AccessTokenRequest'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AccessTokenRequest'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AccessTokenRequest'
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InvalidateAccessTokenResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/InvalidateAccessTokenResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
        '401':
          description: Unauthorized - Invalid API key
      security:
      - client_id:
        - ''
        secret:
        - ''
      operationId: postConnectionAccessTokenInvalidate
      x-operation-id-source: derived
  /connection/auto_refresh/update:
    post:
      tags:
      - Connection
      summary: Update connection stream config
      description: You can control which individual connections need to be regularly refreshed or not.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AutoRefreshUpdateRequest'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AutoRefreshUpdateRequest'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AutoRefreshUpdateRequest'
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
        '401':
          description: Unauthorized - Invalid API key
      security:
      - client_id:
        - ''
        secret:
        - ''
      operationId: postConnectionAutoRefreshUpdate
      x-operation-id-source: derived
  /connection/refresh:
    post:
      tags:
      - Connection
      summary: Request manual refresh
      description: This will initiate a new session for refreshing the data related to a connection.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RefreshConnectionRequest'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RefreshConnectionRequest'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/RefreshConnectionRequest'
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
        '401':
          description: Unauthorized - Invalid API key
      security:
      - client_id:
        - ''
        secret:
        - ''
      operationId: postConnectionRefresh
      x-operation-id-source: derived
  /connection/webhook/update:
    post:
      tags:
      - Connection
      summary: Update the webhook url for a connection
      description: Decide where the webhook event should be sent to for a specific connection.
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/WebhookUpdateRequest'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/WebhookUpdateRequest'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/WebhookUpdateRequest'
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
        '401':
          description: Unauthorized - Invalid API key
      security:
      - client_id:
        - ''
        secret:
        - ''
      operationId: postConnectionWebhookUpdate
      x-operation-id-source: derived
  /connection/destroy:
    post:
      tags:
      - Connection
      summary: Delete all data related to a connection, losing access to it
      requestBody:
        content:
          application/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AccessTokenRequest'
          text/json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AccessTokenRequest'
          application/*+json:
            schema:
              allOf:
              - $ref: '#/components/schemas/AccessTokenRequest'
      responses:
        '200':
          description: OK
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
            text/json:
              schema:
                $ref: '#/components/schemas/ErrorMessageResponse'
        '401':
          description: Unauthorized - Invalid API key
      security:
      - client_id:
        - ''
        secret:
        - ''
      operationId: postConnectionDestroy
      x-operation-id-source: derived
components:
  schemas:
    ConnectionContextResponse:
      required:
      - entities
      - provider
      type: object
      properties:
        connection_id:
          type: string
          description: The Deck Connection ID associated with the access token data being requested
          format: uuid
        provider:
          allOf:
          - $ref: '#/components/schemas/Provider'
          description: The data source associated to this connectiond
        connection_status:
          allOf:
          - $ref: '#/components/schemas/ConnectivityStatusEnum'
          description: Represents the current connection health status between the system and the data source, such as Connected or Disconnected.
        connection_status_timestamp:
          type: string
          description: The UTC timestamp of when the connectivity status was last updated.
          format: date-time
        connection_status_reason:
          allOf:
          - $ref: '#/components/schemas/ScrapingStatusEnum'
          description: Represents the most recent scraping result for this connection, providing additional context to the connectivity status.
        num_of_entities:
          type: integer
          description: Represents the number of accounts.
          format: int32
          readOnly: true
        entities:
          type: array
          items:
            $ref: '#/components/schemas/Entity'
          description: A list of entities associated with this connection.
      additionalProperties: false
    AccessTokenRequest:
      required:
      - access_token
      type: object
      properties:
        access_token:
          minLength: 1
          type: string
          description: The access token associated with the Item data is being requested for
      additionalProperties: false
    ErrorCategoryEnum:
      enum:
      - INVALID_REQUEST
      - INVALID_RESULT
      - INVALID_INPUT
      - DATA_SOURCE_ERROR
      - RATE_LIMIT_EXCEEDED
      - API_ERROR
      - CONNECTION_ERROR
      - RECAPTCHA_ERROR
      - FETCH_BALANCE
      - ADD_PAYMENT_METHOD
      - FETCH_PAYMENT_METHODS
      - PAYMENT
      type: string
    ConnectionPublicTokenExchangeResponse:
      required:
      - fields
      type: object
      properties:
        access_token:
          type: string
          description: The access token associated with the connection data is being requested for
        connection_id:
          type: string
          description: The Deck Connection ID for the connection associated with the returned access token
          format: uuid
        fields:
          type: array
          items:
            $ref: '#/components/schemas/LinkConnectRequestField'
          description: List of non-sensitive values provided from the Link session by the user
      additionalProperties: false
    ErrorMessageResponse:
      type: object
      properties:
        error_category:
          allOf:
          - $ref: '#/components/schemas/ErrorCategoryEnum'
          description: A broad categorization of the error. Safe for programmatic use.
        error_code:
          allOf:
          - $ref: '#/components/schemas/ErrorCodeEnum'
          description: The particular error code. Safe for programmatic use.
        error_message:
          type: string
          description: A developer-friendly representation of the error code. This may change over time and is not safe for programmatic use.
        display_message:
          type:
          - string
          - 'null'
          description: A user-friendly representation of the error code. null if the error is not related to user action. This may change over time and is not safe for programmatic use.
      additionalProperties: false
    AutoRefreshUpdateRequest:
      required:
      - access_token
      - auto_refresh
      type: object
      properties:
        access_token:
          minLength: 1
          type: string
          description: The access token associated with the Item data is being requested for
        auto_refresh:
          type: boolean
          description: Flag to toggle the automatic refresh when new connection's data is found
      additionalProperties: false
    GetConnectionAccountsResponse:
      type: object
      properties:
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/GetConnectionAccountsResponseAccount'
      additionalProperties: false
    ConnectivityStatusEnum:
      enum:
      - New
      - Connecting
      - Connected
      - Disconnected
      - Error
      type: string
    Provider:
      type: object
      properties:
        id:
          type: string
          description: Unique identifier of the data provider associated to this connectiond
          format: uuid
        name:
          type: string
          description: Name of the data source provider to this connection
      additionalProperties: false
    InvalidateAccessTokenResponse:
      type: object
      properties:
        new_access_token:
          type: string
          description: The access token associated with the connection data being requested
      additionalProperties: false
    Entity:
      required:
      - account_number
      type: object
      properties:
        account_number:
          type: string
      additionalProperties: false
    RefreshConnectionRequest:
      required:
      - access_token
      type: object
      properties:
        access_token:
          minLength: 1
          type: string
          description: The access token associated with the Item data is being requested for
        account_numbers:
          type: array
          items:
            type: string
      additionalProperties: false
    GetConnectionAccountsRequestAccount:
      required:
      - account_number
      - is_selected
      type: object
      properties:
        account_number:
          type:
          - string
          - 'null'
        is_selected:
          type: boolean
      additionalProperties: false
    WebhookUpdateRequest:
      required:
      - access_token
      - is_active
      - url
      type: object
      properties:
        access_token:
          minLength: 1
          type: string
          description: The access token associated with the Item data is being requested for
        url:
          minLength: 1
          type: string
          description: The URL of the webhook
        is_active:
          type: boolean
          description: The status of the webhook. If true, the webhook is active. If false, the webhook is inactive.
      additionalProperties: false
    ErrorCodeEnum:
      enum:
      - DATA_SOURCE_NOT_FOUND
      - DATA_SOURCE_NOT_RESPONDING
      - PRODUCT_NOT_READY
      - CONNECTION_NOT_FOUND
      - CONNECTION_FAILED
      - INVALID_CREDENTIALS
      - LIVE_CONNECTIVITY_NOT_ENABLED
      - PRODUCT_NOT_ENABLED
      - NO_ACCOUNTS
      - NO_STATEMENTS
      - CONNECTION_LOCKED
      - BLOCKED_BY_PIN
      - VALIDATION_FAILED
      - INVALID_API_KEYS
      - INVALID_LINK_TOKEN
      - INVALID_PUBLIC_TOKEN
      - INVALID_ACCESS_TOKEN
      - INVALID_ACCOUNT_ID
      - INVALID_STATEMENT_ID
      - CONSENT_REQUIRED
      - INVALID_CURP
      - INVALID_DOCUMENT_UPLOAD
      - INVALID_ARGUMENT
      - NOT_SUPPORTED
      - UNEXPECTED_ERROR
      - PLANNED_MAINTENANCE
      - SECURITY_QUESTION_NOT_FOUND
      - SECURITY_CAPTCHA_NOT_FOUND
      - RATE_LIMIT_EXCEEDED
      - NO_ACTIVE_CONNECTION
      - INVALID_SOURCE
      - ACTIVE_CONNECTION_EXISTS
      type: string
    ScrapingStatusEnum:
      enum:
      - New
      - Connecting
      - CredentialsSent
      - InvalidCredentials
      - ConnectedCredentials
      - SecurityAnswerRequired
      - SecurityAnswerInvalid
      - SecurityQuestionTimeout
      - MfaMethodChoiceRequired
      - MfaCodeRequired
      - MfaCodeInvalid
      - MfaCodeTimeout
      - MfaActionRequired
      - BlockedByPin
      - AccountSelectionRequired
      - WaitingForJob
      - ExecutingJob
      - CompletedJob
      - RetryLater
      - DataFound
      - ConnectedWaitingOnDataExtraction
      - NoDataFound
      - NoStatement
      - Error
      type: string
    LinkConnectRequestField:
      required:
      - field_name
      - field_value
      type: object
      properties:
        field_name:
          type: string
        field_value:
          type: string
      additionalProperties: false
    GetConnectionAccountsResponseAccount:
      required:
      - account_number
      - is_selected
      type: object
      properties:
        account_number:
          type: string
        is_selected:
          type: boolean
      additionalProperties: false
    SelectConnectionAccountsRequest:
      required:
      - access_token
      type: object
      properties:
        access_token:
          minLength: 1
          type: string
          description: The access token associated with the Item data is being requested for
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/GetConnectionAccountsRequestAccount'
      additionalProperties: false
    ConnectionPublicTokenExchangeRequest:
      required:
      - public_token
      type: object
      properties:
        public_token:
          minLength: 1
          type: string
          description: Your public_token, obtained from the Link onSuccess callback
      additionalProperties: false
  securitySchemes:
    client_id:
      type: apiKey
      description: Enter your client id
      name: x-deck-client-id
      in: header
    secret:
      type: apiKey
      description: Enter your secret
      name: x-deck-secret
      in: header