JSON feed
Fetch events as JSON and build your own UI or integrate with other tools.
Basic usage
Shell
curl https://embedacal.com/api/v1/feeds/socal-events/events.jsonResponse format
JSON
{
"feed": "socal-events",
"events": [
{
"id": "k57f...",
"title": "Summer Festival 2025",
"description": "Annual summer festival at the park",
"displayDate": "2025-07-04T00:00:00.000Z",
"startDate": "2025-07-04T10:00:00.000Z",
"endDate": "2025-07-04T18:00:00.000Z",
"isTimedEvent": true,
"isMultiDay": false,
"timeZoneId": "America/Los_Angeles",
"latitude": 34.0522,
"longitude": -118.2437,
"fullAddress": "123 Main St, Los Angeles, CA 90001",
"address": "123 Main St, Los Angeles, CA",
"locationName": "123 Main St",
"city": "Los Angeles",
"state": "California",
"stateCode": "CA",
"zipcode": "90001",
"geocoded": true,
"feedSlug": "socal-events",
"permalink": "/api/v1/events/2025/07/04/summer-festival-2025"
}
],
"hasMore": true
}Query parameters
| Parameter | Default | Description |
|---|---|---|
| per_page | 20 | Number of events per page (max 100) |
| search | — | Filter by keyword match in title, location, city, state |
JavaScript example
JavaScript
async function getEvents(feedSlug) {
const res = await fetch(
`https://embedacal.com/api/v1/feeds/${feedSlug}/events.json?per_page=50`
);
const data = await res.json();
return data.events;
}
const events = await getEvents("socal-events");
events.forEach(event => {
console.log(event.title, event.startDate, event.city);
});Combined org feed
Get events from all feeds in an organization:
Shell
curl https://embedacal.com/api/v1/orgs/my-org/eventsCaching
All JSON endpoints return Cache-Control: public, s-maxage=300 headers. Behind Cloudflare, responses are cached at the edge for 5 minutes and served stale for up to 10 minutes while revalidating.
CORS
All API endpoints return Access-Control-Allow-Origin: * so you can call them from any domain, including browser-side JavaScript.