Skip to main content
Create a new platform user with automatic availability and meeting type setup, making them immediately ready for bookings.

Endpoint

POST /v4/user

Request Headers

HeaderRequiredDescription
AuthorizationYesBearer <your-api-key>
Content-TypeYesapplication/json

Request Body

Basic Fields

FieldTypeRequiredDescription
emailstringYesUser’s email address
givenNamestringYesUser’s first name
familyNamestringYesUser’s last name
timezonestringYesIANA timezone identifier (e.g., Europe/London)

Optional: Custom Availability

FieldTypeDescription
availability.namestringDisplay name for the availability schedule
availability.timezonestringTimezone for the schedule
availability.scheduleobjectWeekly schedule with a property per day (format)

Optional: Custom Meeting Type

FieldTypeDescription
meetingType.namestringDisplay name for the meeting type
meetingType.durationnumberMeeting duration in minutes
meetingType.slugstringURL-friendly identifier for the booking page
meetingType.channelstringMeeting venue type. Defaults to phone. See channel values

Examples

Basic Request

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/London"
  }'

With Custom Availability & Meeting Type

{
  "email": "john.smith@example.com",
  "givenName": "John",
  "familyName": "Smith",
  "timezone": "Europe/London",
  "availability": {
    "name": "John's Business Hours",
    "timezone": "Europe/London",
    "schedule": {
      "monday": { "enabled": true, "hours": [{ "start": "09: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": "17:00" }] },
      "saturday": { "enabled": false, "hours": [] },
      "sunday": { "enabled": false, "hours": [] }
    }
  },
  "meetingType": {
    "name": "45 Minute Discovery Call",
    "duration": 45,
    "slug": "john-smith-45min",
    "channel": "connect"
  }
}

With Split Availability (Lunch Break)

{
  "email": "john.smith@example.com",
  "givenName": "John",
  "familyName": "Smith",
  "timezone": "Europe/London",
  "availability": {
    "name": "Business Hours with Lunch",
    "timezone": "Europe/London",
    "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": "12:00" }, { "start": "13:00", "end": "17:00" }] },
      "wednesday": { "enabled": false, "hours": [] },
      "thursday": { "enabled": false, "hours": [] },
      "friday": { "enabled": false, "hours": [] },
      "saturday": { "enabled": false, "hours": [] },
      "sunday": { "enabled": false, "hours": [] }
    }
  }
}

Response

Success (201 Created)

{
  "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/45min-discovery-call",
  "companyId": "880e8400-e29b-41d4-a716-446655440003"
}
FieldDescription
userIdUUID of the created user
availabilityIdUUID of the created availability schedule
meetingTypeIdUUID of the created meeting type
bookingUrlPublic URL where customers can book meetings
companyIdUUID of the company the user belongs to
User Ready! The user is immediately ready for bookings. The bookingUrl can be shared with customers right away.
What was created automatically:
  • Platform user with the provided details
  • Default availability schedule (Mon-Fri 8-17 if not specified)
  • Default meeting type (30min Meeting if not specified)
  • Public booking URL for immediate use

Error Responses

400 Bad Request - Validation Error

{
  "statusCode": 400,
  "message": "Validation failed",
  "errors": [
    {
      "field": "email",
      "message": "Invalid email format"
    }
  ]
}

400 Bad Request - Invalid Timezone

{
  "statusCode": 400,
  "message": "Invalid timezone",
  "error": "Bad Request"
}

409 Conflict - Email Already Exists

{
  "statusCode": 409,
  "message": "User with this email already exists",
  "error": "Conflict"
}

Availability Schedule Format

The schedule is an object with a property for each day of the week. See the full schedule format reference.

Day Schedule Structure

Each day has two properties:
FieldTypeDescription
enabledbooleanWhether the day is available for booking
hoursarrayTime ranges when available

Time Format

Times are in 24-hour format (HH:MM):
{
  "monday": {
    "enabled": true,
    "hours": [
      { "start": "09:00", "end": "12:00" },
      { "start": "13:00", "end": "17:00" }
    ]
  }
}
Set enabled: false on days that should be unavailable (e.g., weekends). Days with enabled: true must include at least one time range in hours.

Meeting Type Channel Values

The channel field controls where the meeting takes place:
ValueDescription
phoneOutgoing phone call (default)
phone-incomingIncoming phone call
connectmeetergo Connect (browser-based video)
googleGoogle Meet
zoomZoom
teamsForBusiness2Microsoft Teams
webexWebex
wherebyWhereby
kmeetkMeet
jitsiJitsi
localIn-person at host’s location
local-attendeeIn-person at attendee’s location
customCustom location

Common Timezones

RegionTimezone
UKEurope/London
GermanyEurope/Berlin
FranceEurope/Paris
US EastAmerica/New_York
US WestAmerica/Los_Angeles
JapanAsia/Tokyo
AustraliaAustralia/Sydney
See the full list of IANA timezone identifiers.