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 boolean
admin_email_note string | null
admin_email_subject string | null (max 255)
after_message string | null
after_message_email string | null
after_message_email_subject string | null (max 255)
after_redirect_delay integer | null (0-60)
after_redirect_url url | null (max 500)
ai_summary_enabled boolean
captcha string | null ("altcha", "turnstile", "recaptcha", "none")
capture_location boolean
closed_message string | null
cta_label string | null (max 100)
cta_label_continue string | null (max 100)
description string | null (max 1000)
discord_enabled boolean
google_sheets_enabled boolean
hubspot_enabled boolean
include_response_in_email boolean
is_closed boolean
name 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 boolean
seo_allow_bots boolean
seo_description string | null (max 500)
seo_title string | null (max 255)
show_formtitle boolean
show_multipage_progress boolean
slack_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"
}
}


Was this article helpful?