API reference
The EmbedACal REST API is read-only. All endpoints return JSON with CORS headers and edge caching.
Base URL: https://embedacal.com/api/v1
Events
/feeds/:slug/eventsList upcoming events for a feed. Returns future events sorted by display date.
| Parameter | Type | Description |
|---|---|---|
| per_page | number | Events per page (max 100, default 20) |
| search | string | Filter by keyword (title, location, city, state) |
curl https://embedacal.com/api/v1/feeds/socal-events/events?per_page=50/feeds/:slug/events/:eventIdGet a single event by ID.
curl https://embedacal.com/api/v1/feeds/socal-events/events/k57f.../feeds/:slug/events/nearbyFind events near a location using Haversine distance calculation.
| Parameter | Type | Description |
|---|---|---|
| lat | number | Latitude (required unless using state) |
| lng | number | Longitude (required unless using state) |
| radius | number | Radius in miles (default 100) |
| state | string | Alternative: filter by state name |
| per_page | number | Max results (default 20) |
curl 'https://embedacal.com/api/v1/feeds/socal-events/events/nearby?lat=34.05&lng=-118.24&radius=50'/feeds/:slug/calendar/:year/:monthGet events for a specific calendar month.
curl https://embedacal.com/api/v1/feeds/socal-events/calendar/2025/07/feeds/:slug/events.jsonRaw JSON feed for developers. Same data as /events but at an explicit .json URL.
| Parameter | Type | Description |
|---|---|---|
| per_page | number | Events per page (max 100, default 20) |
curl https://embedacal.com/api/v1/feeds/socal-events/events.jsonOrganization feeds
/orgs/:orgSlug/eventsGet events from all feeds in an organization, merged and sorted.
| Parameter | Type | Description |
|---|---|---|
| per_page | number | Events per page (max 100, default 20) |
| search | string | Filter by keyword |
curl https://embedacal.com/api/v1/orgs/my-org/events/orgs/:orgSlug/custom/:customSlugGet events from a custom feed (filtered subset). Pro/Enterprise feature.
| Parameter | Type | Description |
|---|---|---|
| per_page | number | Events per page (max 100, default 20) |
curl https://embedacal.com/api/v1/orgs/my-org/custom/downtown-eventsSEO permalinks
/events/:year/:month/:day/:event-slugHuman-readable event URL for SEO. Matches by display date and slugified title.
curl https://embedacal.com/api/v1/events/2025/07/04/summer-festival-2025Widget config
/widget-config/:slugWidget configuration and feed metadata for the embeddable widget.
curl https://embedacal.com/api/v1/widget-config/socal-eventsResponse headers
CORS: Access-Control-Allow-Origin: * — all endpoints are callable from any domain.
Caching: Cache-Control: public, s-maxage=300, stale-while-revalidate=600 — 5 min edge cache, 10 min stale-while-revalidate.
Errors: Return { "error": "message" } with appropriate HTTP status codes (400, 404, 500).