Bakkt Crypto Solutions API

REST-based API for clients whose investors purchase, hold, sell, and transfer digital assets; includes account opening/KYC, order management, positions, transfers/withdrawals, allocations, gifting, and fiat funding. Base paths /apex-crypto/api/v2 (Crypto Solutions) and /partner/v1 (Fiat/Partner).

OpenAPI Specification

bakkt-crypto-openapi.yml Raw ↑
openapi: 3.0.0
info:
  title: Bakkt Crypto Solutions API
  version: '2.0'
  description: The Bakkt Crypto Solutions API is a REST-based API that provides a platform for clients, so their investors
    can purchase, hold, sell, and transfer digital assets. Clients must have authorization to use the APIs, secure endpoints,
    and facilities to ensure safe, fast execution and tracking of orders. Users must specify all date and time units using
    epoch time in UTC. The URL path includes a version number to indicate major versions which retain backward compatibility
    to other URLs with the same version prefix. This document is reconstructed by the API Evangelist enrichment pipeline from
    the per-endpoint OpenAPI fragments Bakkt publishes on its ReadMe developer hub (bakkt.readme.io); it merges the Crypto
    Solutions (/apex-crypto/api/v2) and Fiat/Partner (/partner/v1) endpoint families.
  termsOfService: https://bakkt.com/user-agreement
  contact:
    name: Bakkt User Account Agreement
    url: https://bakkt.com/user-agreement
servers:
- url: https://api.bakkt.com
  description: Bakkt API gateway (dedicated per-client, IP-whitelisted; base paths /apex-crypto/api/v2 and /partner/v1)
tags:
- name: Partner Party Linking
- description: Orders enables customers to buy or sell crypto.
  name: Orders
- description: Accounts are used to represent users that use the platform's services.
  name: Accounts
- description: Documents allows users to upload and retrieve documents along with their relevant metadata.
  name: Documents
- name: Partner Connectivity
- name: Partner Party Funding
- description: Client systems can use these resources to provide a connection to the platform's services and check API status.
  name: Configuration and Status
- description: Instruments provides information about assets offered on the platform.
  name: Instruments
- description: Jurisdictions provides information about trading restrictions in different jurisdictions
  name: Jurisdictions
- description: Positions provide up-to-date information about crypto balances and transactions.
  name: Positions
- description: Transfers allow users to access deposit and withdrawal functionality both within the Bakkt network and across
    the blockchain.
  name: Transfers
- description: Authorization allows Client systems to authenticate and access services on behalf of their investors.
  name: Authorization
