FeelConnect▍
ProductsDocsPricingChangelog
Sign inGet API keys

Search documentation

Fuzzy search across every docs page and section

API reference/Link tokens

Getting started

  • Overview
  • Quickstart
  • Authentication
  • Environments and sandbox
  • Link
  • Going live

API reference

  • Link tokens
  • Institutions
  • Items
  • Accounts
  • Transactions
  • Identity
  • Income
  • Assets
  • Investments
  • Liabilities
  • Recurring
  • Categories
  • AI products

Platform

  • Webhooks
  • Errors
  • Rate limits and quotas
  • SDKs
  • GraphQL
  • MCP and AI agents
  • Changelog
  1. Docs
  2. API reference
  3. Link tokens
PreviousGoing liveNextInstitutions

On this page

  • Create link token
  • Exchange public token
FeelConnect▍

The developer-first financial data platform.

All systems operational

Products

Universal LinkData APIsAI enrichmentPricing

Developers

DocumentationAPI explorerDashboardGet API keys

Company

HomeChangelogfeels.moneySign in

Legal

PrivacyTermsSecurityData processing
© 2026 FeelConnect. All rights reserved./v1 · FC-Version 2026-07-01

API reference

Link tokens

POST /v1/link/token/create and /v1/link/token/exchange — mint Link sessions and exchange public tokens for access tokens.

All endpoints are POST with a JSON body, authenticated with your secret key (Authentication). Errors use the standard envelope; money is in major units with an iso_currency_code; dates are YYYY-MM-DD strings.

Create link token

POST/v1/link/token/create

Creates a 30-minute link_token that opens one Link session for one end user. Tokens are signed JWTs; nothing about them is persisted client-side.

Request body
user.client_user_idstringrequired
Your stable id for the end user. Items created in this session belong to this user; reuse the same value across sessions.
productsstring[]required
Product scopes the user will consent to: transactions, balances, identity, income, assets, investments, liabilities, recurring, crypto.
client_namestring
Display name shown in the Link consent step. Defaults to your application name.
institution_idstring
Skip institution search and open Link directly on this institution.
update_item_idstring
Open Link in update mode to re-authenticate an existing item. Must belong to the same client_user_id.
webhookstring
URL to receive your application's webhooks. It is registered as an endpoint for the environment your key belongs to, and deliveries are signed with your existing endpoint secret.
curl https://api.feelconnect.dev/v1/link/token/create \
-H "Authorization: Bearer $FEELCONNECT_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"client_name":"My App","user":{"client_user_id":"user-123"},"products":["transactions","balances"]}'
Response
{
"link_token": "lnk_tok_eyJhbGciOiJIUzI1NiJ9.eyJzaWQiOiJsbmtfMmY4...",
"expiration": "2026-07-28T12:30:00.000Z"
}

Exchange public token

POST/v1/link/token/exchange

Exchanges the public_token from Link's onSuccess for a persistent access_token and item_id. A public token can be exchanged exactly once and expires with the session.

An item holds exactly one access_token. After an update-mode session your stored token is still valid, so the exchange is optional there — and if you do call it, the token is rotated: rotated comes back true and the previous token stops working immediately.

Request body
public_tokenstringrequired
The token delivered to your frontend by Link onSuccess.
curl https://api.feelconnect.dev/v1/link/token/exchange \
-H "Authorization: Bearer $FEELCONNECT_SECRET_KEY" \
-H "Content-Type: application/json" \
-d '{"public_token":"public-sandbox-4f1c…"}'
Response
{
"access_token": "fc_at_hK8mQ2xP7cW1nR4tYb8sJd3fV6zL0aGe",
"item_id": "item_7dJ3nWqZ5xC9vK1mTf4g",
"rotated": false
}

Store the access token securely

The access_token is returned once and stored by FeelConnect only as a hash. Persist it encrypted at rest, server-side, keyed by item_id. If you lose it, the user must relink.