Keystone Developers
Open Keystone
API reference

Console API

Forms

8 endpoints.

GET/api/v1/admin/businesses/{business_id}/form_submissions

List all form submissions

List all form submissions; cursor is the last ``id`` from the previous page (UUID v7).

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
form_typequerystring | null

Filter by form identity (built-in or custom slug, e.g. lead, demo-request)

limitqueryintegerdefault 25
cursorquerystring | null
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_list_FormSubmissionSummary__
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredFormSubmissionSummary[]
FormSubmissionSummary[] fields
FieldTypeDescription
idrequiredstring
form_typerequiredstring
dataFormSubmissionDataSchema
formFormSummary | null
FormSummary fields

FormSummary (not expanded)

created_atrequiredstring (date-time)
updated_atrequiredstring (date-time)
metadataResponseMetadata | null
ResponseMetadata fields
FieldTypeDescription
paginationPaginationMetadata | null
PaginationMetadata fields
FieldTypeDescription
limitrequiredinteger
next_cursorstring | null
prev_cursorstring | null
has_morerequiredboolean
has_prevbooleandefault false
total_countinteger | null
status_countsobject | null
object | null fields

Map of string to integer

lifecycle_countsLifecycleCounts | null
LifecycleCounts fields
FieldTypeDescription
leadintegerdefault 0
prospectintegerdefault 0
customerintegerdefault 0
former_customerintegerdefault 0
classification_countsClassificationCounts | null
ClassificationCounts fields
FieldTypeDescription
signalobject
object fields

Nested object (not expanded)

touchobject
object fields

Nested object (not expanded)

stageobject
object fields

Nested object (not expanded)

metaResponseMeta | null
ResponseMeta fields
FieldTypeDescription
totalinteger | null
total_countinteger | null
pageinteger | null
per_pageinteger | null
  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

GET/api/v1/admin/businesses/{business_id}/form_submissions/{submission_id}

Get form submission details

Get detailed form submission including form info.

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
submission_idrequiredpathstring (uuid)
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_FormSubmissionDetail_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredFormSubmissionDetail
FormSubmissionDetail fields
FieldTypeDescription
idrequiredstring
business_idrequiredstring
form_idrequiredstring
form_typerequiredstring
dataFormSubmissionDataSchema
formFormSummary | null
FormSummary fields

FormSummary, expanded above.

created_atrequiredstring (date-time)
updated_atrequiredstring (date-time)
metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

DELETE/api/v1/admin/businesses/{business_id}/form_submissions/{submission_id}

Delete form submission

Soft delete a form submission. 404 if not found.

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
submission_idrequiredpathstring (uuid)
authorizationheaderstring | null

Responses

204Successful Response
  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

GET/api/v1/admin/businesses/{business_id}/forms

List forms

List forms for a business (optionally filtered by status) with submission counts.

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
statusquerystring | null

Filter by status: draft, live, archived

authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_list_FormSummary__
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredFormSummary[]
FormSummary[] fields
FieldTypeDescription
idrequiredstring
business_idrequiredstring
namerequiredstring
form_typerequiredstring
statusFormStatusdefault "live"
is_builtinbooleandefault false
field_countintegerdefault 0
submissions_countintegerdefault 0
created_atrequiredstring (date-time)
updated_atrequiredstring (date-time)
metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

POST/api/v1/admin/businesses/{business_id}/forms

Create a custom form

Create a custom form for a business.

``form_type`` is the immutable per-business identity; when omitted it is slugified from ``name``. A reserved built-in identity (``lead``, …) is rejected (400 RESERVED_FORM_TYPE); a duplicate identity → 409 FORM_ALREADY_EXISTS. New forms default to ``draft``. Snapshots are lazy: a draft gets no snapshot; the first snapshot is created when the form is created (or later set) ``live``.

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
authorizationheaderstring | null

Request bodyrequired

application/jsonFormCreateRequest
FieldTypeDescription
namerequiredstring
form_typestring | null
fields(FormFieldSchema | FormFieldSchema[])[]
(FormFieldSchema | FormFieldSchema[])[] fields
FormFieldSchema

