FeelConnect▍
ProductsDocsPricingChangelog
Sign inGet API keys

Search documentation

Fuzzy search across every docs page and section

Platform/Errors

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. Platform
  3. Errors
PreviousWebhooksNextRate limits and quotas

On this page

  • Error types
  • Common codes
  • Handling errors
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

Platform

Errors

The error envelope, error types with HTTP status codes, common error codes, and handling patterns.

Every non-2xx response carries one JSON envelope. type is the broad class (matches the HTTP status), code is the specific machine-readable cause, message is human-readable, and request_id ties the failure to our logs.

Error envelope
{
"error": {
"type": "authentication_error",
"code": "invalid_api_key",
"message": "This API key does not exist or was revoked.",
"request_id": "req_2kD8fQx1mZ7cW4nY0bT3"
}
}

Error types

typeStatusMeaning
invalid_request400The body failed validation, or a parameter is malformed.
authentication_error401Missing, malformed, revoked key, or an unknown access token.
permission_error403Authenticated, but the plan or role does not allow this.
not_found404The referenced object does not exist in this app + environment.
rate_limit_error429Per-second rate limit or monthly quota exhausted.
provider_error502An upstream connector failed; usually transient.
api_error500Unexpected FeelConnect failure. Safe to retry with backoff.

Common codes

codetypeWhat happened
missing_api_keyauthentication_errorNo Authorization: Bearer header.
invalid_api_keyauthentication_errorKey malformed, unknown, or revoked.
item_not_foundauthentication_erroraccess_token unknown in this app + environment, or item removed.
live_access_unavailablepermission_errorLive keys require the Startup plan or above.
invalid_jsoninvalid_requestThe body is not valid JSON.
invalid_fieldinvalid_requestA field failed validation; the message names it.
invalid_access_tokeninvalid_requestaccess_token does not look like fc_at_….
invalid_cursorinvalid_requestUnknown or foreign sync cursor.
link_session_expiredinvalid_requestThe link token's 30-minute session ended.
user_mismatchinvalid_requestupdate_item_id belongs to a different client_user_id.
rate_limit_exceededrate_limit_errorToken bucket empty or monthly quota reached.
internal_errorapi_errorUnexpected failure; include request_id when reporting.

Handling errors

SDKs raise a typed error carrying the envelope. Branch on type for policy (retry, reauth, surface to user) and on code only when you need the precise cause:

import { FeelConnect, FeelConnectError } from "@feelconnect/node";
try {
const res = await fc.transactions.sync({ access_token: token });
} catch (err) {
if (err instanceof FeelConnectError) {
switch (err.type) {
case "rate_limit_error":
await backoff(); break; // respect X-RateLimit-Reset
case "authentication_error":
if (err.code === "item_not_found") markItemDisconnected(); break;
case "provider_error":
case "api_error":
scheduleRetry(); break; // transient
default:
log(err.code, err.message, err.requestId); // a bug on our side of the call
}
}
}

Always log request ids

Every response — success or failure — includes X-Request-Id. Log it. Support can trace any request by that id, and it appears in Dashboard → Logs.