meeva
Docs

Quick Start

Get started with Meeva in under 5 minutes. This guide walks you through creating your first event type and accepting bookings.

What you'll learn:

Account setup
API key creation
Event types
Availability
Time slots
Creating bookings
1

Create an Account

Sign up for a Meeva account to get started. You'll set up your organization during signup.

To create your account:

  1. Visit meeva.app/signup
  2. Enter your email and create a password
  3. Name your organization (e.g., "Acme Corp")
2

Get Your API Key

API keys authenticate your requests to the Meeva API. Create one from your dashboard.

Follow these steps:

1Navigate to Settings → API Keys in your dashboard
2Click the Create API Key button
3Give it a descriptive name (e.g., "Production API Key")
4Select the required scopes for your application
5Copy and save your API key immediately
⚠️ Important: Save Your Key
Your API key is shown only once. Copy it immediately and store it in a secure location like a password manager or environment variable. Never commit API keys to version control.
3

Create Your First Event Type

Event types define the meetings you offer. Each event type specifies duration, location, and scheduling rules.

Example: 30-Minute Meeting

  • Duration: 30 minutes
  • Type: One-on-one
  • Location: Zoom
  • Slug: /30min
curl -X POST https://meeva.app/v1/event-types \
  -H "Authorization: ApiKey YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "30 Minute Meeting",
    "slug": "30min",
    "description": "Quick sync meeting",
    "durationMinutes": 30,
    "schedulingType": "one_on_one",
    "locationType": "zoom",
    "locationDetails": "https://zoom.us/j/your-meeting-id"
  }'
4

Set Your Availability

Define when you're available for meetings. This controls which time slots are shown to bookers.

Standard Business Hours Example:

  • 📅 Days: Monday – Friday
  • 🕐 Hours: 9:00 AM – 5:00 PM
  • 🌍 Timezone: America/New_York
const response = await fetch('https://meeva.app/v1/availability/schedules', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_JWT_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    timezone: 'America/New_York',
    schedules: [
      { dayOfWeek: 1, slots: [{ startTime: '09:00', endTime: '17:00' }] },
      { dayOfWeek: 2, slots: [{ startTime: '09:00', endTime: '17:00' }] },
      { dayOfWeek: 3, slots: [{ startTime: '09:00', endTime: '17:00' }] },
      { dayOfWeek: 4, slots: [{ startTime: '09:00', endTime: '17:00' }] },
      { dayOfWeek: 5, slots: [{ startTime: '09:00', endTime: '17:00' }] }
    ]
  })
});
📌 Day of Week Values
Days are numbered 0-6, where 0 = Sunday and 6 = Saturday.
5

Get Available Time Slots

Query available time slots to display to your users. The API returns all open slots within your date range.

const params = new URLSearchParams({
  eventTypeId: 'YOUR_EVENT_TYPE_ID',
  start: '2024-01-15',
  end: '2024-01-31',
  timezone: 'America/New_York'
});

const response = await fetch(`https://meeva.app/v1/availability?${params}`);
const data = await response.json();

// Example: Display available slots
console.log(`Found ${data.slots.length} available slots`);
data.slots.forEach(slot => {
  console.log(`${slot.start} - ${slot.end}`);
});
6

Create a Booking

Create a booking when a user selects a time slot. The attendee automatically receives a confirmation email.

Required booking fields:

  • eventTypeId Event type ID
  • startTime ISO 8601 datetime
  • timezone IANA timezone
  • attendee Email, name
const response = await fetch('https://meeva.app/v1/bookings', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
    'Idempotency-Key': `booking-${Date.now()}`
  },
  body: JSON.stringify({
    eventTypeId: 'YOUR_EVENT_TYPE_ID',
    startTime: '2024-01-15T14:00:00Z',
    timezone: 'America/New_York',
    attendee: {
      email: 'attendee@example.com',
      firstName: 'Jane',
      lastName: 'Smith'
    }
  })
});

const data = await response.json();
console.log('Booking created:', data.booking.id);
console.log('Confirmation token:', data.booking.confirmationToken);
🎉 Success!
Congratulations! You've created your first booking. The attendee will receive a confirmation email with all meeting details.

Next Steps

Now that you've mastered the basics, explore these advanced features: