Automations
Rules that act on their own when records change.
List automations
GET/api/v1/automations/
Every member reads them. Each carries its last run.
Response fields 13
idstring (uuid)namestringentityenumtriggerstringtrigger_labelobjectconditionsobjectactionsarray of objectrun_on_importsbooleanis_activebooleancreated_byobjectlast_runobjectcreated_atstring (date-time)updated_atstring (date-time)
curl "https://api.vivrecrm.com/api/v1/automations/" \
-H "X-Api-Key: $VIVRE_API_KEY"
import os, requests
resp = requests.get(
"https://api.vivrecrm.com/api/v1/automations/",
headers={"X-Api-Key": os.environ["VIVRE_API_KEY"]},
)
print(resp.json())
const resp = await fetch("https://api.vivrecrm.com/api/v1/automations/", {
method: "GET",
headers: {
"X-Api-Key": process.env.VIVRE_API_KEY,
},
});
console.log(await resp.json());
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"name": "Kaveri Foods",
"entity": "Lead",
"trigger": "",
"trigger_label": null,
"conditions": {},
"actions": [],
"run_on_imports": true,
"is_active": true,
"created_by": null,
"last_run": null,
"created_at": "2026-10-17T09:30:00+05:30",
"updated_at": "2026-10-17T09:30:00+05:30"
}
]
}
Create an automation
POST/api/v1/automations/
Owners and admins (automation.manage). Checked as a whole: a trigger of the record type, conditions as a list filter (match all is AND, match any is OR, {} for none), 1 to 10 actions with their inputs. Created switched on past the plan's max_automations is a 402.
Body
namestringRequiredentityenumRequired- One of
Lead,Contact,Company,Deal,Task. triggerstringRequiredconditionsobjectactionsarray of objectrun_on_importsbooleanis_activeboolean
Response fields 13
idstring (uuid)namestringentityenumtriggerstringtrigger_labelobjectconditionsobjectactionsarray of objectrun_on_importsbooleanis_activebooleancreated_byobjectlast_runobjectcreated_atstring (date-time)updated_atstring (date-time)
Can also return 400, 402, 403.
curl -X POST "https://api.vivrecrm.com/api/v1/automations/" \
-H "X-Api-Key: $VIVRE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Kaveri Foods", "entity": "Lead", "trigger": ""}'
import os, requests
resp = requests.post(
"https://api.vivrecrm.com/api/v1/automations/",
headers={"X-Api-Key": os.environ["VIVRE_API_KEY"]},
json={
"name": "Kaveri Foods",
"entity": "Lead",
"trigger": ""
},
)
print(resp.json())
const resp = await fetch("https://api.vivrecrm.com/api/v1/automations/", {
method: "POST",
headers: {
"X-Api-Key": process.env.VIVRE_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Kaveri Foods",
"entity": "Lead",
"trigger": ""
}),
});
console.log(await resp.json());
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"name": "Kaveri Foods",
"entity": "Lead",
"trigger": "",
"trigger_label": null,
"conditions": {},
"actions": [
null
],
"run_on_imports": true,
"is_active": true,
"created_by": null,
"last_run": null,
"created_at": "2026-10-17T09:30:00+05:30",
"updated_at": "2026-10-17T09:30:00+05:30"
}
What an automation can be made of
GET/api/v1/automations/catalogue/
Per record type, its triggers and the actions it takes with their inputs (kind says what to draw; a field input lists the fields update_field may set). And where the organization stands against its plan.
Response fields 2
entitiesarray of objectlimitsobject
curl "https://api.vivrecrm.com/api/v1/automations/catalogue/" \
-H "X-Api-Key: $VIVRE_API_KEY"
import os, requests
resp = requests.get(
"https://api.vivrecrm.com/api/v1/automations/catalogue/",
headers={"X-Api-Key": os.environ["VIVRE_API_KEY"]},
)
print(resp.json())
const resp = await fetch("https://api.vivrecrm.com/api/v1/automations/catalogue/", {
method: "GET",
headers: {
"X-Api-Key": process.env.VIVRE_API_KEY,
},
});
console.log(await resp.json());
{
"entities": [
{
"entity": "",
"triggers": [],
"actions": []
}
],
"limits": {
"max_automations": 1,
"active": 1,
"automation_runs_per_day": 1,
"runs_today": 1
}
}
Every automation's runs, newest first
GET/api/v1/automations/runs/
Kept 90 days.
Parameters
statusquery, enum
Response fields 10
idstring (uuid)automationobjecttriggerstringentitystringrecord_idstring- The record's public id
statusenumreasonstringstepsarray of objectcreated_atstring (date-time)finished_atstring (date-time)
Can also return 400.
curl "https://api.vivrecrm.com/api/v1/automations/runs/" \
-H "X-Api-Key: $VIVRE_API_KEY"
import os, requests
resp = requests.get(
"https://api.vivrecrm.com/api/v1/automations/runs/",
headers={"X-Api-Key": os.environ["VIVRE_API_KEY"]},
)
print(resp.json())
const resp = await fetch("https://api.vivrecrm.com/api/v1/automations/runs/", {
method: "GET",
headers: {
"X-Api-Key": process.env.VIVRE_API_KEY,
},
});
console.log(await resp.json());
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"automation": {
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"name": "Kaveri Foods"
},
"trigger": "",
"entity": "",
"record_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "queued",
"reason": "",
"steps": [],
"created_at": "2026-10-17T09:30:00+05:30",
"finished_at": "2026-10-17T09:30:00+05:30"
}
]
}
Retrieve an automation
GET/api/v1/automations/{public_id}/
Parameters
public_idpath, string (uuid)Required
Response fields 13
idstring (uuid)namestringentityenumtriggerstringtrigger_labelobjectconditionsobjectactionsarray of objectrun_on_importsbooleanis_activebooleancreated_byobjectlast_runobjectcreated_atstring (date-time)updated_atstring (date-time)
curl "https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/" \
-H "X-Api-Key: $VIVRE_API_KEY"
import os, requests
resp = requests.get(
"https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/",
headers={"X-Api-Key": os.environ["VIVRE_API_KEY"]},
)
print(resp.json())
const resp = await fetch("https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/", {
method: "GET",
headers: {
"X-Api-Key": process.env.VIVRE_API_KEY,
},
});
console.log(await resp.json());
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"name": "Kaveri Foods",
"entity": "Lead",
"trigger": "",
"trigger_label": null,
"conditions": {},
"actions": [
null
],
"run_on_imports": true,
"is_active": true,
"created_by": null,
"last_run": null,
"created_at": "2026-10-17T09:30:00+05:30",
"updated_at": "2026-10-17T09:30:00+05:30"
}
Replace an automation
PUT/api/v1/automations/{public_id}/
Owners and admins. Switching it on past the plan's max_automations is a 402.
Parameters
public_idpath, string (uuid)Required
Body
namestringRequiredentityenumRequired- One of
Lead,Contact,Company,Deal,Task. triggerstringRequiredconditionsobjectactionsarray of objectrun_on_importsbooleanis_activeboolean
Response fields 13
idstring (uuid)namestringentityenumtriggerstringtrigger_labelobjectconditionsobjectactionsarray of objectrun_on_importsbooleanis_activebooleancreated_byobjectlast_runobjectcreated_atstring (date-time)updated_atstring (date-time)
Can also return 402.
curl -X PUT "https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/" \
-H "X-Api-Key: $VIVRE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Kaveri Foods", "entity": "Lead", "trigger": ""}'
import os, requests
resp = requests.put(
"https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/",
headers={"X-Api-Key": os.environ["VIVRE_API_KEY"]},
json={
"name": "Kaveri Foods",
"entity": "Lead",
"trigger": ""
},
)
print(resp.json())
const resp = await fetch("https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/", {
method: "PUT",
headers: {
"X-Api-Key": process.env.VIVRE_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Kaveri Foods",
"entity": "Lead",
"trigger": ""
}),
});
console.log(await resp.json());
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"name": "Kaveri Foods",
"entity": "Lead",
"trigger": "",
"trigger_label": null,
"conditions": {},
"actions": [
null
],
"run_on_imports": true,
"is_active": true,
"created_by": null,
"last_run": null,
"created_at": "2026-10-17T09:30:00+05:30",
"updated_at": "2026-10-17T09:30:00+05:30"
}
Update an automation
PATCH/api/v1/automations/{public_id}/
Owners and admins. A change is checked against the rest (a new record type needs its own trigger and actions). Switching it on past the plan's max_automations is a 402.
Parameters
public_idpath, string (uuid)Required
Body
namestringRequiredentityenumRequired- One of
Lead,Contact,Company,Deal,Task. triggerstringRequiredconditionsobjectactionsarray of objectrun_on_importsbooleanis_activeboolean
Response fields 13
idstring (uuid)namestringentityenumtriggerstringtrigger_labelobjectconditionsobjectactionsarray of objectrun_on_importsbooleanis_activebooleancreated_byobjectlast_runobjectcreated_atstring (date-time)updated_atstring (date-time)
Can also return 402.
curl -X PATCH "https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/" \
-H "X-Api-Key: $VIVRE_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Kaveri Foods", "entity": "Lead", "trigger": ""}'
import os, requests
resp = requests.patch(
"https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/",
headers={"X-Api-Key": os.environ["VIVRE_API_KEY"]},
json={
"name": "Kaveri Foods",
"entity": "Lead",
"trigger": ""
},
)
print(resp.json())
const resp = await fetch("https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/", {
method: "PATCH",
headers: {
"X-Api-Key": process.env.VIVRE_API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"name": "Kaveri Foods",
"entity": "Lead",
"trigger": ""
}),
});
console.log(await resp.json());
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"name": "Kaveri Foods",
"entity": "Lead",
"trigger": "",
"trigger_label": null,
"conditions": {},
"actions": [
null
],
"run_on_imports": true,
"is_active": true,
"created_by": null,
"last_run": null,
"created_at": "2026-10-17T09:30:00+05:30",
"updated_at": "2026-10-17T09:30:00+05:30"
}
Delete an automation
DELETE/api/v1/automations/{public_id}/
Owners and admins. Its run history goes with it.
Parameters
public_idpath, string (uuid)Required
curl -X DELETE "https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/" \
-H "X-Api-Key: $VIVRE_API_KEY"
import os, requests
resp = requests.delete(
"https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/",
headers={"X-Api-Key": os.environ["VIVRE_API_KEY"]},
)
print(resp.status_code)
const resp = await fetch("https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/", {
method: "DELETE",
headers: {
"X-Api-Key": process.env.VIVRE_API_KEY,
},
});
console.log(resp.status);
One automation's runs, newest first
GET/api/v1/automations/{public_id}/runs/
Parameters
public_idpath, string (uuid)Requiredstatusquery, enum
Response fields 10
idstring (uuid)automationobjecttriggerstringentitystringrecord_idstring- The record's public id
statusenumreasonstringstepsarray of objectcreated_atstring (date-time)finished_atstring (date-time)
curl "https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/runs/" \
-H "X-Api-Key: $VIVRE_API_KEY"
import os, requests
resp = requests.get(
"https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/runs/",
headers={"X-Api-Key": os.environ["VIVRE_API_KEY"]},
)
print(resp.json())
const resp = await fetch("https://api.vivrecrm.com/api/v1/automations/7c9e6679-7425-40de-944b-e07fc1f90ae7/runs/", {
method: "GET",
headers: {
"X-Api-Key": process.env.VIVRE_API_KEY,
},
});
console.log(await resp.json());
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"automation": {
"id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"name": "Kaveri Foods"
},
"trigger": "",
"entity": "",
"record_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "queued",
"reason": "",
"steps": [],
"created_at": "2026-10-17T09:30:00+05:30",
"finished_at": "2026-10-17T09:30:00+05:30"
}
]
}