REST API v1 · MCP

Build attendance workflows without the dashboard

Manage every event, RSVP, reminder and subscription calendar in an account through JSON—or give an AI client the same capabilities through MCP.

create-event.sh
export HEYATTEND_API_BASE_URL="https://heyattend.com/api/v1"
export HEYATTEND_API_TOKEN="hat_…"

curl --request POST "$HEYATTEND_API_BASE_URL/events" \
  --header "Authorization: Bearer $HEYATTEND_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "title": "Summer product launch",
    "start_at": "2026-08-12T18:00:00+02:00",
    "end_at": "2026-08-12T20:00:00+02:00",
    "timezone": "Europe/Madrid",
    "status": "published"
  }'

Quickstart

One key, one account

Create a key in the dashboard, keep it on your server, and send it as a Bearer token. All reads and writes are automatically isolated to the key’s account.

curl --request POST "$HEYATTEND_API_BASE_URL/events" \
  --header "Authorization: Bearer $HEYATTEND_API_TOKEN" \
  --header "Content-Type: application/json" \
  --data '{
    "title": "Summer product launch",
    "start_at": "2026-08-12T18:00:00+02:00",
    "end_at": "2026-08-12T20:00:00+02:00",
    "timezone": "Europe/Madrid",
    "status": "published"
  }'
1

Create a key

Dashboard → Developer API. The full key appears once.

2

Set the base URL

https://heyattend.com/api/v1

3

Send JSON

Use Content-Type: application/json for writes.

Security

Authentication

API keys start with hat_. They are stored as SHA-256 hashes, can expire, and can be revoked immediately. A key grants full API access to its account, so never expose it in browser code or source control.

Authorization: Bearer hat_your_key

Endpoint group

Events

Create, publish, update and remove events in the token’s account.

GET /events List events
Filters: q, status, starts_after, starts_before, sort, direction, page, per_page.
https://heyattend.com/api/v1/events
POST /events Create an event
title and start_at are required.
https://heyattend.com/api/v1/events
GET /events/{id} Get an event
Includes public URL, calendar IDs and click totals.
https://heyattend.com/api/v1/events/{id}
PATCH /events/{id} Update an event
Send only the fields that should change. PUT is also accepted.
https://heyattend.com/api/v1/events/{id}
DELETE /events/{id} Delete an event
Returns 204 and cascades dependent RSVP and notification data.
https://heyattend.com/api/v1/events/{id}

Endpoint group

RSVPs

Manage attendee responses and each event’s RSVP form configuration.

GET /rsvps List RSVP responses
Filters: event_id, status, q, page and per_page.
https://heyattend.com/api/v1/rsvps
POST /events/{eventId}/rsvps Create an RSVP
Administrative creation; it does not send attendee email.
https://heyattend.com/api/v1/events/{eventId}/rsvps
GET /rsvps/{id} Get an RSVP
Private IP and confirmation tokens are never returned.
https://heyattend.com/api/v1/rsvps/{id}
PATCH /rsvps/{id} Update an RSVP
Change status, attendee details, party size, answers or tags.
https://heyattend.com/api/v1/rsvps/{id}
DELETE /rsvps/{id} Delete an RSVP
Returns 204.
https://heyattend.com/api/v1/rsvps/{id}
GET /events/{eventId}/rsvp-form Get RSVP form settings
Returns defaults when the event has no saved form yet.
https://heyattend.com/api/v1/events/{eventId}/rsvp-form
PATCH /events/{eventId}/rsvp-form Configure the RSVP form
Manage fields, capacity, waitlist, messages and settings.
https://heyattend.com/api/v1/events/{eventId}/rsvp-form

Endpoint group

Notifications

Manage event-triggered email and web-push notification rules.

GET /notifications List notifications
Filters: event_id, channel, enabled, page and per_page.
https://heyattend.com/api/v1/notifications
POST /events/{eventId}/notifications Create a notification
Supports RSVP-relative and event-relative triggers.
https://heyattend.com/api/v1/events/{eventId}/notifications
GET /notifications/{id} Get a notification
Includes a human-readable schedule summary.
https://heyattend.com/api/v1/notifications/{id}
PATCH /notifications/{id} Update a notification
HTML bodies are sanitized before storage.
https://heyattend.com/api/v1/notifications/{id}
DELETE /notifications/{id} Delete a notification
Returns 204 and removes its delivery log.
https://heyattend.com/api/v1/notifications/{id}

Endpoint group

Calendars

Publish subscription calendars and control which account events they contain.

GET /calendars List calendars
Filters: q, is_public, page and per_page.
https://heyattend.com/api/v1/calendars
POST /calendars Create a calendar
Pass event_ids to attach events in display order.
https://heyattend.com/api/v1/calendars
GET /calendars/{id} Get a calendar
Includes landing, HTTPS feed and webcal URLs.
https://heyattend.com/api/v1/calendars/{id}
PATCH /calendars/{id} Update a calendar
event_ids replaces the complete event set when supplied.
https://heyattend.com/api/v1/calendars/{id}
DELETE /calendars/{id} Delete a calendar
Returns 204; attached events are not deleted.
https://heyattend.com/api/v1/calendars/{id}

JSON contracts

Resource fields

Timestamps use RFC 3339 on input and UTC on output. Event and calendar timezones use IANA names such as Europe/Madrid. IDs, account ownership, slugs, feed tokens and audit timestamps are server-managed.

Event write fields

title description status start_at end_at timezone all_day clock_24h is_online location location_url location_map_url organizer_mode organizer_name organizer_email design_style design_id more_info_enabled more_info_label more_info_url theme reminders

RSVP write fields

status name email guests_count answers tags locale

Notification write fields

name channel trigger offset_value offset_unit audience subject body_html body_text enabled

Calendar write fields

name description timezone is_public organizer_mode organizer_name organizer_email design_style theme event_ids
List responses use {"data": [...], "meta": {"page": 1, "per_page": 25, "total": 42, "total_pages": 2}}. Single-resource responses use {"data": {...}}. per_page is capped at 100.

Model Context Protocol

Give an AI client the same controls

Connect to the public Streamable HTTP endpoint with the same account API key. The MCP service delegates every operation to the REST API, so account isolation, validation and revocation rules stay identical.

1. Set your API key

export HEYATTEND_API_TOKEN="hat_…"

MCP URL: https://heyattend.com/mcp

2. Add the remote server

{
    "mcpServers": {
        "heyattend": {
            "url": "https://heyattend.com/mcp",
            "headers": {
                "Authorization": "Bearer ${env:HEYATTEND_API_TOKEN}"
            }
        }
    }
}

Available tools

events_list events_get events_create events_update events_delete rsvps_list rsvps_get rsvps_create rsvps_update rsvps_delete rsvp_form_get rsvp_form_update notifications_list notifications_get notifications_create notifications_update notifications_delete calendars_list calendars_get calendars_create calendars_update calendars_delete

Failures

Errors and status codes

400

Invalid filter or malformed request

401

Missing, expired, revoked or invalid API key

404

The resource is outside the key’s account or does not exist

422

Validation failed; inspect error.details by field

204

A delete completed successfully with no response body

500

The operation could not be persisted