> For the complete documentation index, see [llms.txt](https://talque.gitbook.io/public/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://talque.gitbook.io/public/webhooks/tickets/talque-ticket-webhook-api.md).

# Talque Ticket Webhook API

## Check in an attendee via ticket QR code

> Decodes a scanned ticket QR code and records the check-in for the attendee.

```json
{"openapi":"3.0.3","info":{"title":"Talque Ticket Webhook API","version":"1.0.0"},"paths":{"/webhook/org/{orgId}/ticket/scan/check-in":{"post":{"summary":"Check in an attendee via ticket QR code","description":"Decodes a scanned ticket QR code and records the check-in for the attendee.","parameters":[{"name":"orgId","in":"path","required":true,"schema":{"type":"string"},"description":"The unique identifier of the organization."},{"name":"X-TQ-CLIENT-ID","in":"header","required":true,"schema":{"type":"string"},"description":"The API client ID for authentication."},{"name":"X-TQ-SECRET","in":"header","required":true,"schema":{"type":"string"},"description":"The API client secret for authentication."}],"requestBody":{"content":{"application/json":{"schema":{"type":"object","properties":{"code":{"type":"string","description":"The scanned QR code string from the attendee ticket."},"direction":{"type":"string","enum":["ENTER","EXIT"],"description":"Check-in direction. Defaults to ENTER."}},"required":["code"]}}}},"responses":{"200":{"description":"Check-in recorded successfully.","content":{"application/json":{"schema":{"type":"object","properties":{"success":{"type":"boolean","description":"Whether the check-in was successful."},"reason":{"type":"string","description":"Result reason code (e.g. SUCCESS, NOT_FOUND, ALREADY_CHECKED_IN)."},"reasonEnum":{"type":"string","description":"Name of the reason enum class."},"ticket":{"type":"object","properties":{"ticketId":{"type":"string","description":"The unique ticket identifier."},"holder":{"type":"object","properties":{"email":{"type":"string","format":"email","description":"Email address of the ticket holder."},"firstName":{"type":"string","nullable":true,"description":"First name of the ticket holder."},"lastName":{"type":"string","nullable":true,"description":"Last name of the ticket holder."},"companyName":{"type":"string","nullable":true,"description":"Company name of the ticket holder."},"jobTitle":{"type":"string","nullable":true,"description":"Job title of the ticket holder."},"extUserId":{"type":"string","nullable":true,"description":"External user identifier, if any."},"locale":{"type":"string","nullable":true,"description":"Preferred locale of the ticket holder."}},"required":["email"],"description":"The person holding this ticket."},"categories":{"type":"array","items":{"type":"string"},"description":"Category identifiers assigned to this ticket."},"provider":{"type":"string","description":"The ticketing provider (e.g. INTERNAL)."}},"required":["ticketId","holder"],"description":"The checked-in ticket."},"profile":{"type":"object","nullable":true,"description":"The attendee profile, if one exists for this ticket holder."},"categories":{"type":"array","items":{"type":"object","properties":{"category":{"type":"string","description":"The category identifier."},"parent":{"type":"string","nullable":true,"description":"The parent category identifier, if any."},"name":{"$schema":"http://json-schema.org/draft-04/schema","type":"object","properties":{"DE_DE":{"type":"string"},"EN_US":{"type":"string"},"FR_FR":{"type":"string"},"ES_ES":{"type":"string"},"PT_PT":{"type":"string"},"ZH_CN":{"type":"string"},"UK_UA":{"type":"string"},"AR_EG":{"type":"string"},"RU_RU":{"type":"string"},"FA_IR":{"type":"string"},"NL_NL":{"type":"string"}},"additionalProperties":false,"description":"Translated display name of the category."}},"required":["category","parent","name"]},"description":"Visible (non-private) categories for this attendee, with all name translations."},"dailyCount":{"type":"integer","description":"Number of check-ins for this attendee today."},"profileConnect":{"type":"string","nullable":true,"description":"A URL for connecting with this attendee (QR code link), if available."},"atime":{"type":"integer","description":"Unix timestamp of the check-in."}},"required":["success","reason","reasonEnum","ticket","dailyCount","atime"]}}}},"400":{"description":"Bad request. Reason codes: CODE_INVALID (unparseable QR code), CODE_EXPIRED (QR code has expired), ORG_MISMATCH (ticket belongs to a different organization)."},"403":{"description":"Forbidden. Reason codes: TICKET_CANCELED (ticket has been canceled), ALREADY_CHECKED_IN (attendee has already checked in)."},"404":{"description":"Ticket not found."}}}}}}
```
