Skip to main content

Documentation Index

Fetch the complete documentation index at: https://developer.meetergo.com/llms.txt

Use this file to discover all available pages before exploring further.

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"
}

Update a User

Fix a typo or change a user’s public booking slug:
curl -X PATCH "https://api.meetergo.com/v4/user/{userId}" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "givenName": "Jonathan",
    "familyName": "Smith",
    "slug": "jonathan-smith"
  }'

Editable Fields

FieldDescription
givenNameFirst name
familyNameLast name
slugPublic booking slug — min 5 characters, unique across the platform, normalized automatically
All fields are optional; omitted fields stay unchanged. Any authenticated user can update their own profile; updating other users requires a company admin caller. The target user must belong to the caller’s company.
Email is not editable via this endpoint — it affects the login identity and requires a separate flow. Contact support if you need to change a user’s email.
See the full Update User reference for response shape and error cases.

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