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
Interview identifier.
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.

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.