πŸ“˜ Product Documentation

PinmyCal Documentation

A production-ready guide for onboarding, authentication, booking workflows, webhooks, and error handling.

⚑ First Integration

~5 minutes

πŸ“š Guide Sections

6 modules

πŸ”„ Update Cycle

Versioned docs

Overview

PinmyCal APIs power end-to-end scheduling: availability lookup, booking creation, conferencing links, and lifecycle webhooks.

REST API Idempotent-safe Timezone aware Webhook events

Quickstart

Follow this minimum sequence to publish your first booking flow.

1

πŸ”‘Validate API token

GET
GET /v1/users/me
Authorization: Bearer pmc_live_xxxxxxxxxxxx
2

πŸ“…Fetch availability

GET
GET /v1/availability?eventTypeId=evt_intro&date=2026-03-10&timezone=Asia/Kolkata
3

🧾Create booking

POST
POST /v1/bookings
{
  "eventTypeId": "evt_intro",
  "invitee": {"name": "Ava", "email": "ava@startup.io"},
  "start": "2026-03-10T11:00:00Z"
}

Authentication

All protected endpoints require bearer tokens. Keep tokens server-side and rotate keys periodically.

Authorization: Bearer pmc_live_xxxxxxxxxxxx
Content-Type: application/json
X-Request-Id: req_001

Core Endpoints

Primary operations used by most production integrations.

GET /v1/event-types

Returns active event templates with duration, host, and routing metadata.

GET /v1/availability

Returns open slots for a selected event type, date, and timezone.

POST /v1/bookings

Creates booking, reserves slot, and attaches conferencing details.

PATCH /v1/bookings/{id}

Reschedules existing bookings with conflict checks and notifications.

DELETE /v1/bookings/{id}

Cancels booking and releases the slot back to availability.

GET /v1/bookings/{id}

Returns booking status, participant details, and meeting metadata.

Webhooks

Subscribe to booking lifecycle events and verify request signatures before processing.

booking.created
booking.rescheduled
booking.cancelled

Header: X-PMC-Signature: sha256=...
Retry: exponential backoff up to 24 hours

Errors & Retries

Standardized error schema with request IDs for safer debugging and recovery.

200 OK

Request completed successfully.

{"status":"ok","requestId":"req_9Gf21"}

409 SLOT_UNAVAILABLE

Refresh availability and offer nearest alternatives.

{"status":"error","code":"SLOT_UNAVAILABLE"}

429 / 5xx

Retry with jittered backoff and preserve idempotency keys.

{"status":"error","code":"RATE_LIMITED"}