For the complete documentation index, see llms.txt.

How do I add scheduling/booking to my app?

Adding scheduling to your app requires three things: check availability, create a booking, and handle confirmation. Vennio provides a REST API and JavaScript SDK that do all three in a few lines of code.

The answer

To add scheduling to your app with Vennio:

  1. Install @vennio/sdk
  2. Call GET /v1/availability/slots to show open times to your user
  3. Call POST /v1/bookings when the user picks a slot

Vennio handles the rest: calendar event creation, confirmation emails to both parties, double-booking prevention, and webhook delivery.

Install the SDK

npm install @vennio/sdk
Server-side only

Use a secret key (vennio_sk_live_*) only in server-side code. For client-side booking widgets, use @vennio/react with a publishable key (vennio_pk_live_*).

Get available slots

Query availability for your business. Returns open time slots accounting for existing calendar events and bookings.

import { createVennioClient } from '@vennio/sdk'

const client = createVennioClient({ apiKey: process.env.VENNIO_API_KEY })

const res = await client.availability.getSlots({
  query: {
    business_id: 'YOUR_BUSINESS_ID',
    duration_minutes: 30,
    timezone: 'America/New_York',
  },
})

console.log(res.data.slots)
// [
//   { start: "2026-04-01T09:00:00-05:00", end: "2026-04-01T09:30:00-05:00", ... },
//   { start: "2026-04-01T10:00:00-05:00", end: "2026-04-01T10:30:00-05:00", ... }
// ]
curl "https://api.vennio.app/v1/availability/slots?business_id=YOUR_BUSINESS_ID&duration_minutes=30&timezone=America%2FNew_York" \
  -H "Authorization: Bearer vennio_sk_live_YOUR_KEY"

Create a booking

Once the user picks a slot, create the booking. Vennio confirms it immediately and fires side effects automatically.

const bookingRes = await client.bookings.create({
  body: {
    business_id: 'YOUR_BUSINESS_ID',
    customer_email: 'customer@example.com',
    customer_name: 'Jane Doe',
    start_time: '2026-04-01T09:00:00-05:00',
    end_time: '2026-04-01T09:30:00-05:00',
  },
})

const booking = bookingRes.data.booking
console.log('Booking confirmed:', booking.id, booking.status)
// Booking confirmed: 550e8400-... confirmed
curl -X POST https://api.vennio.app/v1/bookings \
  -H "Authorization: Bearer vennio_sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "business_id": "YOUR_BUSINESS_ID",
    "customer_email": "customer@example.com",
    "customer_name": "Jane Doe",
    "start_time": "2026-04-01T09:00:00-05:00",
    "end_time": "2026-04-01T09:30:00-05:00"
  }'
{
  "booking": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "status": "confirmed",
    "business_id": "YOUR_BUSINESS_ID",
    "customer_name": "Jane Doe",
    "customer_email": "customer@example.com",
    "start_time": "2026-04-01T09:00:00-05:00",
    "end_time": "2026-04-01T09:30:00-05:00",
    "created_at": "2026-03-31T10:00:00Z"
  }
}

Add a booking page (no code)

If you want a shareable booking link without building a custom UI, create a Venn Link. Vennio hosts the booking page for you.

curl -X POST https://api.vennio.app/v1/venn-links \
  -H "Authorization: Bearer vennio_sk_live_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "30-minute intro call",
    "duration_minutes": 30,
    "business_id": "YOUR_BUSINESS_ID"
  }'

The response includes a url field — share that link and customers can book directly without any frontend work on your part.

Next steps