Skip to main content
The endpoint applies the same rules to every submission. Every framework and builder page can assume them.

Field names

Every field needs a name. Formcarry stores the value under that name, as sent. A field without a name is not sent by the browser at all. Six names are read and not stored: _gotcha and _next (described in the Hidden inputs section), submit, and the captcha tokens g-recaptcha-response, h-captcha-response and cf-turnstile-response. A submission with no fields, or only empty ones, is refused with a 403 that says “Form data can not be empty”.

The visitor’s email

Name the visitor’s address field email. Formcarry takes the first field whose name contains the word email or mail and whose value is an address, and uses it three times:
  • as the reply to address of your notification email,
  • as the recipient of the auto response, and
  • as a signal for the spam filter.
Name it email rather than contact or your address, otherwise formcarry may not find it: the auto response will not send and replying to a notification goes nowhere.

Hidden inputs

_gotcha is a honeypot. Add it hidden and leave it empty. Any submission that fills it is marked as spam:
The _next field is for paid plans only.
_next redirects the user to a specific page after they submit, just for this one submission form. It applies only when the form’s thank you URL in the dashboard is empty, otherwise the dashboard URL wins:

Files

Behavior varies depending on your plan. Free plans drop the files and stores the rest of the submission. Paid plans store files, up to the plan’s file storage limit.
To send files, set enctype="multipart/form-data" on the form. A field can carry several files. From JSON, a field whose value is a data URL, such as data:image/png;base64,..., is stored as a file.

Limits

  • 50 MB per request, files included.
  • 1 submission per 15 seconds, per form, per IP address. Requests beyond that limit get a 429 with the message “Wait 15 seconds before making another request”.
  • Over the plan’s monthly submissions, formcarry holds the extra submissions aside until the first day of the next month and shows the visitor the thank you page as usual. Upgrading before then moves them into the form. The free plan holds up to 1,900 this way, paid plans hold up to 10,000. For anything beyond that limit, the endpoint answers 401 until the new month begins.

Responses

With Accept: application/json every answer has the same shape: code, status, title and message. The HTTP status matches code.
Without the header, visitors see formcarry’s default message or your failure URL, if you set one.

What’s next

Stuck? Write to help@formcarry.com. Include the form id.