API Documentation
RESTful API for managing bookings, event types, availability, and webhooks
Introduction
The Magpie Meetings API provides programmatic access to your scheduling data. All API requests use JSON and follow REST conventions.
Base URL: https://magpie.diy/api/v1
Authentication
All API requests require authentication using a Bearer token. Include your API token in the Authorization header:
Generate API tokens from your account settings.
Quick Start
Here's a simple example to list your bookings:
Bookings
Manage scheduled meetings and appointments.
/bookings
List all bookings
Query Parameters
| Parameter | Type | Description |
|---|---|---|
status |
string | Filter by status: confirmed, cancelled, or completed |
start_time_gte |
datetime | Filter bookings starting on or after this time |
start_time_lte |
datetime | Filter bookings starting on or before this time |
updated_since |
datetime | Filter bookings updated since this time |
include_archived |
boolean | Include archived bookings (default: false) |
limit |
integer | Results per page (default: 50, max: 200) |
offset |
integer | Pagination offset (default: 0) |
/bookings
Create a new booking
Request Body
/bookings/{uuid}
Get a specific booking
/bookings/{uuid}
Update a booking
/bookings/{uuid}
Delete a booking
/bookings/{uuid}/cancel
Cancel a booking
/bookings/{uuid}/confirm
Confirm a booking as the host
/bookings/{uuid}/archive
Archive a booking
Event Types
Configure different types of meetings you offer.
/event-types
List all event types
Query Parameters
| Parameter | Type | Description |
|---|---|---|
include_inactive |
boolean | Include inactive event types (default: false) |
/event-types
Create a new event type
Request Body
/event-types/{uuid}
Update an event type
/event-types/{uuid}
Delete an event type
Availability
Manage your weekly availability schedule.
/availability
List all availability windows
/availability
Add an availability window
Request Body
Note: day_of_week is 0 (Sunday) through 6 (Saturday). Times are in the account's time zone.
/availability/slots
Get available time slots for a specific date
Query Parameters
| Parameter | Type | Description |
|---|---|---|
date |
string | Date in YYYY-MM-DD format (required) |
duration_minutes |
integer | Meeting duration in minutes (required) |
timezone |
string | IANA time zone that date and each slot's display are in, such as America/Los_Angeles. Defaults to the account's time zone. |
/availability/{uuid}
Delete an availability window
/availability/clear
Clear all availability windows
Users
Get information about the authenticated user.
/users/me
Get current user information
Webhooks
Configure webhooks to receive real-time notifications about events.
/webhooks
List all webhooks
/webhooks
Create a new webhook
Request Body
/webhooks/{id}
Update a webhook
Request Body
/webhooks/{id}
Delete a webhook
Webhook Signature Verification
All webhook requests include an X-Magpie-Signature header for verification:
Verify by computing HMAC-SHA256 of timestamp.body using your webhook secret.
Webhook Events
Available event types for webhook subscriptions:
Booking Events
booking.created- A new booking was createdbooking.updated- A booking was updatedbooking.rescheduled- A booking time was changedbooking.cancelled- A booking was cancelledbooking.confirmed- A booking was confirmed by the hostbooking.deleted- A booking was deletedbooking.archived- A booking was archived
Event Type Events
event-type.created- A new event type was createdevent-type.updated- An event type was updatedevent-type.deleted- An event type was deleted
Proposal Events
Sent to the webhooks of the person who owns the proposal.
proposal.sent- A proposal was sentproposal.viewed- A recipient opened a proposal for the first timeproposal.accepted- A proposal was acceptedproposal.declined- A proposal was declined
Webinar Events
Sent to the webhooks of the person who created the webinar, while they are still a member of its team who can edit. data.webinar has uuid, title, starts_at and state; data.attendee has uuid, name, email, state, registered_at and joined_at. Nothing is sent for a test run.
webinar.registered- Someone registered on a webinar's registration page (data.attendee.stateisregistered,pendingorwaitlisted)webinar.attended- An attendee joined the live webinar for the first time (usually sent within a minute)webinar.ended- A webinar ended;data.registeredanddata.attendedcount its attendees
Webhook Payload Structure
Store
Orders, Products, stock, returns, customers and webhooks for the selected team's Store. Each route needs the matching Store permission; Store webhooks are for team admins. Amounts are whole numbers in the smallest unit of the Store's currency. Send an Idempotency-Key header with a refund or shipment so a retry is not applied twice.
/store-orders
List orders, with payment, fulfillment, tag and date filters
/store-orders/{uuid}
Read an order with its items, shipments, refunds, returns and history
/store-orders/{uuid}/fulfillments
Add a shipment
/store-orders/{uuid}/refunds
Refund all or part of an order and choose what returns to stock
/store-orders/{uuid}/notes
Add a note to the order's history
/store-orders/{uuid}/tags
Replace the order's tags
/store-products
List Products with variant prices, SKUs and stock
/store-products/{uuid}/variants/{variantUuid}
Change a variant's price, compare-at price, SKU or stock on hand
/store-products/{uuid}/variants/{variantUuid}/adjustments
Add or remove stock with a reason
/store-inventory
List variants that track stock
/store-returns
List returns
/store-customers
List customers
/store-webhooks
List Store webhooks (team admins)
/store-webhooks
Add a Store webhook; the response shows its signing secret once
Store webhook events
store.order.paid- An order was paidstore.order.fulfilled- A shipment was addedstore.order.refunded- A refund succeededstore.order.canceled- An unpaid order was canceledstore.product.updated- A Product or its prices changedstore.stock.low- A variant reached its reorder pointstore.return.requested- A customer asked to return items
Store webhooks use the same headers and signature as the webhooks above. X-Magpie-Id is the same on every retry. See Store API and webhooks.
OpenAPI Specification
Download the complete machine-readable API specification:
Use this specification with tools like Postman, Swagger UI, or to generate client libraries.