Contents
Create Meeting - Plugixa CRM
POST /plugixa-crm/v1/meetings
Create a meeting, optionally attached to a contact, account, opportunity or lead.
Any user with access to Plugixa CRM. With Plugixa CRM Pro roles, the user’s role must also allow creating meetings.
Request
POST https://your-site.example/wp-json/plugixa-crm/v1/meetings
Request body
Content type: application/json
| Field | Type | Required | Description |
|---|---|---|---|
name |
string |
Yes | Must not be blank. |
status |
string |
No | planned, completed or canceled. Anything else, or nothing, is stored as planned. |
location |
string |
No | Where it takes place. Empty is stored as null. |
description |
string |
No | HTML. Tags not allowed in post content are stripped. |
date_start |
string |
No | Start, in the site’s time zone. Reminders count back from it. |
date_end |
string |
No | End, in the site’s time zone. Must not be before date_start. |
is_all_day |
boolean |
No | Defaults to false. |
color |
string |
No | red, pink, purple, indigo, blue, teal, green, lime, amber, orange or grey. Anything else is stored as null. |
parent_type |
string |
No | contact, account, opportunity or lead. Needs parent_id. |
parent_id |
integer |
No | The record it belongs to. Not checked. If either half is missing or invalid, both are stored as null. |
assigned_user_id |
integer |
No | The WordPress user who owns the meeting. 0 or nothing means none. |
reminders |
array |
No | Seconds before the start, as integers or objects with seconds_before. Replaces the meeting’s reminders. Needs the Reminders app. |
participants |
array |
No | Objects with type (contact, lead or user) and id. Replaces the whole list. Invalid entries are skipped. |
date_start and date_end are wall-clock times in the site’s time zone, as YYYY-MM-DD HH:MM:SS. You can also send YYYY-MM-DD HH:MM, a bare date, or an ISO 8601 time with an offset or Z, which is converted to the site’s time zone. Anything else is stored as null. account_id is worked out from the parent: an account is its own, a contact or an opportunity gives its account, a lead gives none. completed_at is only set by Complete Meeting.
{
"name": "Quarterly review",
"location": "Seattle office",
"date_start": "2026-11-20 10:00:00",
"date_end": "2026-11-20 11:00:00",
"color": "blue",
"parent_type": "account",
"parent_id": 12,
"assigned_user_id": 3,
"participants": [
{
"type": "contact",
"id": 31
},
{
"type": "user",
"id": 3
}
],
"reminders": [
900
]
}
Responses
201 Created. data is the new meeting.
{
"success": true,
"data": {
"id": 40,
"name": "Quarterly review",
"status": "planned",
"location": "Seattle office",
"description": "",
"date_start": "2026-11-20 10:00:00",
"date_end": "2026-11-20 11:00:00",
"is_all_day": 0,
"color": "blue",
"parent_type": "account",
"parent_id": 12,
"account_id": 12,
"assigned_user_id": 3,
"completed_at": null,
"created_by": "1",
"modified_by": "1",
"created_at": "2026-11-12 09:30:00",
"modified_at": "2026-11-12 09:30:00",
"deleted_at": null,
"parent_name": "Northwind Traders",
"assigned_user_name": "Jordan Lee",
"participants": [
{
"id": 15,
"meeting_id": 40,
"participant_type": "contact",
"participant_id": 31,
"acceptance": "none",
"is_organizer": 0,
"created_at": "2026-11-12 09:30:00",
"participant_name": "Maria Anders"
},
{
"id": 16,
"meeting_id": 40,
"participant_type": "user",
"participant_id": 3,
"acceptance": "none",
"is_organizer": 0,
"created_at": "2026-11-12 09:30:00",
"participant_name": "Jordan Lee"
}
],
"reminders": [
{
"id": 9,
"seconds_before": 3600,
"sent": 0
}
]
}
}
| Field | Type | Meaning |
|---|---|---|
data.id |
integer |
The meeting’s id |
data.status |
string |
planned, completed or canceled |
data.location |
string|null |
Where it takes place |
data.date_start |
string|null |
Site time zone |
data.date_end |
string|null |
Site time zone |
data.parent_type |
string|null |
contact, account, opportunity or lead |
data.parent_id |
integer|null |
The record the meeting hangs off |
data.account_id |
integer|null |
The account the parent rolls up to, worked out for you |
data.completed_at |
string|null |
UTC datetime it was completed |
data.parent_name |
string|null |
The parent record’s name |
data.assigned_user_name |
string|null |
The owner’s display name |
data.participants |
array |
Who attends: participant_type (contact, lead or user), participant_id, participant_name, acceptance, is_organizer |
data.reminders |
array |
Reminders on the meeting: seconds_before and whether it was sent. Empty when the Reminders app is off |
Errors
| Status | Code | When |
|---|---|---|
422 |
plugixa_crm_invalid_name |
name is missing or blank. |
422 |
plugixa_crm_invalid_dates |
date_end is before date_start. |
Plus the errors every endpoint can return.
Examples
curl -s -X POST "https://your-site.example/wp-json/plugixa-crm/v1/meetings" \
-u "admin:$WP_APP_PASSWORD" \
-H "Content-Type: application/json" \
-d '{"name":"Quarterly review","location":"Seattle office","date_start":"2026-11-20 10:00:00","date_end":"2026-11-20 11:00:00","color":"blue","parent_type":"account","parent_id":12,"assigned_user_id":3,"participants":[{"type":"contact","id":31},{"type":"user","id":3}],"reminders":[900]}'
<?php
$ch = curl_init('https://your-site.example/wp-json/plugixa-crm/v1/meetings');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_USERPWD => 'admin:' . getenv('WP_APP_PASSWORD'),
CURLOPT_HTTPHEADER => ['Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode([
'name' => 'Quarterly review',
'location' => 'Seattle office',
'date_start' => '2026-11-20 10:00:00',
'date_end' => '2026-11-20 11:00:00',
'color' => 'blue',
'parent_type' => 'account',
'parent_id' => 12,
'assigned_user_id' => 3,
'participants' => [
[
'type' => 'contact',
'id' => 31,
],
[
'type' => 'user',
'id' => 3,
],
],
'reminders' => [900],
]),
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);
const auth = 'Basic ' + btoa(`admin:${process.env.WP_APP_PASSWORD}`);
const response = await fetch('https://your-site.example/wp-json/plugixa-crm/v1/meetings', {
method: 'POST',
headers: {
'Authorization': auth,
'Content-Type': 'application/json',
},
body: JSON.stringify({
name: 'Quarterly review',
location: 'Seattle office',
date_start: '2026-11-20 10:00:00',
date_end: '2026-11-20 11:00:00',
color: 'blue',
parent_type: 'account',
parent_id: 12,
assigned_user_id: 3,
participants: [{ type: 'contact', id: 31 }, { type: 'user', id: 3 }],
reminders: [900],
}),
});
const { data } = await response.json();
Quick Links
Share