EIGENN.
docsguidesapichangelogpricingsign in
EIGENN.

Errors

Interpret Eigenn API statuses, optional error fields, request IDs, and safe retry signals.

Summary

Public REST errors use an object whose fields are optional because individual operations can return narrower error shapes.

{
  "error": "Unauthorized",
  "message": "Invalid API key",
  "description": "Authentication failed.",
  "requestId": "req_01HXYZ1ABCD23EFGH456JK"
}

Do not make a client fail to parse an error when one of these fields is absent.

Capabilities

Clients can interpret and respond to a consistent set of HTTP status codes, retrieve and log request identifiers for troubleshooting, handle validation and idempotency errors, and apply safe retry logic as guided by the API's conventions.

Prerequisites

You must have access to Eigenn's public REST API endpoints and valid API credentials. To handle idempotency and retry patterns, your client implementation should support reading response headers and preserving request context.

Concepts

Request IDs

Normalized REST errors include X-Request-ID and can include the same value in requestId. Log it with:

  • HTTP method
  • endpoint
  • status
  • operation ID
  • safe resource IDs
  • client timestamp

Never log the bearer token or a sensitive customer payload to keep debug context.

Rate-limit responses can contain only an error field in the body. The API adds X-Request-ID through its outer middleware; body requestId is not guaranteed. Read Retry-After from the response headers for 429.

Workflow

Retry Policy

Use bounded retries for:

  • GET after 429 or transient 5xx
  • a rate-limited request after Retry-After
  • an idempotency-guard 503, preserving the same request and key after Retry-After

Examine these cases before you retry:

  • any write after an unknown network outcome or a server error, even with an idempotency key
  • a 409 caused by business state
  • a 400 or 422
  • a 401 or 403

Use exponential backoff with jitter. Limit the number of tries. Preserve the original method, URL, query, payload, credential, and idempotency key for a replay.

A failed write response does not prove that no change occurred. Check the resource or application before retrying. For example, a customer can be saved before response validation fails. An idempotency key does not roll back that change or cache the failed response.

Behavior specification

Status Codes

StatusDescriptionTypical action
400Missing, malformed, or semantically invalid requestCorrect the request before you retry it.
401Missing or invalid authenticationReplace or refresh the credential.
403Credential lacks permission, including scopes removed by the user's current roleCheck the grant and current team role.
404Resource missing or inaccessible to the teamCheck the ID and the team.
409Conflict with current state or an in-flight idempotent requestExamine the state and Retry-After when present.
422Request structure failed validationCorrect the fields named in the description.
429Rate limit exceededWait for Retry-After.
500Unexpected server errorRetry a safe operation with backoff.
503Idempotency guard unavailablePreserve the request and key; wait for Retry-After.

Individual operations can document more specific 400 or 409 shapes. For example, invoice creation can return a message-only conflict when an invoice number is already used.

Validation Errors

Structural validation can return 422 with:

  • message set to Request validation failed
  • description with field paths and validation messages

Route-level request validation can instead return 400 with a validation result object. Business validation can also return 400. Handle the status and body defensively; do not require the normalized description field or assume every input problem is 422. Likewise, a missing or malformed resource ID does not guarantee 404: some routes currently surface a server or response-validation error.

Idempotency Errors

Protected POST, PUT, PATCH, and DELETE requests accept an optional Idempotency-Key of at most 128 characters after trimming. An empty value is treated as no key.

The guard stores successful 2xx responses for 24 hours. Replay identity includes the team and authenticated user or service principal, HTTP method, path, query string, and key. It does not compare the body. Reusing a key with different content can replay the earlier result instead of applying the new content. Give each distinct operation a new key.

Non-2xx results are not cached. A successful write can also outlive a cache failure, so replay is not an exactly-once guarantee. After an uncertain write, reconcile persisted state before deciding whether to repeat it.

Idempotent requests can return:

  • 400 for a key longer than 128 characters
  • 409 with Retry-After: 1 when another request with the same key is still in progress
  • 503 with Retry-After: 1 when Eigenn cannot set up the replay guard

The current OpenAPI standard response list does not enumerate 503, even though the idempotency guard can return it. Treat this as an operational response and retry the same request with the same key after the specified delay.

Successful idempotent responses can include:

  • Idempotency-Status: created
  • Idempotency-Status: replayed
  • Idempotency-Status: waited

Diagrams

Eigenn API Error Handling Workflow

