Create a Plaid Link token

Add MCP server to your AI tool

Allow AI tools and LLMs to interact with the API documentation portal through MCP.

MCP server URL

https://docs.usehearsay.com/mcp

Standard setup for AI tools providing an mcp.json file

mcp.json
{
  "integrations MCP server": {
    "url": "https://docs.usehearsay.com/mcp"
  }
}

Close
POST /extraction/financial-data/link/token/create

Creates a Plaid Link token for the caller's extraction code, used to open Plaid Link on the client. Returns 409 while the organization's Plaid onboarding is not complete.

Headers

  • extraction-code string Required

    Extraction code associated with the case

application/json

Body Required

  • products array[string]

    Plaid products to require. Defaults to [transactions, liabilities].

    Values are assets, auth, beacon, employment, identity, income_verification, identity_verification, investments, liabilities, payment_initiation, standing_orders, signal, statements, transactions, transfer, cra_base_report, cra_income_insights, cra_cashflow_insights, cra_lend_score, cra_partner_insights, cra_network_insights, cra_monitoring, layer, or protect_linked_bank. Default value is ["transactions"].

  • language string

    Language for Plaid Link UI (en, es, fr, etc.)

    Default value is en.

  • countryCodes array[string]

    ISO-3166-1 alpha-2 country codes.

    Default value is ["US"].

  • webhook string

    URL to receive Plaid webhooks

  • redirectUri string

    Redirect URI for OAuth flows

  • linkCustomizationName string
  • accessToken string

    Existing access token — use only for update mode

  • user object
    Hide user attributes Show user attributes object
    • legalName string
    • phoneNumber string
    • emailAddress string
    • dateOfBirth string

      Format: YYYY-MM-DD

  • requiredIfSupportedProducts array[string]

    Products to enable only if supported by the institution. Defaults to [investments, statements]. These will not block Link if the institution does not support them.

    Values are assets, auth, beacon, employment, identity, income_verification, identity_verification, investments, liabilities, payment_initiation, standing_orders, signal, statements, transactions, transfer, cra_base_report, cra_income_insights, cra_cashflow_insights, cra_lend_score, cra_partner_insights, cra_network_insights, cra_monitoring, layer, or protect_linked_bank. Default value is ["investments", "liabilities"].

  • statementsConfig object

    Date range for statements extraction. Plaid maximum is 2 years. Defaults to 2 years ago → today.

    Hide statementsConfig attributes Show statementsConfig attributes object
    • startDate string

      Start date for statements extraction (YYYY-MM-DD). Maximum 2 years back. Defaults to 2 years ago.

    • endDate string

      End date for statements extraction (YYYY-MM-DD). Maximum 2 years range. Defaults to today.

  • optionalProducts array[string]

    Products that improve UX but do not block item creation

    Values are assets, auth, beacon, employment, identity, income_verification, identity_verification, investments, liabilities, payment_initiation, standing_orders, signal, statements, transactions, transfer, cra_base_report, cra_income_insights, cra_cashflow_insights, cra_lend_score, cra_partner_insights, cra_network_insights, cra_monitoring, layer, or protect_linked_bank.

  • additionalConsentedProducts array[string]

    Products to collect consent for without immediate billing

    Values are assets, auth, beacon, employment, identity, income_verification, identity_verification, investments, liabilities, payment_initiation, standing_orders, signal, statements, transactions, transfer, cra_base_report, cra_income_insights, cra_cashflow_insights, cra_lend_score, cra_partner_insights, cra_network_insights, cra_monitoring, layer, or protect_linked_bank.

  • accountFilters object
    Hide accountFilters attributes Show accountFilters attributes object
    • depository object
      Hide depository attribute Show depository attribute object
      • accountSubtypes array[string]
    • credit object
      Hide credit attribute Show credit attribute object
      • accountSubtypes array[string]
    • loan object
      Hide loan attribute Show loan attribute object
      • accountSubtypes array[string]
    • investment object
      Hide investment attribute Show investment attribute object
      • accountSubtypes array[string]

Responses

  • 201 application/json
    Hide response attributes Show response attributes object
    • data object Required
      Hide data attributes Show data attributes object
      • linkToken string Required

        Temporary token to initialize Plaid Link

      • expiration string Required

        Expiration date (ISO 8601)

      • requestId string Required

        ID for troubleshooting with Plaid support

      • hostedLinkUrl string

        Only present when using Hosted Link

      • userId string

        Returned if Plaid created a new user

    • statusCode number Required
    • timestamp string(date-time) Required
POST /extraction/financial-data/link/token/create
curl \
 --request POST 'http://api.example.com/extraction/financial-data/link/token/create' \
 --header "Authorization: Bearer $ACCESS_TOKEN" \
 --header "Content-Type: application/json" \
 --header "extraction-code: string" \
 --data '{
  "products": [
    "transactions"
  ],
  "language": "en",
  "countryCodes": [
    "US"
  ],
  "webhook": "string",
  "redirectUri": "string",
  "linkCustomizationName": "string",
  "accessToken": "string",
  "enableMultiItemLink": false,
  "user": {
    "legalName": "string",
    "phoneNumber": "string",
    "emailAddress": "string",
    "dateOfBirth": "string"
  },
  "requiredIfSupportedProducts": [
    "investments",
    "liabilities"
  ],
  "statementsConfig": {
    "startDate": "string",
    "endDate": "string"
  },
  "optionalProducts": [
    "assets"
  ],
  "additionalConsentedProducts": [
    "assets"
  ],
  "accountFilters": {
    "depository": {
      "accountSubtypes": [
        "string"
      ]
    },
    "credit": {
      "accountSubtypes": [
        "string"
      ]
    },
    "loan": {
      "accountSubtypes": [
        "string"
      ]
    },
    "investment": {
      "accountSubtypes": [
        "string"
      ]
    }
  }
}'
Request examples
# Headers
extraction-code: string

# Payload
{
  "products": [
    "transactions"
  ],
  "language": "en",
  "countryCodes": [
    "US"
  ],
  "webhook": "string",
  "redirectUri": "string",
  "linkCustomizationName": "string",
  "accessToken": "string",
  "enableMultiItemLink": false,
  "user": {
    "legalName": "string",
    "phoneNumber": "string",
    "emailAddress": "string",
    "dateOfBirth": "string"
  },
  "requiredIfSupportedProducts": [
    "investments",
    "liabilities"
  ],
  "statementsConfig": {
    "startDate": "string",
    "endDate": "string"
  },
  "optionalProducts": [
    "assets"
  ],
  "additionalConsentedProducts": [
    "assets"
  ],
  "accountFilters": {
    "depository": {
      "accountSubtypes": [
        "string"
      ]
    },
    "credit": {
      "accountSubtypes": [
        "string"
      ]
    },
    "loan": {
      "accountSubtypes": [
        "string"
      ]
    },
    "investment": {
      "accountSubtypes": [
        "string"
      ]
    }
  }
}
Response examples (201)
{
  "data": {
    "linkToken": "link-sandbox-af1a0311-da53-4636-b754-dd15cc058176",
    "expiration": "2026-01-15T18:30:00Z",
    "requestId": "XQVgFigpGHXkb0b",
    "hostedLinkUrl": "https://secure.plaid.com/hl/example-session",
    "userId": "usr_8c3ZbDBYjaqUXZ"
  },
  "statusCode": 201,
  "timestamp": "2026-01-15T10:15:00.000Z"
}