# Qflow API ## Docs - [Ask SendGrid to validate the DNS records.](https://docs.qflowhub.io/api-reference/comms/ask-sendgrid-to-validate-the-dns-records.md): POST /api/comms/domain/verify — ask SendGrid to validate the DNS records. On success, automatically flips EnableCustomDomain to true so subsequent sends use the custom domain. - [Clear the webhook configuration (URL + secret).](https://docs.qflowhub.io/api-reference/comms/clear-the-webhook-configuration-url-+-secret.md): POST /api/comms/webhook/delete — clear the webhook configuration (URL + secret). After this call no more webhooks fire for this client until a new one is configured. - [Create or upsert a stored template.](https://docs.qflowhub.io/api-reference/comms/create-or-upsert-a-stored-template.md): POST /api/comms/template — create or upsert a stored template. If the request includes an Id that already exists for this client + event, the existing record is updated (idempotent). - [Delete a template.](https://docs.qflowhub.io/api-reference/comms/delete-a-template.md): POST /api/comms/template/delete — delete a template. (Flat POST so MCP / connector callers without DELETE support work.) - [Fetch a single template.](https://docs.qflowhub.io/api-reference/comms/fetch-a-single-template.md): GET /api/comms/template/{id} — fetch a single template. - [Fire a synthetic comms.sent payload to the configured URL right now. Useful for verifying the receiver can...](https://docs.qflowhub.io/api-reference/comms/fire-a-synthetic-commssent-payload-to-the-configured-url-right-now-useful-for-verifying-the-receiver-can.md): POST /api/comms/webhook/test — fire a synthetic comms.sent payload to the configured URL right now. Useful for verifying the receiver can validate the HMAC signature. - [Flip EnableCustomDomain to false.](https://docs.qflowhub.io/api-reference/comms/flip-enablecustomdomain-to-false.md): POST /api/comms/domain/deactivate — flip EnableCustomDomain to false. DNS auth and records are preserved; sends fall back to the default invitesSendingAddress until reactivated. Useful when DNS issues mean the custom domain would fail SPF/DKIM checks… - [Flip EnableCustomDomain to true without re-verifying.](https://docs.qflowhub.io/api-reference/comms/flip-enablecustomdomain-to-true-without-re-verifying.md): POST /api/comms/domain/activate — flip EnableCustomDomain to true without re-verifying. Requires that a successful verify has happened at least once (otherwise the domain isn't safe to send from). Use this for "we'd manually deactivated, DNS is still good,… - [Generate a new signing secret.](https://docs.qflowhub.io/api-reference/comms/generate-a-new-signing-secret.md): POST /api/comms/webhook/rotate — generate a new signing secret. The old one stops working immediately. Returns the new plaintext ONCE. - [List templates for an event.](https://docs.qflowhub.io/api-reference/comms/list-templates-for-an-event.md): GET /api/comms/templates?eventId=... — list templates for an event. - [Read current domain authentication state.](https://docs.qflowhub.io/api-reference/comms/read-current-domain-authentication-state.md): GET /api/comms/domain — read current domain authentication state. Returns the DNS records (still useful when troubleshooting after a deactivate) plus verified and enabled flags. - [Read the configured webhook URL (no secret).](https://docs.qflowhub.io/api-reference/comms/read-the-configured-webhook-url-no-secret.md): GET /api/comms/webhook — read the configured webhook URL (no secret). - [Remove the domain authentication entirely (clears SendGridDomainId on the user and deletes the record at Se...](https://docs.qflowhub.io/api-reference/comms/remove-the-domain-authentication-entirely-clears-sendgriddomainid-on-the-user-and-deletes-the-record-at-se.md): POST /api/comms/domain/delete — remove the domain authentication entirely (clears SendGridDomainId on the user and deletes the record at SendGrid). Sends fall back to the default sender. - [Send a templated email to an existing attendee.](https://docs.qflowhub.io/api-reference/comms/send-a-templated-email-to-an-existing-attendee.md): POST /api/comms/send — send a templated email to an existing attendee. Covers first-sends to bulk-imported guests, "I lost my ticket" resends, and retries after transient API-side failures. Permanent recipient failures (bounce, spam, unsubscribe, SendGrid… - [Set the comms-sent webhook URL for this client.](https://docs.qflowhub.io/api-reference/comms/set-the-comms-sent-webhook-url-for-this-client.md): POST /api/comms/webhook — set the comms-sent webhook URL for this client. Generates a fresh signing secret and returns it ONCE in plaintext; thereafter only the URL is exposed (the secret is stored AES-encrypted and we cannot recover the plaintext).… - [Start domain authentication for the calling user.](https://docs.qflowhub.io/api-reference/comms/start-domain-authentication-for-the-calling-user.md): POST /api/comms/domain — start domain authentication for the calling user. Returns the SendGrid domain id + DNS records the integrator must publish at their registrar. After publishing, call POST /api/comms/domain/verify to validate. - [Creates a new event](https://docs.qflowhub.io/api-reference/events/creates-a-new-event.md) - [Creates event tags](https://docs.qflowhub.io/api-reference/events/creates-event-tags.md) - [Deletes an event](https://docs.qflowhub.io/api-reference/events/deletes-an-event.md) - [Disables an event](https://docs.qflowhub.io/api-reference/events/disables-an-event.md) - [Enables an event](https://docs.qflowhub.io/api-reference/events/enables-an-event.md) - [Exports guests for this event](https://docs.qflowhub.io/api-reference/events/exports-guests-for-this-event.md) - [Gets a list of events between a start and end date](https://docs.qflowhub.io/api-reference/events/gets-a-list-of-events-between-a-start-and-end-date.md) - [Gets an event](https://docs.qflowhub.io/api-reference/events/gets-an-event.md) - [Gets the statistics for an event](https://docs.qflowhub.io/api-reference/events/gets-the-statistics-for-an-event.md) - [Updates an existing event](https://docs.qflowhub.io/api-reference/events/updates-an-existing-event.md) - [Blocks a guest](https://docs.qflowhub.io/api-reference/guests/blocks-a-guest.md) - [Blocks a set of guests for an event](https://docs.qflowhub.io/api-reference/guests/blocks-a-set-of-guests-for-an-event.md) - [Blocks a set of guests for an event by barcode](https://docs.qflowhub.io/api-reference/guests/blocks-a-set-of-guests-for-an-event-by-barcode.md) - [Checks if a barcode already exists within an event](https://docs.qflowhub.io/api-reference/guests/checks-if-a-barcode-already-exists-within-an-event.md) - [Checks in a guest](https://docs.qflowhub.io/api-reference/guests/checks-in-a-guest.md) - [Checks out a guest](https://docs.qflowhub.io/api-reference/guests/checks-out-a-guest.md) - [Create a new guest (you can provide your own guest Id as a GUID for tracking)](https://docs.qflowhub.io/api-reference/guests/create-a-new-guest-you-can-provide-your-own-guest-id-as-a-guid-for-tracking.md) - [Create guests (you can provide your own guest ids as GUIDS for tracking)](https://docs.qflowhub.io/api-reference/guests/create-guests-you-can-provide-your-own-guest-ids-as-guids-for-tracking.md) - [Deletes a guest](https://docs.qflowhub.io/api-reference/guests/deletes-a-guest.md) - [Gets a guest](https://docs.qflowhub.io/api-reference/guests/gets-a-guest.md) - [Gets a guests history](https://docs.qflowhub.io/api-reference/guests/gets-a-guests-history.md) - [Gets a list of guests that match a specific email for an event](https://docs.qflowhub.io/api-reference/guests/gets-a-list-of-guests-that-match-a-specific-email-for-an-event.md) - [Gets a list of guests that match guest name](https://docs.qflowhub.io/api-reference/guests/gets-a-list-of-guests-that-match-guest-name.md) - [Gets a list of guests that match some additional info](https://docs.qflowhub.io/api-reference/guests/gets-a-list-of-guests-that-match-some-additional-info.md) - [Gets a page of attendees for an event.](https://docs.qflowhub.io/api-reference/guests/gets-a-page-of-attendees-for-an-event.md) - [Gets a page of discharged guests for an event.](https://docs.qflowhub.io/api-reference/guests/gets-a-page-of-discharged-guests-for-an-event.md) - [Gets a page of guests for an event.](https://docs.qflowhub.io/api-reference/guests/gets-a-page-of-guests-for-an-event.md) - [Gets a page of guests that match a specific tag for an event.](https://docs.qflowhub.io/api-reference/guests/gets-a-page-of-guests-that-match-a-specific-tag-for-an-event.md) - [Gets a page of guests that match a specific ticket type for an event.](https://docs.qflowhub.io/api-reference/guests/gets-a-page-of-guests-that-match-a-specific-ticket-type-for-an-event.md) - [Gets a page of guests that matches a partial or exact barcode](https://docs.qflowhub.io/api-reference/guests/gets-a-page-of-guests-that-matches-a-partial-or-exact-barcode.md) - [Gets a page of non attendees for an event.](https://docs.qflowhub.io/api-reference/guests/gets-a-page-of-non-attendees-for-an-event.md) - [Undo a guests check in](https://docs.qflowhub.io/api-reference/guests/undo-a-guests-check-in.md) - [Updates a guest (You cannot update their 'Admitted' or 'Blocked' status with this method)](https://docs.qflowhub.io/api-reference/guests/updates-a-guest-you-cannot-update-their-admitted-or-blocked-status-with-this-method.md) - [Updates a guest (You cannot update their 'Admitted' or 'Blocked' status with this method)](https://docs.qflowhub.io/api-reference/guests/updates-a-guest-you-cannot-update-their-admitted-or-blocked-status-with-this-method-1.md) - [Updates guests (You cannot update their 'Admitted' or 'Blocked' status with this method)](https://docs.qflowhub.io/api-reference/guests/updates-guests-you-cannot-update-their-admitted-or-blocked-status-with-this-method.md) - [Creates a new tally](https://docs.qflowhub.io/api-reference/tallies/creates-a-new-tally.md) - [Decrements a tally](https://docs.qflowhub.io/api-reference/tallies/decrements-a-tally.md) - [Gets a list of tallies for a specific event](https://docs.qflowhub.io/api-reference/tallies/gets-a-list-of-tallies-for-a-specific-event.md) - [Increments a tally](https://docs.qflowhub.io/api-reference/tallies/increments-a-tally.md) - [Assigns a team member to an event](https://docs.qflowhub.io/api-reference/team/assigns-a-team-member-to-an-event.md) - [Creates a new team member](https://docs.qflowhub.io/api-reference/team/creates-a-new-team-member.md) - [Deletes a team member](https://docs.qflowhub.io/api-reference/team/deletes-a-team-member.md) - [Get all team members for this enterprise](https://docs.qflowhub.io/api-reference/team/get-all-team-members-for-this-enterprise.md) - [Get team members for an event ID](https://docs.qflowhub.io/api-reference/team/get-team-members-for-an-event-id.md) - [Gets a list of events for a team member](https://docs.qflowhub.io/api-reference/team/gets-a-list-of-events-for-a-team-member.md) - [Gets a list of team members and their check-in statistics](https://docs.qflowhub.io/api-reference/team/gets-a-list-of-team-members-and-their-check-in-statistics.md) - [Gets all users that are assigned to other events for this client (not users already ass...](https://docs.qflowhub.io/api-reference/team/gets-all-users-that-are-assigned-to-other-events-for-this-client-not-users-already-ass.md): Gets all users that are assigned to other events for this client (not users already assigned to this event) - [Unassigns a team member from an event](https://docs.qflowhub.io/api-reference/team/unassigns-a-team-member-from-an-event.md) - [Updates a team member](https://docs.qflowhub.io/api-reference/team/updates-a-team-member.md) - [Change user password](https://docs.qflowhub.io/api-reference/users/change-user-password.md) - [Change username](https://docs.qflowhub.io/api-reference/users/change-username.md) - [Create a new user](https://docs.qflowhub.io/api-reference/users/create-a-new-user.md) - [Delete user](https://docs.qflowhub.io/api-reference/users/delete-user.md) - [Gets a page of users](https://docs.qflowhub.io/api-reference/users/gets-a-page-of-users.md) - [Gets a page of users](https://docs.qflowhub.io/api-reference/users/gets-a-page-of-users-1.md) - [Gets a page of users](https://docs.qflowhub.io/api-reference/users/gets-a-page-of-users-2.md) - [Gets a user](https://docs.qflowhub.io/api-reference/users/gets-a-user.md) - [Returns translations for the current enterprise user](https://docs.qflowhub.io/api-reference/users/returns-translations-for-the-current-enterprise-user.md) - [Updates a user](https://docs.qflowhub.io/api-reference/users/updates-a-user.md) - [Authentication](https://docs.qflowhub.io/authentication.md): Two credentials per request: an OAuth bearer token (identifies the user) plus an APIM subscription key (identifies your account). Both required on every call. - [Check-in webhook](https://docs.qflowhub.io/checkin/check-in-webhook.md): Get notified the moment an attendee is admitted to your event. Fires from API, dashboard, and scanner-app check-ins. Configured once per account. - [Check-in API — Overview](https://docs.qflowhub.io/checkin/overview.md): The core Qflow API for events and attendees — create events, manage guest lists, search, block, tag, and run check-in / out / tally counters. - [Tags](https://docs.qflowhub.io/checkin/tags.md): Labels attached to attendees that classify ticket types, sessions, extras, merch, and RSVP status. Drive filtering, statistics, and check-in scanner display. - [Custom domain](https://docs.qflowhub.io/comms/custom-domain.md): Authenticate your own sending domain via SendGrid Domain Authentication. Self-serve via API — create, verify, activate, deactivate, delete. - [Comms API — Overview](https://docs.qflowhub.io/comms/overview.md): Send transactional emails to attendees you create through the Qflow API, with optional PDF attachments and your own sending domain. Get signed webhooks for every delivery event. - [Rate limits & errors](https://docs.qflowhub.io/comms/rate-limits-errors.md): Per-IP rate limits, payload caps on bulk endpoints, and the full HTTP error response catalogue. - [Sending](https://docs.qflowhub.io/comms/sending.md): Two patterns for triggering an email — atomic create-and-send, or send to an existing attendee. - [Templates](https://docs.qflowhub.io/comms/templates.md): Stored HTML email bodies + subject lines, with merge tokens. Optional PDF attachment per template. - [Webhooks](https://docs.qflowhub.io/comms/webhooks.md): Signed HTTP POSTs from Qflow to your endpoint for every email lifecycle event. HMAC-SHA256 verification with replay protection. - [iFrame SSO (white-label embed)](https://docs.qflowhub.io/enterprise/iframe-sso.md): Embed the Qflow dashboard inside your own portal and seamlessly sign your users in. Available to enterprise accounts using Qflow's white-label setup. - [Enterprise API — Overview](https://docs.qflowhub.io/enterprise/overview.md): Programmatic user management for enterprise admins — provision accounts, change credentials, and look up user records under your enterprise pin. - [Introduction](https://docs.qflowhub.io/introduction.md): Three APIs covering Qflow events, attendees, communications, and user management. OAuth-authenticated, built around the same identity provider, accessed at api.qflowhub.io. ## OpenAPI Specs - [enterprise](https://docs.qflowhub.io/api-reference/enterprise.json) - [comms](https://docs.qflowhub.io/api-reference/comms.json) - [checkin](https://docs.qflowhub.io/api-reference/checkin.json)