Skip to main content
POST
/
v1
/
forms
/
{form_id}
/
submit
Submit a lead-capture form
const options = {
  method: 'POST',
  headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    document_id: 'doc_01h2xcejqtf2nbrexx3vqjhp41',
    contact_form: {
      full_name: 'Bob Vance',
      email_address: 'bob@vancerefrigeration.com',
      phone_number: '+1 234-567-890',
      company_name: 'Vance Refrigeration Inc.',
      company_role: 'CEO'
    },
    share_link_id: 'shl_01h2xcejqtf2nbrexx3vqjhp41',
    otp: '123456'
  })
};

fetch('https://api.factify.com/v1/forms/{form_id}/submit', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
{
  "id": "fsub_01h2xcejqtf2nbrexx3vqjhp41",
  "form_id": "frm_01h2xcejqtf2nbrexx3vqjhp41",
  "document_id": "doc_01h2xcejqtf2nbrexx3vqjhp41",
  "contact_form": {
    "full_name": "Bob Vance",
    "email_address": "bob@vancerefrigeration.com",
    "phone_number": "+1 234-567-890",
    "company_name": "Vance Refrigeration Inc.",
    "company_role": "CEO"
  },
  "created_at": "2025-01-15T10:30:00Z",
  "share_link_id": "shl_01h2xcejqtf2nbrexx3vqjhp41"
}

Documentation Index

Fetch the complete documentation index at: https://developers.factify.com/llms.txt

Use this file to discover all available pages before exploring further.

Authorizations

Authorization
string
header
required

Bearer authentication using a factapi-issued API key (ffy_<env>_<base32_uuid><base62_random>). Cookie-based sessions are accepted automatically by user-facing endpoints but are not surfaced as an OpenAPI auth scheme.

Headers

x-factify-client-id
string

Stable per-visitor identifier supplied by anonymous callers. Required when using Authorization: Bearer PUBLIC_TOKEN; default-anonymous submissions (no client id) are rejected with 400. Authenticated callers may omit it.

Example:

"client-7c3b5e0a-1b2c-4f5d-8a9b-0c1d2e3f4a5b"

Path Parameters

form_id
string
required

Form definition being submitted against.

Example:

"frm_01h2xcejqtf2nbrexx3vqjhp41"

Body

application/json
document_id
string
required

Document this submission grants access to.

Example:

"doc_01h2xcejqtf2nbrexx3vqjhp41"

contact_form
object
required

Lead-capture contact details supplied by the form submitter.

Share link the form was reached through, if any. Used for attribution; does not affect the access grant.

Example:

"shl_01h2xcejqtf2nbrexx3vqjhp41"

otp
string

Reserved for the email-OTP verification flow. Not implemented in this slice — non-empty values are rejected with 400 until the flow lands as a follow-up.

Example:

"123456"

Response

Created

A recorded form submission.

id
string
required

Unique submission ID.

Example:

"fsub_01h2xcejqtf2nbrexx3vqjhp41"

form_id
string
required

Form definition the submission was made against.

Example:

"frm_01h2xcejqtf2nbrexx3vqjhp41"

document_id
string
required

Document this submission granted access to.

Example:

"doc_01h2xcejqtf2nbrexx3vqjhp41"

contact_form
object
required

Lead-capture contact details supplied by the form submitter.

created_at
string<date-time>
required

When the submission was recorded.

Example:

"2025-01-15T10:30:00Z"

Share link the form was reached through, if any.

Example:

"shl_01h2xcejqtf2nbrexx3vqjhp41"