Link endpoints
API reference for Link tokens and webhooks
This page covers the backend flow for creating and managing Link tokens. For the Link frontend, see Link docs.
| Endpoints | |
|---|---|
/link/token/create | Create a token for initializing a Link session |
/link/token/get | Get the public token and other details about a completed Link session |
| See also | |
|---|---|
/item/public_token/exchange | Exchange a public token for an access token |
/sandbox/public_token/create | Create a public token without the Link flow (Sandbox only) |
/sandbox/item/reset_login | Force an Item into an error state (Sandbox only) |
/session/token/create | Create a session (Layer only) |
| Webhooks | |
|---|---|
ITEM_ADD_RESULT | An Item was added during a Link session |
EVENTS | Events were received from a Hosted Link session |
SESSION_FINISHED | The user has completed a Link session |
Endpoints
/link/token/create
Create Link Token
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. For most Plaid products, the public_token is saved and exchanged for an access_token via /item/public_token/exchange as part of the main Link flow. For more details, see the Link flow overview.
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 Identity Verification flow.
Request fields
client_idclient_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.secretsecret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.client_name1 languageSupported languages are:
- Danish (
'da') - Dutch (
'nl') - English (
'en') - Estonian (
'et') - French (
'fr') - German (
'de') - Hindi (
'hi') - Italian (
'it') - Latvian (
'lv') - Lithuanian (
'lt') - Norwegian (
'no') - Polish (
'pl') - Portuguese (
'pt') - Romanian (
'ro') - Spanish (
'es') - Swedish (
'sv') - Vietnamese (
'vi')
When using a Link customization, the language configured here must match the setting in the customization, or the customization will not be applied.
1 country_codesIf using Identity Verification,
country_codes should be set to the country where your company is based, not the country where your user is located. For all other products, country_codes represents the location of your user's financial institution.If Link is launched with multiple country codes, only products that you are enabled for in all countries will be used by Link. While all countries are enabled by default in Sandbox, in Production only the countries you have requested access for are shown. To request access to additional countries, file a product access Support ticket via the Plaid dashboard.
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, Instant Micro-deposits, Same-day Micro-deposits, Automated Micro-deposits, or Database Auth,
country_codes must be set to ['US'].1 US, GB, ES, NL, FR, IE, CA, DE, IT, PL, DK, NO, SE, EE, LT, LV, PT, BE, AT, FIuseruser_id isn't included.client_user_idclient_user_id. It is currently used as a means of searching logs for the given user in the Plaid Dashboard.1 legal_namenamegiven_namefamily_namephone_numberemail_addressdate_of_birthdate addressstreetstreet2cityregioncountry field.postal_codecountryid_numbervaluetypear_dni, au_drivers_license, au_passport, br_cpf, ca_sin, cl_run, cn_resident_card, co_nit, dk_cpr, eg_national_id, es_dni, es_nie, hk_hkid, in_pan, it_cf, jo_civil_id, jp_my_number, ke_huduma_namba, kw_civil_id, mx_curp, mx_rfc, my_nric, ng_nin, nz_drivers_license, om_civil_id, ph_psn, pl_pesel, ro_cnp, sa_national_id, se_pin, sg_nric, tr_tc_kimlik, us_ssn, us_ssn_last_4, za_smart_idproductsproduct is required otherwise.To maximize the number of institutions and accounts available, initialize Link with the minimal product set required for your use case, as the products specified will limit which institutions and account types will be available to your users in Link. Only institutions that support all requested products can be selected; 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. For each specified product, the Item connected by the user must contain at least one compatible account. For details on compatible product / account type combinations, see the account type/product support matrix.
To add products without limiting the institution list or account types, use the
optional_products or required_if_supported_products fields. Products can also be added to an Item by calling the product endpoint after obtaining an access token; this may require the product to be listed in the additional_consented_products array. For details, see Choosing when to initialize products.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.If launching Link with CRA products,
cra_base_reports is required and must be included in the products array.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.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, protect_linked_bankrequired_if_supported _productsThere should be no overlap between this array and the
products, optional_products, or additional_consented_products arrays. The products array must have at least one product.For more details on using this feature, see Required if Supported Products.
auth, identity, investments, liabilities, transactions, signal, statements, protect_linked_bankoptional_productsThere should be no overlap between this array and the
products, required_if_supported_products, or additional_consented_products arrays. The products array must have at least one product.For more details on using this feature, see Optional Products.
auth, identity, investments, liabilities, signal, statements, transactionsadditional_consented _productsbalance 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.
There should be no overlap between this array and the
products or required_if_supported_products arrays.If you include
signal in additional_consented_products, you will need to call /signal/prepare before calling /signal/evaluate for the first time on an Item in order to get the most accurate results. For more details, see /signal/prepare.auth, balance_plus, identity, investments, investments_auth, liabilities, transactions, signalwebhook/item/webhook/update instead.url access_tokenaccess_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.1 link_customization _namedefault customization will be used. When using a Link customization, the language in the customization must match the language selected via the language parameter, and the countries in the customization should match the country codes selected via country_codes.redirect_uriredirect_uri should not contain any query parameters. When used in Production, 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.android_package_namelink_token to initialize Link on Android. Any package name specified here must also be added to the Allowed Android package names setting on the developer dashboard. When creating a link_token for initializing Link on other platforms, android_package_name must be left blank and redirect_uri should be used instead.institution_datarouting_numberaccount_filtersproducts parameter of /link/token/create, and, if auth is specified in the products array, will also filter out accounts other than checking, savings, and cash management accounts on the Account Select pane. You can further limit the accounts shown in Link by using account_filters to specify the account subtypes to be shown in Link. Only the specified subtypes will be shown. This filtering applies to both the Account Select view (if enabled) and the Institution Select view. Institutions that do not support the selected subtypes will be omitted from Link. To indicate that all subtypes should be shown, use the value "all". If the account_filters filter is used, any account type for which a filter is not specified will be entirely omitted from Link. For a full list of valid types and subtypes, see the Account schema.The filter may or may not impact the list of accounts shown by the institution in the OAuth account selection flow, depending on the specific institution. If the user selects excluded account subtypes in the OAuth flow, these accounts will not be added to the Item. If the user selects only excluded account subtypes, the link attempt will fail and the user will be prompted to try again.
depositorydepository-type accountsaccount_subtypeschecking, savings, hsa, cd, money market, paypal, prepaid, cash management, ebt, allcreditcredit-type accountsaccount_subtypescredit card, paypal, allloanloan-type accountsaccount_subtypesauto, business, commercial, construction, consumer, home equity, loan, mortgage, overdraft, line of credit, student, other, allinvestmentinvestment-type accounts (or brokerage-type accounts for API versions 2018-05-22 and earlier).account_subtypes529, 401a, 401k, 403B, 457b, brokerage, cash isa, crypto exchange, education savings account, fixed annuity, gic, health reimbursement arrangement, hsa, ira, isa, keogh, lif, life insurance, lira, lrif, lrsp, mutual fund, non-custodial wallet, non-taxable brokerage account, other, other annuity, other insurance, pension, prif, profit sharing plan, qshr, rdsp, resp, retirement, rlif, roth, roth 401k, rrif, rrsp, sarsep, sep ira, simple ira, sipp, stock plan, tfsa, trust, ugma, utma, variable annuity, allotherother-type accountsaccount_subtypesother, allinstitution_idpayment_initiationpayment_initiation is included in the products array. Either payment_id or consent_id must be provided.payment_idpayment_id provided by the /payment_initiation/payment/create endpoint.consent_idconsent_id provided by the /payment_initiation/consent/create endpoint.income_verificationincome_verification is included in the products array.asset_report_idasset_report_id of an asset report associated with the user, as provided by /asset_report/create. Providing an asset_report_id is optional and can be used to verify the user through a streamlined flow. If provided, the bank linking flow will be skipped.access_tokenstransactions product was not initialized for these Items during link, it will be initialized after this Link session.This field should only be used with the
payroll income source type.income_source_typesbank and payroll. Currently you can only specify one of these options.bank, payrollbank_incomeincome_verification is included in the products array and bank is specified in income_source_types.days_requested1 731 enable_multiple_itemsenable_multi_item_link setting, which supports all products.false payroll_incomeflow_typespayroll_digital_income, payroll_document_incomeis_update_modefalse item_id_to_updateparsing_configocr, risk_signalsstated_income_sourcesemployercategoryOTHER, SALARY, UNEMPLOYMENT, CASH, GIG_ECONOMY, RENTAL, CHILD_SUPPORT, MILITARY, RETIREMENT, LONG_TERM_DISABILITY, BANK_INTERESTpay_per_cycledouble pay_annualdouble pay_typeGROSS, NET, or UNKNOWN for a specified income sourceUNKNOWN, GROSS, NETpay_frequencyUNKNOWN, WEEKLY, BIWEEKLY, SEMI_MONTHLY, MONTHLYcra_optionsdays_requested731 days_required184 client_report_idpartner_insightsprism_productsinsights, scoresprism_versionsfirstdetect3, nulldetect4, nullcashscore4, 3, nullextend4, nullinsights4, 3, nullbase_reportclient_report_id.client_report_idgse_optionsreport_typesVOA, EMPLOYMENT_REFRESHrequire_identitycashflow_insightsattributes_versionCFI1lend_scorelend_score_versionLS1network_insightsnetwork_insights _versionNI1include_investmentsconsumer_report _permissible_purpose/cra/check_report/create endpoint to generate a report. If the Link session is not configured to use any Plaid Check (CRA) products, this parameter cannot be used and will cause an error if included.ACCOUNT_REVIEW_CREDIT: In connection with a consumer credit transaction for the review or collection of an account pursuant to FCRA Section 604(a)(3)(A).ACCOUNT_REVIEW_NON_CREDIT: For a legitimate business need of the information to review a non-credit account provided primarily for personal, family, or household purposes to determine whether the consumer continues to meet the terms of the account pursuant to FCRA Section 604(a)(3)(F)(2).EXTENSION_OF_CREDIT: In connection with a credit transaction initiated by and involving the consumer pursuant to FCRA Section 604(a)(3)(A).LEGITIMATE_BUSINESS_NEED_TENANT_SCREENING: For a legitimate business need in connection with a business transaction initiated by the consumer primarily for personal, family, or household purposes in connection with a property rental assessment pursuant to FCRA Section 604(a)(3)(F)(i).LEGITIMATE_BUSINESS_NEED_OTHER: For a legitimate business need in connection with a business transaction made primarily for personal, family, or household initiated by the consumer pursuant to FCRA Section 604(a)(3)(F)(i).WRITTEN_INSTRUCTION_PREQUALIFICATION: In accordance with the written instructions of the consumer pursuant to FCRA Section 604(a)(2), to evaluate an application’s profile to make an offer to the consumer.WRITTEN_INSTRUCTION_OTHER: In accordance with the written instructions of the consumer pursuant to FCRA Section 604(a)(2), such as when an individual agrees to act as a guarantor or assumes personal liability for a consumer, business, or commercial loan.ACCOUNT_REVIEW_CREDIT, ACCOUNT_REVIEW_NON_CREDIT, EXTENSION_OF_CREDIT, LEGITIMATE_BUSINESS_NEED_TENANT_SCREENING, LEGITIMATE_BUSINESS_NEED_OTHER, WRITTEN_INSTRUCTION_PREQUALIFICATION, WRITTEN_INSTRUCTION_OTHERauthauth_type_select _enabledfalse.automated _microdeposits_enabledfalse.instant_match_enabledfalse.same_day _microdeposits_enabledfalse.instant_microdeposits _enabledfalse; default behavior for Plaid teams created before that date is true.reroute_to_credentialsOPTIONAL.OFF, OPTIONAL, FORCEDdatabase_match_enableddatabase_insights _enabledflow_typeauth_type_select_enabled.FLEXIBLE_AUTHsms_microdeposits _verification_enabledtrue.transferintent_idid returned by the /transfer/intent/create endpoint.authorization_idid returned by the /transfer/authorization/create endpoint. Used to indicate Link session to complete required user action in order to make a decision for the authorization. If set, access_token can be omitted.updateaccount_selection _enabledtrue, enables update mode with Account Select for institutions in the US and Canada that do not use OAuth, or that use OAuth but do not have their own account selection flow. For institutions in the US that have an OAuth account selection flow (i.e. most OAuth-enabled institutions), update mode with Account Select will always be enabled, regardless of the value of this field.false usertrue, a user_token must also be provided, and Link will open in update mode for the given user.false item_idsitem_ids associated with the user to be updated in update mode. If empty or null, this field will default to initializing update mode for the most recent unhealthy Item associated with the user. A user_token must also be provided to use this field.identity_verificationtemplate_idgave_consentIf
gave_consent is set to true, the accept_tos step will be marked as skipped and the end user's session will start at the next step requirement.false statementsstart_dateuser_token/user/create. Any Item created during the Link session will be associated with the user.investmentsallow_unverified _crypto_walletstrue, allow self-custody crypto wallets to be added without requiring signature verification. Defaults to false.allow_manual_entrytrue, allow users to manually enter Investments account and holdings information. Defaults to false.investments_authmanual_entry_enabledtrue, show institutions that use the manual entry fallback flow.false masked_number_match _enabledtrue, show institutions that use the masked number match fallback flow.false stated_account_number _enabledtrue, show institutions that use the stated account number fallback flow.false hosted_linkdelivery_methoduser.phone_number.
'email' will deliver via email. Must pass user.email_address. In the Sandbox environment, this field will be ignored; use the Production environment to test Link Delivery instead.sms, emailcompletion_redirect _uriurl_lifetime_secondsis_mobile_appAsWebAuthenticationSession or Chrome custom tab.false transactionsdays_requestedCustomers using Recurring Transactions should request at least 180 days of history for optimal results.
1 730 90 identityis_document_uploadaccount_idsaccount_ids. Currently can only contain one account_id. Must be populated if using Document Upload.parsing_configsocr and risk_signals. If parsing configurations are omitted, defaults to ocrocr, risk_signalsenable_multi_item_linktrue, enable linking multiple items in the same Link session. Defaults to false.user_id/user/create response, when the endpoint is invoked with the with_upgraded_user request field set to true. Required if the user object isn't included. If this field is included, then the remaining user object fields are ignored.const request: LinkTokenCreateRequest = {
loading_sample: true
};
try {
const response = await plaidClient.linkTokenCreate(request);
const linkToken = response.data.link_token;
} catch (error) {
// handle error
}Response fields
link_tokenlink_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.expirationlink_token, in ISO 8601 format. By default, a link_token created to generate a public_token that will be exchanged for a new access_token expires after 4 hours, and 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. If using Hosted Link, the link_token will expire at the same time as the Hosted Link URL, and you can customize the duration using the hosted_link.url_lifetime_seconds option in the request. If using Link Delivery (beta), the link_token will expire by default after 24 hours if sent via SMS and after 7 days if sent via email. If using Identity Verification, Link token expiration will not be enforced; an Identity Verification Link session can be created with an expired Link token.date-time request_idhosted_link_urlhosted_link object in the request.user_iduser_id generated by Plaid for the client-provided client_user_id. This field is currently in beta.{
"link_token": "link-sandbox-af1a0311-da53-4636-b754-dd15cc058176",
"expiration": "2020-03-27T12:56:34Z",
"request_id": "XQVgFigpGHXkb0b"
}/link/token/get
Get Link Token
The /link/token/get endpoint gets information about a Link session, including all callbacks fired during the session along with their metadata, including the public token. This endpoint is used with Link flows that don't provide a public token via frontend callbacks, such as the Hosted Link flow and the Multi-Item Link flow. It also can be useful for debugging purposes.
By default, this endpoint will only return complete event data for Hosted Link sessions. To use /link/token/get to retrieve event data for non-Hosted-Link sessions, contact your account manager to request that your account be enabled for Link events. If you do not have an account manager, you can submit this request via a support ticket. Enablement for Link events will also cause you to receive additional webhooks related to Link events, such as the SESSION_FINISHED and EVENTS webhook.
Request fields
client_idclient_id. The client_id is required and may be provided either in the PLAID-CLIENT-ID header or as part of a request body.secretsecret. The secret is required and may be provided either in the PLAID-SECRET header or as part of a request body.link_tokenlink_token from a previous invocation of /link/token/createconst request: LinkTokenGetRequest = {
link_token: linkToken,
};
try {
const response = await plaidClient.linkTokenGet(request);
} catch (error) {
// handle error
}
Response fields
link_tokenlink_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_atexpirationlink_sessionslink_token. Session data will be provided for up to six hours after the session has ended.link_session_idstarted_atfinished_atdate-time on_successresults.item_add_results which can support multiple public tokens in a single Link session, for flows such as multi-Item Link. If you are receiving on_success, contact your Account Manager to migrate to results.item_add_results instead.public_tokenmetadatainstitutionnull.name'Wells Fargo'institution_idaccountsaccounts will only include selected accounts.idaccount_idnamemasktypesubtypeverification_statuspending_automatic_verification: The Item is pending automatic verification.pending_manual_verification: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the code.automatically_verified: The Item has successfully been automatically verified.manually_verified: The Item has successfully been manually verified.verification_expired: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link.verification_failed: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link.unsent: The Item is pending micro-deposit verification, but Plaid has not yet sent the micro-deposit.database_insights_pending: The Database Auth result is pending and will be available upon Auth request.database_insights_fail: The Item's numbers have been verified using Plaid's data sources and have signal for being invalid and/or have no signal for being valid. Typically this indicates that the routing number is invalid, the account number does not match the account number format associated with the routing number, or the account has been reported as closed or frozen. Only returned for Auth Items created via Database Auth.database_insights_pass: The Item's numbers have been verified using Plaid's data sources: the routing and account number match a routing and account number of an account recognized on the Plaid network, and the account is not known by Plaid to be frozen or closed. Only returned for Auth Items created via Database Auth.database_insights_pass_with_caution: The Item's numbers have been verified using Plaid's data sources and have some signal for being valid: the routing and account number were not recognized on the Plaid network, but the routing number is valid and the account number is a potential valid account number for that routing number. Only returned for Auth Items created via Database Auth.database_matched: (deprecated) The Item has successfully been verified using Plaid's data sources. Only returned for Auth Items created via Database Match.null or empty string: Neither micro-deposit-based verification nor database verification are being used for the Item.class_typebusiness or personal account. This field is deprecated as Plaid no longer collects this information during the micro-deposit flow. To see whether an account is business or personal, use the holder_category field instead.link_session_idtransfer_statusCOMPLETE– The transfer was completed.INCOMPLETE– The transfer could not be completed. For help, see Troubleshooting transfers.
COMPLETE, INCOMPLETE, nullon_exiterrorerror_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead.error_typeINVALID_REQUEST, INVALID_RESULT, INVALID_INPUT, INSTITUTION_ERROR, RATE_LIMIT_EXCEEDED, API_ERROR, ITEM_ERROR, ASSET_REPORT_ERROR, RECAPTCHA_ERROR, OAUTH_ERROR, PAYMENT_ERROR, BANK_TRANSFER_ERROR, INCOME_VERIFICATION_ERROR, MICRODEPOSITS_ERROR, SANDBOX_ERROR, PARTNER_ERROR, SIGNAL_ERROR, TRANSACTIONS_ERROR, TRANSACTION_ERROR, TRANSFER_ERROR, CHECK_REPORT_ERROR, CONSUMER_REPORT_ERROR, USER_ERRORerror_codeerror_code_reasonnull will be returned otherwise. Safe for programmatic use.Possible values:
OAUTH_INVALID_TOKEN: The user’s OAuth connection to this institution has been invalidated.OAUTH_CONSENT_EXPIRED: The user's access consent for this OAuth connection to this institution has expired.OAUTH_USER_REVOKED: The user’s OAuth connection to this institution is invalid because the user revoked their connection.error_messagedisplay_messagenull if the error is not related to user action.This may change over time and is not safe for programmatic use.
request_idcausescauses will return an array of errors containing a breakdown of these errors on the individual Item level, if any can be identified.causes will be provided for the error_type ASSET_REPORT_ERROR or CHECK_REPORT_ERROR. causes will also not be populated inside an error nested within a warning object.statusdocumentation_urlsuggested_actionmetadatainstitutionnull.nameWells Fargoinstitution_idstatusrequires_questionsrequires_selectionsrequires_codechoose_devicerequires_credentialsrequires_account _selectionrequires_oauthinstitution_not_foundinstitution_not _supportedlink_session_idrequest_idexiton_exit field, contact your Account Manager to update your integration.errorerror_code and categorized by error_type. Use these in preference to HTTP status codes to identify and handle specific errors. HTTP status codes are set and provide the broadest categorization of errors: 4xx codes are for developer- or user-related errors, and 5xx codes are for Plaid-related errors, and the status will be 2xx in non-error cases. An Item with a non-null error object will only be part of an API response when calling /item/get to view Item status. Otherwise, error fields will be null if no error has occurred; if an error has occurred, an error code will be returned instead.error_typeINVALID_REQUEST, INVALID_RESULT, INVALID_INPUT, INSTITUTION_ERROR, RATE_LIMIT_EXCEEDED, API_ERROR, ITEM_ERROR, ASSET_REPORT_ERROR, RECAPTCHA_ERROR, OAUTH_ERROR, PAYMENT_ERROR, BANK_TRANSFER_ERROR, INCOME_VERIFICATION_ERROR, MICRODEPOSITS_ERROR, SANDBOX_ERROR, PARTNER_ERROR, SIGNAL_ERROR, TRANSACTIONS_ERROR, TRANSACTION_ERROR, TRANSFER_ERROR, CHECK_REPORT_ERROR, CONSUMER_REPORT_ERROR, USER_ERRORerror_codeerror_code_reasonnull will be returned otherwise. Safe for programmatic use.Possible values:
OAUTH_INVALID_TOKEN: The user’s OAuth connection to this institution has been invalidated.OAUTH_CONSENT_EXPIRED: The user's access consent for this OAuth connection to this institution has expired.OAUTH_USER_REVOKED: The user’s OAuth connection to this institution is invalid because the user revoked their connection.error_messagedisplay_messagenull if the error is not related to user action.This may change over time and is not safe for programmatic use.
request_idcausescauses will return an array of errors containing a breakdown of these errors on the individual Item level, if any can be identified.causes will be provided for the error_type ASSET_REPORT_ERROR or CHECK_REPORT_ERROR. causes will also not be populated inside an error nested within a warning object.statusdocumentation_urlsuggested_actionmetadatainstitutionnull.nameWells Fargoinstitution_idstatusrequires_questionsrequires_selectionsrequires_codechoose_devicerequires_credentialsrequires_account _selectionrequires_oauthinstitution_not_foundinstitution_not _supportedlink_session_idrequest_ideventsevent_nameevent_idevent_metadataerror_codeERROR, EXIT.error_messageERROR, EXIT.error_typeERROR, EXIT.exit_statusEXIT.institution_idinstitution_nameinstitution_search _querySEARCH_INSTITUTION.request_idmfa_typeSUBMIT_MFA and TRANSITION_VIEW when view_name is MFA.view_nameTRANSITION_VIEW.selectionphoneotp or password; if selection is used to describe the selected Auth Type Select flow, then possible values are flow_type_manual or flow_type_instant. Emitted by: MATCHED_SELECT_VERIFY_METHOD and SELECT_AUTH_TYPE.brand_namematch_reasonreturning_user or routing_number if emitted by MATCHED_SELECT_INSTITUTION. Otherwise, this will be SAVED_INSTITUTION or AUTO_SELECT_SAVED_INSTITUTION if emitted by SELECT_INSTITUTION.routing_numberSUBMIT_ROUTING_NUMBER.account_number_maskaccount_number_mask is empty. Emitted by SUBMIT_ACCOUNT_NUMBER.resultsitem_add_resultson_success field, contact your Account Manager to update your integration.public_tokenaccountsaccounts will only include selected accounts.idaccount_idnamemasktypesubtypeverification_statuspending_automatic_verification: The Item is pending automatic verification.pending_manual_verification: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the code.automatically_verified: The Item has successfully been automatically verified.manually_verified: The Item has successfully been manually verified.verification_expired: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link.verification_failed: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link.unsent: The Item is pending micro-deposit verification, but Plaid has not yet sent the micro-deposit.database_insights_pending: The Database Auth result is pending and will be available upon Auth request.database_insights_fail: The Item's numbers have been verified using Plaid's data sources and have signal for being invalid and/or have no signal for being valid. Typically this indicates that the routing number is invalid, the account number does not match the account number format associated with the routing number, or the account has been reported as closed or frozen. Only returned for Auth Items created via Database Auth.database_insights_pass: The Item's numbers have been verified using Plaid's data sources: the routing and account number match a routing and account number of an account recognized on the Plaid network, and the account is not known by Plaid to be frozen or closed. Only returned for Auth Items created via Database Auth.database_insights_pass_with_caution: The Item's numbers have been verified using Plaid's data sources and have some signal for being valid: the routing and account number were not recognized on the Plaid network, but the routing number is valid and the account number is a potential valid account number for that routing number. Only returned for Auth Items created via Database Auth.database_matched: (deprecated) The Item has successfully been verified using Plaid's data sources. Only returned for Auth Items created via Database Match.null or empty string: Neither micro-deposit-based verification nor database verification are being used for the Item.class_typebusiness or personal account. This field is deprecated as Plaid no longer collects this information during the micro-deposit flow. To see whether an account is business or personal, use the holder_category field instead.institutionnull.name'Wells Fargo'institution_idcra_item_add_resultsitem_iditem_id is always unique; linking the same account at the same institution twice will result in two Items with different item_id values. The item_id is case-sensitive.accountsaccounts will only include selected accounts.idaccount_idnamemasktypesubtypeverification_statuspending_automatic_verification: The Item is pending automatic verification.pending_manual_verification: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the code.automatically_verified: The Item has successfully been automatically verified.manually_verified: The Item has successfully been manually verified.verification_expired: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link.verification_failed: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link.unsent: The Item is pending micro-deposit verification, but Plaid has not yet sent the micro-deposit.database_insights_pending: The Database Auth result is pending and will be available upon Auth request.database_insights_fail: The Item's numbers have been verified using Plaid's data sources and have signal for being invalid and/or have no signal for being valid. Typically this indicates that the routing number is invalid, the account number does not match the account number format associated with the routing number, or the account has been reported as closed or frozen. Only returned for Auth Items created via Database Auth.database_insights_pass: The Item's numbers have been verified using Plaid's data sources: the routing and account number match a routing and account number of an account recognized on the Plaid network, and the account is not known by Plaid to be frozen or closed. Only returned for Auth Items created via Database Auth.database_insights_pass_with_caution: The Item's numbers have been verified using Plaid's data sources and have some signal for being valid: the routing and account number were not recognized on the Plaid network, but the routing number is valid and the account number is a potential valid account number for that routing number. Only returned for Auth Items created via Database Auth.database_matched: (deprecated) The Item has successfully been verified using Plaid's data sources. Only returned for Auth Items created via Database Match.null or empty string: Neither micro-deposit-based verification nor database verification are being used for the Item.class_typebusiness or personal account. This field is deprecated as Plaid no longer collects this information during the micro-deposit flow. To see whether an account is business or personal, use the holder_category field instead.institutionnull.name'Wells Fargo'institution_idcra_update_resultsitem_iditem_id is always unique; linking the same account at the same institution twice will result in two Items with different item_id values. The item_id is case-sensitive.accountsaccounts will only include selected accounts.idaccount_idnamemasktypesubtypeverification_statuspending_automatic_verification: The Item is pending automatic verification.pending_manual_verification: The Item is pending manual micro-deposit verification. Items remain in this state until the user successfully verifies the code.automatically_verified: The Item has successfully been automatically verified.manually_verified: The Item has successfully been manually verified.verification_expired: Plaid was unable to automatically verify the deposit within 7 calendar days and will no longer attempt to validate the Item. Users may retry by submitting their information again through Link.verification_failed: The Item failed manual micro-deposit verification because the user exhausted all 3 verification attempts. Users may retry by submitting their information again through Link.unsent: The Item is pending micro-deposit verification, but Plaid has not yet sent the micro-deposit.database_insights_pending: The Database Auth result is pending and will be available upon Auth request.database_insights_fail: The Item's numbers have been verified using Plaid's data sources and have signal for being invalid and/or have no signal for being valid. Typically this indicates that the routing number is invalid, the account number does not match the account number format associated with the routing number, or the account has been reported as closed or frozen. Only returned for Auth Items created via Database Auth.database_insights_pass: The Item's numbers have been verified using Plaid's data sources: the routing and account number match a routing and account number of an account recognized on the Plaid network, and the account is not known by Plaid to be frozen or closed. Only returned for Auth Items created via Database Auth.database_insights_pass_with_caution: The Item's numbers have been verified using Plaid's data sources and have some signal for being valid: the routing and account number were not recognized on the Plaid network, but the routing number is valid and the account number is a potential valid account number for that routing number. Only returned for Auth Items created via Database Auth.database_matched: (deprecated) The Item has successfully been verified using Plaid's data sources. Only returned for Auth Items created via Database Match.null or empty string: Neither micro-deposit-based verification nor database verification are being used for the Item.class_typebusiness or personal account. This field is deprecated as Plaid no longer collects this information during the micro-deposit flow. To see whether an account is business or personal, use the holder_category field instead.institutionnull.name'Wells Fargo'institution_idbank_income_resultsstatusAPPROVED: User has approved and verified their incomeNO_DEPOSITS_FOUND: We attempted, but were unable to find any income in the connected account.USER_REPORTED_NO_INCOME: The user explicitly indicated that they don't receive income in the connected account.STARTED: The user began the bank income portion of the link flow.INTERNAL_ERROR: The user encountered an internal error.APPROVED, NO_DEPOSITS_FOUND, USER_REPORTED_NO_INCOMEitem_iditem_id is always unique; linking the same account at the same institution twice will result in two Items with different item_id values. Like all Plaid identifiers, the item_id is case-sensitive.institutionnull.name'Wells Fargo'institution_idpayroll_income_resultsnum_paystubs_retrievednum_w2s_retrievedinstitutionnull.name'Wells Fargo'institution_iddocument_income _resultsnum_paystubs_uploadednum_w2s_uploadednum_bank_statements _uploadednum_1099s_uploadedcra_document_upload _resultsnum_bank_statements _uploadedmetadata/link/token/create call.initial_productsproducts specified in the /link/token/create call.assets, auth, employment, identity, income_verification, identity_verification, investments, liabilities, payment_initiation, standing_orders, transactions, transferwebhookwebhook specified in the /link/token/create call.url country_codescountry_codes specified in the /link/token/create call.US, GB, ES, NL, FR, IE, CA, DE, IT, PL, DK, NO, SE, EE, LT, LV, PT, BE, AT, FIlanguagelanguage specified in the /link/token/create call.institution_datarouting_numberaccount_filtersaccount_filters specified in the original call to /link/token/create.depositorydepository-type accountsaccount_subtypeschecking, savings, hsa, cd, money market, paypal, prepaid, cash management, ebt, allcreditcredit-type accountsaccount_subtypescredit card, paypal, allloanloan-type accountsaccount_subtypesauto, business, commercial, construction, consumer, home equity, loan, mortgage, overdraft, line of credit, student, other, allinvestmentinvestment-type accounts (or brokerage-type accounts for API versions 2018-05-22 and earlier).account_subtypes529, 401a, 401k, 403B, 457b, brokerage, cash isa, crypto exchange, education savings account, fixed annuity, gic, health reimbursement arrangement, hsa, ira, isa, keogh, lif, life insurance, lira, lrif, lrsp, mutual fund, non-custodial wallet, non-taxable brokerage account, other, other annuity, other insurance, pension, prif, profit sharing plan, qshr, rdsp, resp, retirement, rlif, roth, roth 401k, rrif, rrsp, sarsep, sep ira, simple ira, sipp, stock plan, tfsa, trust, ugma, utma, variable annuity, allredirect_uriredirect_uri specified in the /link/token/create call.client_nameclient_name specified in the /link/token/create call.request_id{
"created_at": "2024-07-29T20:22:21Z",
"expiration": "2024-07-29T20:52:22Z",
"link_sessions": [
{
"events": [
{
"event_id": "8b2b5d28-79ec-468b-bbce-f8bd34be635a",
"event_metadata": {
"institution_id": "ins_20",
"institution_name": "Citizens Bank",
"request_id": "Nnclj9HntPMu5dm"
},
"event_name": "HANDOFF",
"timestamp": "2024-07-29T20:23:59Z"
},
{
"event_id": "12a888e0-da26-4c38-8ded-2992bc78c246",
"event_metadata": {
"request_id": "Nnclj9HntPMu5dm"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-07-29T20:23:59Z"
},
{
"event_id": "6557bdf1-a20a-43b0-8fed-c8b671e2f478",
"event_metadata": {
"institution_id": "ins_20",
"institution_name": "Citizens Bank",
"request_id": "sR4EGcU8zniznXi"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-07-29T20:23:56Z"
},
{
"event_id": "c6745f4c-d8fa-4103-8a65-7b995c60809e",
"event_metadata": {
"institution_id": "ins_20",
"institution_name": "Citizens Bank",
"request_id": "4LYDWkxfJ0htDA4"
},
"event_name": "SUBMIT_CREDENTIALS",
"timestamp": "2024-07-29T20:23:55Z"
},
{
"event_id": "2610fa06-e765-4c9e-8948-63048d451dbf",
"event_metadata": {
"institution_id": "ins_20",
"institution_name": "Citizens Bank",
"request_id": "4LYDWkxfJ0htDA4"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-07-29T20:23:23Z"
},
{
"event_id": "54b87deb-60a7-4f50-9326-293840090b72",
"event_metadata": {
"institution_id": "ins_20",
"institution_name": "Citizens Bank",
"request_id": "FTEFiPeL9OstwL4"
},
"event_name": "SELECT_INSTITUTION",
"timestamp": "2024-07-29T20:23:23Z"
},
{
"event_id": "6b285180-0bac-4ccc-bec0-d4ed75c253d2",
"event_metadata": {
"request_id": "FTEFiPeL9OstwL4"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-07-29T20:23:20Z"
},
{
"event_id": "239a6000-da50-4319-99f7-919378b7db53",
"event_metadata": {
"request_id": "WFgwgGivjBbwOb9"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-07-29T20:23:17Z"
},
{
"event_id": "0a523744-5003-4578-8414-c87e06ef8ca9",
"event_metadata": {
"institution_id": "ins_127989",
"institution_name": "Bank of America",
"request_id": "WFgwgGivjBbwOb9"
},
"event_name": "HANDOFF",
"timestamp": "2024-07-29T20:23:17Z"
},
{
"event_id": "ff44d52a-51ef-4987-b7d0-b6497dfa93cd",
"event_metadata": {
"institution_id": "ins_127989",
"institution_name": "Bank of America",
"request_id": "uqA0Vq8zuKlsB2y"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-07-29T20:23:14Z"
},
{
"event_id": "e0d7c1dc-8e7e-4361-893f-d6c2d2f050ab",
"event_metadata": {
"institution_id": "ins_127989",
"institution_name": "Bank of America",
"request_id": "dTGtMHbK21BLrsp"
},
"event_name": "OPEN_OAUTH",
"timestamp": "2024-07-29T20:22:49Z"
},
{
"event_id": "de87a1c0-666e-4d95-88d8-1163f6bf20f1",
"event_metadata": {
"institution_id": "ins_127989",
"institution_name": "Bank of America",
"request_id": "dTGtMHbK21BLrsp"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-07-29T20:22:47Z"
},
{
"event_id": "6edc2c59-96cd-4dee-a86b-140ddfd3076e",
"event_metadata": {
"institution_id": "ins_127989",
"institution_name": "Bank of America",
"request_id": "BxBukZsBEmxZw0I"
},
"event_name": "SELECT_INSTITUTION",
"timestamp": "2024-07-29T20:22:46Z"
},
{
"event_id": "d176ab57-26d2-45ee-a0fe-67daf0cf0cb0",
"event_metadata": {
"request_id": "BxBukZsBEmxZw0I"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-07-29T20:22:43Z"
},
{
"event_id": "b8be9c3d-7ac5-4851-bd92-0638cb63bdeb",
"event_metadata": {
"request_id": "UtqR09RKzJ1gcEx"
},
"event_name": "SKIP_SUBMIT_PHONE",
"timestamp": "2024-07-29T20:22:42Z"
},
{
"event_id": "7144cca7-533b-4dfc-81ed-f78a750ba95f",
"event_metadata": {
"request_id": "UtqR09RKzJ1gcEx"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-07-29T20:22:40Z"
},
{
"event_id": "e6a6dcc0-6bbf-4871-8d59-0c3a5eccff53",
"event_metadata": {
"request_id": "FTiagIVmxfqbevM"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-07-29T20:22:39Z"
}
],
"finished_at": "2024-07-29T20:24:05.330312653Z",
"link_session_id": "43face8b-a5c2-42a4-adec-4a4ec589eb46",
"on_success": {
"metadata": {
"accounts": [
{
"class_type": null,
"id": "DXzZ94ZG9vhaZy8BvyZRSQ4jJwwlkNS3RwoeX",
"mask": "0000",
"name": "Plaid Checking",
"subtype": "checking",
"type": "depository",
"verification_status": null
},
{
"class_type": null,
"id": "VJyR7wRm79TNGEKxpEG9fjpJ1mmM5Bt9ymVkR",
"mask": "1111",
"name": "Plaid Saving",
"subtype": "savings",
"type": "depository",
"verification_status": null
},
{
"class_type": null,
"id": "wZXnexn1eoH6LNWmMNL4hqkPB55ndjHPRNp93",
"mask": "9999",
"name": "Plaid Business Credit Card",
"subtype": "credit card",
"type": "credit",
"verification_status": null
}
],
"institution": {
"institution_id": "ins_127989",
"name": "Bank of America"
},
"link_session_id": "43face8b-a5c2-42a4-adec-4a4ec589eb46",
"transfer_status": null
},
"public_token": "public-sandbox-3b9687f0-3abd-4913-9889-f0ba816d4a3a"
},
"results": {
"item_add_results": [
{
"accounts": [
{
"class_type": null,
"id": "DXzZ94ZG9vhaZy8BvyZRSQ4jJwwlkNS3RwoeX",
"mask": "0000",
"name": "Plaid Checking",
"subtype": "checking",
"type": "depository",
"verification_status": null
},
{
"class_type": null,
"id": "VJyR7wRm79TNGEKxpEG9fjpJ1mmM5Bt9ymVkR",
"mask": "1111",
"name": "Plaid Saving",
"subtype": "savings",
"type": "depository",
"verification_status": null
},
{
"class_type": null,
"id": "wZXnexn1eoH6LNWmMNL4hqkPB55ndjHPRNp93",
"mask": "9999",
"name": "Plaid Business Credit Card",
"subtype": "credit card",
"type": "credit",
"verification_status": null
}
],
"institution": {
"institution_id": "ins_127989",
"name": "Bank of America"
},
"public_token": "public-sandbox-3b9687f0-3abd-4913-9889-f0ba816d4a3a"
},
{
"accounts": [
{
"class_type": null,
"id": "qvqrX8gDvxCdyvvgGkKzSNPzDwaQGjFgyQk5Z",
"mask": "4007",
"name": "Checking",
"subtype": "checking",
"type": "depository",
"verification_status": null
}
],
"institution": {
"institution_id": "ins_20",
"name": "Citizens Bank"
},
"public_token": "public-sandbox-44ba202e-bf6b-45c6-a5ba-d526765626a9"
}
],
"cra_item_add_results": [],
"cra_update_results": [],
"bank_income_results": [],
"payroll_income_results": [],
"document_income_results": null,
"protect_results": null
},
"started_at": "2024-07-29T20:22:36.522196741Z"
}
],
"link_token": "link-sandbox-e7b6956c-1522-4823-85d2-c4ca74251949",
"metadata": {
"client_name": "Wonderwallet",
"country_codes": [
"US"
],
"initial_products": [
"transactions"
],
"language": "en",
"redirect_uri": null,
"webhook": "https://webhook.site/dc9c138f-75de-4db1-883a-a4add4b7eb7e"
},
"request_id": "Pxpgzy0Wjvn99mY"
}Webhooks
ITEM_ADD_RESULT
Fired when a user successfully adds a Plaid Item during a Link session when using Hosted Link or Multi-Item Link sessions. Contains the public token for the Item.
Properties
webhook_typeLINKwebhook_codeITEM_ADD_RESULTlink_session_idlink_tokenpublic_tokenenvironmentsandbox, production{
"webhook_type": "LINK",
"webhook_code": "ITEM_ADD_RESULT",
"link_session_id": "356dbb28-7f98-44d1-8e6d-0cec580f3171",
"link_token": "link-sandbox-af1a0311-da53-4636-b754-dd15cc058176",
"public_token": "public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d",
"environment": "sandbox"
}EVENTS
This webhook contains a summary of the events from a Link session and will be fired after the user finishes going through Link. If the user abandons the Link flow (i.e., closes the hosted link webpage or leaves Link open for too long without taking any action), the webhook will be fired 5-15 minutes after the last user interaction. A single Link session may occasionally generate multiple EVENTS webhooks. If this occurs, the new webhook will contain all previous events for the session, as well as new events that occurred since the previous EVENTS webhook was sent. If this occurs, events can be grouped using the link_session_id field and, if necessary, de-duplicated using the event_id field.
By default, the EVENTS webhook is sent only for sessions where the end user goes through a Hosted Link flow (including Link Recovery flows). If you would like to receive this webhook for sessions not using Hosted Link, contact your Account Manager or Support. This enablement will also cause you to receive the SESSION_FINISHED webhook for non-Hosted-Link sessions and to be able to use /link/token/get to receive events data for non-Hosted Link sessions.
Properties
webhook_typeLINKwebhook_codeEVENTSeventsevent_nameevent_idevent_metadataerror_codeERROR, EXIT.error_messageERROR, EXIT.error_typeERROR, EXIT.exit_statusEXIT.institution_idinstitution_nameinstitution_search _querySEARCH_INSTITUTION.request_idmfa_typeSUBMIT_MFA and TRANSITION_VIEW when view_name is MFA.view_nameTRANSITION_VIEW.selectionphoneotp or password; if selection is used to describe the selected Auth Type Select flow, then possible values are flow_type_manual or flow_type_instant. Emitted by: MATCHED_SELECT_VERIFY_METHOD and SELECT_AUTH_TYPE.brand_namematch_reasonreturning_user or routing_number if emitted by MATCHED_SELECT_INSTITUTION. Otherwise, this will be SAVED_INSTITUTION or AUTO_SELECT_SAVED_INSTITUTION if emitted by SELECT_INSTITUTION.routing_numberSUBMIT_ROUTING_NUMBER.account_number_maskaccount_number_mask is empty. Emitted by SUBMIT_ACCOUNT_NUMBER.link_session_idlink_token{
"environment": "sandbox",
"link_session_id": "1daca4d5-9a0d-4e85-a2e9-1e905ecaa32e",
"link_token": "link-sandbox-79e723b0-0e04-4248-8a33-15ceb6828a45",
"webhook_code": "EVENTS",
"webhook_type": "LINK",
"events": [
{
"event_id": "9469937a-6fac-40be-9322-f86e8c0b94ed",
"event_metadata": {
"request_id": "ClqZyuhovgkaQ3j"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-05-21T00:17:54Z"
},
{
"event_id": "4b2390cf-33a2-4078-b933-62468b9e53a5",
"event_metadata": {
"error_code": "INVALID_CREDENTIALS",
"error_message": "the provided credentials were not correct",
"error_type": "ITEM_ERROR",
"institution_id": "ins_20",
"institution_name": "Citizens Bank",
"request_id": "ttK0NtGKaVAlbCR"
},
"event_name": "ERROR",
"timestamp": "2024-05-21T00:18:09Z"
},
{
"event_id": "45f76afe-f2aa-495c-a326-f37e043a1ccd",
"event_metadata": {
"request_id": "WRJqqeh8Hxife05"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-05-21T00:17:56Z"
},
{
"event_id": "978b772c-f2cc-404f-9449-2113e4671c4f",
"event_metadata": {
"error_code": "INVALID_CREDENTIALS",
"error_message": "the provided credentials were not correct",
"error_type": "ITEM_ERROR",
"exit_status": "requires_credentials",
"institution_id": "ins_20",
"institution_name": "Citizens Bank",
"request_id": "u1HcAeiCKtz3qmm"
},
"event_name": "EXIT",
"timestamp": "2024-05-21T00:18:13Z"
},
{
"event_id": "a873db76-aa4e-4a00-9d60-7ae08aa8e63f",
"event_metadata": {
"institution_id": "ins_20",
"institution_name": "Citizens Bank",
"request_id": "ttK0NtGKaVAlbCR"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-05-21T00:18:09Z"
},
{
"event_id": "ca85566d-5f32-4716-909f-82f3a0b6160b",
"event_metadata": {
"institution_id": "ins_20",
"institution_name": "Citizens Bank",
"request_id": "XRvev3cP9wYUFz5"
},
"event_name": "SUBMIT_CREDENTIALS",
"timestamp": "2024-05-21T00:18:07Z"
},
{
"event_id": "09220752-6b83-407e-baf0-f6228df16ea0",
"event_metadata": {
"institution_id": "ins_20",
"institution_name": "Citizens Bank",
"request_id": "WRJqqeh8Hxife05"
},
"event_name": "SELECT_INSTITUTION",
"timestamp": "2024-05-21T00:18:01Z"
},
{
"event_id": "1c75d2ee-19c1-4d1b-8600-7d06cecbb270",
"event_metadata": {
"institution_id": "ins_20",
"institution_name": "Citizens Bank",
"request_id": "5vc1IyBHfLkIVFx"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-05-21T00:18:12Z"
},
{
"event_id": "1c9c9059-c065-4362-836a-d9afb91a6125",
"event_metadata": {
"request_id": "MlFW5NSWtCs1KLI"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-05-21T00:17:50Z"
},
{
"event_id": "4f381b3f-172b-4bca-9804-c230f8d36a3b",
"event_metadata": {
"institution_id": "ins_20",
"institution_name": "Citizens Bank",
"request_id": "XRvev3cP9wYUFz5"
},
"event_name": "TRANSITION_VIEW",
"timestamp": "2024-05-21T00:18:02Z"
},
{
"event_id": "dd9d4747-d4da-4c11-88d6-b5a0e96f1886",
"event_metadata": {
"request_id": "ClqZyuhovgkaQ3j"
},
"event_name": "SKIP_SUBMIT_PHONE",
"timestamp": "2024-05-21T00:17:55Z"
}
]
}SESSION_FINISHED
Contains the state of a completed Link session, along with the public token(s) if available.
By default, this webhook is sent only for sessions enabled for the Hosted Link flow (including Link Recovery flows), a Multi-Item Link flow, or a Layer flow. If you would like to receive this webhook for other sessions, contact your Account Manager or Support. This enablement will also enable the EVENTS webhook for all Link sessions and the ability to use /link/token/get to retrieve events for non-Hosted-Link sessions.
Properties
webhook_typeLINKwebhook_codeSESSION_FINISHEDstatuslink_session_idlink_tokenpublic_tokenpublic_tokens instead.public_tokensenvironmentsandbox, production{
"webhook_type": "LINK",
"webhook_code": "SESSION_FINISHED",
"status": "SUCCESS",
"link_session_id": "356dbb28-7f98-44d1-8e6d-0cec580f3171",
"link_token": "link-sandbox-af1a0311-da53-4636-b754-dd15cc058176",
"public_tokens": [
"public-sandbox-b0e2c4ee-a763-4df5-bfe9-46a46bce993d"
],
"environment": "sandbox"
}