Errors

When a form submission fails, Formoar returns an appropriate HTTP status code and a JSON error response. This page documents all possible error responses so you can handle them gracefully.


Error response format

All error responses follow this structure:

Error response

{
  "success": false,
  "error": "Human-readable error message"
}

Status codes

  • Name
    200 OK
    Description

    The submission was accepted successfully.

  • Name
    400 Bad Request
    Description

    The request body could not be parsed, or a required field was missing.

  • Name
    403 Forbidden
    Description

    The submission was blocked — the origin is not in the allowed origins list, or spam was detected.

  • Name
    404 Not Found
    Description

    The form ID doesn't exist or the form has been deactivated.

  • Name
    429 Too Many Requests
    Description

    Rate limit exceeded (per-IP) or monthly submission limit exceeded (per-plan).

  • Name
    500 Internal Server Error
    Description

    An unexpected error occurred on the server.


Error types

Validation errors

These errors indicate a problem with the request itself.

  • Name
    Invalid form ID
    Description

    The form ID in the URL is not a valid UUID format.

  • Name
    Form not found
    Description

    No form exists with the provided ID, or the form has been deactivated.

  • Name
    Empty submission
    Description

    The request body contained no data fields.

Validation error

{
  "success": false,
  "error": "Form not found"
}

Security errors

These errors are returned when a submission is blocked for security reasons.

  • Name
    Origin not allowed
    Description

    The request came from a domain not in the form's allowed origins list.

  • Name
    Spam detected
    Description

    The honeypot field was not empty, indicating a bot submission.

  • Name
    Turnstile verification failed
    Description

    The Cloudflare Turnstile token was invalid or expired.

Security error

{
  "success": false,
  "error": "Origin not allowed"
}

Limit errors

These errors occur when rate limits or plan quotas are exceeded.

  • Name
    Rate limit exceeded
    Description

    Too many submissions from the same IP address (max 5 per minute).

  • Name
    Monthly submission limit exceeded
    Description

    Your plan's monthly submission quota has been reached. Upgrade your plan to continue accepting submissions.

Limit error

{
  "success": false,
  "error": "Monthly submission limit exceeded"
}

Was this page helpful?

We use cookies to understand how you use Formoar and to improve your experience. Privacy Policy