Rendering diagram…

Screenshots

Not applicable: this page describes an API or a non-visual workflow rather than an application screen.

Verification

  1. Make a malformed request and confirm the client handles the returned 400 or 422 body, including absent optional fields.
  2. Attempt to authenticate with invalid credentials and ensure a 401 status is returned.
  3. Submit a request with a missing or insufficient scope and confirm a 403 response.
  4. Test a missing ID on an operation that implements 404. Separately test malformed IDs and record route-specific validation or server errors.
  5. On an isolated fixture and an operation with a valid success response, repeat the exact keyed write and check for the cached success with Idempotency-Status: replayed. Confirm only one persisted change. Exercise 409 and 503 separately by controlling concurrency and guard availability locally.
  6. Exercise a local rate-limit fixture and verify 429 and Retry-After. Do not load-test a shared environment for this check.
  7. Simulate an uncertain write response and confirm the client reconciles state instead of retrying blindly. Check that secrets and customer payloads are absent from logs.
  8. Confirm that not all error responses contain every optional field, and that the client gracefully handles missing fields.

Related

Related Pages

  • Authentication
  • Rate Limits
  • Developer API Setup

Customers API

Create, find, update, and delete team-scoped customer records through public API v1.

Forecasts and Stress Tests API

Compute forecasts, save stress-test scenarios, and read runway through the public metrics and reports contract.

On this page

SummaryCapabilitiesPrerequisitesConceptsRequest IDsWorkflowRetry PolicyBehavior specificationStatus CodesValidation ErrorsIdempotency ErrorsDiagramsScreenshotsVerificationRelatedRelated Pages

Eigenn docs

current product

Overview
Overview
OverviewAccount PreferencesApproval PoliciesAssistant AutomationAssistant Command CenterAssistant Workspace and Saved WorkBank ConnectionsBilling and UsageBudgets and ForecastCommand CenterCustomer FieldsCustomer LifecycleCustomer RecordsCustomersDeveloper PlatformDocument Processing and ExtractionFiles and Document VaultFinancial Analytics and ReportsFinancial OverviewInbox and ApprovalsInvoice InsightsInvoice ProductsInvoicesMarketplace IntegrationsNotifications and BrandingOnboarding and SupportOverviewPlanning Data and DimensionsPlanning Models and FormulasPlanning Time and ActualsPlanning UncertaintyPlanning Versions and CollaborationPlanning Views and ExportsPlans and AdjustmentsReceivablesReceivables AnalyticsReceivables ControlsRolling Budget CloseScenario PlanningSecurity and AccessSettings OverviewStress TestsTeams and OrganizationsTone Profiles and ExperimentsTransaction Categories and RulesTransaction CodingTransactionsWeekly Finance RitualWorkflow ExecutionsWorkflow OutcomesWorkflow PausesWorkflows
OverviewBuild a Driver-Based Planning ModelBuild and Review a ForecastBuild Your First WorkflowCollaborate on a Planning ModelCompare and Share Planning ScenariosConfigure Approval PoliciesConfigure Assistant OperationsConfigure Customer FieldsConfigure Notifications and BrandingConfigure Planning Time and ActualsConfigure Receivables ControlsConnect Planning Data and ActualsConnect Transaction RecordsCreate and Manage CustomersCreate and Send InvoicesCreate Your First Planning ModelDeveloper API SetupFirst Cash ReviewInvoice Collection WorkflowMaintain Transaction RulesManage Security and BillingManage Team AccessManage the Invoice LifecycleMCP WorkflowsMonitor and Recover WorkflowsOrganize and Share DocumentsProcess Inbox ItemsReconcile and Categorize TransactionsReview a Customer Finance RecordReview, Restore, and Export a Planning ModelRun a Finance Operating ReviewRun a Receivables Tone ExperimentRun a Runway Stress TestRun Planning Uncertainty AnalysisRun Your First Command Center ReviewSave and Share Assistant WorkSet Up a WorkspaceTroubleshoot Account AccessWebhook DeliveryWeekly CFO Review
OverviewIntegrationsMCPSDKsWebhooks
OverviewAuthenticationBank Accounts APICustomers APIErrorsForecasts and Stress Tests APIInvoice Payments APIInvoices APIPaginationRate LimitsRemote Tracker API StatusTracker Categories APITracker Entries and Timers APITracker Projects APITransactions APIWebhooks API StatusWorkflows API
Overview
Overview