Skip to main content
Reference for the JSON body Exoid sends to your endpoint: fields, TypeScript data model and the shape of every answer type. You need it while writing your parser.

Top-level fields

string
Event type. For interview responses it’s always form_response.
string
Response identifier.
object
The full payload: interview definition, answers and metadata.

Data model (TypeScript)

Supported answer types

Every answer contains a field object (id, type, ref) that links it back to the interview definition.

Answer structure

The type field of each item in answers determines which property holds the value.

File answers and Quiz results

As of September 22, 2026, the payload can also include answers from File upload blocks and more complete Quiz result information, in a structure more consistent with Typeform-like integrations. Use Test Webhook in the configuration panel to see the exact shape of these fields for your campaign.

Hidden variables

Exoid captures the parameters passed in the interview URL (e.g. ?user_id=123) and reports them in the payload under variables.
Use them to correlate responses with users, sessions or internal campaigns.

Full payload example

The interview in this example includes swipe, short text, opinion scale, yes/no, multiple choice and a hidden variable.

Key points

  • All answers live in answers[], each linked to its field.
  • Swipe returns type: "choices" with labels and ids.
  • Multiple choices return arrays in choices.labels and choices.ids.
  • Boolean returns a boolean property.
  • Opinion scale and the other numeric questions use type: "number".
  • Text returns a text property.
  • Variables capture parameters passed via URL (e.g. user_id).

Next steps

Signature and security

Verify the X-Signature header before processing the payload.

How they work

Delivery flow, retries and permanent error codes.