Rising Tide Developers
SDKCore

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

FieldTypeDescription
namestringEvent name (required)
startTime / endTimeISO 8601 stringStart / end time (required)
maxReservationsnumberTicket cap (required)
minFeeStx / minFeeSbtcstringTicket fee as micro-amounts, BigInt-on-the-wire. Set both; the collector pays in their chosen CurrencyCode ('STX' | 'SBTC') (required)
productTypeSlugstring"ticket" - or the legacy numeric eventTypeId (one is required)
sourceAppIdnumberCreating app id (required)
locationId / locationDatanumber / objectVenue by id or inline
ticketTemplateSetIdnumberTicket visual template set
allowOffers / isTransferablebooleanSecondary-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.