Events (SDK)
SDK methods for EVENT-domain smart products - ticketed events with on-chain RSVPs.
EVENT-domain smart products represent ticketed events. The product type is ticket.
Creating an event
Events are created via Profile Hub in the UI. Programmatically, use rtClient.smartProducts.createEvent(input) (or the equivalent rtClient.events.createEvent), which returns ApiResponse<Event>:
const { data: event } = await rtClient.smartProducts.createEvent({
name: "Rising Tide Meetup",
description: "Monthly protocol community meetup",
productTypeSlug: "ticket",
startTime: "2026-06-15T18:00:00Z",
endTime: "2026-06-15T21:00:00Z",
maxReservations: 100,
minFeeStx: "5000000",
minFeeSbtc: "500",
locationData: { name: "Online" },
ticketTemplateSetId: 4,
sourceAppId: APP_ID,
});Events carry structured top-level fields - there is no free-form content blob (that is a PAGE-domain shape). Provide the venue with either locationId (an existing Location) or an inline locationData object.
Input fields
| Field | Type | Description |
|---|---|---|
name | string | Event name (required) |
startTime / endTime | ISO 8601 string | Start / end time (required) |
maxReservations | number | Ticket cap (required) |
minFeeStx / minFeeSbtc | string | Ticket fee as micro-amounts, BigInt-on-the-wire. Set both; the collector pays in their chosen CurrencyCode ('STX' | 'SBTC') (required) |
productTypeSlug | string | "ticket" - or the legacy numeric eventTypeId (one is required) |
sourceAppId | number | Creating app id (required) |
locationId / locationData | number / object | Venue by id or inline |
ticketTemplateSetId | number | Ticket visual template set |
allowOffers / isTransferable | boolean | Secondary-market flags |
Lifecycle
EVENT products use: DRAFT -> PUBLISHED -> ARCHIVED. After the event date passes, the organizer typically archives the product.
Querying events
// Cross-domain read via the substrate service
const res = await rtClient.smartProducts.list({ domain: "EVENT", status: "PUBLISHED" });
const events = res.data.items;
// Event-typed read surface with event-specific filters (startAfter, locationId, ...)
const upcoming = await rtClient.events.listEvents({
status: "PUBLISHED",
startAfter: new Date().toISOString(),
});
// Single event by id
const { data: event } = await rtClient.events.getEventById(eventId);React hook
The core SDK is headless - it has no React hooks. React query hooks for reading events ship from @rising-tide/ui. See the React hooks reference.