paths:
  /partner/v1/partner/{partnerId}/party/{partnerPartyRef}/plaidAccount/link:
    post:
      tags:
      - Partner Party Linking
      summary: Link a Plaid account using processor token
      description: Send a processor token to link Plaid account
      operationId: addBankAccount
      parameters:
      - name: partnerId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: partnerPartyRef
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json;charset=UTF-8:
            schema:
              $ref: '#/components/schemas/PlaidAccountLinkingRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/AccountLinkResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PublicApiError'
  /partner/v1/partner/{partnerId}/party/{partnerPartyRef}/bankAccount:
    post:
      tags:
      - Partner Party Linking
      summary: Add Bank Account
      description: Add bank account details to a consumer account at Bakkt. Test Environment Use Only
      operationId: addManualBankAccount
      parameters:
      - name: partnerId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: partnerPartyRef
        in: path
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json;charset=UTF-8:
            schema:
              $ref: '#/components/schemas/CreateBankAccountRequest'
        required: true
      responses:
        '200':
          description: OK
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/CreateBankAccountResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PublicApiError'
  /apex-crypto/api/v2/allocation/currency/batch/allocate:
    post:
      description: Currency allocation request for a single customer account
      operationId: allocationCurrencyBatchAllocateCreate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CurrencyAllocationRequest'
        required: true
      responses:
        '200':
          description: Successful submission of currency allocation request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CurrencyAllocation'
        '400':
          description: This response returns if the check was improperly submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Request For Currency Allocation
      tags:
      - Currency Onboarding
  /apex-crypto/api/v2/allocation/currency/batch/allocate/{clientTransactionId}:
    get:
      description: Retrieve details pertaining to a particular currency allocation by its clientTransactionId
      operationId: allocationCurrencyBatchAllocateGet
      parameters:
      - description: Client-specified unique identifer for the currency allocation
        in: path
        name: clientTransactionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Returns details of the allocation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CurrencyAllocation'
        '400':
          description: This response returns if the check was improperly submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Retrieve Currency Allocation Details By clientTransactionId
      tags:
      - Currency Onboarding
  /apex-crypto/api/v2/allocation/currency/batch/close:
    post:
      description: Request to close off currency allocations of a particular batch
      operationId: allocationCurrencyBatchClose
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchCurrencyAllocationCloseRequest'
        required: true
      responses:
        '200':
          description: This response returns the details of the closed batch
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchCurrencyAllocation'
        '400':
          description: This response returns if the check was improperly submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Request To Close Currency Allocation Batch
      tags:
      - Currency Onboarding
  /apex-crypto/api/v2/allocation/currency/batch/{batchTransactionId}:
    get:
      description: Retrieve allocation details pertaining to a particular series of currency allocations by their batchTransactionId
      operationId: allocationCurrencyBatchGet
      parameters:
      - description: Client-specified unique identifier for a set of currency allocations belonging to the same batch request
        in: path
        name: batchTransactionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: This response returns the details of the currency allocation batch
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchCurrencyAllocation'
        '400':
          description: This response returns if the check was improperly submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Retrieve Currency Allocation Details By batchTransactionId
      tags:
      - Currency Onboarding
  /apex-crypto/api/v2/allocation/currency/batch/open:
    post:
      description: Open a new batch of currency allocations for a particular currency where all transactions will be quantity
        based
      operationId: allocationCurrencyBatchOpen
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchCurrencyAllocationOpenRequest'
        required: true
      responses:
        '200':
          description: Successfully opened allocations batch
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchCurrencyAllocation'
        '400':
          description: This response returns if the check was improperly submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Request For New Currency Allocation Batch
      tags:
      - Currency Onboarding
  /apex-crypto/api/v2/allocation/fiat/batch/allocate:
    post:
      description: Fiat allocation request for a single customer account
      operationId: allocationFiatBatchAllocateCreate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/FiatAllocationRequest'
        required: true
      responses:
        '200':
          description: Successful submission of fiat allocation request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FiatAllocation'
        '400':
          description: This response returns if the check was improperly submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Request For Fiat Allocation
      tags:
      - Fiat Onboarding
  /apex-crypto/api/v2/allocation/fiat/batch/allocate/{clientTransactionId}:
    get:
      description: Retrieve details pertaining to a particular fiat allocation by its clientTransactionId
      operationId: allocationFiatBatchAllocateGet
      parameters:
      - description: Client-specified unique identifer for the fiat allocation
        in: path
        name: clientTransactionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Returns details of the allocation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FiatAllocation'
        '400':
          description: This response returns if the check was improperly submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Retrieve Fiat Allocation Details By clientTransactionId
      tags:
      - Fiat Onboarding
  /apex-crypto/api/v2/allocation/fiat/batch/close:
    post:
      description: Request to close off fiat allocations of a particular batch
      operationId: allocationFiatBatchClose
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchFiatAllocationCloseRequest'
        required: true
      responses:
        '200':
          description: This response returns the details of the closed batch
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchFiatAllocation'
        '400':
          description: This response returns if the check was improperly submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Request To Close Fiat Allocation Batch
      tags:
      - Fiat Onboarding
  /apex-crypto/api/v2/allocation/fiat/batch/{batchTransactionId}:
    get:
      description: Retrieve allocation details pertaining to a particular series of fiat allocations by their batchTransactionId
      operationId: allocationFiatBatchGet
      parameters:
      - description: Client-specified unique identifier for a set of fiat allocations belonging to the same batch request
        in: path
        name: batchTransactionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: This response returns the details of the fiat allocation batch
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchFiatAllocation'
        '400':
          description: This response returns if the check was improperly submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Retrieve Fiat Allocation Details By batchTransactionId
      tags:
      - Fiat Onboarding
  /apex-crypto/api/v2/allocation/fiat/batch/open:
    post:
      description: Open a new batch of fiat allocations for a particular currency where all transactions will be quantity
        based
      operationId: allocationFiatBatchOpen
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchFiatAllocationOpenRequest'
        required: true
      responses:
        '200':
          description: Successfully opened allocations batch
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchFiatAllocation'
        '400':
          description: This response returns if the check was improperly submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Request For New Fiat Allocation Batch
      tags:
      - Fiat Onboarding
  /apex-crypto/api/v2/allocation/gift:
    post:
      description: Request to gift to a single customer account
      operationId: allocationGiftCreate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GiftAllocationRequest'
        required: true
      responses:
        '200':
          description: Returns summary of the gift request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GiftAllocation'
        '400':
          description: This response returns if the check was improperly submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Request For Gift
      tags:
      - Gift
  /apex-crypto/api/v2/allocation/gift/{clientTransactionId}:
    get:
      description: Retrieve details pertaining to a particular gift by its clientTransactionId
      operationId: allocationGiftGet
      parameters:
      - description: Client-specified unique identifier for the gift
        in: path
        name: clientTransactionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Returns details of the gift
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GiftAllocation'
        '400':
          description: This response returns if the check was improperly submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Retrieve Gift Details By clientTransactionId
      tags:
      - Gift
  /apex-crypto/api/v2/allocation/trade/batch/allocate:
    post:
      description: Allocation request for a single customer account
      operationId: allocationTradeBatchAllocateCreate
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchTradeAllocationRequest'
        required: true
      responses:
        '200':
          description: Successful submission of allocation request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchTradeAllocation'
        '400':
          description: This response returns if the check was improperly submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Request For Allocation
      tags:
      - Block Trade & Allocate
  /apex-crypto/api/v2/allocation/trade/batch/allocate/{clientTransactionId}:
    get:
      description: Retrieve details pertaining to a particular allocation by its clientTransactionId
      operationId: allocationTradeBatchAllocateGet
      parameters:
      - description: Client-specified unique identifer for the allocation
        in: path
        name: clientTransactionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: Returns details of the allocation
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchTradeAllocation'
        '400':
          description: This response returns if the check was improperly submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Retrieve Allocation Details By clientTransactionId
      tags:
      - Block Trade & Allocate
  /apex-crypto/api/v2/allocation/trade/batch/close:
    post:
      description: Request to close off allocations of a particular batch
      operationId: allocationTradeBatchClose
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchAllocationCloseRequest'
        required: true
      responses:
        '200':
          description: This response returns the details of the closed batch
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchAllocation'
        '400':
          description: This response returns if the check was improperly submitted.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Request To Close Allocation Batch
      tags:
      - Block Trade & Allocate
  /apex-crypto/api/v2/allocation/trade/batch/{batchTransactionId}:
    get:
      description: Retrieve allocation details pertaining to a particular series of allocations by its batchTransactionId
      operationId: allocationTradeBatchGet
      parameters:
      - description: Client-specified unique identifier for a set of allocations belonging to the same batch request
        in: path
        name: batchTransactionId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: This response returns the details of the allocation batch
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchAllocation'
        '400':
          description: This response returns if the check was improperly submitted
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Retrieve Allocation Details By batchTransactionId
      tags:
      - Block Trade & Allocate
  /apex-crypto/api/v2/orders/{clientOrderId}/cancel:
    post:
      description: Use this endpoint to submit a request to cancel an order. Requests to cancel orders are subject to the
        status of the order and if the order has not already processed.
      operationId: cancelOrder
      parameters:
      - description: The `clientOrderId` of order to cancel (submitted when the order was originally created)
        in: path
        name: clientOrderId
        required: true
        schema:
          type: string
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelRequest'
        description: Additional information regarding the order to cancel
        required: true
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelResponse'
        '400':
          description: This response returns if the order could not be found to cancel it.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: This response returns if the system could not complete this request, because the system could not find
            the order.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        default:
          description: This response returns if the system encounteres an unexpected error while handling this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Submit a Request to Cancel an Order
      tags:
      - Orders
  /apex-crypto/api/v2/accounts:
    post:
      description: Use this endpoint to create new investor accounts. The client must provide an account ID that uniquely
        identifies the investor from other investors on the client's platform.
      operationId: createAccount
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AccountRequest'
        description: The account request must provide the required, basic jurisdiction and biographical information about
          the investor to enable the investor to participate in crypto asset transactions. Bakkt validates the provided information.
        required: true
      responses:
        '200':
          description: This response returns the newly created account for this investor.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        '422':
          description: This response returns a validation failure with additional details about specific sections of the request
            that failed validation in both machine-readable and developer-friendly messages tied to fields by name.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationErrors'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Create a New User Account
      tags:
      - Accounts
  /apex-crypto/api/v2/documents/{clientDocumentId}:
    get:
      description: Use this endpoint to download a specific document associated with a given UUID
      operationId: downloadDocument
      parameters:
      - description: Client document ID of the requested document
        in: path
        name: clientDocumentId
        required: true
        schema:
          type: string
          format: uuid
      responses:
        '200':
          description: This response returns the full details of the document.
        '404':
          description: This response returns if the system encounters an unexpected error while handling this request.
          content:
            application/octet-stream:
              schema:
                $ref: '#/components/schemas/Error'
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
            application/pdf:
              schema:
                $ref: '#/components/schemas/Error'
            image/bmp:
              schema:
                $ref: '#/components/schemas/Error'
            image/gif:
              schema:
                $ref: '#/components/schemas/Error'
            image/jpeg:
              schema:
                $ref: '#/components/schemas/Error'
            image/png:
              schema:
                $ref: '#/components/schemas/Error'
            text/plain:
              schema:
                $ref: '#/components/schemas/Error'
      security:
      - api_key: []
      summary: Download Document
      tags:
      - Documents
  /partner/v1/oauth2/token:
    post:
      tags:
      - Partner Connectivity
      summary: Generate Access Token
      description: Generate Access Token which is used to access Bakkt APIs
      operationId: generateAccessToken
      parameters:
      - name: Authorization
        in: header
        required: true
        schema:
          type: string
      - name: grant_type
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: OK
          content:
            application/json;charset=UTF-8:
              schema:
                $ref: '#/components/schemas/PartnerTokenResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PublicApiError'
  /partner/v1/partner/{partnerId}/party/{partnerPartyRef}/wire-instructions:
    get:
      tags:
      - Partner Party Funding
      summary: Generate inbound wire instructions
      description: Generate end user specific inbound wire instructions for fiat deposit. Reponse not to be cached. Bank instructions
        may change over time.
      operationId: generateWireInstructions
      parameters:
      - name: partnerId
        in: path
        required: true
        schema:
          type: string
          format: uuid
      - name: partnerPartyRef
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Request Accepted
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/WireInstructionsResponse'
        '400':
          description: Bad Request
          content:
            '*/*':
              schema:
                $ref: '#/components/schemas/PublicApiError'
  /apex-crypto/api/v2/accounts/{clientAccountId}:
    get:
      description: This endpoint retrieves an investor account provided the client's unique account ID.
      operationId: getAccount
      parameters:
      - description: A unique account ID originally provided by the client system when the account was created
        in: path
        name: clientAccountId
        required: true
        schema:
          type: string
      responses:
        '200':
          description: This response returns the latest account information.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Account'
        default:
          description: This response returns if the system encounters an unexpected error while handling this request.
       

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