With these REST APIs, users or other systems can fully manipulate the CRM data inside CubeDrive. Before calling these APIs, please ensure you first retrieve an Token to process your requests.
List of APIs
A CRM task category is used to classify and organize activities within a CRM system. These categories help sales teams, account managers, and support staff track the progress of opportunities, follow-ups, and customer interactions by grouping tasks under meaningful labels.
CubeDrive allows users to create dynamic categories such as New Lead, Introductory Call, Proposal Stage, and more. Before creating a new lead, you must retrieve one of these categories to proceed.
{{baseuri}}/taskCategory/listByType
HTTP Method: GET
Parameters:
Parameter Explanation:
Example: https://app.pvgus.com/shift/taskCategory/listByType?componentId=7330305976010018816&type=application
Response Result:
{ "success": true, "archivedCategories": [], "categories": [ { "id": 12, "name": "New/ Lead Cropping ", "color": "todo", "authorId": 2, "weight": 100, "componentId": "7330305976010018816", "categoryType": "application", "active": true, "settings": { "collapse": false }, "createdAt": 1747681159000 }, { "id": 13, "name": "Warm Leads", "color": "todo", "authorId": 2, "weight": 101, "componentId": "7330305976010018816", "categoryType": "application", "active": true, "settings": { "collapse": false }, "createdAt": 1747681192000 }, { "id": 14, "name": "Intro call", "color": "review", "authorId": 2, "weight": 102, "componentId": "7330305976010018816", "categoryType": "application", "active": true, "settings": { "collapse": false }, "createdAt": 1747681204000 }, { "id": 15, "name": "Discovery call", "color": "review", "authorId": 2, "weight": 103, "componentId": "7330305976010018816", "categoryType": "application", "active": true, "settings": { "collapse": false }, "createdAt": 1747681219000 }, { "id": 16, "name": "Proposal Stage", "color": "waiting", "authorId": 2, "weight": 104, "componentId": "7330305976010018816", "categoryType": "application", "active": true, "settings": { "collapse": false }, "createdAt": 1747681238000 } ] }Tip: The
{{category_id}}
is obtained from the JSON result above, specifically from categories[i].id
.
{{baseuri}}/formDataApi/10100000/paginate
HTTP Method: POST
Request Payload (JSON):
{ rowsHandler: "OrganizationTaskRowsHandler.toTasks", start: 0, limit: 50, sorts: {data.rank: -1, updatedAt: -1}, filters: { data.projectAssemblyId: "{{application_component_id}}", data.projectAssemblyDataId: "application", data.related: "app", data.categoryId: {{category_id}}, data.status: {$in: ["todo", "inProgress", "expired", "done"]} } }
Dynamic Variables:
Response Result:
{ rows: [ {id: "7333217641055653888", title: "VAMS", color: "cyan" ...}, {id: "7333218024742195200", title: "TruVue", color: "green" ...}, {id: "7333212255581900800", title: "Terzo", color: "blue"...}, {id: "7333211934373711872", title: "SHIFT", color: "geekblue"...}, {id: "7330308249167597568", title: "Krista", color: "purple"...}, {id: "7330309028297314304", title: "Jitterbit (Vinyl)", color: "gold"...}, {id: "7330308832381374464", title: "Intesa AI", color: "cyan"...} ] success: true total: 7 }
This is another example to extracts specific user tasks.
{ rowsHandler: "OrganizationTaskRowsHandler.toTasks", start: 0, limit: 50, sorts: {data.rank: -1, updatedAt: -1}, filters: { data.assignedUsers.userId: "$userId:{{user_Encypted_Id}}", data.projectAssemblyId: "{{application_component_id}}", data.projectAssemblyDataId: "application", data.related: "app", data.categoryId: {{category_id}}, data.status: {$in: ["todo", "inProgress", "expired", "done"]} } }
Dynamic Variables:
Tip:{{task_id}}
is the value obtained from above json result: rows[i].id
. When you want to edit the task, please pass the {{task_id}}.
This API allows you to create a lead in the CubeDrive CRM system.
To create a lead, send a POST request to
{{baseuri}}/formDataApi/10100000/upsert
with a JSON payload
that includes all relevant lead details under the item.data
object.
You can also specify actions
to trigger automatic reminders or send emails
once the lead is created.
{{baseuri}}/formDataApi/10100000/upsert
http method: POST
Request Payload (JSON):
{ actions: [ "OrganizationTaskActionHandler.addRemind", "OrganizationTaskActionHandler.sendEmailAtUserOnDesc" ], item: { data: { address: "70 Springland Dr.", attachments: [], authorId: "$userId:{{author_Encypted_Id}}", categoryId: {{category_id}}, city: "Ottawa", contact: "John Doe", country: "Canada", createdAt: "2025-06-29T11:31:36.061Z", customer: "EDC manpower Inc.", desc: "This is description for the lead", dueDate: "$iso8601:2025-06-29T11:31:36.061Z", email: "johnDoe@cubedrive.com", estimateDays: "2", expectedRevenue: "2500", linkedin: "https://www.linkedin.com/in/teten", mrr: "500", name: "Lead title", organizationId: "", period: "1", periodRevenue: "500", phone: "6131283776", position: "CEO", postCode: "K2G5T0", priority: "6000", probablity: 75, projectAssemblyDataId: "application", projectAssemblyId: "{{application_component_id}}", related: "app", remind Date: null, state: "Ontario", status: "todo", tags: [], url: "" } } }
The table below details each of the parameters you can include in your request.
Key fields include the contact’s name, company, email, estimated revenue, expected closing date,
and probability of success. Ensure you populate categoryId
and projectAssemblyId
with valid IDs retrieved from previous API calls.
Parameter | Description | Example Value |
---|---|---|
address | Street address of the lead or customer | 70 Springland Dr. |
attachments | List of file attachments for this lead | [] |
authorId | Encrypted login user ID of the author. | $userId:{{author_Encypted_Id}} |
categoryId | Category identifier. This is a dynamic parameter which need to be retrieved from system. | {{category_id}} |
city | City of the lead/customer | Ottawa |
contact | Name of the contact person | John Doe |
country | Country of the lead/customer | Canada |
createdAt | Record creation timestamp | 2025-06-29T11:31:36.061Z |
customer | Customer or company name | EDC manpower Inc. |
desc | Description of the lead | This is description for the lead |
dueDate | Due date in ISO8601 format | $iso8601:2025-06-29T11:31:36.061Z |
Email address of the contact | johnDoe@cubedrive.com | |
estimateDays | Estimated number of days to close | 2 |
expectedRevenue | Expected revenue from the lead | 2500 |
LinkedIn profile URL | https://www.linkedin.com/in/teten | |
mrr | Monthly recurring revenue | 500 |
name | Title of the lead or opportunity | Lead title |
organizationId | Linked organization ID | |
period | Billing period in month | 1 |
periodRevenue | Revenue for the period | 500 |
phone | Phone number | 6131283776 |
position | Job position of the contact | CEO |
postCode | Postal code | K2G5T0 |
priority | Priority indicator | 6000 |
probablity | Probability of closing (%): must be 0 - 100 | 75 |
projectAssemblyDataId | Related assembly data ID | application |
projectAssemblyId | Application component ID | {{application_component_id}} |
related | Related object type | app |
remind Date | Date to trigger reminder | null |
state | State or province | Ontario |
status | Current status | todo |
tags | List of tags | [] |
url | Related website URL | (empty) |
Dynamic Variables:
Response Result:
{ dataId: "7344738314269757440", formId: 10100000, success: true }
On success, the API returns a JSON response containing the dataId
of the created or updated lead record along with a success flag.
This API allows you to Update lead in the CubeDrive CRM system.
To update a lead, send a POST request to
{{baseuri}}/formDataApi/10100000/{{task_id}}/updateFields
with a JSON payload
that includes all relevant lead details under the item.data
object.
You can also specify actions
to trigger automatic reminders or send emails
once the lead is created.
{{baseuri}}/formDataApi/10100000/{{task_id}}/updateFields
http method: POST
Request Payload (JSON):
{ taskId: "{{task_id}}", actions: [ "OrganizationTaskActionHandler.addRemind", "OrganizationTaskActionHandler.sendEmailAtUserOnDesc" ], item: { data: { address: "70 Springland Dr.", attachments: [], authorId: "$userId:{{author_Encypted_Id}}", categoryId: {{category_id}}, city: "Ottawa", contact: "John Doe", country: "Canada", createdAt: "2025-06-29T11:31:36.061Z", customer: "EDC manpower Inc.", desc: "This is description for the lead", dueDate: "$iso8601:2025-06-29T11:31:36.061Z", email: "johnDoe@cubedrive.com", estimateDays: "2", expectedRevenue: "2500", linkedin: "https://www.linkedin.com/in/teten", mrr: "500", name: "Lead title", organizationId: "", period: "1", periodRevenue: "500", phone: "6131283776", position: "CEO", postCode: "K2G5T0", priority: "6000", probablity: 75, projectAssemblyDataId: "application", projectAssemblyId: "{{application_component_id}}", related: "app", remind Date: null, state: "Ontario", status: "todo", tags: [], url: "" } } }
Dynamic Variables:
System can also update parts of data as following
{ taskId: "{{task_id}}", item: { data: { estimateDays: 23 } } }Tip: If you want to change a task from one category to another, simply query the taskCategory/listByType API to retrieve the appropriate category ID. Then call this method to update the task with the new category.
This API allows you to Get a list of users in the CubeDrive CRM system based on the organization.
To get the result, send a GET request to
{{baseuri}}/groupContact/listPeople
.
{{baseuri}}/groupContact/listPeople
http method: GET
Parameters
groupId: {{encrypted_group_id}}
type: group
start: 0
limit: 100
Results
{ results: [ {contactUserId: "wWTHxLHoiU0", info: "vin@cubedrive.com", self: false, firstname: "Vin", email: "vin@cubedrive.com", name: "John/Vin", lastname: "John"}, ... ], success: true, totalCount: 22 }
Dynamic Variables:
Tip: Return result includes a list of user information. And the contactUserId is the encrypted user id in the system. You can get user email and name in the list.