Panther Hook Docs
API & security

Public form submission API

Submit JSON or a native HTML form and interpret the accepted response.

Endpoint and request types

POST https://pantherhook.com/f/YOUR_PUBLIC_FORM_KEY accepts a form payload with named fields. JSON and standard native HTML form submissions are supported. The public key is not a private credential.

Configure form validation, allowed origins and rate limits in the dashboard. Browser file attachments use a separate signed-upload and finalize flow; they are not inline files in this JSON endpoint.

bash
curl -i -X POST 'https://pantherhook.com/f/YOUR_PUBLIC_FORM_KEY?test=true' \
  -H 'Content-Type: application/json' \
  -d '{"email":"example@example.com","message":"Test lead"}'

Understand the response

A successfully accepted JSON request normally returns HTTP 201 and an object indicating accepted: true. It may also include submissionId, duplicate, stored, redirectUrl or spamStatus depending on the lead and configured rules.

A native form-encoded submission may return HTTP 303 with a Location header when a success redirect is configured. Fetch-based integrations handle navigation themselves.

Example response for an accepted, stored test lead. submissionId, duplicate and other optional properties depend on the actual result; never treat accepted alone as proof of storage or delivery.

JSON
{
  "accepted": true,
  "stored": true,
  "submissionId": "YOUR_SUBMISSION_ID"
}

Failures and protection

Learn security settings

Invalid fields or request

Check required form fields and the expected object payload. Bad requests can return 400 or 415 for incompatible formats.

Origin or permission restriction

HTTP 403 can indicate that the browser origin is not allowed. A public key does not bypass origin and abuse controls.

Rate limits

HTTP 429 means requests are being limited. Check Retry-After and avoid tight loops or uncontrolled retries.

A typical rate-limited response includes an integer Retry-After header (seconds). This is a response example, not a request to send.

HTTP
HTTP/1.1 429 Too Many Requests
Retry-After: 17

Run a safe test

Use the Form Setup testing tool or ?test=true to validate the synchronous public test route. Remove test mode when ready for live customer submissions.

Verify the Test filter inside the form Submissions view and review any downstream delivery separately.

Didn't find the answer? Contact support. For endpoint descriptions, see the API reference.