Updated March 2026
First thing: check the form ID. The submit endpoint is /api/forms/{id}/submit. Wrong ID, wrong form.
Second: check your request. The body must be JSON with Content-Type: application/json. Field names in the body must match the field names you defined when creating the form. If you send "user_email" but the form has "email", it gets silently ignored.
Third: required fields. If a required field is missing, you get a 400 back with a validation error. Check your response status.
Fourth: rate limiting. Trial keys are limited to 5 submissions per 24 hours per IP. If you are testing from the same machine, you might hit this fast.
Fifth: the form might be from an expired trial. Expired keys return 401. Data is not lost, but no new submissions are accepted.
To debug: call GET /api/forms/{id}/submissions with your API key and see what is actually stored. If submissions are there but your webhook is not firing, that is a different problem — check webhook delivery logs.