Calendar API · Available

Not a beta. Not a paid add-on.

Create event attendees, verify participation and read RSVP state over HTTP. Available on every plan including the free one, with fair-use rate limits — most competing tools put API access behind a paid tier.

Free plan includes API access and one embeddable capture form.

curl https://api.bloomod.com/v1/invites \
  -H "Authorization: Bearer $BLOOMOD_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "attendee_id": "att_0182",
    "event": "quarterly_filing_webinar",
    "starts_at": "2026-08-13T10:30:00+05:30",
    "duration_minutes": 45,
    "requires_approval": true
  }'

# 202 Accepted
# { "id": "inv_7Kq2", "state": "pending_approval" }

Illustrative endpoints for the template. No live API is attached.

Endpoints

Six resources cover the product.

API endpoints
MethodPathDoesApproval
POST/v1/events/:id/attendeesAdd an attendee to one event with a verification statusn/a
PATCH/v1/events/:id/attendees/:attendeeUpdate attendee details or verification statusn/a
POST/v1/invitesCreate a single invitationRequired
POST/v1/campaignsCreate a bulk campaign from a segmentRequired
GET/v1/invites/:idRead lifecycle and RSVP staten/a
DELETE/v1/invites/:idCancel and broadcast the cancellationRequired
A write to /v1/invites returns 202 Accepted, not 201 Created. The invite is queued and waiting for human approval — the API cannot bypass the approval gate, by design.
Authentication

Scoped keys, not one master token.

Keys carry scopes and belong to a business, so a key that creates attendees cannot approve a campaign.

  • Bearer token in the Authorization header
  • Separate test and live keys
  • Per-key scopes and rotation
  • Key use recorded in account activity

Scope

attendees:write

Create and update event attendees and verification status.

Scope

invites:write

Queue invitations and campaigns for approval.

Scope

invites:read

Read lifecycle stage and RSVP state.

Scope

webhooks:manage

Register endpoints for RSVP and delivery events.

Webhooks

RSVP state, pushed.

Rather than polling every invite, subscribe to the state changes you care about and write them into your own system.

invite.delivered invite.accepted invite.tentative invite.declined invite.bounced campaign.completed customer.unsubscribed
POST your-endpoint
{
  "type": "invite.accepted",
  "created": "2026-08-13T05:12:44Z",
  "data": {
    "invite_id": "inv_7Kq2",
    "attendee_id": "att_0182",
    "campaign_id": "cmp_31f",
    "state": "accepted",
    "calendar": "google"
  }
}
Limits

Fair use, stated plainly.

60

Requests per minute, free plan

10

Concurrent campaign creates

2

Live keys, free plan

30d

Webhook retry window

Illustrative values for this template. Actual limits depend on the selected plan and approved sending configuration, and rise with verification and account history.

Build against it on the free plan.