๐ JSON API
CORS-enabled endpoints for fetching a single registration form or event as JSON. Useful when you want to build your own UI on top of EasyShul data — the same endpoints power the embed widget.
Get a single event
Response
{
"ok": true,
"data": {
"_id": "69acff4de1f05800267057e6",
"eventName": "Mercaz Shabbaton at Schechter",
"date": "2026-04-17T00:00:00.000Z",
"eventStartDate": "2026-03-08T00:00:00.000Z",
"eventEndDate": "2026-04-07T03:30:00.000Z",
"description": "<p>Come to camp...</p>",
"active": true,
"archived": false,
"freeEvent": false,
"eventDetails": {
"eventType": "In-Person",
"eventAddress": { "formattedAddress": "Camp Solomon Schechter, WA" },
"contactInfo": { "firstName": "...", "email": "...", "showEmail": false },
"infiniteCapacity": true
},
"eventDuration": { "key": "24 hours", "value": 1440 },
"eventPricing": {
"prices": [ /* tickets / variants */ ],
"totalAmount": 9910
}
}
}Get a single form
The response shape is the same as for events, but with form-specific field names: formName, formStartDate, formEndDate, formDetails, formPricing, freeForm, etc.
Try it from JavaScript
The endpoints set Access-Control-Allow-Origin: *, so you can call them directly from a browser without a proxy.
Errors
| Status | When |
|---|---|
404 | Organization key, event ID, or form ID not found |
500 | Upstream EasyShul API error (see error field) |
Errors return a JSON body of the shape { "ok": false, "error": "..." }.
Form template (field definitions)
Returns the form's field definitions used by the embed widget to render inline form fields:
{
"ok": true,
"data": {
"freeForm": true,
"fields": [
{ "id": "93EF...", "element": "TextInput", "label": "First Name", "required": true },
{ "id": "986A...", "element": "EmailInput", "label": "E-Mail", "required": true },
{ "id": "7BBD...", "element": "RadioButtons", "label": "Contact Method", "required": false,
"options": [{ "text": "Email" }, { "text": "Phone" }] }
]
}
}Submit a free form
Only works for forms with no payment required (freeForm: true). Returns 400 for paid forms. On success:
{ "ok": true, "participantIds": ["69f97..."] }Related
- Embed widget — pre-built UI on top of these endpoints.
- Calendar feed — aggregated, no individual lookup.
- OData — bulk read access for Excel and Power BI (requires login).