Skip to content

Forms API

Public form view and anonymous submit. Form builder create/update/delete is product-only (Fermi app user Bearer). Do not call builder APIs as a partner.

Base URL

BASE_URL = "https://api.fermi.dev/forms/api"

Paths below are relative to that base. Full slug URL: https://api.fermi.dev/forms/api/forms/slug/{slug}.

These public paths do not require a partner scope.

Get a form by slug

GET /forms/slug/{slug}

Query Parameters:

Parameter Type Required Description
tenantId string Yes Organization / tenant ID
token string For private forms Access token
curl --request GET \
  --url "${BASE_URL}/forms/slug/contact-form?tenantId=TENANT_123" \
  --header "Accept: application/json"

Response: the form document (fields, theme, layout).

Errors: 400 invalid input or unauthorized private form, 404 form not found (expected when the slug is not published for that tenant).

Submit a form

POST /forms/{id}/submit

Content-Type: multipart/form-data

Field Type Required Description
tenantId string Yes Tenant ID
data JSON object Yes Field values. Must be an object (400 "data must be an object" if missing)
userId string No Submitter
metadata string No Extra metadata
files file[] No Uploaded files
curl --request POST \
  --url "${BASE_URL}/forms/507f1f77bcf86cd799439011/submit" \
  --form 'tenantId=TENANT_123' \
  --form 'data={"firstName":"Jane","email":"[email protected]"}'

The data form field is a JSON object string.

Summary

Method Path relative to BASE_URL Auth
GET /forms/slug/{slug} Public (tenantId; token if private)
POST /forms/{id}/submit Public multipart

Next Steps