Skip to main content

Errors

Customer API Errors

Funnel Customer APIs use standard HTTP status codes to indicate whether a request succeeded or failed. Some errors include a structured JSON response body with additional details you can use for debugging and user-friendly handling.

ℹ️

Related documentation

If you are seeing authentication failures, start with Authentication. For acceptable use and operational requirements, see Usage & Terms.

How to interpret responses

HTTP status codes are grouped into ranges that describe the category of the response:

  • 2xx: The request succeeded.
  • 4xx: The request failed due to client-side input or permissions.
  • 5xx: The request failed due to a server-side error.
ℹ️

Implementation note

Not every error includes a JSON body. When present, the body may include code, message, and optionally param.

Error response format

When an error response includes a JSON body, it uses the attributes below:

AttributeTypeDescription
codeintegerA machine-readable error code returned by the API.
messagenullable stringA human-readable description of what went wrong.
paramnullable stringThe parameter associated with the error, when applicable.

Example:

Example error response JSON structure
Error response example
 {
  "code": 1234,
  "message": "Invalid parameter: start_date",
  "param": "start_date"
 }
ℹ️

Recommended handling

Use code for programmatic handling, message for logs (and optionally user-facing UI), and param to highlight invalid inputs in validation errors.

HTTP status codes

The Funnel Customer APIs may return the following HTTP status codes:

CodeStatusWhat it means
200OKThe request succeeded.
400Bad RequestThe request is invalid, often due to missing or malformed parameters.
401UnauthorizedAuthentication failed (missing or invalid API key).
403ForbiddenThe API key is valid, but it isn't permitted to access this resource or configuration.
404Not FoundThe requested resource doesn't exist, or the endpoint path is incorrect.
429Too Many RequestsRequest volume is too high. Reduce frequency and retry with backoff. Honor Retry-After if provided.
5xxServer ErrorsAn internal error occurred on Funnel's side. Retry with backoff for transient failures.
⚠️

Rate limiting (429)

If you receive 429, reduce request frequency and retry using exponential backoff. Honor the Retry-After header if it is provided. Repeated 429s usually indicate the integration should switch to a bulk/sync approach instead of frequent polling.

Retry strategy and resilience

Production integrations should treat failures differently depending on the error class. The guidance below helps prevent retry storms and improves end-user experience.

  • Do not automatically retry most 4xx errors: Fix the request (parameters, permissions, endpoint path) before retrying.
  • Retry 429 with backoff: Slow down and respect any server guidance (such as Retry-After).
  • Retry transient 5xx errors: Use exponential backoff with jitter and a maximum retry cap.
  • Set timeouts: Always use reasonable connect and read timeouts to prevent hung workers.
  • Log with context: Include endpoint, method, status code, and any returned error code to speed up debugging.
ℹ️

Avoid retry storms

If many requests fail at once (for example, during a deployment or outage), apply a circuit breaker or global backoff so you do not overwhelm your own systems or the API with synchronized retries.

Getting help

If you contact support about an error, include enough detail for us to reproduce or investigate quickly.

  • Customer account name (or the organization the key is issued to)
  • Endpoint URL and HTTP method
  • Timestamp and timezone
  • HTTP status code and any error response body (remove secrets)
  • Whether the issue is intermittent or consistently reproducible
ℹ️

Support contact

Email support@funnelleasing.com for API integration support.