FormFieldSchema (not expanded)

FormFieldSchema[]

Nested object (not expanded)

settingsFormSettingsSchema | null
FormSettingsSchema fields
FieldTypeDescription
send_eventsstring[]
string[] fields
show_transactional_sms_consentbooleandefault false
show_marketing_sms_consentbooleandefault false
show_tos_privacy_consentbooleandefault false
tos_privacy_requiredbooleandefault false
sync_contactbooleandefault false
sync_jobbooleandefault false
enroll_conversation_aibooleandefault false
allow_extra_fieldsbooleandefault true
statusFormStatusdefault "draft"
descriptionstring | null
submit_button_labelstring | null
confirmation_messagestring | null

Responses

201Successful Response
application/jsonSuccessResponse_FormData_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredFormData
FormData fields
FieldTypeDescription
idrequiredstring
business_idrequiredstring
namerequiredstring
form_typerequiredstring
statusFormStatusdefault "live"
is_builtinbooleandefault false
fields(FormFieldSchema | FormFieldSchema[])[]
(FormFieldSchema | FormFieldSchema[])[] fields

Nested object (not expanded)

settingsFormSettingsSchema
FormSettingsSchema fields

FormSettingsSchema, expanded above.

descriptionstring | null
submit_button_labelstring | null
confirmation_messagestring | null
submissions_countintegerdefault 0
created_atrequiredstring (date-time)
updated_atrequiredstring (date-time)
metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

GET/api/v1/admin/businesses/{business_id}/forms/{form_id}

Get form details

Get detailed form including fields, settings, and submission count.

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
form_idrequiredpathstring (uuid)
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_FormData_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredFormData
FormData fields

FormData, expanded above.

metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

PUT/api/v1/admin/businesses/{business_id}/forms/{form_id}

Update form

Update a form's name, fields, and/or settings.

Partial update: omitted keys are left unchanged. ``form_type`` is immutable; fields marked ``fixed: true`` cannot be removed, modified, or unmarked unless ``bypass_fixed: true`` is sent — which requires the caller to be a **platform admin** (role_id == 100). Changing a **custom** form's ``settings`` likewise requires platform admin (a no-op settings payload is allowed). 404 if the form does not exist.

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
form_idrequiredpathstring (uuid)
authorizationheaderstring | null

Request bodyrequired

application/jsonFormUpdateRequest
FieldTypeDescription
namestring | null
fields(FormFieldSchema | FormFieldSchema[])[] | null
(FormFieldSchema | FormFieldSchema[])[] | null fields
FormFieldSchema

FormFieldSchema (not expanded)

FormFieldSchema[]

Nested object (not expanded)

settingsFormSettingsSchema | null
FormSettingsSchema fields

FormSettingsSchema, expanded above.

statusFormStatus | null
descriptionstring | null
submit_button_labelstring | null
confirmation_messagestring | null
bypass_fixedbooleandefault false

Responses

200Successful Response
application/jsonSuccessResponse_FormData_
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredFormData
FormData fields

FormData, expanded above.

metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.

GET/api/v1/admin/businesses/{business_id}/forms/{form_id}/submissions

List submissions for a form

List submissions for a specific form; cursor is the last ``id`` from the previous page (UUID v7).

Parameters

NameInTypeDescription
business_idrequiredpathstring (uuid)
form_idrequiredpathstring (uuid)
limitqueryintegerdefault 25
cursorquerystring | null
authorizationheaderstring | null

Responses

200Successful Response
application/jsonSuccessResponse_list_FormSubmissionSummary__
FieldTypeDescription
request_idrequiredstring
successtruedefault true
datarequiredFormSubmissionSummary[]
FormSubmissionSummary[] fields

FormSubmissionSummary, expanded above.

metadataResponseMetadata | null
ResponseMetadata fields

ResponseMetadata, expanded above.

metaResponseMeta | null
ResponseMeta fields

ResponseMeta, expanded above.

  • 400Bad request
  • 401Unauthorized
  • 403Forbidden
  • 404Not found
  • 422Validation error
  • 500Internal server error
  • 503Service unavailable

Error bodies: ErrorResponse. See Errors.