Welcome to Encatch Docs
Admin API ReferenceResponses

Validate Response

Check a response body against a form's live version without storing it, with POST /v2/admin/forms/{formId}/responses/validate.

Run every check that Submit Response runs, without storing anything. Use it in tests, in CI, or before a bulk import, to confirm that your answer keys and values match the form's live version.

POSThttps://api.encatch.com/engage-product/encatch/api/v2/admin/forms/%7BformId%7D/responses/validate

The request is the same as Submit Response: same headers, same path parameter, same request body. Idempotency-Key is not used here, because nothing is stored.

Authentication

X-Api-KeystringRequired

Admin (secret) API key

Content-TypestringRequired

Request body format

application/json

Examples

cURL
curl -X POST 'https://api.encatch.com/engage-product/encatch/api/v2/admin/forms/3f8a2c1e-7b4d-4e9a-9c61-2d5f8e0b7a14/responses/validate' \
  -H 'X-Api-Key: YOUR_ADMIN_API_KEY' \
  -H 'Content-Type: application/json' \
  -d '{
    "status": "completed",
    "externalId": "order-48213",
    "answers": {
      "how-likely-are-you-to-recommend-us": 9,
      "what-did-you-like-most": ["fast-delivery", "easy-checkout"],
      "anything-we-could-improve": "Tracking updates could be more frequent."
    }
  }'

Success response

Validate answers 200 whenever it can read the request, whether or not the body is valid. Problems with the form or the answers are listed in invalidParams. Each entry uses the same codes a submit returns, such as api_channel_disabled, form_not_found, invalid_option, or out_of_range.

200Response
{
  "valid": true,
  "invalidParams": [],
  "resolved": {
    "formId": "3f8a2c1e-7b4d-4e9a-9c61-2d5f8e0b7a14",
    "formVersion": 1792148391723,
    "language": "en",
    "submittedAt": "2026-10-19T07:06:00Z",
    "answerCount": 3
  }
}
validbooleanRequired

true when Submit Response would accept this body right now.

invalidParamsarrayRequired

Every problem found. The array is empty when valid is true.

namestringRequired

The field, for example formId, submittedAt, or answers.<key>.

codestringRequired

Stable machine-readable code; see Error codes.

messagestringRequired

Human-readable. The wording may change, so match on code.

resolvedobject

What a submit would record, when the body is valid.

formIdstring

The form's UUID

formVersionnumber

The live version the answers were checked against

languagestring

The response language

submittedAtstring

The time the response would be recorded with

answerCountnumber

Number of answered questions

Errors

Validate returns an error status only when the request itself cannot be checked:

StatusWhen
400Body is not valid JSON or a field has the wrong type (malformed_body), unknown top-level field (unsupported_field), or formId in the body differs from the path (form_id_mismatch)
401Missing or unknown API key (gateway, no code)
403Not an admin key (gateway, no code)
413Body larger than 100 KB (body_too_large)
429Admin API rate limit reached

Try it in the dashboard

Distribution → API → Standard API → Send a response → Try it calls this endpoint with an editable example body for the form. It runs as a test key, so the usage quota is not checked. Copy as curl turns the body into a submit command.

Was this page helpful?