Plaid Link API

Plaid's Link is part of the Plaid open-finance platform, exposing 4 documented endpoint(s) under the Plaid REST API at production.plaid.com. It lets developers securely connect to end users' bank and financial accounts across 12,000+ US and international institutions and consume link data or actions. Access uses client_id + secret credentials with a Plaid-Version header, an access_token per linked Item, and a real published OpenAPI definition harvested from Plaid's plaid-openapi repository.

OpenAPI Specification

plaid-link--openapi.yml Raw ↑
openapi: 3.0.0
servers:
  - description: Production
    url: https://production.plaid.com
  - description: Development
    url: https://development.plaid.com
  - description: Sandbox
    url: https://sandbox.plaid.com
info:
  title: 'Plaid link/'
  version: 2020-09-14_1.517.0
  description: Needs description.
  contact:
    name: Plaid Developer Team
    url: https://plaid.com
  termsOfService: https://plaid.com/legal/
tags:
  - name: Plaid
security:
  - clientId: []
    secret: []
    plaidVersion: []
paths:
  /link/profile/eligibility/check:
    x-hidden-from-docs: true
    x-plaid-business-unit-context: BUSINESS_UNIT_PLAID
    post:
      tags:
        - Plaid
      summary: Plaid Check profile eligibility
      externalDocs:
        url: /api/link/#profileeligibilitycheck
      operationId: linkProfileEligibilityCheck
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkProfileEligibilityCheckResponse'
              examples:
                example-1:
                  value:
                    profile_matches: true
                    request_id: XQVgFigpGHXkb0b
      description: >-
        The `/link/profile/eligibility/check` endpoint can be used to check
        whether a user with the

        supplied phone number has a saved profile that satisfies
        customer-defined eligibility

        requirements.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkProfileEligibilityCheckRequest'
        description: ''
  /link/token/create:
    x-plaid-business-unit-context: BUSINESS_UNIT_UNDETERMINED
    post:
      tags:
        - Plaid
      summary: Plaid Create Link Token
      externalDocs:
        url: /api/tokens/#linktokencreate
      operationId: linkTokenCreate
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkTokenCreateResponse'
              examples:
                example-1:
                  value:
                    link_token: link-sandbox-af1a0311-da53-4636-b754-dd15cc058176
                    expiration: '2020-03-27T12:56:34Z'
                    request_id: XQVgFigpGHXkb0b
      description: >-
        The `/link/token/create` endpoint creates a `link_token`, which is
        required as a parameter when initializing Link. Once Link has been
        initialized, it returns a `public_token`, which can then be exchanged
        for an `access_token` via `/item/public_token/exchange` as part of the
        main Link flow.


        A `link_token` generated by `/link/token/create` is also used to
        initialize other Link flows, such as the update mode flow for tokens
        with expired credentials, or the Payment Initiation (Europe) flow.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkTokenCreateRequest'
        description: ''
  /link/token/get:
    x-plaid-business-unit-context: BUSINESS_UNIT_PLAID
    post:
      tags:
        - Plaid
      summary: Plaid Get Link Token
      externalDocs:
        url: /api/tokens/#linktokenget
      operationId: linkTokenGet
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkTokenGetResponse'
              examples:
                example-1:
                  value:
                    created_at: '2020-12-02T21:14:54Z'
                    expiration: '2020-12-03T01:14:54Z'
                    link_token: link-sandbox-33792986-2b9c-4b80-b1f2-518caaac6183
                    metadata:
                      account_filters:
                        depository:
                          account_subtypes:
                            - checking
                            - savings
                      client_name: Insert Client name here
                      country_codes:
                        - US
                      initial_products:
                        - auth
                      language: en
                      redirect_uri:
                      webhook: https://www.example.com/webhook
                    request_id: u0ydFs493XjyTYn
      description: >-
        The `/link/token/get` endpoint gets information about a
        previously-created `link_token` using the

        `/link/token/create` endpoint. It can be useful for debugging purposes.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkTokenGetRequest'
        description: ''
  /link/oauth/correlation_id/exchange:
    x-plaid-business-unit-context: BUSINESS_UNIT_PLAID
    post:
      tags:
        - Plaid
      summary: Plaid Exchange the Link Correlation Id for a Link Token
      externalDocs:
        url: /api/oauth/#linkcorrelationid
      operationId: linkOauthCorrelationIdExchange
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LinkOAuthCorrelationIdExchangeResponse'
              examples:
                example-1:
                  value:
                    link_token: link-sandbox-33792986-2b9c-4b80-b1f2-518caaac6183
                    request_id: u0ydFs493XjyTYn
      description: >-
        Exchange an OAuth `link_correlation_id` for the corresponding
        `link_token`. The `link_correlation_id` is only available for
        'payment_initiation' products and is provided to the client via the
        OAuth `redirect_uri` as a query parameter.

        The `link_correlation_id` is ephemeral and expires in a brief period,
        after which it can no longer be exchanged for the 'link_token'.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LinkOAuthCorrelationIdExchangeRequest'
        description: ''
