/v1 · sandbox always on

The developer-first financial data platform.

One API for banks, cards, investments, payment apps, and crypto — with AI enrichment built in.

pnpm add @feelconnect/node

POST /v1/transactions/sync

76 institutions in the network

  • 31banks
  • 7credit unions
  • 5payment apps
  • 14brokerages
  • 10crypto

how it works

Three calls to production data.

Link handles the messy part — bank auth. After that it is one POST per product, the same shapes in every environment.

01

Embed Link

Drop the modal into your app. Your user picks an institution and authenticates — OAuth, credentials, MFA, wallet address, or file upload.

client — connect.ts
import { FeelConnect } from "@feelconnect/link";
FeelConnect.open({
linkToken,
onSuccess: (publicToken) => {
void exchange(publicToken);
},
});
02

Exchange the token

Trade the short-lived public token for a permanent access token on your server. That token is the item — one connection, all its products.

server — exchange.ts
import { FeelConnect } from "@feelconnect/node";
const fc = new FeelConnect({
apiKey: process.env.FC_SECRET_KEY!,
});
const { access_token, item_id } =
await fc.link.exchangeToken({ public_token });
03

Pull the data

Sync transactions with a cursor, or call any other product on the item. Webhooks tell you when there is something new.

server — sync.ts
const { added, modified, removed, next_cursor } =
await fc.transactions.sync({
access_token,
cursor,
});
// next run: pass next_cursor back in

ai enrichment

Nine AI products, sold by the call.

Every endpoint accepts an access_token or a raw payload, so you can enrich data you did not source through us. Deterministic rules run first; the model sharpens the result.

  • POST/v1/ai/categorizeMerchant-aware categories with confidence scores.
  • POST/v1/ai/subscriptionsRecurring charges, price creep, and cadence.
  • POST/v1/ai/cashflowBalance forecast over a configurable horizon.
  • POST/v1/ai/merchantResolve a raw descriptor to a real merchant.
  • POST/v1/ai/health-scoreExplainable 0–100 financial health with subscores.
  • POST/v1/ai/financial-summaryPlain-language summary with highlights.
  • POST/v1/ai/fraud-riskRisk signals with an overall grade.
  • POST/v1/ai/purchase-analysisBuy, wait, or skip — with opportunity cost.
  • POST/v1/ai/weekly-reportA narrative week in review, ready to render.
POST /v1/ai/categorize · 200 OK
{
"categorized": [
{
"id": "txn_8kb2mq4tfxcw",
"category": "Food & Drink",
"category_detailed": "Coffee shops",
"confidence": 0.98
},
{
"id": "txn_2fw9pl6hzrde",
"category": "Transport",
"category_detailed": "Rideshare",
"confidence": 0.94
}
],
"engine": "ai+rules",
"model": "kimi-k3"
}

Powered by Animica AI — model kimi-k3.

When the model is unreachable, responses degrade to the deterministic rules engine and say so: "engine": "rules". Your integration never blocks on inference.

connector mesh

One integration. Every provider.

Each institution carries an ordered connector preference; the registry routes to the best enabled provider at link time. You never write provider-specific code.

  • Open Banking
  • Plaid
  • MX
  • Finicity
  • Akoya
  • GoCardless
  • Stripe FC
  • Coinbase
  • Kraken
  • PayPal
  • Wise
  • CSV / OFX

resolveConnector(institution, env) picks the first enabled provider for each institution. Sandbox routes are always on; manual import and wallet tracking run for real in live mode.

developer experience

Built like the tools you already trust.

Typed SDKs for eleven stacks, webhooks you can verify in four lines, and a sandbox that behaves like a real bank — deterministically.

  • TypeScript@feelconnect/node
  • JavaScript@feelconnect/link
  • Pythonpip install feelconnect
  • Gogo get feelconnect-go
  • Rustcargo add feelconnect
  • Javacom.feelconnect:sdk
  • SwiftFeelConnect (SwiftPM)
  • Kotlincom.feelconnect:sdk-kotlin
  • Dartfeelconnect (pub.dev)
  • PHPfeelconnect/feelconnect
  • C#FeelConnect (NuGet)
  • All SDK docs

Webhooks you can prove

Every delivery is signed with HMAC-SHA256 over a timestamped payload and rejected outside a five-minute window. Failed deliveries retry with backoff — 0s, 1m, 5m, 30m, 2h — and every attempt is recorded in the dashboard.

server — webhook.ts
import { verifyWebhook } from "@feelconnect/node";
const event = verifyWebhook({
rawBody,
signatureHeader: req.headers["fc-signature"],
timestampHeader: req.headers["fc-timestamp"],
secret: process.env.FC_WEBHOOK_SECRET!,
});
if (event.type === "transactions.sync_updates_available") {
await enqueueSync(event.data.item_id);
}

A sandbox that keeps its books

Every sandbox item is seeded deterministically: 24 months of payroll, rent, subscriptions, and travel that add up to the balances you read. New transactions arrive as real time passes, so cursors and webhooks behave exactly as they will in live.

test credentials
  • user_good / pass_goodconnects
  • user_mfa / pass_goodMFA, code 1234
  • user_lockedITEM.ERROR
Run a call in the API explorer

security

A compliance-friendly architecture.

Encryption, key hygiene, and audit trails are defaults, not add-ons. What we store, we can account for; what we do not need, we do not keep.

Encrypted at rest

Provider tokens and webhook secrets sealed with AES-256-GCM.

Hashed keys

Secret keys stored as SHA-256 hashes — shown once, never again.

Signed webhooks

HMAC-SHA256 signatures with a five-minute timestamp window.

Scoped roles

Owner, admin, developer, viewer — enforced on every console action.

Audit trail

Sensitive actions land in an append-only audit log.

case study

We build feels.money on FeelConnect — same API you get.

Our consumer finance app is customer number one. It ships on the public /v1 surface with an ordinary secret key: no private endpoints, no special-cased rate limits. When the platform breaks, we feel it first.

  • @feelconnect/link React embed
  • webhook-driven delta syncs
  • /v1/ai/* under the coach
Visit feels.money

pricing

Metered like infrastructure.

Requests, AI requests, and connected users — the same three meters on every plan. Start free; upgrade when you go live.

Free$0/mo

Prototype in the sandbox

  • 10k requests/mo
  • 100 connected users
  • 10 rps
Startup$99/mo

First production users

  • 500k requests/mo
  • 5k connected users
  • 50 rps
Growth$499/mo

Scale-up volume

  • 5M requests/mo
  • 50k connected users
  • 200 rps
EnterpriseCustom

Custom limits and support

  • Unlimited requests/mo
  • Unlimited connected users
  • 1000 rps
Compare plans in full

get started

Ship your first integration today.

The sandbox is always on: deterministic data, every product, and 10,000 free requests a month. No card required.