Contents
On this page

Create Call - Plugixa CRM

POST /plugixa-crm/v1/calls

Create a call, 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 calls.

Request

POST https://your-site.example/wp-json/plugixa-crm/v1/calls

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.
direction string No outbound or inbound. Anything else, or nothing, is stored as outbound.
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 call. 0 or nothing means none.
reminders array No Seconds before the start, as integers or objects with seconds_before. Replaces the call’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 Call.

{
  "name": "Discovery call",
  "direction": "outbound",
  "date_start": "2026-11-18 14:00:00",
  "date_end": "2026-11-18 14:30:00",
  "parent_type": "contact",
  "parent_id": 31,
  "assigned_user_id": 3,
  "participants": [
    {
      "type": "contact",
      "id": 31
    }
  ],
  "reminders": [
    600
  ]
}

Responses

201 Created. data is the new call.

{
  "success": true,
  "data": {
    "id": 17,
    "name": "Discovery call",
    "status": "planned",
    "direction": "outbound",
    "description": "",
    "date_start": "2026-11-18 14:00:00",
    "date_end": "2026-11-18 14:30:00",
    "is_all_day": 0,
    "color": null,
    "parent_type": "contact",
    "parent_id": 31,
    "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": "Maria Anders",
    "assigned_user_name": "Jordan Lee",
    "participants": [
      {
        "id": 21,
        "call_id": 17,
        "participant_type": "contact",
        "participant_id": 31,
        "acceptance": "none",
        "is_organizer": 0,
        "created_at": "2026-11-12 09:30:00",
        "participant_name": "Maria Anders"
      }
    ],
    "reminders": [
      {
        "id": 9,
        "seconds_before": 3600,
        "sent": 0
      }
    ]
  }
}
Field Type Meaning
data.id integer The call’s id
data.status string planned, completed or canceled
data.direction string outbound or inbound
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 call 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 is on the call: participant_type (contact, lead or user), participant_id, participant_name, acceptance, is_organizer
data.reminders array Reminders on the call: 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/calls" \
  -u "admin:$WP_APP_PASSWORD" \
  -H "Content-Type: application/json" \
  -d '{"name":"Discovery call","direction":"outbound","date_start":"2026-11-18 14:00:00","date_end":"2026-11-18 14:30:00","parent_type":"contact","parent_id":31,"assigned_user_id":3,"participants":[{"type":"contact","id":31}],"reminders":[600]}'
<?php
$ch = curl_init('https://your-site.example/wp-json/plugixa-crm/v1/calls');
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'             => 'Discovery call',
        'direction'        => 'outbound',
        'date_start'       => '2026-11-18 14:00:00',
        'date_end'         => '2026-11-18 14:30:00',
        'parent_type'      => 'contact',
        'parent_id'        => 31,
        'assigned_user_id' => 3,
        'participants'     => [
            [
                'type' => 'contact',
                'id'   => 31,
            ],
        ],
        'reminders'        => [600],
    ]),
]);
$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/calls', {
  method: 'POST',
  headers: {
    'Authorization': auth,
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({
    name: 'Discovery call',
    direction: 'outbound',
    date_start: '2026-11-18 14:00:00',
    date_end: '2026-11-18 14:30:00',
    parent_type: 'contact',
    parent_id: 31,
    assigned_user_id: 3,
    participants: [{ type: 'contact', id: 31 }],
    reminders: [600],
  }),
});
const { data } = await response.json();

Quick Links

Share