UUpward API
v1
POST/api/public/v1/create-event
Requires x-auth-token

Create event

Create a bookable meeting type in a member's Schedule Meeting module.

Creates an event (meeting type) for one member of your company and returns its public booking link. Authenticate with your company API key in x-auth-token and identify the member with x-auth-user (their pagename or username). The availability object holds the member's working hours for this event only — it is saved as event-specific availability, so it does not change their global hours. Times accept "09:00AM", "9:00 AM", "09:00am" or 24-hour "17:00". Leave both start and end empty to close a day; breaks must fall inside that day's hours and may not overlap. At least one day must be open. The timezone is any IANA zone and is matched case-insensitively, so "asia/tashkent" is accepted and stored as "Asia/Tashkent". long_description accepts rich HTML; scripts, event handlers and unsafe links are stripped before it is stored. Call event-options for every accepted value.

Body fields

namestring (1–150)required

Event name; also becomes the web address of the booking page.

short_descriptionstring (≤300)optional

One-line summary shown on the booking page.

long_descriptionstring (HTML, ≤20000)optional

Full description; sanitized HTML is allowed.

event_typeone-to-one | groupoptional

Defaults to one-to-one. Group events also accept max_participants.

event_locationvirtual | phone | in-personoptional

Defaults to virtual.

contact_waystringrequired

Depends on event_location: virtual → zoom, google_meet, meetn, pxch, custom_link; phone → registrant_calls_me, i_call_registrant; in-person → registrant_comes_to_my_location, i_visit_them.

contact_way_valuestring (≤500)optional

Required for custom_link (a https link), registrant_calls_me (your number) and registrant_comes_to_my_location (your address).

timezonestring (IANA)optional

Timezone the availability is expressed in. Defaults to America/New_York.

event_durationnumber (5–480)optional

Meeting length in minutes. Defaults to 30.

allow_guestsbooleanoptional

Let registrants invite guests. Defaults to true.

max_participantsnumber (2–1000)optional

Group events only. Defaults to 10.

buffer_minutesnumber (0–240)optional

Padding after each meeting. Defaults to 0.

slot_interval_minutesnumber (5–240)optional

Spacing between offered start times. Defaults to 15.

booking_window_daysnumber (1–730)optional

How far ahead people may book. Defaults to 60.

is_publicbooleanoptional

Show the event on the member's booking page. Defaults to true.

is_activebooleanoptional

Accept bookings. Defaults to true.

availabilityobject keyed by weekdayrequired

sunday…saturday, each { start, end, breaks: [{ start, end }] }.

fieldsarray of { label, field_type, placeholder, help_text, options, is_required, full_width }optional

Up to 40 registration questions. Replaces the default questions when sent.

Responses

201CreatedThe event was created; booking_url is the public link to share.
{
  "success": true,
  "event": {
    "id": "0b1f0a2c-8f3e-4a51-9c0d-1c2b3a4d5e6f",
    "name": "Global Operations Sync",
    "slug": "global-operations-sync",
    "booking_url": "https://yourcompany.example.page/jane-doe/schedule?event=global-operations-sync",
    "event_type": "one-to-one",
    "event_location": "virtual",
    "contact_way": "zoom",
    "timezone": "Asia/Tashkent",
    "event_duration": 60,
    "allow_guests": true,
    "availability": {
      "monday": { "start": "09:00", "end": "17:00", "breaks": [{ "start": "15:00", "end": "15:30" }] }
    }
  }
}
400Bad requestThe request body is not valid JSON.
{ "success": false, "error": "Body must be valid JSON" }
401UnauthorizedMissing or invalid x-auth-token, or missing x-auth-user.
{ "success": false, "error": "Missing x-auth-user header" }
404Not foundNo active member in your company matches x-auth-user.
{ "success": false, "error": "No active member matches "jane-doe" in this company." }
409ConflictThe member already has an event with that name.
{ "success": false, "error": "An event named "Global Operations Sync" already exists for this member." }
422UnprocessableValidation failed; every problem is listed in issues.
{
  "success": false,
  "error": "Validation failed",
  "issues": [
    "contact_way: for virtual events use one of: zoom, google_meet, meetn, pxch, custom_link.",
    "availability.monday.breaks[0]: must fall inside 09:00–17:00."
  ]
}
500Server errorThe event could not be saved; the request is logged for support.
{ "success": false, "error": "…database error message…" }
POST/api/public/v1/create-event

Event name; also becomes the web address of the booking page.

One-line summary shown on the booking page.

Full description; sanitized HTML is allowed.

Defaults to one-to-one. Group events also accept max_participants.

Defaults to virtual.

Depends on event_location: virtual → zoom, google_meet, meetn, pxch, custom_link; phone → registrant_calls_me, i_call_registrant; in-person → registrant_comes_to_my_location, i_visit_them.

Required for custom_link (a https link), registrant_calls_me (your number) and registrant_comes_to_my_location (your address).

Timezone the availability is expressed in. Defaults to America/New_York.

Meeting length in minutes. Defaults to 30.

Let registrants invite guests. Defaults to true.

Group events only. Defaults to 10.

Padding after each meeting. Defaults to 0.

Spacing between offered start times. Defaults to 15.

How far ahead people may book. Defaults to 60.

Show the event on the member's booking page. Defaults to true.

Accept bookings. Defaults to true.

sunday…saturday, each { start, end, breaks: [{ start, end }] }.

Up to 40 registration questions. Replaces the default questions when sent.

ResponseNot sent yet