Skip to main content

Registration & memberships

These public actions let a site start a registration or membership purchase, handle email invites, and manage newsletter opt-in/out. Payment never flows through this API — the "start" endpoints hand you a hosted URL where Front9 collects the card.

Start an event registration

curl -X POST \
"https://api.front9.io/api/public/v1/events/{eventID}/register/start"
{ "url": "https://registration.front9.io/?org=acme&event=spring-classic-2026" }

Redirect the registrant to url to finish registration and pay. The call returns 409 if registration isn't open (event not published, or the window is closed), and 404 if the event doesn't exist.

Start a membership purchase

curl -X POST \
"https://api.front9.io/api/public/v1/orgs/{orgSlug}/membership-types/{id}/purchase/start"

Returns the same { "url": ... } shape — redirect the buyer there to complete payment. List the available plans first with GET /orgs/{orgSlug}/membership-types (prices are in cents).

Invites

An invite email links to a token. Resolve it to render an invite landing page:

curl "https://api.front9.io/api/public/v1/invites/{token}"
{
"event": { "slug": "spring-classic-2026", "title": "Spring Classic", "orgSlug": "acme", "orgName": "Acme GC" },
"inviter": { "firstName": "Jamie", "lastName": "Lee" },
"email": "guest@example.com",
"feeCents": 5000,
"paidByInviter": false,
"requiresSignup": true
}
  • paidByInviter — the inviter already covered the fee.
  • requiresSignup — the invitee needs a Front9 account before accepting.

Newsletter subscribe

curl -X POST "https://api.front9.io/api/public/v1/orgs/{orgSlug}/subscribers" \
-H "Content-Type: application/json" \
-d '{"email":"fan@example.com"}'

Returns 204 No Content. It's idempotent — subscribing an already-subscribed address still succeeds. A malformed/missing email returns 422 with an errors map.

Unsubscribe

Unsubscribe links carry a signed token. Resolve it to show a confirmation page:

curl "https://api.front9.io/api/public/v1/unsubscribe?token={token}"
{ "orgName": "Acme GC", "email": "fan@example.com", "alreadyUnsubscribed": false }

Then confirm the unsubscribe:

curl -X POST "https://api.front9.io/api/public/v1/unsubscribe?token={token}"

Returns 204 No Content (idempotent).