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:
Create an Account
Sign up for a Meeva account to get started. You'll set up your organization during signup.
To create your account:
- →Visit meeva.app/signup
- →Enter your email and create a password
- →Name your organization (e.g., "Acme Corp")
Get Your API Key
API keys authenticate your requests to the Meeva API. Create one from your dashboard.
Follow these steps:
"Production API Key")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"
}'const response = await fetch('https://meeva.app/v1/event-types', {
method: 'POST',
headers: {
'Authorization': 'ApiKey YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
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'
})
});
const data = await response.json();
console.log('Event type created:', data.eventType.id);import requests
response = requests.post(
'https://meeva.app/v1/event-types',
headers={
'Authorization': 'ApiKey YOUR_API_KEY',
'Content-Type': 'application/json'
},
json={
'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'
}
)
data = response.json()
print(f"Event type created: {data['eventType']['id']}")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' }] }
]
})
});0-6, where 0 = Sunday and 6 = Saturday.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}`);
});Create a Booking
Create a booking when a user selects a time slot. The attendee automatically receives a confirmation email.
Required booking fields:
eventTypeIdEvent type IDstartTimeISO 8601 datetimetimezoneIANA timezoneattendeeEmail, 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);Next Steps
Now that you've mastered the basics, explore these advanced features: