Endpoints
Before you can access any of the available endpoints, make sure to create a valid access token. Also make sure to read the introduction to get familiar with our API.
Base API URL: https://deftform.com/api/v1/
Workspace
Method: GET
To get access to a workspace, use the /workspace endpoint.
$access_token = 't8ZMQLQiquuyMjHFqfqW0hlEvQsNioCQLLe9npgZ'; curl https://deftform.com/api/v1/workspace \ -H "Authorization: Bearer $access_token" \ -H 'Accept: application/json' \ -H 'Content-Type: application/json'
Forms and fields
Method: GET
Use the /forms endpoint to fetch all forms and their fields.
$access_token = 't8ZMQLQiquuyMjHFqfqW0hlEvQsNioCQLLe9npgZ'; curl https://deftform.com/api/v1/forms \ -H "Authorization: Bearer $access_token" \ -H 'Accept: application/json' \ -H 'Content-Type: application/json'
Form fields
To get the fields of a specific form, you can use the endpoint forms/{id}/fields.
$access_token = 't8ZMQLQiquuyMjHFqfqW0hlEvQsNioCQLLe9npgZ'; curl https://deftform.com/api/v1/forms/{id}/fields \ -H "Authorization: Bearer $access_token" \ -H 'Accept: application/json' \ -H 'Content-Type: application/json'
Form responses
Method: GET
To get all responses for a specific form, use the endpoint /responses/{formId}. {formId} is the ID you can find in the form detail page (in the lower right corner) and also via the API endpoint /forms. A form ID looks something like this: OUm6T9
$access_token = 't8ZMQLQiquuyMjHFqfqW0hlEvQsNioCQLLe9npgZ'; curl https://deftform.com/api/v1/responses/{formID} \ -H "Authorization: Bearer $access_token" \ -H 'Accept: application/json' \ -H 'Content-Type: application/json'
Submission PDF
Method: GET
This endpoint allows you to generate a PDF summary of a specific submission. Use the endpoint /response/{UUID}/pdf to get a link to the generated PDF file. The UUID of the submission can be obtained via the "Form responses" endpoint.
$access_token = 't8ZMQLQiquuyMjHFqfqW0hlEvQsNioCQLLe9npgZ'; curl https://deftform.com/api/v1/response/{UUID}/pdf \ -H "Authorization: Bearer $access_token" \ -H 'Accept: application/json' \ -H 'Content-Type: application/json'
Add form response
Method: POST
You can also add responses to a specific form via the API. This can be useful if you only want to use the Deftform backend to manage responses from a custom form. Use the endpoint forms/{id}/response.
Body JSON
{ "data": { "00000000-1111-2222-3333-444444444444": "Custom value", "10000000-2111-3222-4333-544444444444": "Field value" }}
The data array must consist of the field’s UUID and a valid string or integer value.
At this time, uploading files through the API is not supported. To provide data for a file upload field, you need to supply an absolute URL pointing to the file that you have already uploaded elsewhere before including it in your API request.
Update form settings
Method: POST
You are able to modify specific settings of a form. Updating all settings is not supported at this time. The list below details which fields can be updated. If you wish to change just one or two fields, it's not necessary to include every field in your request.
admin_email_attach_pdf booleanadmin_email_note string | nulladmin_email_subject string | null (max 255)after_message string | nullafter_message_email string | nullafter_message_email_subject string | null (max 255)after_redirect_delay integer | null (0-60)after_redirect_url url | null (max 500)ai_summary_enabled booleancaptcha string | null ("altcha", "turnstile", "recaptcha", "none")capture_location booleanclosed_message string | nullcta_label string | null (max 100)cta_label_continue string | null (max 100)description string | null (max 1000)discord_enabled booleangoogle_sheets_enabled booleanhubspot_enabled booleaninclude_response_in_email booleanis_closed booleanname string (max 255)number_prefix string | null (max 10)number_suffix string | null (max 10)responses_limit integer | null (min 1)send_pdf_to_respondent booleanseo_allow_bots booleanseo_description string | null (max 500)seo_title string | null (max 255)show_formtitle booleanshow_multipage_progress booleanslack_enabled boolean
To update the settings, use the /forms/{id}/settings endpoint. Boolean values should be provided as either 0 and 1, or as false and true.
Body JSON
{ "name": "The new form name", "show_multipage_progress": true, "cta_label_continue": "Next question"}
Response
If successful, the response will return a data array containing the form’s “id,” “name,” and “updated at” values.
{ "success": true, "message": "Form settings updated successfully.", "data": { "id": "KpCchh", "name": "Phone test 123", "updated_at": "2026-01-21T17:55:30.000000Z" }}