REST API

Questions

Reusable attendee questions — dietary, t-shirt size, custom fields.

A question is a reusable custom field collected from attendees (dietary restrictions, t-shirt size, arrival method, anything event-specific). Questions are rendered on the registration form.

Answer values are stored on each ticket and accessible via ?include=custom_fields on Tickets.

Question kinds

kind Description
text Single-line text input.
textarea Multi-line text input.
email Email-validated text input.
phone Phone number input.
number Numeric input.
date Date picker.
select Dropdown — uses options[] for choices.
radio Radio buttons — uses options[] for choices.
checkbox Single checkbox.
checkboxes Multiple checkboxes — uses options[] for choices.

Default response fields

id, kind, name, reference, position, metadata, display_defaults, question_set_fields_count, builtin_attribute.

The options relationship (for select / radio / checkboxes kinds) is returned only when listed in ?include=.

List questions

GET /questions

curl -X GET \
  'https://app.guestmanager.com/api/public/v2/questions?include=options' \
  -H 'Authorization: Token abcdefg' \
  -H 'Content-Type: application/json'

Request parameters

Parameter Type Description
page[cursor] string Opaque cursor token. Send empty for first page.
page[size] integer Records per page. Default 10, maximum 100.
sort[{field}] string Sort by id, created_at, updated_at, name. Value is asc or desc.
include string options to include the dropdown / radio / checkbox choices.

Get question

GET /questions/{id}

Create question

POST /questions

Create a dropdown question

curl -X POST \
  https://app.guestmanager.com/api/public/v2/questions \
  -H 'Authorization: Token abcdefg' \
  -H 'Content-Type: application/json' \
  -d '{
    "question": {
      "name": "T-shirt size",
      "kind": "select",
      "options": [
        { "name": "Small",  "position": 1 },
        { "name": "Medium", "position": 2 },
        { "name": "Large",  "position": 3 }
      ]
    }
  }'

Request parameters

Parameter Type Required Description
question[name] string yes Field label shown to attendees and used as the response key.
question[kind] string yes One of the kinds above.
question[position] integer no Display order on the registration form. Lower numbers appear first.
question[options] array no Required for select, radio, and checkboxes kinds. Array of { name, position }. Use _destroy: true to remove an existing option on update.

Update question

PATCH /questions/{id}

Same parameter shape as create. To modify options on an existing question, pass options with the existing option IDs:

{
  "question": {
    "options": [
      { "id": 12, "name": "Small",   "position": 1 },
      { "id": 13, "name": "Medium",  "position": 2 },
      { "id": 14, "name": "X-Large", "position": 3 },
      { "name": "XX-Large", "position": 4 },
      { "id": 15, "_destroy": true }
    ]
  }
}

Only merchant-authored questions can be edited or deleted; the built-in Name, Email, and Photo questions return 404 on write.

Delete question

DELETE /questions/{id}

Soft-deletes (discards) the question. Returns 204 No Content. Existing answers on past tickets remain intact.