Skip to main content
POST
/
link
/
token
/
create
/link/token/create
curl --request POST \
  --url http://localhost:8080/plaid-compatible/link/token/create \
  --header 'Content-Type: application/json' \
  --header 'PLAID-CLIENT-ID: <api-key>' \
  --data '{
  "client_id": "<string>",
  "secret": "<string>",
  "client_name": "<string>",
  "language": "<string>",
  "country_codes": [
    "GB"
  ],
  "user": {
    "client_user_id": "<string>",
    "phone_number": "<string>",
    "phone_number_verified_time": "2023-11-07T05:31:56Z",
    "email_address": "<string>",
    "email_address_verified_time": "2023-11-07T05:31:56Z"
  },
  "products": [
    "transactions"
  ],
  "additional_consented_products": [
    "transactions"
  ],
  "webhook": "<string>",
  "access_token": "<string>",
  "redirect_uri": "<string>"
}'
{
  "link_token": "<string>",
  "expiration": "2023-11-07T05:31:56Z",
  "request_id": "<string>"
}

Authorizations

PLAID-CLIENT-ID
string
header
required

Headers

Plaid-Version
string | null

Body

application/json

LinkTokenCreateRequest defines the request schema for /link/token/create

client_name
string
required

The name of your application, as it should be displayed in Link. Maximum length of 30 characters. If a value longer than 30 characters is provided, Link will display "This Application" instead.

language
string
required

The language that Link should be displayed in. When initializing with Identity Verification, this field is not used; for more details, see Identity Verification supported languages. Supported languages are: - Danish ('da') - Dutch ('nl') - English ('en') - Estonian ('et') - French ('fr') - German ('de') - Italian ('it') - Latvian ('lv') - Lithuanian ('lt') - Norwegian ('no') - Polish ('pl') - Portuguese ('pt') - Romanian ('ro') - Spanish ('es') - Swedish ('se') When using a Link customization, the language configured here must match the setting in the customization, or the customization will not be applied.

country_codes
enum<string>[]
required

Specify an array of Plaid-supported country codes using the ISO-3166-1 alpha-2 country code standard. Institutions from all listed countries will be shown. For a complete mapping of supported products by country, see https://plaid.com/global/. If Link is launched with multiple country codes, only products that you are enabled for in all countries will be used by Link. Note that while all countries are enabled by default in Sandbox and Development, in Production only US and Canada are enabled by default. Access to European institutions requires additional compliance steps. To request access to European institutions in the Production environment, file a product access Support ticket via the Plaid dashboard. If you initialize with a European country code, your users will see the European consent panel during the Link flow. If using a Link customization, make sure the country codes in the customization match those specified in country_codes, or the customization may not be applied. If using the Auth features Instant Match, Same-day Micro-deposits, or Automated Micro-deposits, country_codes must be set to ['US'].

user
object
required

An object specifying information about the end user who will be linking their account.

redirect_uri
string
required

A URI indicating the destination where a user should be forwarded after completing the Link flow; used to support OAuth authentication flows when launching Link in the browser or via a webview. The redirect_uri should not contain any query parameters. When used in Production or Development, must be an https URI. To specify any subdomain, use * as a wildcard character, e.g. https://*.example.com/oauth.html. Note that any redirect URI must also be added to the Allowed redirect URIs list in the developer dashboard. If initializing on Android, android_package_name must be specified instead and redirect_uri should be left blank.

client_id
string | null

Your Plaid API client_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.

secret
string | null

Your Plaid API secret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.

products
enum<string>[] | null

List of Plaid product(s) you wish to use. If launching Link in update mode, should be omitted (unless you are using update mode to add Income or Assets to an Item); required otherwise. balance is not a valid value, the Balance product does not require explicit initialization and will automatically be initialized when any other product is initialized. The products specified here will determine which institutions will be available to your users in Link. Only institutions that support all requested products can be selected; a if a user attempts to select an institution that does not support a listed product, a "Connectivity not supported" error message will appear in Link. To maximize the number of institutions available, initialize Link with the minimal product set required for your use case. Additional products can be added after Link initialization by calling the relevant endpoints. For details and exceptions, see Choosing when to initialize products. Note that, unless you have opted to disable Instant Match support, institutions that support Instant Match will also be shown in Link if auth is specified as a product, even though these institutions do not contain auth in their product array. In Production, you will be billed for each product that you specify when initializing Link. Note that a product cannot be removed from an Item once the Item has been initialized with that product. To stop billing on an Item for subscription-based products, such as Liabilities, Investments, and Transactions, remove the Item via /item/remove.

additional_consented_products
enum<string>[] | null

(Beta) This field has no effect unless you are participating in the Product Scope Transparency beta program. List of additional Plaid product(s) you wish to collect consent for. These products will not be billed until you start using them by calling the relevant endpoints. balance is not a valid value, the Balance product does not require explicit initialization and will automatically have consent collected. Institutions that do not support these products will still be shown in Link

webhook
string | null

The destination URL to which any webhooks should be sent. Note that webhooks for Payment Initiation (e-wallet transactions only), Transfer, Bank Transfer (including Auth micro-deposit notification webhooks) and Identity Verification are configured via the Dashboard instead.

access_token
string | null

The access_token associated with the Item to update or reference, used when updating, modifying, or accessing an existing access_token. Used when launching Link in update mode, when completing the Same-day (manual) Micro-deposit flow, or (optionally) when initializing Link for a returning user as part of the Transfer UI flow.

Response

OK

LinkTokenCreateResponse defines the response schema for /link/token/create

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
string<date-time>
required

The expiration date for the link_token, in 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
string
required

A unique identifier for the request, which can be used for troubleshooting. This identifier, like all Plaid identifiers, is case sensitive.