Users are the foundation of scheduling in meetergo. Each user has their own availability schedule, meeting types, and booking URL.
User Types
| Type | Description | Created Via |
|---|
| Platform User | API-created users for your platform’s customers | POST /v4/user |
| Regular User | Dashboard users who sign up directly | Dashboard |
Platform users are designed for multi-tenant scenarios where you’re building scheduling for your users.
Create a User
Create a platform user with automatic defaults:
curl -X POST "https://api.meetergo.com/v4/user" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"email": "[email protected]",
"givenName": "John",
"familyName": "Smith",
"timezone": "Europe/Berlin"
}'
Request Body
| Field | Type | Required | Description |
|---|
email | string | Yes | User’s email address (must be unique) |
givenName | string | Yes | First name |
familyName | string | Yes | Last name |
timezone | string | Yes | IANA timezone (e.g., Europe/Berlin, America/New_York) |
availability | object | No | Custom availability schedule |
meetingType | object | No | Custom meeting type |
Response
{
"userId": "550e8400-e29b-41d4-a716-446655440000",
"availabilityId": "660e8400-e29b-41d4-a716-446655440001",
"meetingTypeId": "770e8400-e29b-41d4-a716-446655440002",
"bookingUrl": "https://cal.meetergo.com/john-smith/30min-meeting",
"companyId": "880e8400-e29b-41d4-a716-446655440003"
}
Automatic Provisioning
When you create a user without custom settings, meetergo automatically creates:
| Resource | Default |
|---|
| Availability | Monday-Friday, 9:00-17:00 in user’s timezone |
| Meeting Type | 30-minute meeting named “30min Meeting” |
| Booking URL | https://cal.meetergo.com/{slug}/{meeting-slug} |
Custom Availability & Meeting Type
Specify custom availability and meeting type during creation:
{
"email": "[email protected]",
"givenName": "John",
"familyName": "Smith",
"timezone": "Europe/Berlin",
"availability": {
"name": "Business Hours",
"timezone": "Europe/Berlin",
"schedule": [
{
"dayOfWeek": "monday",
"intervals": [
{ "from": "09:00", "to": "12:00" },
{ "from": "13:00", "to": "17:00" }
]
},
{
"dayOfWeek": "tuesday",
"intervals": [{ "from": "09:00", "to": "17:00" }]
},
{
"dayOfWeek": "wednesday",
"intervals": [{ "from": "09:00", "to": "17:00" }]
},
{
"dayOfWeek": "thursday",
"intervals": [{ "from": "09:00", "to": "17:00" }]
},
{
"dayOfWeek": "friday",
"intervals": [{ "from": "09:00", "to": "15:00" }]
}
]
},
"meetingType": {
"name": "Discovery Call",
"duration": 45,
"slug": "discovery-call"
}
}
Get Current User
Retrieve the authenticated user’s details:
curl -X GET "https://api.meetergo.com/v4/user/me" \
-H "Authorization: Bearer YOUR_API_KEY"
Response
{
"id": "550e8400-e29b-41d4-a716-446655440000",
"email": "[email protected]",
"givenName": "John",
"familyName": "Smith",
"fullName": "John Smith",
"timezone": "Europe/Berlin",
"companyId": "880e8400-e29b-41d4-a716-446655440003",
"createdAt": "2024-01-15T10:30:00Z"
}
Get Bookable Windows
Query available time slots for a user:
curl -X GET "https://api.meetergo.com/v4/user/{userId}/bookable-windows?startDate=2024-01-15&endDate=2024-01-20&meetingTypeId={meetingTypeId}" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "x-meetergo-api-user-id: {userId}"
Query Parameters
| Parameter | Type | Required | Description |
|---|
startDate | string | Yes | Start date (YYYY-MM-DD) |
endDate | string | Yes | End date (YYYY-MM-DD) |
meetingTypeId | string | No | Filter by specific meeting type |
timezone | string | No | Return times in this timezone |
Response
{
"windows": [
"2024-01-15T09:00:00Z",
"2024-01-15T09:30:00Z",
"2024-01-15T10:00:00Z",
"2024-01-15T10:30:00Z",
"2024-01-15T11:00:00Z"
]
}
Timezones
Use valid IANA timezone identifiers:
| Example | Region |
|---|
Europe/Berlin | Germany |
Europe/London | UK |
America/New_York | US East Coast |
America/Los_Angeles | US West Coast |
Asia/Tokyo | Japan |
Australia/Sydney | Australia |
Best Practices
Store user IDs - Save the userId returned from user creation to reference the user later
Use appropriate timezones - Set the timezone based on where your user is located
Customize for your use case - Use custom availability and meeting types that match your business needs
Email uniqueness - Each user email must be unique within your company