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).