components:
  schemas:
    LinkProfileEligibilityCheckResponse:
      type: object
      x-hidden-from-docs: true
      additionalProperties: true
      description: >-
        LinkProfileEligibilityCheckResponse defines the response schema for
        `/link/profile/eligibility/check`
      properties:
        profile_matches:
          type: boolean
          description: >-
            Indicates whether Plaid has a profile matching the customer's
            eligibility requirements for this user
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
        - profile_matches
        - request_id
    LinkTokenCreateResponse:
      type: object
      additionalProperties: true
      description: >-
        LinkTokenCreateResponse defines the response schema for
        `/link/token/create`
      properties:
        link_token:
          type: string
          description: >-
            A `link_token`, which can be supplied to Link in order to initialize
            it and receive a `public_token`, which can be exchanged for an
            `access_token`.
        expiration:
          type: string
          format: date-time
          description: >-
            The expiration date for the `link_token`, in [ISO
            8601](https://wikipedia.org/wiki/ISO_8601) format. A `link_token`
            created to generate a `public_token` that will be exchanged for a
            new `access_token` expires after 4 hours. A `link_token` created for
            an existing Item (such as when updating an existing `access_token`
            by launching Link in update mode) expires after 30 minutes.
        request_id:
          $ref: '#/components/schemas/RequestID'
        hosted_link_url:
          type: string
          description: >-
            A URL of a Plaid-hosted Link flow that will use the Link token
            returned by this request. Only present if the client is enabled for
            Hosted Link.
      required:
        - link_token
        - expiration
        - request_id
    LinkTokenGetResponse:
      type: object
      additionalProperties: true
      description: LinkTokenGetResponse defines the response schema for `/link/token/get`
      properties:
        link_token:
          type: string
          description: >-
            A `link_token`, which can be supplied to Link in order to initialize
            it and receive a `public_token`, which can be exchanged for an
            `access_token`.
        created_at:
          type: string
          format: date-time
          nullable: true
          description: >-
            The creation timestamp for the `link_token`, in [ISO
            8601](https://wikipedia.org/wiki/ISO_8601) format.
        expiration:
          type: string
          format: date-time
          nullable: true
          description: >-
            The expiration timestamp for the `link_token`, in [ISO
            8601](https://wikipedia.org/wiki/ISO_8601) format.
        link_sessions:
          type: array
          description: >-
            Information about Link sessions created using this `link_token`.
            This field will only be present if your client is enabled for
            Backend Handoff. Session data will be provided for up to six hours
            after the session has ended.
          items:
            $ref: '#/components/schemas/LinkTokenGetSessionsResponse'
        metadata:
          $ref: '#/components/schemas/LinkTokenGetMetadataResponse'
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
        - link_token
        - created_at
        - expiration
        - metadata
        - request_id
    LinkOAuthCorrelationIdExchangeResponse:
      type: object
      additionalProperties: true
      description: >-
        LinkOAuthCorrelationIdExchangeResponse defines the response schema for
        `/link/oauth/correlation_id/exchange`
      properties:
        link_token:
          type: string
          description: >-
            The `link_token` associated to the given `link_correlation_id`,
            which can be used to re-initialize Link.
        request_id:
          $ref: '#/components/schemas/RequestID'
      required:
        - link_token
        - request_id