Skip to main content

List Waivers & Forms

Retrieve a paginated list of waivers and forms.

Endpointโ€‹

GET /v1/waivers

Authenticationโ€‹

Requires an API key with the waivers:read scope.

Query Parametersโ€‹

ParameterTypeDefaultDescription
pageinteger1Page number
per_pageinteger15Items per page (max 100)
typestring-Filter by type: waiver, form
statusstring-Filter by status: active, inactive

Responseโ€‹

Success (200 OK)โ€‹

{
"data": [
{
"id": 1,
"name": "Liability Waiver",
"type": "waiver",
"status": "active",
"unique_code": "LW-001",
"total_pages": 2,
"apply_to_all_products": true,
"apply_to_all_experiences": true,
"fields": [
{
"id": 1,
"field_type": "signature",
"label": "Participant Signature",
"placeholder": null,
"is_required": true,
"page_number": 1,
"position": 1
},
{
"id": 2,
"field_type": "checkbox",
"label": "I agree to the terms and conditions",
"placeholder": null,
"is_required": true,
"page_number": 1,
"position": 2
}
],
"responses_count": 156,
"created_at": "2025-01-01T00:00:00+00:00",
"updated_at": "2025-06-15T10:30:00+00:00"
},
{
"id": 2,
"name": "Emergency Contact Form",
"type": "form",
"status": "active",
"unique_code": "ECF-001",
"total_pages": 1,
"apply_to_all_products": false,
"apply_to_all_experiences": true,
"fields": [
{
"id": 10,
"field_type": "text",
"label": "Emergency contact name",
"placeholder": null,
"is_required": true,
"page_number": 1,
"position": 1
}
],
"responses_count": 89,
"created_at": "2025-03-01T00:00:00+00:00",
"updated_at": "2025-06-15T10:30:00+00:00"
}
],
"meta": {
"current_page": 1,
"per_page": 15,
"total": 5,
"total_pages": 1,
"request_id": "req_abc123",
"timestamp": "2026-01-15T12:00:00+00:00"
}
}

Response Fieldsโ€‹

Waiver/Formโ€‹

FieldTypeDescription
idintegerUnique identifier
namestringWaiver/form name
typestringwaiver or form
statusstringactive or inactive
unique_codestringUnique identifier code
total_pagesintegerNumber of pages
apply_to_all_productsbooleanAuto-applied to all products
apply_to_all_experiencesbooleanAuto-applied to all experiences
fieldsarrayForm field definitions
responses_countintegerTotal number of responses
created_atstringISO 8601 datetime
updated_atstringISO 8601 datetime

Field Typesโ€‹

TypeDescription
textSingle line text input
textareaMulti-line text input
emailEmail input
phonePhone number input
numberNumeric input
dateDate picker
checkboxSingle checkbox
selectDropdown selection
radioRadio button group
signatureSignature capture
ratingStar rating
fileFile upload

Field Objectโ€‹

Each entry in fields includes:

FieldTypeDescription
idintegerField identifier (referenced by conditions.rules[].field_id)
field_typestringThe field type (see above)
labelstringQuestion/label shown to the customer
placeholderstring|nullHint text
is_requiredbooleanWhether the field must be answered (ignored when the field is hidden by conditional logic)
page_numberintegerPage the field appears on
positionintegerOrder within the page
optionsarray|nullChoice labels keyed by index, for singleChoice / multipleChoice. Conditional-logic rule values reference these indexes (e.g. "0" = the first option)
conditionsobject|nullConditional logic. null = always shown. When present, the field's visibility depends on its rules matching earlier answers

Conditions Objectโ€‹

When a field is conditional, conditions has this shape:

{
"effect": "hide",
"match": "all",
"rules": [
{ "field_id": 1, "operator": "is", "value": "0" }
],
"rule_id": "r_ab12cd34"
}
FieldTypeDescription
effectstring|absentshow (or absent) = the field appears only when the rules match; hide = the field is hidden when the rules match and shown otherwise
matchstringall (every rule must match) or any (at least one)
rulesarrayOne or more rules
rules[].field_idintegerThe field whose answer is tested. For a one-off (per-field) condition this is always an earlier field; a multi-field rule may also reference a later field
rules[].operatorstringis, is_not, includes, gte, lte, answered, not_answered
rules[].valuestringValue to compare against (omitted for answered / not_answered). For choice sources this is the option index from options
rule_idstring|absentPresent when the field belongs to a multi-field show/hide rule authored in the form builder's Logic panel. Every field carrying the same rule_id is driven by the same condition โ€” group by it to reconstruct the rule. Absent for one-off per-field conditions

A consumer rendering the form should evaluate conditions against the answers given so far: with effect: "show" (or absent) show the field only when the rules match; with effect: "hide" hide it when they match. This is identical to how EquipDash's own form renderer and widget checkout behave.

Errorsโ€‹

StatusCodeDescription
401authentication_requiredNo API key provided
401invalid_api_keyInvalid API key
403insufficient_scopeAPI key lacks waivers:read scope

Example Requestโ€‹

curl -X GET "https://app.equipdash.com/api/v1/waivers?type=waiver&status=active" \
-H "Authorization: Bearer eqd_live_abc123xyz789..."