Skip to main content
Users are the foundation of scheduling in meetergo. Each user has their own availability schedule, meeting types, and booking URL.

User Types

TypeDescriptionCreated Via
Platform UserAPI-created users for your platform’s customersPOST /v4/user
Regular UserDashboard users who sign up directlyDashboard
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": "john.smith@example.com",
    "givenName": "John",
    "familyName": "Smith",
    "timezone": "Europe/Berlin"
  }'

Request Body

FieldTypeRequiredDescription
emailstringYesUser’s email address (must be unique)
givenNamestringYesFirst name
familyNamestringYesLast name
timezonestringYesIANA timezone (e.g., Europe/Berlin, America/New_York)
availabilityobjectNoCustom availability schedule
meetingTypeobjectNoCustom 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:
ResourceDefault
AvailabilityMonday-Friday, 8:00-17:00 in user’s timezone
Meeting Type30-minute meeting named “30min Meeting”
Booking URLhttps://cal.meetergo.com/{slug}/{meeting-slug}

Custom Availability & Meeting Type

Specify custom availability and meeting type during creation:
{
  "email": "john.smith@example.com",
  "givenName": "John",
  "familyName": "Smith",
  "timezone": "Europe/Berlin",
  "availability": {
    "name": "Business Hours",
    "timezone": "Europe/Berlin",
    "schedule": {
      "monday": { "enabled": true, "hours": [{ "start": "09:00", "end": "12:00" }, { "start": "13:00", "end": "17:00" }] },
      "tuesday": { "enabled": true, "hours": [{ "start": "09:00", "end": "17:00" }] },
      "wednesday": { "enabled": true, "hours": [{ "start": "09:00", "end": "17:00" }] },
      "thursday": { "enabled": true, "hours": [{ "start": "09:00", "end": "17:00" }] },
      "friday": { "enabled": true, "hours": [{ "start": "09:00", "end": "15:00" }] },
      "saturday": { "enabled": false, "hours": [] },
      "sunday": { "enabled": false, "hours": [] }
    }
  },
  "meetingType": {
    "name": "Discovery Call",
    "duration": 45,
    "slug": "discovery-call",
    "channel": "phone"
  }
}

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": "john.smith@example.com",
  "givenName": "John",
  "familyName": "Smith",
  "fullName": "John Smith",
  "timezone": "Europe/Berlin",
  "companyId": "880e8400-e29b-41d4-a716-446655440003",
  "createdAt": "2024-01-15T10:30:00Z"
}

Check Booking Availability

Query available time slots for a meeting type:
curl -X GET "https://api.meetergo.com/v4/booking-availability?meetingTypeId={meetingTypeId}&start=2024-01-15&end=2024-01-20&timezone=Europe/Berlin" \
  -H "Authorization: Bearer YOUR_API_KEY"

Query Parameters

ParameterTypeRequiredDescription
meetingTypeIdstringYesThe meeting type to check availability for
startstringYesStart date (YYYY-MM-DD)
endstringYesEnd date (YYYY-MM-DD)
timezonestringNoReturn times in this timezone
hostIdsstringNoComma-separated host user IDs

Response

{
  "timezone": "Europe/Berlin",
  "timeframes": [
    {
      "start": "2024-01-15T08:00:00.000Z",
      "end": "2024-01-15T16:00:00.000Z"
    }
  ],
  "dates": [
    {
      "date": "2024-01-15",
      "spots": [
        { "startTime": "2024-01-15T09:00:00.000+01:00" },
        { "startTime": "2024-01-15T09:30:00.000+01:00" },
        { "startTime": "2024-01-15T10:00:00.000+01:00" },
        { "startTime": "2024-01-15T10:30:00.000+01:00" },
        { "startTime": "2024-01-15T11:00:00.000+01:00" }
      ]
    }
  ],
  "earliestAvailableDate": "2024-01-15"
}

Timezones

Use valid IANA timezone identifiers:
ExampleRegion
Europe/BerlinGermany
Europe/LondonUK
America/New_YorkUS East Coast
America/Los_AngelesUS West Coast
Asia/TokyoJapan
Australia/SydneyAustralia
Invalid timezones will return a 400 error. See IANA timezone database for the full list.

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