ErrLookup › we-promise/sure
we-promise/sure
The personal finance app for everyone (by everyone) · Ruby · 1,577 source files
Analyzed at e69894adb9 on 2026-08-21. 357 documented errors.
| Code / Message | Type | Severity | Tags |
|---|---|---|---|
| Could not sign in with that passkey. Please try again or use | exception | error | yahoo-finance, historical-prices, trading-day, ipo, market-data |
| Could not save that passkey or security key. Please try agai | exception | error | yahoo-finance, json, response-parsing, rate-limit, proxy |
| Could not sync Akahu connection | exception | warning | yahoo-finance, date-validation, range-limit, pagination |
| Enable Banking provider is not configured | exception | warning | yahoo-finance, date-validation, argumenterror, argument-order |
| Enable Banking session is not valid or has expired | exception | warning | yahoo-finance, date-validation, future-date, timezone |
| Import failed | exception | warning | yahoo-finance, date-validation, lookback-limit, backfill |
invalid_import_record #{record_type} has invalid #{field}: #{value.inspect} | validation | error | yahoo-finance, authentication, crumb, cookie, rate-limit |
| Lunchflow provider is not configured | exception | error | yahoo-finance, authentication, faraday, network, tls, dns |
| Mercury provider is not configured | exception | error | yahoo-finance, authentication, cookie, set-cookie, anti-bot |
| This property data provider is not configured. | exception | error | questrade, oauth, provider-not-configured, sync, brokerage |
| {response.error.message} | exception | error | redbark, oauth, provider-not-configured, sync |
| {result.error} | exception | warning | settings, validation, enum, onboarding, configuration |
| {e.record.errors.full_messages.to_sentence.presence || e.mes | validation | error | settings, openai, configuration, validation, llm |
| Please provide a name and a complete US address (street, cit | validation | warning | simplefin, rate-limit, sync, backoff, banking |
pagination_error Brex pagination exceeded #{MAX_PAGES} pages | exception | error | snaptrade, oauth, provider-not-configured, sync, brokerage |
request_failed Exception during GET request: #{e.message} | exception | error | snaptrade, oauth, provider-not-configured, sync-job, authorization |
invalid_response Invalid response from Brex API | exception | error | sure-import, csv-import, dry-run, validation, publish |
bad_request Bad request to Brex API | http | error | brex, http-400, api, pagination |
unauthorized Invalid Brex API token or account permissions | http | error | brex, http-401, authentication, api-token |
access_forbidden Access forbidden - check Brex API token scopes | http | error | brex, http-403, authorization, scopes |
not_found Brex resource not found | http | warning | brex, http-404, accounts, sync |
rate_limited Brex rate limit exceeded. Please try again later. | http | warning | brex, http-429, rate-limit, throttling |
fetch_failed Failed to fetch data from Brex API: HTTP #{response.code} | http | error | brex, http-5xx, outage, upstream |
request_failed Exception during GET request: #{e.message} | exception | error | enable-banking, network, dns, timeout, httparty |
invalid_certificate Invalid private key in certificate: #{e.message} | exception | error | enable-banking, openssl, pem, private-key, configuration |
bad_request Bad request to Enable Banking API: #{response.body} | exception | error | enable-banking, http-400, validation, api |
unauthorized Invalid credentials or expired JWT | exception | error | enable-banking, http-401, jwt, rs256, authentication, clock-skew |
access_forbidden Access forbidden - check your application permissions | exception | error | enable-banking, http-403, authorization, licensing |
not_found Resource not found | exception | warning | enable-banking, http-404, consent-expiry, psd2, sync |
timeout Request timeout from Enable Banking API | exception | error | enable-banking, http-408, timeout, open-banking, aspssp, transient |
validation_error Validation error from Enable Banking API: #{response.body} | exception | error | enable-banking, http-422, validation, transactions-period, psd2, consent |
rate_limited Rate limit exceeded. Please try again later. | exception | warning | enable-banking, http-429, rate-limit, throttling, quota |
fetch_failed Failed to fetch data: #{response.code} #{response.message} - #{response.body} | exception | error | enable-banking, catch-all, http-5xx, upstream, unexpected-status |
parse_error Failed to parse API response | exception | error | enable-banking, json, parse-error, gateway, response-body |
| IBKR Flex did not return a reference code. | exception | error | ibkr-flex, sendrequest, reference-code, xml, flex-query |
| IBKR Flex statement is still being generated. | exception | warning | ibkr-flex, polling, async-statement, getstatement, backoff |
| Network error after #{max_retries} retries: #{e.message} | exception | error | ibkr-flex, network, retries-exhausted, dns, firewall, transport |
bad_request Invalid account number format: #{account_number} | exception | error | indexa-capital, validation, account-number, input-sanitization, pre-flight |
network_error Network error after #{max_retries} retries: #{e.message} | exception | error | indexa-capital, network, retries-exhausted, dns, transport |
unauthorized Authentication token missing in response | exception | error | indexa-capital, authentication, jwt, response-contract, credential-mode |
bad_response Invalid JSON in response: #{e.message} | exception | error | indexa-capital, json, parse-error, gateway, response-body |
access_forbidden Access forbidden - check your permissions | exception | error | indexa-capital, http-403, forbidden, authorization, permissions |
not_found Resource not found | exception | error | indexa-capital, http-404, not-found, stale-account, resource-missing |
rate_limited Rate limit exceeded. Please try again later. | exception | warning | indexa-capital, http-429, rate-limit, throttling, quota |
server_error IndexaCapital server error (#{response.code}). Please try again later. | exception | error | indexa-capital, http-5xx, server-error, transient, upstream |
unknown Unexpected error: #{response.code} - #{response.body} | exception | error | indexa-capital, catch-all, unexpected-status, http-3xx, api-contract |
request_failed Exception during GET request: #{e.message} | exception | error | lunchflow, network, error-masking, rescue-wrap, httparty, request-failed |
bad_request Bad request to Lunch Flow API: #{response.body} | exception | error | lunchflow, http-400, validation, api, ruby |
unauthorized Invalid API key | exception | error | lunchflow, http-401, api-key, authentication, ruby |
access_forbidden Access forbidden - check your API key permissions | exception | error | lunchflow, http-403, permissions, authorization, api-key |
not_found Resource not found | exception | error | lunchflow, http-404, stale-id, base-url, api |
rate_limited Rate limit exceeded. Please try again later. | exception | warning | lunchflow, http-429, rate-limit, throttling, retry |
fetch_failed Failed to fetch data: #{response.code} #{response.message} - #{response.body} | exception | error | lunchflow, http-5xx, server-error, redirect, httparty |
request_failed Exception during GET request: #{e.message} | exception | error | mercury, httparty, timeout, dns, network, ruby |
bad_request Bad request to Mercury API: #{response.body} | exception | error | mercury, http-400, pagination, validation, api |
unauthorized Invalid API token | exception | error | mercury, http-401, authentication, api-token, banking-api |
access_forbidden Access forbidden - check your API token permissions | exception | error | mercury, http-403, permissions, api-token-scope, banking-api |
not_found Resource not found | exception | error | mercury, http-404, account-id, banking-api |
rate_limited Rate limit exceeded. Please try again later. | exception | warning | mercury, http-429, rate-limit, backoff, banking-api |
fetch_failed Failed to fetch data: #{response.code} #{response.message} - #{response.body} | exception | error | mercury, http-5xx, unexpected-status, banking-api, transient |
| OpenAI stream ended without a completion event. This usually | exception | error | openai, responses-api, streaming, previous-response-id, context-length, llm |
missing_credentials Refresh token is required | exception | error | questrade, configuration, refresh-token, constructor-validation, brokerage-api |
reauth_required Questrade token exchange failed (#{response.code}). Re-authorization required. | exception | error | questrade, oauth, refresh-token, single-use-token, reauthorization, brokerage-api |
missing_api_server No api_server; authenticate first | exception | error | questrade, configuration, api-server, authentication-order, brokerage-api |
network_error Network error after #{max_retries} retries: #{e.message} | exception | error | questrade, network, retry-exhausted, timeout, connection-reset, brokerage-api |
bad_request Questrade bad request (#{response.code}) | exception | error | questrade, http-400, date-range, activity-api, brokerage-api |
unauthorized Invalid or expired Questrade credentials | exception | error | questrade, http-401, access-token, revoked-authorization, brokerage-api |
access_forbidden Access forbidden - check your permissions | exception | error | questrade, http-403, permissions, account-access, brokerage-api |
not_found Resource not found | exception | error | questrade, http-404, api-server, account-id, brokerage-api |
rate_limited Questrade rate limit exceeded. Please try again later. | exception | warning | questrade, http-429, rate-limit, retryable, brokerage-api |
server_error Questrade server error (#{response.code}). Please try again later. | exception | error | questrade, http-5xx, server-error, retryable, brokerage-api |
unknown Questrade unexpected response (#{response.code}) | exception | error | questrade, unexpected-status, catch-all, brokerage-api |
| Realie did not return a property for this address. | exception | warning | realie, property-valuation, no-results, address-lookup, user-input |
| Realie matched a property in a different city or ZIP code. P | exception | warning | realie, address-matching, city-zip-mismatch, property-valuation, data-quality |
| Realie did not return a valuation for this property. | exception | warning | realie, property-valuation, missing-data, avm, zero-value |
truncated list_accounts returned a truncated account list | exception | error | redbark, pagination, truncation, accounts, row-ceiling |
too_many_pages #{operation_name} exceeded #{MAX_PAGES} pages without exhausting results | exception | error | redbark, pagination, loop-guard, has-more, limit-exceeded |
network_error Network error after #{max_retries} retries: #{e.message} | exception | error | redbark, network, timeout, retries-exhausted, httparty |
bad_request Bad request: #{error_message_from(response)} | exception | error | redbark, http-400, bad-request, validation |
unauthorized Invalid API key | exception | critical | redbark, http-401, authentication, api-key |
access_forbidden Access forbidden - your Redbark plan may not include API access | exception | error | redbark, http-403, forbidden, plan-limits, entitlement |
not_found Resource not found | exception | error | redbark, http-404, not-found, stale-ids |
rate_limited Rate limit exceeded | exception | warning | redbark, http-429, rate-limit, retry, throttling |
server_error Redbark server error (#{response.code}) | exception | error | redbark, http-5xx, server-error, upstream-outage, retry |
unknown Unexpected response #{response.code}: #{error_message_from(response)} | exception | error | redbark, unknown-status, unmapped-response, contract-change |
| providers.rentcast.errors.no_valuation | exception | warning | rentcast, avm, valuation, no-data, address-matching |
token_compromised Setup token may be compromised, expired, or already used | exception | critical | simplefin, setup-token, claim, one-time-token, http-403 |
claim_failed Failed to claim access URL: #{response.code} #{response.message} | exception | error | simplefin, token-claim, setup-token, bridge, http-error |
bad_request Bad request to SimpleFin API: #{response.body} | exception | error | simplefin, http-400, bad-request, query-params, unix-timestamp |
access_forbidden Access URL is no longer valid | exception | critical | simplefin, http-403, revoked-credentials, access-url, relink |
payment_required Payment required to access this account | exception | error | simplefin, http-402, payment-required, billing, subscription |
rate_limited SimpleFin rate limit exceeded. Please try again later. | exception | warning | simplefin, http-429, rate-limit, throttling, backoff |
server_error SimpleFin server error (#{response.code}). Please try again later. | exception | error | simplefin, http-5xx, upstream, bank-sync, provider-api |
fetch_failed Failed to fetch accounts: #{response.code} #{response.message} - #{response.body | exception | error | simplefin, http-status, access-url, redirect, provider-api |
network_error Network error after #{max_retries} retries: #{e.message} | exception | error | simplefin, network, retries-exhausted, timeout, dns |
request_failed Exception during #{operation_name}: #{e.message} | exception | error | simplefin, wrapped-exception, non-retryable, catch-all |
| SnapTrade OAuth token request failed: #{error} | exception | error | snaptrade, oauth, token-exchange, authentication, invalid-grant |
| Network error after #{max_retries} retries: #{e.message} | exception | error | snaptrade, oauth, network, retries-exhausted, faraday |
| Network error (not retried, non-idempotent request): #{e.mes | exception | error | snaptrade, oauth, non-idempotent, network, no-retry |
| SnapTrade positions response has no results array (keys: #{r | exception | error | snaptrade, schema-change, partial-response, positions, type-guard |
| SnapTrade API error (#{operation}): invalid JSON response | exception | error | snaptrade, json-parse, html-response, proxy, faraday |
| Rate limit exceeded. Please try again later. | exception | warning | snaptrade, rate-limit, http-429, backoff, throttling |
| SnapTrade server error (#{response.status}). Please try agai | exception | error | snaptrade, http-5xx, upstream, broker-outage |
| SnapTrade API error (#{operation}): HTTP #{response.status} | exception | error | snaptrade, http-400, http-404, api-error, faraday |
invalid_access_key Invalid Sophtron Access Key: #{e.message} | exception | error | sophtron, hmac, access-key, credentials, base64 |
invalid_response Invalid Sophtron response format | exception | error | sophtron, schema-change, response-shape, type-guard |
request_failed Sophtron request failed: #{e.message} | exception | error | sophtron, network, timeout, dns, httparty |
bad_request Bad request to Sophtron API: #{body} | exception | error | sophtron, http-400, validation, bad-request, provider-api |
unauthorized Invalid Sophtron User ID or Access Key | exception | critical | sophtron, http-401, unauthorized, credentials, hmac |
access_forbidden Access forbidden by Sophtron | exception | error | sophtron, http-403, hmac-auth, aggregator, api-credentials |
not_found Sophtron resource not found | exception | error | sophtron, http-404, resource-not-found, aggregator |
rate_limited Sophtron rate limit exceeded. Please try again later. | exception | warning | sophtron, http-429, rate-limit, throttling, backoff |
fetch_failed Sophtron API request failed: #{response.code} #{response.message} - #{body} | exception | error | sophtron, http-5xx, upstream-failure, retry, catch-all |
| Trading 212 API error (status #{response.code}) | exception | error | trading212, broker-api, http-5xx, catch-all, equities |
configuration_error Up access token is required | exception | error | up-bank, configuration, missing-token, fail-fast, access-token |
| Yahoo Finance rate limit exceeded | exception | warning | yahoo-finance, rate-limit, http-429, scraping, cookie-crumb |
| Failed to obtain Yahoo Finance crumb | exception | error | yahoo-finance, crumb, authentication, cookie, handshake-failure |
| Sophtron provider is not configured | exception | error | sophtron, configuration, missing-credentials, encryption, sync-job |
| Couldn't find exchange rate from #{from_currency} to #{to_cu | exception | error | money, exchange-rate, currency-conversion, missing-data, fx |
record_not_found The requested resource was not found | http | error | rails, activerecord, record-not-found, http-404, uuid, api |
validation_failed Invalid #{param_name} format | validation | warning | rails, date-parsing, validation, http-422, query-params |
record_not_found The requested resource was not found | http | error | rails, activerecord, record-not-found, http-404, uuid, permissions |
record_not_found The requested resource was not found | http | error | rails, activerecord, record-not-found, http-404, uuid, api |
record_not_found Rule run not found | http | error | rails, activerecord, record-not-found, http-404, uuid, api |
validation_failed rule_id must be a valid UUID | validation | warning | rails, query-params, validation, http-422, uuid |
record_not_found Security not found | http | error | rails, activerecord, record-not-found, http-404, uuid, securities |
record_not_found Security price not found | http | error | rails, activerecord, record-not-found, http-404, uuid, securities |
record_not_found The requested resource was not found | http | error | rails, activerecord, record-not-found, http-404, uuid, sync |
not_found Transaction not found | http | error | rails, activerecord, record-not-found, http-404, uuid, permissions |
record_not_found The requested resource was not found | http | error | rails, activerecord, record-not-found, http-404, uuid, api |
validation_failed account_id must be a valid UUID | validation | warning | rails, query-params, validation, http-422, uuid |
| #{key} must be an ISO 8601 date | validation | warning | rails, query-params, validation, http-422, iso8601, date, concern |
| #{key} must be an ISO 8601 date | validation | warning | rails, query-params, validation, http-422, iso8601, date, concern |
| Unknown record type | http | warning | rails, record-not-found, params-validation, sti, admin-ui |
| Anthropic Base URL must be an http(s) URL. | validation | error | rails, url-validation, settings, anthropic, self-hosting |
| Anthropic Model is required when a custom Base URL is set. | validation | error | rails, settings, anthropic, configuration, validation |
| %{field} must be a whole number ≥ %{minimum}. | validation | error | rails, settings, validation, integer-parsing, llm |
| credential must be an object | http | error | rails, webauthn, passkeys, request-payload, bad-request |
| invalid credential payload | http | error | rails, webauthn, json, malformed-payload, bad-request |
| Invalid date format for '#{row.date}': #{e.message} | validation | error | rails, csv-import, date-parsing, strptime, data-validation |
| Statement file has already been uploaded | validation | warning | rails, file-upload, duplicate-detection, statements, checksum |
| AccountStatement::InvalidUploadError | exception | error | rails, file-upload, pdf, content-validation, magic-bytes |
| Invalid transaction amount | exception | error | ruby, akahu, bigdecimal, data-import, transaction-parsing |
| Unable to parse transaction date | exception | error | ruby, akahu, date-parsing, timezone, data-import |
| Cannot revoke demo monitoring API key | exception | warning | rails, api-keys, protected-record, demo-data, guard-clause |
| Cannot destroy demo monitoring API key | exception | warning | rails, api-keys, protected-record, destroy-guard, demo-data |
| No LLM provider configured that supports model '#{requested_ | exception | error | rails, llm, assistant, provider-routing, configuration |
| External assistant is not configured. Set the URL and token | exception | error | rails, assistant, configuration, env-vars, self-hosting |
| Your account is not authorized to use the external assistant | exception | error | rails, assistant, authorization, access-control |
| External assistant returned an empty response. | exception | error | rails, assistant, external-agent, empty-response, streaming |
| External assistant connection was interrupted. | exception | error | network, streaming, sse, assistant, net-http |
| External assistant is temporarily unavailable. | exception | error | network, retry, connect-timeout, assistant, net-http |
| External assistant returned HTTP #{response.code}. | exception | error | http, assistant, api-status, upstream, net-http |
| External assistant stream exceeded maximum buffer size. | exception | error | streaming, sse, buffer-limit, assistant, memory-guard |
| Invalid month: #{raw}. Use YYYY-MM or MMM-YYYY. | exception | warning | validation, date, assistant, tool-call, input-format |
| #{label} must be a non-negative number. | exception | warning | validation, numeric, budget, assistant, tool-call |
| Each categories entry needs a category name or id. | exception | warning | validation, budget, assistant, tool-call, missing-parameter |
| '#{ref}' is the unallocated remainder of budgeted_spending a | exception | warning | budget, business-rule, assistant, tool-call, validation |
| Category '#{ref}' not found. Use get_categories to list cate | exception | warning | budget, category, not-found, assistant, tool-call |
| Assistant exceeded the tool-call limit of #{max_tool_call_it | exception | error | assistant, llm, tool-call, loop-guard, agent-loop |
| Assistant returned neither text nor tool calls | exception | error | assistant, llm, empty-response, streaming, agent-loop |
| Binance credentials not configured | exception | error | binance, credentials, configuration, sync, provider |
| Brex transaction missing required field 'id' | exception | error | brex, import, missing-field, payload-validation |
| Unable to parse transaction date: #{date_value.inspect} | exception | error | brex, import, date-parsing, payload-validation |
| BrexItem::AccountFlow::AccountNotFoundError | exception | warning | brex, account-linking, not-found, stale-cache |
| BrexItem::AccountFlow::InvalidAccountNameError | exception | warning | brex, account-linking, invalid-data, validation |
| BrexItem::AccountFlow::AccountAlreadyLinkedError | exception | warning | brex, account-linking, duplicate, uniqueness |
| BrexItem::AccountFlow::NoApiTokenError | exception | warning | brex, credentials, configuration, account-linking |
| BrexItem::AccountFlow::NoApiTokenError | exception | error | brex, api-token, credentials, account-import |
| Sync failed. Please try again or contact support. | exception | error | brex, sync, error-wrapping, sentry, background-jobs |
| #{label} does not belong to this family | exception | error | categories, merge, authorization, multi-tenant |
| A parent category cannot be merged into its own subcategory | exception | error | categories, merge, hierarchy, cycle-detection |
| Cannot merge a category with subcategories into a subcategor | exception | error | categories, merge, hierarchy, reparenting |
| CoinStats did not return a portfolioId | exception | error | coinstats, provider, api-response, exchange-connection |
| Failed to set current balance: #{result.error} | exception | error | enable-banking, balance, processor, valuations |
| No LLM provider for auto-categorization | exception | error | llm, auto-categorization, provider-registry, configuration |
| Failed to auto-categorize transactions: #{result.error.messa | exception | error | llm, auto-categorization, provider-error, rate-limit |
| Only open pledges can be extended | exception | warning | goal-pledge, state-machine, concurrency |
| Only open pledges can be cancelled | exception | warning | goal-pledge, state-machine, concurrency |
| IBKR provider is not configured | exception | error | ibkr, credentials, provider-configuration, import |
| Invalid IBKR Flex XML: #{e.message} | exception | error | ibkr, xml, nokogiri, parsing |
| Invalid IBKR Flex XML: missing FlexQueryResponse root. | exception | error | ibkr, xml, flex-query, schema |
| Invalid IBKR Flex XML: no FlexStatement nodes found. | exception | error | ibkr, xml, flex-query, empty-response |
| Invalid IBKR Flex XML: missing account identifier in FlexSta | exception | error | ibkr, xml, flex-query, account-mapping |
| IBKR credentials are missing. | exception | error | ibkr, credentials, sync, configuration |
max_row_count_exceeded Import was uploaded but has too many rows to publish automatically. | http | warning | import, csv, row-limit, upload |
| Import::MaxRowCountExceededError | exception | error | import, row-limit, background-jobs, failed-status |
duplicate_headers CSV headers normalize to duplicate columns: %{columns} | validation | error | csv, import, headers, validation, duplicates |
record_not_found The requested resource was not found | http | error | rails, api, import, preflight, uuid, http-404 |
file_too_large File is too large. Maximum size is #{Import.max_csv_size / 1.megabyte}MB. | http | error | rails, import, csv, file-upload, size-limit, http-422 |
content_too_large Content is too large. Maximum size is #{Import.max_csv_size / 1.megabyte}MB. | http | error | rails, import, csv, request-body, size-limit, http-422 |
invalid_file_type Invalid file type. Please upload a CSV file. | http | error | rails, import, csv, file-upload, mime-type, http-422 |
import_session_conflict client_session_id already exists with a different expected_chunks value | http | error | rails, import-session, idempotency, chunked-upload, http-409 |
import_enqueue_failed Import session could not be queued. | http | critical | rails, import-session, activejob, queue-backend, infrastructure, http-503 |
max_row_count_exceeded Import session has too many rows to publish. | http | error | import, limit, validation, rails |
| IndexaCapital provider is not configured | exception | error | provider, indexa-capital, credentials, configuration, rails |
| #{label} does not belong to this family | exception | error | authorization, multi-tenant, merchants, rails |
| source citation is required | exception | error | provenance, validation, required-field, ruby |
| source citation must be #{MAX_LENGTH} characters or fewer | exception | error | provenance, validation, length-limit, ruby |
| estimated values must start with the exact prefix #{ESTIMATE | exception | error | provenance, validation, string-format, ruby |
| reliability grade must be one of #{GRADES.join(", ")} (got # | exception | error | provenance, validation, enum, ruby |
| source citation does not match #{grammar} | exception | error | provenance, validation, grammar, regex, ruby |
| source citation must name the document it came from | exception | error | provenance, validation, min-length, ruby |
| estimated values must carry a reliability grade, e.g. "#{EST | exception | error | provenance, validation, conditional-required, ruby |
| No data returned from search endpoint | exception | error | alpha-vantage, provider, api-response, search, ruby |
| No metadata returned for symbol #{av_symbol} | exception | error | alpha-vantage, provider, symbol-not-found, ruby |
| No prices found for security #{symbol} on date #{date} | exception | error | alpha-vantage, provider, prices, ruby |
| No time series data returned for symbol #{av_symbol} | exception | error | alpha-vantage, provider, api-response, prices, ruby |
| Alpha Vantage daily request limit reached (#{max_requests_pe | exception | warning | alpha-vantage, rate-limit, quota, provider, ruby |
| parsed["Note"] | exception | warning | alpha-vantage, rate-limit, provider, retry, ruby |
| parsed["Information"] | exception | warning | alpha-vantage, rate-limit, api-quota, securities, stock-prices |
| API error: #{parsed["Error Message"]} | exception | error | alpha-vantage, invalid-symbol, bad-request, securities, stock-prices |
| Model is required when using a custom Anthropic-compatible e | exception | error | anthropic, llm, configuration, custom-endpoint, initialization |
| Too many transactions to auto-categorize. Max is 25 per requ | exception | error | anthropic, llm, batch-limit, auto-categorization, input-validation |
| No categories available for auto-categorization | exception | error | anthropic, llm, auto-categorization, categories, precondition |
| Too many transactions to auto-detect merchants. Max is 25 pe | exception | error | anthropic, llm, batch-limit, merchant-detection, input-validation |
| Too many merchants to enhance. Max is 25 per request. | exception | error | anthropic, llm, batch-limit, merchants, input-validation |
| Model does not support PDF processing: #{effective_model} | exception | error | anthropic, llm, pdf, model-capability, vision-models |
| Model did not invoke #{TOOL_NAME} | exception | error | anthropic, llm, tool-use, auto-categorization, response-parsing |
| Tool call missing categorizations | exception | error | anthropic, llm, tool-use, schema-mismatch, auto-categorization |
| Model did not invoke #{TOOL_NAME} | exception | error | anthropic, llm, tool-use, merchant-detection, response-parsing |
| Tool call missing merchants | exception | error | anthropic, llm, tool-use, schema-mismatch, merchant-detection |
| PDF content is required | exception | error | anthropic, llm, pdf, bank-statement, precondition |
| PDF exceeds Anthropic's 32 MB limit (#{pdf_content.bytesize} | exception | error | anthropic, llm, pdf, file-size-limit, bank-statement |
| Model did not invoke #{TOOL_NAME} | exception | error | anthropic, llm, tool-use, pdf, bank-statement, response-parsing |
| PDF content is required | exception | error | anthropic, llm, pdf, precondition, document-processing |
| PDF is too large (#{pdf_content.bytesize} bytes); base64-enc | exception | error | anthropic, llm, pdf, file-size-limit, base64, document-processing |
| Model did not invoke #{TOOL_NAME} | exception | error | anthropic, llm, tool-use, pdf, response-parsing, document-processing |
| Model did not invoke #{TOOL_NAME} | exception | error | anthropic, llm, tool-use, merchants, response-parsing |
| Tool call missing merchants | exception | error | anthropic, llm, tool-use, schema-mismatch, merchants |
| Unauthorized | exception | error | binance, authentication, http-401, api-key, crypto |
| Rate limit exceeded | exception | warning | binance, rate-limit, http-429, backoff, throttling |
| API error: #{response.code} | exception | error | binance, invalid-symbol, error-code-1121, crypto |
| Unsupported Binance ticker: #{symbol} | exception | error | binance, symbol-parsing, securities, crypto, validation |
| No price found for #{symbol} on #{date} | exception | warning | binance, historical-prices, empty-response, klines, crypto |
| Unauthorized - check your API key and secret | exception | error | coinbase, authentication, http-401, api-key, crypto |
| Rate limit exceeded | exception | warning | coinbase, rate-limit, http-429, backoff, crypto |
| API error: #{response.code} | exception | error | coinbase, http-error, api-error, catch-all, crypto |
| CoinStats API request failed: #{e.message} | exception | warning | coinstats, network, timeout, dns, defi-wallet |
| Unexpected response format from search API | exception | error | eodhd, api-contract, schema-validation, json, securities |
| No prices found for security #{symbol} on date #{date} | exception | warning | eodhd, no-data, historical-prices, trading-day, securities |
| Unexpected response format from EOD API | exception | error | eodhd, api-contract, schema-validation, json, historical-prices |
| EODHD daily rate limit of #{max_requests_per_day} requests e | exception | error | eodhd, rate-limit, quota, cache, securities |
| API error: #{parsed["error"]} | exception | error | eodhd, api-error, quota, auth, securities |
| Frankfurter currencies endpoint returned no data | exception | warning | frankfurter, health-check, empty-response, fx-rates, public-api |
| Unexpected Frankfurter response shape | exception | error | frankfurter, fx-rates, schema-validation, json, api-contract |
| Invalid date in Frankfurter response: #{e.message} | exception | error | frankfurter, date-parsing, fx-rates, api-contract |
| Invalid Frankfurter response: #{e.message} | exception | error | frankfurter, json, invalid-response, proxy, fx-rates |
| Unexpected Frankfurter response shape (expected an array) | exception | error | frankfurter, fx-rates, schema-validation, timeseries, api-contract |
| query_id is required | exception | error | ibkr, configuration, flex-query, missing-credential, validation |
| token is required | exception | error | ibkr, configuration, flex-token, missing-credential, validation |
| Either API token or all three username/document/password cre | exception | error | indexa-capital, configuration, authentication, missing-credential, validation |
| Kraken API request failed: #{response.code} | exception | error | kraken, http-status, api-error, authentication, rate-limit, crypto |
| Malformed Kraken API response | exception | error | kraken, schema-validation, json, crypto, api-contract |
| Malformed Kraken API response: missing error | exception | error | kraken, schema-validation, api-contract, crypto, test-stub |
| Malformed Kraken API response: missing result | exception | error | kraken, schema-validation, api-contract, crypto, test-stub |
| Unexpected response format from search endpoint | exception | error | mfapi, mutual-funds, json, api-contract, response-shape |
| No NAV found for scheme #{symbol} on or before #{date} | exception | error | mfapi, mutual-funds, nav, historical-prices, empty-data |
| No NAV data returned for scheme #{symbol} | exception | error | mfapi, mutual-funds, nav, api-contract, response-shape |
| API error: #{parsed['message'] || parsed['status']} | exception | error | mfapi, mutual-funds, api-error, invalid-symbol |
| No price found for #{symbol} on #{date} | exception | error | moex, iss-api, historical-prices, trading-calendar, empty-data |
| No MOEX FX rate for #{from}/#{to} on #{date} | exception | error | moex, fx-rates, currency-pair, exchange-rates |
| Unknown MOEX security: #{secid} | exception | error | moex, secid, symbol-resolution, invalid-symbol, delisted |
| Model is required when using a custom OpenAI‑compatible prov | exception | error | openai, custom-provider, llm, configuration, model-required |
| No categories available for auto-categorization | exception | error | openai, auto-categorization, llm, precondition, empty-input |
| Model does not support PDF/vision processing: #{effective_mo | exception | error | openai, pdf, vision-model, model-capability, llm |
| No message content found in response | exception | error | openai, responses-api, llm, empty-response, auto-categorization |
| Invalid JSON in native categorization: #{e.message} | exception | error | openai, json-parsing, llm-output, auto-categorization |
| Could not find categorizations in response | exception | error | openai, llm-output, schema-mismatch, auto-categorization |
| Could not parse JSON from response: #{raw.truncate(200)} | exception | error | openai, json-parsing, llm-output, truncation, token-limits |
| No message content found in response | exception | error | openai, responses-api, llm, empty-response, merchant-detection |
| Could not extract text from PDF | exception | error | openai, pdf, pdf-reader, text-extraction, scanned-pdf |
| No response from AI | exception | error | openai, llm, empty-response, content-filter, bank-statement |
| Could not extract text from PDF | exception | error | openai, pdf, pdf-reader, text-extraction, scanned-pdf |
| Could not convert PDF to images | exception | error | openai, pdf, pdftoppm, poppler, system-dependency, docker |
| Could not parse JSON from PDF processing response: #{raw.tru | exception | error | openai, json-parsing, llm-output, vision, pdf, truncation |
| SnapTrade OAuth is not configured | exception | error | snaptrade, oauth, configuration, missing-env-var, pkce |
| SnapTrade item has no access token | exception | error | snaptrade, oauth, access-token, authentication, sync |
| SnapTrade item has no refresh token | exception | error | snaptrade, oauth, refresh-token, authentication, requires-update |
| Authentication failed (#{operation}): HTTP #{response.status | exception | error | snaptrade, http-401, http-403, authentication, requires-update |
| Unexpected response format from search endpoint | exception | warning | tiingo, api-response, json, search, provider-data |
| No prices found for security #{symbol} on date #{date} | exception | warning | tiingo, price-data, no-data, trading-day, securities |
| API error: #{error_message} | exception | error | tiingo, price-data, api-response, unknown-symbol, json |
| Tiingo hourly request limit reached (#{new_count}/#{max_requ | exception | warning | tiingo, rate-limit, client-side-throttle, redis-counter, quota |
| Tiingo unique symbol limit reached (#{MAX_SYMBOLS_PER_MONTH} | exception | error | tiingo, rate-limit, quota, monthly-symbol-limit, free-tier |
| Could not determine currency for #{symbol} from Tiingo searc | exception | error | tiingo, currency, search, provider-data, iso-4217 |
| detail | exception | warning | tiingo, rate-limit, http-429, api-quota, retry |
| API error: #{detail} | exception | error | tiingo, api-key, authentication, api-error, configuration |
| Unknown T-Invest instrument: #{symbol} | exception | error | tinkoff-invest, t-invest, unknown-symbol, instrument-resolution, securities |
| No T-Invest price for #{symbol} on #{date} | exception | warning | tinkoff-invest, t-invest, price-data, no-data, trading-day |
| Missing or invalid T-Invest bond nominal for #{symbol} | exception | error | tinkoff-invest, t-invest, bond, nominal, price-data, provider-data |
| api_key is required | validation | error | ruby, trading212, configuration, missing-api-key, constructor |
| api_secret is required | validation | error | ruby, trading212, configuration, missing-api-secret, constructor |
| Invalid environment: #{environment} | validation | error | ruby, trading212, configuration, invalid-enum, environment |
| Trading 212 authentication failed (#{response.code}). Check | exception | critical | ruby, trading212, authentication, http-401, http-403, api |
| Trading 212 rate limit exceeded. Please wait before retrying | exception | warning | ruby, trading212, rate-limit, http-429, backoff |
| API error (code: #{error_code}): #{error_message} | exception | error | ruby, twelvedata, exchange-rate, empty-response, api |
| No prices found for security #{symbol} on date #{date} | exception | error | ruby, twelvedata, price-history, no-data, market-closed |
429 Rate limit exceeded | exception | warning | ruby, twelvedata, rate-limit, http-429-in-body, quota |
| API error (code: #{parsed["code"]}): #{parsed["message"] || | exception | error | ruby, twelvedata, api-error, plan-limit, response-body-error |
| Failed to fetch exchange rates: #{rates_response.error.messa | exception | error | ruby, yahoo-finance, exchange-rate, wrapped-error, api |
| No exchange rate found for #{from}/#{to} on or before #{date | exception | error | ruby, yahoo-finance, exchange-rate, date-out-of-range, no-data |
| No chart data found for currency pair #{from}/#{to} | exception | error | ruby, yahoo-finance, exchange-rate, currency-pair-unsupported, empty-response |
| Invalid response format: #{e.message} | exception | error | ruby, yahoo-finance, json-parse-error, html-response, scraping |
| Invalid search response format: #{e.message} | exception | error | ruby, yahoo-finance, json-parse-error, symbol-search, scraping |
| Yahoo Finance authentication failed after crumb refresh | exception | critical | ruby, yahoo-finance, authentication, cookie-crumb, bot-detection |
| No security info found for #{symbol} | exception | error | ruby, yahoo-finance, symbol-not-found, quote-summary, api |
| Failed to fetch security prices: #{prices_response.error.mes | exception | error | ruby, yahoo-finance, price-history, wrapped-error, api |
| No price found for #{symbol} on or before #{date} | exception | error | |
| No chart data found for #{symbol} | exception | error | |
| Start date cannot be after end date | validation | error | |
| Date range too large (max 5 years) | validation | error | |
| Start date (#{validated_start_date}) cannot be after end dat | validation | error | |
| End date (#{validated_end_date}) cannot be in the future | validation | error | |
| Start date (#{validated_start_date}) exceeds maximum lookbac | validation | error | |
| Failed to authenticate with Yahoo Finance: #{e.message} | exception | error | |
| Failed to obtain Yahoo Finance cookie | exception | error | |
| Questrade provider is not configured | exception | error | |
| Redbark provider is not configured | exception | error | |
| Invalid onboarding state | validation | error | |
| OpenAI model is required when custom URI base is configured | validation | error | |
| SimpleFin rate limit: data refreshes at most once every 24 h | exception | error | |
| SnapTrade is not authorized | exception | error | |
| SnapTrade is not authorized | exception | error | |
| SnapTrade is not authorized | exception | error | |
not_publishable Import was uploaded but has no publishable records. | exception | error | |
| Replacement tag cannot be the same as the tag being destroye | validation | error | rails, activerecord, tags, validation, self-reference |
| Trading 212 provider is not configured | exception | error | rails, trading212, provider-sync, missing-credentials, secrets |
| Trading 212 API key is missing. | exception | error | rails, trading212, sync, configuration, missing-credentials |
| Row #{row_number}: Account '#{account_name}' is not mapped t | validation | error | rails, csv-import, transaction-import, mapping, data-validation |
| Sync failed. Please try again or contact support. | exception | error | rails, wise, sync, error-wrapping, sentry |
| Cannot rollback: cross-item duplicates exist in snaptrade_ac | exception | error | rails, migration, rollback, unique-index, snaptrade |
| Duplicate (coinbase_item_id, account_id) pairs exist in coin | exception | error | rails, migration, unique-index, coinbase, duplicate-data |
| Duplicate (lunchflow_item_id, account_id) pairs exist in lun | exception | error | rails, migration, unique-index, lunchflow, duplicate-data |
| postal_code was changed from integer to string; alphanumeric | exception | error | rails, migration, irreversible, schema-change, postal-code |
| #{reserved.join(', ')} #{reserved.one? ? 'is' : 'are'} alrea | exception | error | rails, generator, thor, reserved-columns, cli |
| Invalid field type '#{field[:type]}' for #{field[:name]}. Mu | exception | error | rails, generator, thor, field-types, cli |
| At least one credential field is required. Example: api_key: | exception | error | rails, generator, thor, credentials, cli |
| Invalid field type '#{field[:type]}' for #{field[:name]}. Mu | exception | error | rails, generator, thor, field-types, cli |
| [SECURITY] ActiveRecord Encryption is NOT configured. Sensit | console | warning | rails, security, encryption, self-hosted, startup-warning |
| [SSL] Could not find system CA bundle - using custom CA only | console | warning | ssl, tls, ca-certificates, docker, startup-warning |
| [SSL] WARNING: SSL verification is DISABLED | console | warning | ssl, tls, security, configuration, startup-warning |
| [SSL] Could not create combined CA bundle, using custom CA o | console | warning | ssl, tls, ca-bundle, environment, startup-warning |
| Auth config not loaded: #{e.class} - #{e.message} | console | warning | rails, configuration, yaml, auth, startup-warning |
| [OmniAuth] Skipping OIDC provider '#{name}' - missing requir | console | warning | omniauth, oidc, sso, configuration, startup-warning |
| [OmniAuth] Skipping SAML provider '#{name}' - missing IdP co | console | warning | saml, omniauth, sso, configuration, initializer, auth-yml |
| No SSO providers enabled; check auth.yml / ENV configuration | console | warning | sso, omniauth, configuration, boot, auth-yml |
| REDIS_SENTINEL_HOSTS is set but no valid sentinel hosts foun | console | warning | redis, sidekiq, sentinel, environment-variables, configuration |
| Invalid currency code '#{currency_value}' for <%= class_name | console | warning | currency, money-gem, provider-data, generator-template, fallback |
| <%= class_name %>ActivitiesFetchJob - Broadcast failed: #{e. | console | warning | turbo-rails, broadcast, hotwire, background-jobs, generator-template, nil-safety |
| <%= class_name %>Account::ActivitiesProcessor - Unmapped act | console | info | activity-types, enum-mapping, provider-data, generator-template, ui-label |
| Invalid institution URL for <%= class_name %> account #{prov | console | warning | uri-parsing, institution-metadata, provider-data, generator-template, rescue |
| <%= class_name %>ConnectionCleanupJob - Failed: #{e.class} - | console | warning | background-jobs, cleanup, swallowed-error, generator-template, provider-api, rescue |
| <%= class_name %>ConnectionCleanupJob - API delete failed: # | console | warning | background-jobs, cleanup, todo-placeholder, generator-template, provider-api |
| <%= class_name %> API: #{operation_name} failed (attempt #{r | console | warning | retry, backoff, network, provider-api, generator-template, rate-limiting |
| <%= class_name %>Item Unlinker: failed to fully unlink provi | console | warning | unlinking, transaction-rollback, partial-failure, generator-template, locks, background-jobs |
| Invalid currency code '#{currency_value}' for <%= class_name | console | warning | currency, money-gem, crypto-assets, generator-template, fallback, provider-data |