Skip to main content

Verification question

Use verification questions to collect employer or institution responses beyond core verification fields (dates, title, degree, and similar). Define questions on each search when you create an order. Answers are returned on terminal webhooks after the verifier completes the form. Attach questions via searchTypes[].verificationQuestions. See Search type.
Integration flow: client creates order with verificationQuestions, API sends form to verifier, verifier returns completed form, API delivers verification.completed webhook with responses
  1. Define custom questions on each relevant searchTypes[] entry at order creation.
  2. SNH AI sends a form (PDF and/or online questionnaire link) that includes your custom questions and standard employment or education fields.
  3. Responses are extracted from the returned form.
  4. On verification.completed, answers appear in data.verificationQuestions. Incomplete or invalid required answers escalate via verification.action_required instead.
Questions are defined at order creation only. You cannot add or change questions after the order is submitted.

Fields

Send these fields when creating an order. Do not send fieldKey, origin, or conditionMet — the platform assigns those.

Validation limits

Invalid payloads return 400 Bad Request. See Errors.

Question types

Type-specific rules

For single_select and multi_select, matching is case-sensitive against options[].value. Align webhook parsing with those values. Only set minSelections when the question is also required: true — otherwise a blank optional multi_select can fail validation on PDF, fax, or voice inbound.

Conditional questions

Optional condition attaches a one-level dependency on an earlier question: Allowed parent types: yes_no, single_select, checkbox, numeric, rating_scale (not free_text or multi_select). Nesting: One level only — a parent that itself has a condition is rejected. Semantics after extraction:
  • Parent matches → conditionMet: true; required applies if set.
  • Parent does not match → conditionMet: false; child selectedAnswer is cleared to null.

Ordering

  • Display order follows the array order of verificationQuestions in the request.
  • The resolved form shows standard questions first, then custom questions in request order.

Response fields (webhook)

Each question in webhook payloads includes the request fields plus:

Where responses appear

Prefer data.verificationQuestions for most integrations. Use data.questionnaire when you need schema version and search type in one object.

Incomplete or invalid answers

On PDF, fax, and voice inbound paths: These paths emit verification.action_required with reasonCode: HUMAN_ESCALATION and do not emit verification.completed.

Standard questions

SNH AI prepends standard questions for the search type. Standard questionId values use a reserved range (700001+). Custom questionId values must not collide with a standard ID for that search type — order creation returns 400 if they do. Standard question definitions cannot be overridden.

Employment (searchType: "EMPLOYMENT")

reason_for_leaving and employment_status have allowComment: true.

Education (searchType: "EDUCATION")

All education standard questions are optional (required: false) with allowComment: false.

Questionnaire envelope

When data.questionnaire is present:

Example

Custom questions on order creation

In the example above, condition.dependsOn: 700001 targets the standard employment eligible_for_rehire question.

Webhook response (verification.completed)

questionnaire.questions is abbreviated as [] above. In production it matches data.verificationQuestions.

Escalation (verification.action_required)

Validation rules

  • Stable IDs — Reuse the same questionId across orders for correlation. Custom fieldKey is derived from the prompt; changing the prompt changes fieldKey.
  • Unique questionId — Must be unique within each verificationQuestions array and must not collide with standard IDs (700001+).
  • Pre-fill — Set selectedAnswer / comment at order creation when known. The verifier may still change values on the form.
  • Parsing — Index by fieldKey for standard questions and by questionId or fieldKey for custom. Use origin to distinguish them. Treat multi_select answers as arrays.
  • multi_select answersselectedAnswer is a string[] for this type only. Other types remain strings (or null).