Meetings
Base URL https://api.leadx.in/api/key/protected. Every request needs an apikey header — see Authentication.
3 endpoints.
GET /meeting
Get all meetings.
Auth apikey
:::note Used by the web app
components/ScheduleMeetingModal.jsx, pages/AddMeeting.jsx, pages/Meeting.jsx
:::
Query parameters — the standard list contract: p, n, sortBy, sortOrder, searchBy, searchValue, filters, advancedFilters, ids, nids. See Pagination and Filtering.
Response — data is an array of ScheduleMeeting objects, alongside the pagination fields described in Response format. updatedBy, createdBy, contact, host are populated, so they arrive as nested objects rather than ids.
curl -X GET 'https://api.leadx.in/api/key/protected/meeting?p=1&n=25' \
-H 'apikey: $LEADX_API_KEY'
// Node 18+ and every modern browser ship fetch.
const res = await fetch('https://api.leadx.in/api/key/protected/meeting?p=1&n=25', {
method: 'GET',
headers: {
apikey: process.env.LEADX_API_KEY,
},
});
const payload = await res.json();
if (!res.ok) {
// Errors carry { status, success, message } — not the success envelope.
throw new Error(`${res.status} ${payload.message}`);
}
console.log(payload.data);
import axios from 'axios';
const leadx = axios.create({
baseURL: 'https://api.leadx.in/api/key/protected',
headers: { apikey: process.env.LEADX_API_KEY },
});
try {
const { data } = await leadx.get(
'/meeting?p=1&n=25'
);
console.log(data.data);
} catch (err) {
// axios throws on 4xx/5xx; the envelope is on err.response.data.
throw new Error(`${err.response?.status} ${err.response?.data?.message ?? err.message}`);
}
import { request } from 'node:https';
// The dependency-free version, for somewhere fetch is not available.
const send = (payload) =>
new Promise((resolve, reject) => {
const req = request(
'https://api.leadx.in/api/key/protected/meeting?p=1&n=25',
{
method: 'GET',
headers: {
apikey: process.env.LEADX_API_KEY,
},
},
(res) => {
let raw = '';
res.on('data', (chunk) => { raw += chunk; });
res.on('end', () => {
const body = JSON.parse(raw);
if (res.statusCode >= 400) reject(new Error(`${res.statusCode} ${body.message}`));
else resolve(body);
});
},
);
req.on('error', reject);
req.end();
});
const { data } = await send(null);
console.log(data);
import os
import requests
res = requests.get(
"https://api.leadx.in/api/key/protected/meeting?p=1&n=25",
headers={"apikey": os.environ["LEADX_API_KEY"]},
timeout=30,
)
payload = res.json()
res.raise_for_status()
print(payload["data"])
<?php
$ch = curl_init('https://api.leadx.in/api/key/protected/meeting?p=1&n=25');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'apikey: ' . getenv('LEADX_API_KEY'),
],
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode($response, true);
if ($status >= 400) {
throw new RuntimeException("$status {$payload['message']}");
}
print_r($payload['data']);
POST /meeting
Create meeting.
Auth apikey · Success 200
:::note Used by the web app
components/ScheduleMeetingModal.jsx, pages/AddMeeting.jsx, pages/Meeting.jsx
:::
Request body
| Field | Type | Required | Default |
|---|---|---|---|
title | string | yes | — |
description | string | — | |
provider | string | offline | |
app | ObjectId | — | |
location | — | ||
mapLink | — | ||
meetingLink | string | — | |
passcode | string | — | |
timezone | string | — | |
startTime | date | yes | — |
endTime | date | — | |
duration | number | — | |
host | ObjectId -> Member | — | |
contact | ObjectId -> Contact | — | |
lead | ObjectId -> Lead | — | |
attendees | object[] | — | |
reminders | object[] | — | |
recurrence | — |
Response — data is one ScheduleMeeting object.
curl -X POST 'https://api.leadx.in/api/key/protected/meeting' \
-H 'apikey: $LEADX_API_KEY' \
-H 'Content-Type: application/json' \
-d '{
"title": "",
"description": "",
"provider": "offline",
"app": "",
"location": "",
"mapLink": "",
"meetingLink": "",
"passcode": "",
"timezone": "",
"startTime": "",
"endTime": "",
"duration": "",
"host": "",
"contact": "",
"lead": "",
"attendees": "",
"reminders": "",
"recurrence": ""
}'
// Node 18+ and every modern browser ship fetch.
const res = await fetch('https://api.leadx.in/api/key/protected/meeting', {
method: 'POST',
headers: {
apikey: process.env.LEADX_API_KEY,
'Content-Type': 'application/json',
},
body: JSON.stringify({
"title": "",
"description": "",
"provider": "offline",
"app": "",
"location": "",
"mapLink": "",
"meetingLink": "",
"passcode": "",
"timezone": "",
"startTime": "",
"endTime": "",
"duration": "",
"host": "",
"contact": "",
"lead": "",
"attendees": "",
"reminders": "",
"recurrence": ""
}),
});
const payload = await res.json();
if (!res.ok) {
// Errors carry { status, success, message } — not the success envelope.
throw new Error(`${res.status} ${payload.message}`);
}
console.log(payload.data);
import axios from 'axios';
const leadx = axios.create({
baseURL: 'https://api.leadx.in/api/key/protected',
headers: { apikey: process.env.LEADX_API_KEY },
});
try {
const { data } = await leadx.post(
'/meeting',
{
"title": "",
"description": "",
"provider": "offline",
"app": "",
"location": "",
"mapLink": "",
"meetingLink": "",
"passcode": "",
"timezone": "",
"startTime": "",
"endTime": "",
"duration": "",
"host": "",
"contact": "",
"lead": "",
"attendees": "",
"reminders": "",
"recurrence": ""
}
);
console.log(data.data);
} catch (err) {
// axios throws on 4xx/5xx; the envelope is on err.response.data.
throw new Error(`${err.response?.status} ${err.response?.data?.message ?? err.message}`);
}
import { request } from 'node:https';
// The dependency-free version, for somewhere fetch is not available.
const send = (payload) =>
new Promise((resolve, reject) => {
const req = request(
'https://api.leadx.in/api/key/protected/meeting',
{
method: 'POST',
headers: {
apikey: process.env.LEADX_API_KEY,
'Content-Type': 'application/json',
},
},
(res) => {
let raw = '';
res.on('data', (chunk) => { raw += chunk; });
res.on('end', () => {
const body = JSON.parse(raw);
if (res.statusCode >= 400) reject(new Error(`${res.statusCode} ${body.message}`));
else resolve(body);
});
},
);
req.on('error', reject);
req.write(JSON.stringify(payload));
req.end();
});
const { data } = await send({
"title": "",
"description": "",
"provider": "offline",
"app": "",
"location": "",
"mapLink": "",
"meetingLink": "",
"passcode": "",
"timezone": "",
"startTime": "",
"endTime": "",
"duration": "",
"host": "",
"contact": "",
"lead": "",
"attendees": "",
"reminders": "",
"recurrence": ""
});
console.log(data);
import os
import requests
res = requests.post(
"https://api.leadx.in/api/key/protected/meeting",
headers={"apikey": os.environ["LEADX_API_KEY"]},
json={
"title": "",
"description": "",
"provider": "offline",
"app": "",
"location": "",
"mapLink": "",
"meetingLink": "",
"passcode": "",
"timezone": "",
"startTime": "",
"endTime": "",
"duration": "",
"host": "",
"contact": "",
"lead": "",
"attendees": "",
"reminders": "",
"recurrence": ""
},
timeout=30,
)
payload = res.json()
res.raise_for_status()
print(payload["data"])
<?php
$ch = curl_init('https://api.leadx.in/api/key/protected/meeting');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'apikey: ' . getenv('LEADX_API_KEY'),
'Content-Type: application/json',
],
CURLOPT_POSTFIELDS => json_encode({
'title': '',
'description': '',
'provider': 'offline',
'app': '',
'location': '',
'mapLink': '',
'meetingLink': '',
'passcode': '',
'timezone': '',
'startTime': '',
'endTime': '',
'duration': '',
'host': '',
'contact': '',
'lead': '',
'attendees': '',
'reminders': '',
'recurrence': ''
}),
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode($response, true);
if ($status >= 400) {
throw new RuntimeException("$status {$payload['message']}");
}
print_r($payload['data']);
GET /meeting/:id
Get meeting.
Auth apikey
:::note Used by the web app
pages/AddMeeting.jsx
:::
Path parameters
| Name | |
|---|---|
id | Required |
Response — data is one ScheduleMeeting object. lead, contact, host, app are populated, so they arrive as nested objects rather than ids.
curl -X GET 'https://api.leadx.in/api/key/protected/meeting/MEETING_ID' \
-H 'apikey: $LEADX_API_KEY'
// Node 18+ and every modern browser ship fetch.
const res = await fetch('https://api.leadx.in/api/key/protected/meeting/MEETING_ID', {
method: 'GET',
headers: {
apikey: process.env.LEADX_API_KEY,
},
});
const payload = await res.json();
if (!res.ok) {
// Errors carry { status, success, message } — not the success envelope.
throw new Error(`${res.status} ${payload.message}`);
}
console.log(payload.data);
import axios from 'axios';
const leadx = axios.create({
baseURL: 'https://api.leadx.in/api/key/protected',
headers: { apikey: process.env.LEADX_API_KEY },
});
try {
const { data } = await leadx.get(
'/meeting/MEETING_ID'
);
console.log(data.data);
} catch (err) {
// axios throws on 4xx/5xx; the envelope is on err.response.data.
throw new Error(`${err.response?.status} ${err.response?.data?.message ?? err.message}`);
}
import { request } from 'node:https';
// The dependency-free version, for somewhere fetch is not available.
const send = (payload) =>
new Promise((resolve, reject) => {
const req = request(
'https://api.leadx.in/api/key/protected/meeting/MEETING_ID',
{
method: 'GET',
headers: {
apikey: process.env.LEADX_API_KEY,
},
},
(res) => {
let raw = '';
res.on('data', (chunk) => { raw += chunk; });
res.on('end', () => {
const body = JSON.parse(raw);
if (res.statusCode >= 400) reject(new Error(`${res.statusCode} ${body.message}`));
else resolve(body);
});
},
);
req.on('error', reject);
req.end();
});
const { data } = await send(null);
console.log(data);
import os
import requests
res = requests.get(
"https://api.leadx.in/api/key/protected/meeting/MEETING_ID",
headers={"apikey": os.environ["LEADX_API_KEY"]},
timeout=30,
)
payload = res.json()
res.raise_for_status()
print(payload["data"])
<?php
$ch = curl_init('https://api.leadx.in/api/key/protected/meeting/MEETING_ID');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
'apikey: ' . getenv('LEADX_API_KEY'),
],
]);
$response = curl_exec($ch);
$status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
curl_close($ch);
$payload = json_decode($response, true);
if ($status >= 400) {
throw new RuntimeException("$status {$payload['message']}");
}
print_r($payload['data']);