Developers
Guide

Bookings API

The appointments people book through your Calendar Hub pages, read over REST: one booking by its id, or a page of them by date, organizer, event type or the email of the person who booked. It uses the same API keys and the same base URL as the Constituents and Events APIs, and the same field names as the booking webhooks, which tell you the moment a booking is made, moved, canceled or marked a no-show.

Authentication

Use the same key as the other APIs (Subscription Settings -> API Keys, team admins only), sent as a bearer token:

Authorization: Bearer argenta_sk_...

The base URL is https://argentasoftware.com/api/v1. These are read endpoints, so a read-only key is enough. Every booking returned belongs to your own account, whoever it is with.

Endpoints

Method & pathWhat it does
GET /bookings/{id}One booking still on the calendar.
GET /bookingsA page of bookings still on the calendar, latest start first.

Bookings are read-only here: people book, move and cancel through your Calendar Hub pages, and staff through Argenta. A canceled booking leaves the calendar, so it is not returned; the booking.canceled webhook carries it at the moment it is canceled.

Search parameters

ParameterMeaning
startDate, endDateAppointment dates, inclusive, on the organizer's own clock (2026-11-01). Either may be left out.
userIdOnly this organizer's bookings (FkUser).
eventTypeIdOnly bookings of this event type (FkEventType).
emailOnly bookings made with this email address.
page, pageSizePaging. pageSize is 25 unless you ask for up to 100.

Read bookings

curl "https://argentasoftware.com/api/v1/bookings?startDate=2026-11-01&endDate=2026-11-30" \
  -H "Authorization: Bearer argenta_sk_..."
{
  "totalCount": 1,
  "page": 1,
  "pageSize": 25,
  "items": [
    {
      "PkItem": 45672,
      "FkTeam": 6,
      "Status": "scheduled",
      "FkUser": 37,
      "OrganizerName": "Allistair Wonderland",
      "FkCalendar": 4,
      "FkEventType": 130,
      "EventTypeName": "60 Min Appointment",
      "StartUtc": "2026-11-18T14:00:00Z",
      "EndUtc": "2026-11-18T15:00:00Z",
      "StartDateTime": "2026-11-18T09:00:00",
      "EndDateTime": "2026-11-18T10:00:00",
      "TimeZoneId": "America/New_York",
      "ParticipantName": "Jane Smith",
      "ParticipantEmail": "[email protected]",
      "ParticipantPhone": "5551234567",
      "ParticipantTimeZoneId": "America/Chicago",
      "OrganizationName": "Smith Family Foundation",
      "ItemLocation": null,
      "VideoProvider": "Zoom",
      "VideoJoinUrl": "https://zoom.us/j/1234567890",
      "IsNoShow": false,
      "DateCreated": "2026-11-02T16:41:09"
    }
  ]
}

The fields

FieldMeaning
PkItemThe booking's id.
FkUser, OrganizerNameThe organizer the booking is with.
FkCalendarThe calendar it was booked on.
FkEventType, EventTypeNameThe event type that was booked.
StartUtc, EndUtcThe appointment in UTC.
StartDateTime, EndDateTime, TimeZoneIdThe same times on the organizer's own clock, and that clock's time zone.
ParticipantName, ParticipantEmail, ParticipantPhone, OrganizationNameThe person who booked, as they entered themselves. ParticipantName is null if staff have since rewritten the appointment's description.
ParticipantTimeZoneIdThe time zone the person who booked was shown times in.
ItemLocation, VideoProvider, VideoJoinUrlWhere it happens: a place, or a Google Meet or Zoom link once one has been made.
IsNoShowStaff marked that the person who booked did not come.

Errors

StatusCodeWhen
401unauthorizedMissing, malformed, revoked, or unknown key.
404not_foundNo booking with that id on your account's calendars.
429rate_limitedSlow down and retry with backoff.

Rate limits
Two limits apply, not one. Per key it is 15 requests a second and 600 a minute. There is also a per-IP limit of 40 a second and 1200 a minute, checked before we even read your key, so several keys calling from the same server share that budget. Either limit returns a 429 with a Retry-After header saying how many seconds to wait. The AI writing assistant is metered on its own separate from these: 10 requests a minute and 100 an hour for each person, and 1,000 an hour across the whole system. It also refuses text longer than 10,000 characters before any limit is counted.

The same shared limit as every other /api/v1 endpoint, counted per key. To follow bookings as they happen, subscribe to the booking webhooks rather than polling this list.

Reconnecting…

Whoops!

You've Encountered An Error

Something went wrong on our end. Don't worry, our development team has already been notified, and we'll get it fixed as soon as we can.

Please avoid repeating the same action for now. A quick reload usually gets you going again.