Florida Business API

Errors

Standard error envelope and codes returned by Florida Business API, including REST, billing, and MCP / JSON-RPC errors.

All Florida Business API errors return a uniform JSON envelope. The shape is identical across REST endpoints; the MCP server wraps the same code / message inside a JSON-RPC error.

Florida Business API is an independent data platform and is not affiliated with Sunbiz.org, the Florida Department of State, or the Florida Division of Corporations.

REST Envelope

{
  "error": {
    "code": "bad_request",
    "message": "Human-readable description of what went wrong.",
    "request_id": "req_1234567890abcdef12345"
  }
}

Every response — success or failure — includes a request_id. Quote it when filing support tickets so we can pull the matching server log.

Codes

CodeHTTPMeaning
bad_request400Query params failed validation.
unauthorized401Missing, invalid, or revoked API key. See Authentication.
payment_required402Workspace credit balance is empty and auto-topup is disabled.
forbidden403Authenticated but not permitted for this resource (e.g. MCP-only tier hitting REST).
rest_disabled403Your plan's surfaces array does not include rest — see below.
not_found404Resource does not exist.
rate_limited429Per-key RPM or monthly quota exceeded. Retry-After header included.
internal_error5xxServer-side failure. Reference request_id in support tickets.

400 bad_request

HTTP/1.1 400 Bad Request
Content-Type: application/json
{
  "error": {
    "code": "bad_request",
    "message": "limit must be between 1 and 500.",
    "request_id": "req_1234567890abcdef12345"
  }
}

401 unauthorized

Same shape for missing / invalid / revoked / wrong-workspace keys (no oracle):

{
  "error": {
    "code": "unauthorized",
    "message": "Invalid API key.",
    "request_id": "req_1234567890abcdef12345"
  }
}

402 payment_required

Returned when a metered request needs to draw credits and the workspace balance is empty with auto-topup off.

{
  "error": {
    "code": "payment_required",
    "message": "Credit balance is zero. Enable auto-topup or purchase a credit pack.",
    "request_id": "req_1234567890abcdef12345"
  }
}

403 rest_disabled

The MCP Starter tier ($5/mo, 1,000 MCP calls) does not include the /api/v1/* REST surface. The key authenticates correctly, but the REST router rejects the request:

HTTP/1.1 403 Forbidden
Content-Type: application/json
{
  "error": {
    "code": "rest_disabled",
    "message": "This plan does not include REST API access. Use the MCP transport or upgrade to a tier that includes REST.",
    "request_id": "req_1234567890abcdef12345"
  }
}

Upgrade to Developer or higher to add rest to your plan's surfaces.

404 not_found

{
  "error": {
    "code": "not_found",
    "message": "Entity L00000000000 not found.",
    "request_id": "req_1234567890abcdef12345"
  }
}

429 rate_limited

Sent when you exceed either the per-minute rate limit or the monthly quota. The Retry-After header tells you when to retry (seconds).

HTTP/1.1 429 Too Many Requests
Content-Type: application/json
Retry-After: 17
RateLimit-Limit: 120
RateLimit-Remaining: 0
RateLimit-Reset: 17
{
  "error": {
    "code": "rate_limited",
    "message": "Rate limit exceeded. Retry after 17 seconds.",
    "request_id": "req_1234567890abcdef12345"
  }
}

See Rate Limits for per-tier limits.

5xx internal_error

{
  "error": {
    "code": "internal_error",
    "message": "An unexpected error occurred.",
    "request_id": "req_1234567890abcdef12345"
  }
}

Retry with exponential backoff. If the same request_id reproduces consistently, open a support ticket with the ID — we keep request-scoped logs for 30 days.

MCP / JSON-RPC Errors

The MCP server at /api/mcp wraps the same condition set inside a JSON-RPC 2.0 error frame. Codes:

JSON-RPC CodeMeaning
-32600Invalid Request — malformed JSON-RPC envelope.
-32601Method not found — tool name does not exist.
-32602Invalid params — tool argument validation failed (mirrors REST bad_request).
-32603Internal error — mirrors REST internal_error.
-32001Unauthorized — mirrors REST unauthorized.
-32004Out of credits — workspace credit balance is zero (mirrors REST payment_required).
-32029Rate limited — mirrors REST rate_limited. Retry-after seconds in data.retry_after.

Example out-of-credits response:

{
  "jsonrpc": "2.0",
  "id": 7,
  "error": {
    "code": -32004,
    "message": "Out of credits. Enable auto-topup or purchase a credit pack.",
    "data": {
      "request_id": "req_1234567890abcdef12345",
      "credit_balance": 0
    }
  }
}

On this page