Get Form Fields
The Get Form Fields API allows you to retrieve all fields defined in a specific form, including fields that only appear once another answer is given (conditional fields), fields inside tabs, and the fields inside a repeatable group. This endpoint returns detailed information about each field including its unique identifier, full qualified name, type, display name, and organizational context within the form structure.
API Endpoint
GET {base_url}/ExtForm/forms/{formId}/fields
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
formId | string | Yes | Unique identifier of the form for which to retrieve fields |
Request Headers
Authorization: Bearer {your_access_token}
Response
The response contains a list of all fields in the specified form, including their identifiers, types, and organizational structure.
Response Structure
{
"statusCode": 200,
"messages": [
"Processed successfully"
],
"result": {
"count": 50,
"fields": [
{
"fieldId": "3c2403cd-7067-4c08-821b-9fb2e5751c4f",
"fieldType": "DatePicker",
"fieldName": "Date of Birth",
"sectionName": "Personal Information",
"pageName": "Customer Details",
"pageId": "a56e3cbc-b6d3-4d49-881b-33d2c497adaf",
"isRequired": true
},
{
"fieldId": "9b1d0c22-4f8e-4a71-93c5-77c2a1e5d004",
"fieldType": "SingleOptionRadio",
"fieldName": "Are you a PEP?",
"sectionName": "Personal Information",
"pageName": "Customer Details",
"pageId": "a56e3cbc-b6d3-4d49-881b-33d2c497adaf",
"isRequired": true,
"options": [
{
"optionId": "1f0a7c53-6d24-4b0e-9f31-2a5c8e7b1d90",
"optionText": "Yes",
"optionValue": "1",
"order": 1
},
{
"optionId": "6c92b4a1-38df-4e57-8b02-9d1e4f6a7c33",
"optionText": "No",
"optionValue": "0",
"order": 2
}
]
},
// ... more fields
]
}
}
Response Fields
| Field | Type | Description |
|---|---|---|
count | integer | Total number of fields in the form |
fields | array | List of field objects |
Field Object Properties
| Property | Type | Description |
|---|---|---|
fieldId | string | Unique identifier of the field |
fieldType | string | Field type from FieldTypeEnum (e.g., "Text", "DatePicker", "MultiOptionsCheckBox") |
fieldName | string | Display name of the field |
sectionName | string | Name of the section containing the field |
pageName | string | Name of the page containing the field |
pageId | string | Id of the page containing the field — the pageId to pass to Get Submission to read this field's answer |
isRequired | boolean | Indicates whether the field is required or not |
options | array | Selectable options, in configured order. Present only on SingleOptionSelect, SingleOptionRadio and MultiOptionsCheckBox fields; omitted for every other field type |
parentFieldId | string | The field this one belongs to, for a field that does not sit directly in a section. Omitted on section fields. See Conditional and nested fields |
parentRelation | string | How the field belongs to parentFieldId: ConditionalRule, Tab or RepeatableGroup. Omitted on section fields |
condition | object | For ConditionalRule fields only: the answer to parentFieldId that makes this field appear. See Condition Object Properties |
Option Object Properties
Returned in the options array of option-based fields.
| Property | Type | Description |
|---|---|---|
optionId | string | Unique identifier of the option. This is the value to send as optionId / optionIds in the Save Submission answer |
optionText | string | Display text of the option, in the form's default language |
optionValue | string | Configured value of the option |
order | integer | Display position of the option within the field |
Condition Object Properties
Returned on fields whose parentRelation is ConditionalRule.
| Property | Type | Description |
|---|---|---|
operator | string | Equals, NotEquals or IsOneOf |
values | array of string | Compared with the parent field's answer. For an option-based parent these are the parent's optionValues (not optionIds) |
Conditional and nested fields
Some fields do not sit directly in a section:
- Conditional fields appear only when another field has a given answer — for example, "Do you have a PACI account?" appears only when Residency Status is Resident. A conditional field can itself reveal further conditional fields.
- Tab fields sit inside a
TabsControlfield. - Repeatable group fields are the fields inside each entry of a
RepeatableGroupfield.
These are returned like any other field, after their parent in form order (a parent's nested fields come before its next sibling), with parentFieldId, parentRelation and (for conditional fields) condition. They take their pageName and sectionName from the section field they ultimately belong to.
{
"fieldId": "a2b08a44-b69d-47ac-9256-a4b003ff3109",
"fieldType": "SingleOptionSelect",
"fieldName": "Residency Status",
"sectionName": "",
"pageName": "Personal Information",
"pageId": "a56e3cbc-b6d3-4d49-881b-33d2c497adaf",
"isRequired": true,
"options": [
{ "optionId": "f65add9d-5106-48a8-a368-8c6a5f3b3b31", "optionText": "Resident of Kuwait", "optionValue": "1", "order": 1 },
{ "optionId": "a4956ed5-d439-4bd1-8326-ae421d32b255", "optionText": "Non-Resident of Kuwait", "optionValue": "2", "order": 2 }
]
},
{
"fieldId": "83104fd9-09a5-4c81-9895-4fd66a57dee0",
"fieldType": "SingleOptionRadio",
"fieldName": "Do you have a PACI account?",
"sectionName": "",
"pageName": "Personal Information",
"pageId": "a56e3cbc-b6d3-4d49-881b-33d2c497adaf",
"isRequired": true,
"options": [
{ "optionId": "d53e8fe1-6186-44e3-9867-f3aed84385b9", "optionText": "No", "optionValue": "2", "order": 0 },
{ "optionId": "a577d113-fe16-493e-8ff7-a193cd363817", "optionText": "Yes", "optionValue": "1", "order": 1 }
],
"parentFieldId": "a2b08a44-b69d-47ac-9256-a4b003ff3109",
"parentRelation": "ConditionalRule",
"condition": { "operator": "Equals", "values": ["1"] }
}
Here "Do you have a PACI account?" applies when Residency Status is answered with the option whose optionValue is "1" (Resident of Kuwait).
- Answer a conditional field only when its condition is met by the answer you give its parent.
isRequiredon a conditional field means required when shown. - A repeatable group's child
fieldIds are the ids used inside each group entry of theRepeatableGroupanswer, not as top-level answers.
Example Usage
Request
GET {base_url}/ExtForm/forms/f4e72dba-7b5c-8g7h-9i8j-12k34l56m78n/fields
Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
Response
{
"statusCode": 200,
"messages": [
"Processed successfully"
],
"result": {
"count": 4,
"fields": [
{
"fieldId": "3c2403cd-7067-4c08-821b-9fb2e5751c4f",
"fieldType": "DatePicker",
"fieldName": "Date of Birth",
"sectionName": "Details",
"pageName": "PersonalInfo",
"pageId": "9d1c2e44-7b3a-4f0e-8c5d-2e6f1a9b0c71",
"isRequired": true
},
{
"fieldId": "5d10fd74-658b-41d5-8fed-2d60d52a89c0",
"fieldType": "UserAddress",
"fieldName": "Address Details",
"sectionName": "Details",
"pageName": "PersonalInfo",
"pageId": "9d1c2e44-7b3a-4f0e-8c5d-2e6f1a9b0c71",
"isRequired": false
},
{
"fieldId": "308fec76-b67f-45ec-81e2-06cff19b7c35",
"fieldType": "Passport",
"fieldName": "Passport",
"sectionName": "Identity",
"pageName": "PersonalInfo",
"pageId": "9d1c2e44-7b3a-4f0e-8c5d-2e6f1a9b0c71",
"isRequired": true
},
{
"fieldId": "b5a91e07-2c48-4d6f-90ab-13e7c5d82f16",
"fieldType": "MultiOptionsCheckBox",
"fieldName": "Source of Income",
"sectionName": "Financials",
"pageName": "PersonalInfo",
"pageId": "9d1c2e44-7b3a-4f0e-8c5d-2e6f1a9b0c71",
"isRequired": true,
"options": [
{
"optionId": "e41c8b95-7a30-42df-b6e8-05f9c2a4d711",
"optionText": "Salary",
"optionValue": "SAL",
"order": 1
},
{
"optionId": "0d73f6b2-95ce-4817-a2d4-8b6e1f30c952",
"optionText": "Dividends",
"optionValue": "DIV",
"order": 2
}
]
}
]
}
}
Notes
- Use the field id (
fieldId) when submitting answers through the Save Submission API - Fields are returned in form order (page, section, field), each conditional, tab or repeatable-group field after its parent. Link a nested field to its parent by
parentFieldId, not by its position in the list - Field types determine the answer model required when submitting form responses
- For
SingleOptionSelect,SingleOptionRadioandMultiOptionsCheckBoxfields, take the option ids from this endpoint'soptionsarray. These options are configured per field and are not available through the Lookup API, which serves only the shared reference lists (country, source of funds, PEP status, and similar) - Options disabled in the form configuration are not returned, so every returned
optionIdis valid to submit - An option-based field with no options configured returns an empty
optionsarray, while a field type that has no options omits the property entirely optionTextis returned in the form's default language; this endpoint does not apply translations- Some fields may have additional validation rules not exposed through this API
Related Resources
- Get Forms API - Retrieve available forms
- Save Submission API - Submit answers for a form
- Documents Upload API - Upload documents referenced in form answers
- Lookup API - Retrieve reference data for dropdown fields and other lookups
Error Handling
| Status Code | Description | Solution |
|---|---|---|
| 400 | Invalid formId format | Check the format of your formId parameter |
| 403 | Insufficient permissions | Verify your authentication token and permissions |
| 404 | Form not found | Confirm the form exists and the formId is correct |
| 500 | Server error | Contact support if the error persists |