Skip to main content
POST
/
api
/
v3
/
meeting
/
create
Create meeting request
curl --request POST \
  --url https://app.thareja.ai/api/v3/meeting/create \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "user_id": 5,
  "team_id": 1,
  "date": "2025-12-15 14:00:00",
  "link": "https://zoom.us/j/1234567890"
}
'
{
  "error": 400,
  "message": "user_id, team_id, and date are required"
}

Overview

Create a meeting request with another user. The recipient receives an email notification and push notification (if using mobile app) to confirm or reject the meeting. Meetings are automatically set for 1 hour duration.

Request Body

user_id
integer
required
The ID of the user to request a meeting with (recipient/client).Example: 5
team_id
integer
required
The ID of the team this meeting belongs to.Example: 1
date
string
required
The proposed date and time for the meeting. The time will be converted from the recipient’s timezone to UTC.Format: Any valid date-time string that can be parsedExample: "2025-12-15 14:00:00", "2025-12-15T14:00:00"
Optional meeting link (e.g., Zoom, Google Meet, Microsoft Teams URL).Example: "https://zoom.us/j/1234567890"

Response

id
integer
The unique identifier of the meeting booking.
booking_number
string
Unique booking reference number for the meeting.
client_id
integer
The ID of the user the meeting is with (recipient).
user_id
integer
The ID of the user who created the meeting request.
team_id
integer
The ID of the team this meeting belongs to.
timezone
string
The timezone of the recipient user.
booking_date
string
The meeting date and time in UTC.
start_time
integer
Unix timestamp for the meeting start time.
end_time
integer
Unix timestamp for the meeting end time (1 hour after start).
created_at
string
The timestamp when the meeting was created (ISO 8601 format).
updated_at
string
The timestamp when the meeting was last updated (ISO 8601 format).

Example Request

curl --request POST \
  --url https://staging.thareja.org/api/v3/meeting/create \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "user_id": 5,
    "team_id": 1,
    "date": "2025-12-15 14:00:00",
    "link": "https://zoom.us/j/1234567890"
  }'

Example Request (JavaScript)

fetch('https://staging.thareja.org/api/v3/meeting/create', {
  method: 'POST',
  headers: {
    'Authorization': 'Bearer YOUR_API_TOKEN',
    'Content-Type': 'application/json'
  },
  body: JSON.stringify({
    user_id: 5,
    team_id: 1,
    date: "2025-12-15 14:00:00",
    link: "https://zoom.us/j/1234567890"
  })
})
.then(response => response.json())
.then(data => console.log(data));

Example Response

{
  "id": 123,
  "booking_number": "MTG-20251128-001",
  "client_id": 5,
  "user_id": 1,
  "team_id": 1,
  "timezone": "America/New_York",
  "booking_date": "2025-12-15 19:00:00",
  "start_time": 1734289200,
  "end_time": 1734292800,
  "created_at": "2025-11-28T10:30:00Z",
  "updated_at": "2025-11-28T10:30:00Z"
}
curl --request POST \
  --url https://staging.thareja.org/api/v3/meeting/create \
  --header 'Authorization: Bearer YOUR_API_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
    "user_id": 5,
    "team_id": 1,
    "date": "2025-12-15T14:00:00"
  }'

Error Responses

{
  "error": 400,
  "message": "user_id, team_id, and date are required"
}

Automatic Notifications

When a meeting is created, the recipient receives:

Email Notification

  • Subject: “You have received new meeting request!”
  • Content: Includes requester name, date/time in UTC, and link to view pending meetings
  • Action Link: Takes user to pending meetings page
  • Meeting Link: If provided, included in the email

Push Notification (Mobile)

  • Title: “MEETING ALERT”
  • Message: “[Your Name] requested a meeting with you. Click to Confirm or Reject.”
  • Action: Opens meeting screen in mobile app
  • Type: meeting-created

Meeting Details

Duration

  • Default duration: 1 hour (3600 seconds)
  • Automatically calculated: end_time = start_time + 3600

Timezone Handling

  1. Date is provided in any format
  2. Converted to recipient’s timezone
  3. Then converted to UTC for storage
  4. If recipient’s timezone is invalid, defaults to UTC

Booking Number

  • Automatically generated unique identifier
  • Format: Custom booking ID (implementation-specific)
  • Used for reference and tracking

Meeting Workflow

Status Flow

  1. Created: Meeting request is created (pending)
  2. Pending: Waiting for recipient confirmation
  3. Confirmed: Recipient accepted the meeting
  4. Rejected: Recipient declined the meeting
  5. Completed: Meeting has taken place

Notes

  • Timezone conversion: Meeting times are automatically converted from recipient’s timezone to UTC
  • 1-hour duration: All meetings are automatically set for 1 hour
  • Booking number: A unique booking reference is generated for each meeting
  • Email notification: Recipient receives email with meeting details and action link
  • Push notification: If recipient has mobile app, they receive real-time push notification
  • Meeting link: Optional meeting link (Zoom, Google Meet, etc.) can be included
  • Pending status: Meetings are created in pending status awaiting recipient action
  • Action URL: Email includes link to /meetings?tab=pending-meeting
  • Invalid timezone: If recipient’s timezone is invalid, defaults to UTC

Best Practices

  • Always provide a meeting link for virtual meetings
  • Choose appropriate times considering recipient’s timezone
  • Include meeting purpose in follow-up communication
  • Send calendar invites separately if needed
  • Confirm meeting details before the scheduled time
  • Allow sufficient buffer time between meetings

Use Cases

  • One-on-one meetings: Schedule meetings with team members
  • Client consultations: Book time with clients
  • Review sessions: Schedule performance reviews or project reviews
  • Training sessions: Set up training or onboarding meetings
  • Quick calls: Schedule brief sync-up calls

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Body

application/json
user_id
integer<int64>
required

The ID of the user to request a meeting with

Example:

5

team_id
integer<int64>
required

The ID of the team this meeting belongs to

Example:

1

date
string
required

The proposed date and time for the meeting

Example:

"2025-12-15 14:00:00"

Optional meeting link (Zoom, Google Meet, etc.)

Example:

"https://zoom.us/j/1234567890"

Response

Meeting created successfully