Integration attendee lists

Read the people assigned ticket passes for an active event in the selected resource. These rows contain personal contact fields for the intended integration; they are neither pass-owner lists nor attendance/check-in evidence.

TaskOperation
Read assigned attendeesGET event attendees

Example clients and synthetic values follow response conventions. Use WALLKIT_API_BASE for the supplied scheme and host, without /api/v1. Examples include the full path; Node.js examples use an ES module (.mjs).

Read assigned event attendees

GET /api/v1/integrations/ti-events/{id}/attendees

Read assigned users grouped by user and ticket, with optional ticket filtering. The pass owner is not used as the attendee identity. No pass activation, expiry, refund or check-in condition is applied.

Before you call

The selected resource must enable its ticket-event system. The event must exist, be active and belong to that resource; knowing an event ID alone is insufficient.

Use the existing resource public key and resource-scoped service-api-key headers. The account must be active and not suspended, with an active attached service-account user. The service_account role has a separate route allowance; the account must also have full_access or an explicit grant for this controller/action. An ordinary member token is insufficient. Root context bypasses the route ACL, but is not the example credential.

Service-account initialization can create or update a session, increment request counters, extend its expiry and record the request/response, even for GET. An invalid key can fall back to ordinary context resolution; no dedicated invalid-key response is guaranteed. See credential transport.

This action does not require that the service-account user own a pass or be assigned to it. Its account grant controls access to the resource-scoped integration action.

Request

Bodyless GET.

NameLocationType / requirementMeaning and constraints
resourceheaderrequired public-key stringSelects resource and service account.
service-api-keyheaderexisting authorized key stringRequires full access or the attendee action grant.
idpathrequired digits, integer-filteredActive event ID in the resource.
limitqueryoptional integer-filtered value; default 100Must be 1 through 1000 inclusive.
offsetqueryoptional integer-filtered value; default 0Must be nonnegative; row offset, not page number.
tickets[]queryoptional nonempty array of integer-filtered ticket IDsRestricts tickets joined to this event. Example spelling uses tickets%5B%5D=2001. Empty array or scalar fails; unknown IDs simply do not match.

Result

HTTP 200 collection, with no nested user object. Assignment rows require a matching user and ticket. Items are grouped by user ID and ticket ID and ordered by the maximum pass creation time ascending; there is no stable tie-breaker.

FieldType / presenceMeaning
itemsarray; presentOne row per matched assigned user/ticket group; empty [] possible. Multiple passes for that group collapse.
items[].emailstored stringAssigned user email, not pass-owner email.
items[].first_name, items[].last_namestored strings / nullableAssigned user names; no extra normalization promised.
items[].ti_event_ticket_idstored integerTicket ID, not pass ID or event ID.
totalinteger; presentCount of distinct assigned users, unlike the user/ticket grouping of items.
limit, offsetintegers; presentApplied row limit and offset.
has_moreboolean; presenttotal > returned row count + offset. Because total counts users, this can understate remaining user/ticket rows.

An internal collection failure is logged and can return the default empty collection with total 0 and has_more false. An empty result is therefore not conclusive proof of no assignments. This read does not establish current pass usability, attendance or content access.

Example: Read assignments for one ticket

Read event 1001, restricting ticket 2001 and returning up to 100 rows. The excerpt shows the assigned reader contact, without identifying who paid for or owns the pass.

curl "${WALLKIT_API_BASE}/api/v1/integrations/ti-events/1001/attendees?limit=100&offset=0&tickets%5B%5D=2001" \
  -H "resource: ${RESOURCE_KEY}" \
  -H "service-api-key: ${SERVICE_API_KEY}"
const response = await fetch(`${process.env.WALLKIT_API_BASE}/api/v1/integrations/ti-events/1001/attendees?limit=100&offset=0&tickets%5B%5D=2001`, {
  method: "GET",
  headers: {"resource": process.env.RESOURCE_KEY, "service-api-key": process.env.SERVICE_API_KEY}
});
console.log(response.status, await response.json());
import os, json
from urllib.request import Request, urlopen
from urllib.error import HTTPError

request = Request(os.environ["WALLKIT_API_BASE"] + "/api/v1/integrations/ti-events/1001/attendees?limit=100&offset=0&tickets%5B%5D=2001",
    headers={'resource': os.environ["RESOURCE_KEY"], 'service-api-key': os.environ["SERVICE_API_KEY"]}, method="GET")
try:
    with urlopen(request) as response:
        print(response.status, json.load(response))
except HTTPError as error:
    print(error.code, json.load(error))

Synthetic HTTP 200 result:

{
  "items": [
    {
      "email": "reader@example.com",
      "first_name": "Alex",
      "last_name": "Rivera",
      "ti_event_ticket_id": 2001
    }
  ],
  "total": 1,
  "limit": 100,
  "offset": 0,
  "has_more": false
}

Consequential alternate

A matching event with no matched assigned users/tickets can return:

{
  "items": [],
  "total": 0,
  "limit": 100,
  "offset": 0,
  "has_more": false
}

This same default shape can follow a caught collection failure. Separately, an inactive, wrong-resource or absent event returns HTTP 404 ti_event_not_found. Do not infer attendance or zero assignments from the empty collection alone.

Recovery

HTTP statusAPI code / shapeCauseNext action
401 / 403accessResolved role or account lacks this action.Ask the integration owner to check account status, attached user and exact action grant.
401token_expired / token_compromisedA resolved non-guest session fails the shared session checks.Confirm the existing authorized context; do not substitute a member token for the account grant.
404resource_not_existsResource key does not resolve.Correct the resource context.
409ti_events_not_availableTicket-event system disabled for the resource.Ask the resource administrator to confirm the configured integration.
404ti_event_not_foundEvent absent, inactive or outside this resource.Check the event ID and resource; avoid treating this as an empty attendee list.
409invalid_limit / invalid_offset / invalid_ticketsInvalid filtered pagination or ticket array.Send limit 1–1000, offset >= 0 and a nonempty tickets array when filtering.
409ti_event_assignsOther caught controller failure.Retain the error context for the integration owner.
200Empty collectionNo joined matches, or swallowed collection failure.Check intended event/ticket filters and integration logs before concluding there are no assignments.

Next task

Use the Event tickets activation and passes to distinguish owner, assignee and event-access checks. Keep attendance/check-in and actual access decisions separate from this contact list.

See the Server-integrations (advanced) to select the actor, identifiers and next task.

Full diagram

Use the arrow keys to scroll. Escape closes this view.

Search documentation

Enter at least 2 characters.

    ↑ ↓ move through results · Enter opens · Escape closes