API reference
Customers
/ v1/ orgs/ :orgId/ crm/ objectsEvery object with its fields, validation rules and indexes.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
objects: {
id: string
label: string
plural: string
prefix: string
glyph: string
custom?: boolean
nameFields: string[]
fields: {
id: string
label: string
type: "number" | "text" | "email" | "url" | "date" | "owner" | "pipeline" | "phone" | "textarea" | "checkbox" | "currency" | "stage" | "lookup" | "datetime" | "percent" | "picklist" | "multipicklist" | "lookups"
required?: boolean
custom?: boolean
system?: boolean
readOnly?: boolean
searchable?: boolean
help?: string
maxLength?: number
min?: number
max?: number
decimals?: number
values?: {
value: string
label?: string
inactive?: boolean
}[]
target?: string
convertTo?: {
object: "contact" | "account" | "opportunity"
field: string
}
}[]
rules: {
id: string
name: string
active: boolean
when: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
require: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
message: string
field?: string
}[]
sharing: "read" | "private" | "readwrite"
indexes: {
id: string
eq: string[]
sort: string
status: "building" | "ready"
builtin?: boolean
createdAt: number
}[]
indexShards: number
listColumns: string[]
subtitleFields: string[]
version: number
createdAt: number
updatedAt: number
}[]
}/ v1/ orgs/ :orgId/ crm/ objectsA custom object (Customers admins): a name field, the system fields and the built-in indexes.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).
Request body
labelstringrequired1–60 characters. Trimmed.
pluralstringDefault
"". Up to 60 characters. Trimmed.nameLabelstringUp to 60 characters. Trimmed.
sharing"private" | "read" | "readwrite"
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"label": "Example"
}'Response 201
{
object: {
id: string
label: string
plural: string
prefix: string
glyph: string
custom?: boolean
nameFields: string[]
fields: {
id: string
label: string
type: "number" | "text" | "email" | "url" | "date" | "owner" | "pipeline" | "phone" | "textarea" | "checkbox" | "currency" | "stage" | "lookup" | "datetime" | "percent" | "picklist" | "multipicklist" | "lookups"
required?: boolean
custom?: boolean
system?: boolean
readOnly?: boolean
searchable?: boolean
help?: string
maxLength?: number
min?: number
max?: number
decimals?: number
values?: {
value: string
label?: string
inactive?: boolean
}[]
target?: string
convertTo?: {
object: "contact" | "account" | "opportunity"
field: string
}
}[]
rules: {
id: string
name: string
active: boolean
when: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
require: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
message: string
field?: string
}[]
sharing: "read" | "private" | "readwrite"
indexes: {
id: string
eq: string[]
sort: string
status: "building" | "ready"
builtin?: boolean
createdAt: number
}[]
indexShards: number
listColumns: string[]
subtitleFields: string[]
version: number
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :objectOne object with its fields, validation rules and indexes.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
object: {
id: string
label: string
plural: string
prefix: string
glyph: string
custom?: boolean
nameFields: string[]
fields: {
id: string
label: string
type: "number" | "text" | "email" | "url" | "date" | "owner" | "pipeline" | "phone" | "textarea" | "checkbox" | "currency" | "stage" | "lookup" | "datetime" | "percent" | "picklist" | "multipicklist" | "lookups"
required?: boolean
custom?: boolean
system?: boolean
readOnly?: boolean
searchable?: boolean
help?: string
maxLength?: number
min?: number
max?: number
decimals?: number
values?: {
value: string
label?: string
inactive?: boolean
}[]
target?: string
convertTo?: {
object: "contact" | "account" | "opportunity"
field: string
}
}[]
rules: {
id: string
name: string
active: boolean
when: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
require: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
message: string
field?: string
}[]
sharing: "read" | "private" | "readwrite"
indexes: {
id: string
eq: string[]
sort: string
status: "building" | "ready"
builtin?: boolean
createdAt: number
}[]
indexShards: number
listColumns: string[]
subtitleFields: string[]
version: number
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :objectLabels, sharing default, default columns and search subtitle (Customers admins), over version.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Request body
versionintegerrequiredlabelstringUp to 60 characters. Trimmed.
pluralstringUp to 60 characters. Trimmed.
sharing"private" | "read" | "readwrite"listColumnsstring[]Up to 30 items. Each 1–60 characters.
subtitleFieldsstring[]Up to 5 items. Each 1–60 characters.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"version": 1
}'Response 200
{
object: {
id: string
label: string
plural: string
prefix: string
glyph: string
custom?: boolean
nameFields: string[]
fields: {
id: string
label: string
type: "number" | "text" | "email" | "url" | "date" | "owner" | "pipeline" | "phone" | "textarea" | "checkbox" | "currency" | "stage" | "lookup" | "datetime" | "percent" | "picklist" | "multipicklist" | "lookups"
required?: boolean
custom?: boolean
system?: boolean
readOnly?: boolean
searchable?: boolean
help?: string
maxLength?: number
min?: number
max?: number
decimals?: number
values?: {
value: string
label?: string
inactive?: boolean
}[]
target?: string
convertTo?: {
object: "contact" | "account" | "opportunity"
field: string
}
}[]
rules: {
id: string
name: string
active: boolean
when: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
require: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
message: string
field?: string
}[]
sharing: "read" | "private" | "readwrite"
indexes: {
id: string
eq: string[]
sort: string
status: "building" | "ready"
builtin?: boolean
createdAt: number
}[]
indexShards: number
listColumns: string[]
subtitleFields: string[]
version: number
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :objectDeletes a custom object without records.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
ok: true
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ fieldsAdds a custom field (Customers admins): text, number, currency, date, picklist, multi-picklist, checkbox, lookup, email, phone or URL; required makes it required.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Request body
labelstringrequired1–80 characters. Trimmed.
type"text" | "textarea" | "number" | "currency" | "percent" | "date" | "datetime" | "picklist" | "multipicklist" | "checkbox" | "lookup" | "email" | "phone" | "url"requiredrequiredbooleanhelpstringUp to 255 characters.
searchablebooleanmaxLengthinteger1–32000.
minnumbermaxnumberdecimalsinteger0–6.
valuesobject[]Up to 2,000 items.
values[].valuestringDefault
"". Up to 80 characters.values[].labelstringUp to 80 characters.
values[].inactivebooleantargetstringUp to 40 characters.
convertToobjectconvertTo.object"account" | "contact" | "opportunity"requiredconvertTo.fieldstringrequired1–60 characters.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/fields' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"label": "Example",
"type": "text"
}'Response 201
{
object: {
id: string
label: string
plural: string
prefix: string
glyph: string
custom?: boolean
nameFields: string[]
fields: {
id: string
label: string
type: "number" | "text" | "email" | "url" | "date" | "owner" | "pipeline" | "phone" | "textarea" | "checkbox" | "currency" | "stage" | "lookup" | "datetime" | "percent" | "picklist" | "multipicklist" | "lookups"
required?: boolean
custom?: boolean
system?: boolean
readOnly?: boolean
searchable?: boolean
help?: string
maxLength?: number
min?: number
max?: number
decimals?: number
values?: {
value: string
label?: string
inactive?: boolean
}[]
target?: string
convertTo?: {
object: "contact" | "account" | "opportunity"
field: string
}
}[]
rules: {
id: string
name: string
active: boolean
when: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
require: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
message: string
field?: string
}[]
sharing: "read" | "private" | "readwrite"
indexes: {
id: string
eq: string[]
sort: string
status: "building" | "ready"
builtin?: boolean
createdAt: number
}[]
indexShards: number
listColumns: string[]
subtitleFields: string[]
version: number
createdAt: number
updatedAt: number
}
field: {
id: string
label: string
type: "number" | "text" | "email" | "url" | "date" | "owner" | "pipeline" | "phone" | "textarea" | "checkbox" | "currency" | "stage" | "lookup" | "datetime" | "percent" | "picklist" | "multipicklist" | "lookups"
required?: boolean
custom?: boolean
system?: boolean
readOnly?: boolean
searchable?: boolean
help?: string
maxLength?: number
min?: number
max?: number
decimals?: number
values?: {
value: string
label?: string
inactive?: boolean
}[]
target?: string
convertTo?: {
object: "contact" | "account" | "opportunity"
field: string
}
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ fields/ :fieldChanges a field's label, help, required, picklist values or lookup, over the object's version.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).fieldA field's id in Customers, as
GET …/crm/objects/:objectlists them (custom fieldsx_…).
Request body
labelstring1–80 characters. Trimmed.
requiredbooleanhelpstringUp to 255 characters.
searchablebooleanmaxLengthinteger1–32000.
minnumbermaxnumberdecimalsinteger0–6.
valuesobject[]Up to 2,000 items.
values[].valuestringDefault
"". Up to 80 characters.values[].labelstringUp to 80 characters.
values[].inactivebooleanversionintegerrequiredconvertToany JSONrequiredor null
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/fields/{field}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"version": 1,
"convertTo": {}
}'Response 200
{
object: {
id: string
label: string
plural: string
prefix: string
glyph: string
custom?: boolean
nameFields: string[]
fields: {
id: string
label: string
type: "number" | "text" | "email" | "url" | "date" | "owner" | "pipeline" | "phone" | "textarea" | "checkbox" | "currency" | "stage" | "lookup" | "datetime" | "percent" | "picklist" | "multipicklist" | "lookups"
required?: boolean
custom?: boolean
system?: boolean
readOnly?: boolean
searchable?: boolean
help?: string
maxLength?: number
min?: number
max?: number
decimals?: number
values?: {
value: string
label?: string
inactive?: boolean
}[]
target?: string
convertTo?: {
object: "contact" | "account" | "opportunity"
field: string
}
}[]
rules: {
id: string
name: string
active: boolean
when: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
require: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
message: string
field?: string
}[]
sharing: "read" | "private" | "readwrite"
indexes: {
id: string
eq: string[]
sort: string
status: "building" | "ready"
builtin?: boolean
createdAt: number
}[]
indexShards: number
listColumns: string[]
subtitleFields: string[]
version: number
createdAt: number
updatedAt: number
}
field: {
id: string
label: string
type: "number" | "text" | "email" | "url" | "date" | "owner" | "pipeline" | "phone" | "textarea" | "checkbox" | "currency" | "stage" | "lookup" | "datetime" | "percent" | "picklist" | "multipicklist" | "lookups"
required?: boolean
custom?: boolean
system?: boolean
readOnly?: boolean
searchable?: boolean
help?: string
maxLength?: number
min?: number
max?: number
decimals?: number
values?: {
value: string
label?: string
inactive?: boolean
}[]
target?: string
convertTo?: {
object: "contact" | "account" | "opportunity"
field: string
}
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ fields/ :fieldDeletes a custom field, with its rules and indexes (their entries go in the background).
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).fieldA field's id in Customers, as
GET …/crm/objects/:objectlists them (custom fieldsx_…).
Query parameters
versionintegerrequiredCoerced from a string.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/fields/{field}?version=1' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
object: {
id: string
label: string
plural: string
prefix: string
glyph: string
custom?: boolean
nameFields: string[]
fields: {
id: string
label: string
type: "number" | "text" | "email" | "url" | "date" | "owner" | "pipeline" | "phone" | "textarea" | "checkbox" | "currency" | "stage" | "lookup" | "datetime" | "percent" | "picklist" | "multipicklist" | "lookups"
required?: boolean
custom?: boolean
system?: boolean
readOnly?: boolean
searchable?: boolean
help?: string
maxLength?: number
min?: number
max?: number
decimals?: number
values?: {
value: string
label?: string
inactive?: boolean
}[]
target?: string
convertTo?: {
object: "contact" | "account" | "opportunity"
field: string
}
}[]
rules: {
id: string
name: string
active: boolean
when: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
require: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
message: string
field?: string
}[]
sharing: "read" | "private" | "readwrite"
indexes: {
id: string
eq: string[]
sort: string
status: "building" | "ready"
builtin?: boolean
createdAt: number
}[]
indexShards: number
listColumns: string[]
subtitleFields: string[]
version: number
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ rulesReplaces the object's validation rules.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Request body
versionintegerrequiredrulesobject[]requiredUp to 500 items.
rules[].idstringrequiredUp to 40 characters.
rules[].namestringrequired1–80 characters. Trimmed.
rules[].activebooleanrequiredrules[].whenobject[]requiredUp to 10 items.
rules[].when[].fieldstringrequired1–60 characters.
rules[].when[].op"eq" | "ne" | "gt" | "gte" | "lt" | "lte" | "contains" | "blank" | "notBlank"requiredrules[].when[].valueany JSONrules[].requireobject[]required1–10 items.
rules[].require[].fieldstringrequired1–60 characters.
rules[].require[].op"eq" | "ne" | "gt" | "gte" | "lt" | "lte" | "contains" | "blank" | "notBlank"requiredrules[].require[].valueany JSONrules[].messagestringrequired1–255 characters. Trimmed.
rules[].fieldstring1–60 characters.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/rules' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"version": 1,
"rules": [
{
"id": "<id>",
"name": "Example",
"active": true,
"when": [
{
"field": "example",
"op": "eq"
}
],
"require": [
{
"field": "example",
"op": "eq"
}
],
"message": "example"
}
]
}'Response 200
{
object: {
id: string
label: string
plural: string
prefix: string
glyph: string
custom?: boolean
nameFields: string[]
fields: {
id: string
label: string
type: "number" | "text" | "email" | "url" | "date" | "owner" | "pipeline" | "phone" | "textarea" | "checkbox" | "currency" | "stage" | "lookup" | "datetime" | "percent" | "picklist" | "multipicklist" | "lookups"
required?: boolean
custom?: boolean
system?: boolean
readOnly?: boolean
searchable?: boolean
help?: string
maxLength?: number
min?: number
max?: number
decimals?: number
values?: {
value: string
label?: string
inactive?: boolean
}[]
target?: string
convertTo?: {
object: "contact" | "account" | "opportunity"
field: string
}
}[]
rules: {
id: string
name: string
active: boolean
when: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
require: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
message: string
field?: string
}[]
sharing: "read" | "private" | "readwrite"
indexes: {
id: string
eq: string[]
sort: string
status: "building" | "ready"
builtin?: boolean
createdAt: number
}[]
indexShards: number
listColumns: string[]
subtitleFields: string[]
version: number
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ indexesAdds an index (built in the background): up to two equality fields and a sort field.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Request body
eqstring[]requiredUp to 2 items. Each 1–60 characters.
sortstringrequired1–60 characters.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/indexes' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"eq": [
"example"
],
"sort": "example"
}'Response 201
{
index: {
id: string
eq: string[]
sort: string
status: "building" | "ready"
builtin?: boolean
createdAt: number
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ indexes/ :indexIdDrops a custom index (its entries go in the background); built-in ones stay.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).indexIdA list view index's id in Customers (
ix…), as the object'sindexeslist them.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/indexes/{indexId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
object: {
id: string
label: string
plural: string
prefix: string
glyph: string
custom?: boolean
nameFields: string[]
fields: {
id: string
label: string
type: "number" | "text" | "email" | "url" | "date" | "owner" | "pipeline" | "phone" | "textarea" | "checkbox" | "currency" | "stage" | "lookup" | "datetime" | "percent" | "picklist" | "multipicklist" | "lookups"
required?: boolean
custom?: boolean
system?: boolean
readOnly?: boolean
searchable?: boolean
help?: string
maxLength?: number
min?: number
max?: number
decimals?: number
values?: {
value: string
label?: string
inactive?: boolean
}[]
target?: string
convertTo?: {
object: "contact" | "account" | "opportunity"
field: string
}
}[]
rules: {
id: string
name: string
active: boolean
when: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
require: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
message: string
field?: string
}[]
sharing: "read" | "private" | "readwrite"
indexes: {
id: string
eq: string[]
sort: string
status: "building" | "ready"
builtin?: boolean
createdAt: number
}[]
indexShards: number
listColumns: string[]
subtitleFields: string[]
version: number
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ viewsBuilt-in, shared and the caller's own list views.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/views' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
views: {
id: string
object: string
name: string
ownerId?: string
filters: {
field: string
op: "in" | "startsWith" | "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
sort: {
field: string
dir: "asc" | "desc"
}
columns: string[]
builtin?: boolean
createdAt: number
updatedAt: number
}[]
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ viewsSaves a view (shared ones: Customers admins); an index it needs is added and built.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Request body
namestringrequired1–80 characters. Trimmed.
filtersobject[]Default
[]. Up to 20 items.filters[].fieldstringrequired1–60 characters.
filters[].op"eq" | "ne" | "in" | "gt" | "gte" | "lt" | "lte" | "contains" | "startsWith" | "blank" | "notBlank"requiredfilters[].valueany JSONsortobjectrequiredsort.fieldstringrequired1–60 characters.
sort.dir"asc" | "desc"requiredcolumnsstring[]Default
[]. Up to 30 items. Each 1–60 characters.sharedboolean
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/views' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "Example",
"sort": {
"field": "example",
"dir": "asc"
}
}'Response 201
{
view: {
id: string
object: string
name: string
ownerId?: string
filters: {
field: string
op: "in" | "startsWith" | "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
sort: {
field: string
dir: "asc" | "desc"
}
columns: string[]
builtin?: boolean
createdAt: number
updatedAt: number
}
index?: {
id: string
eq: string[]
sort: string
status: "building" | "ready"
builtin?: boolean
createdAt: number
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ views/ :viewIdChanges a saved view (the caller's own; shared ones: Customers admins).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).viewIdA list view:
all,mine,recentor a saved view's id (cvw_…).
Request body
namestringrequired1–80 characters. Trimmed.
filtersobject[]Default
[]. Up to 20 items.filters[].fieldstringrequired1–60 characters.
filters[].op"eq" | "ne" | "in" | "gt" | "gte" | "lt" | "lte" | "contains" | "startsWith" | "blank" | "notBlank"requiredfilters[].valueany JSONsortobjectrequiredsort.fieldstringrequired1–60 characters.
sort.dir"asc" | "desc"requiredcolumnsstring[]Default
[]. Up to 30 items. Each 1–60 characters.sharedboolean
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/views/{viewId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "Example",
"sort": {
"field": "example",
"dir": "asc"
}
}'Response 200
{
view: {
id: string
object: string
name: string
ownerId?: string
filters: {
field: string
op: "in" | "startsWith" | "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
sort: {
field: string
dir: "asc" | "desc"
}
columns: string[]
builtin?: boolean
createdAt: number
updatedAt: number
}
index?: {
id: string
eq: string[]
sort: string
status: "building" | "ready"
builtin?: boolean
createdAt: number
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ views/ :viewIdDeletes a saved view (the caller's own; shared ones: Customers admins).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).viewIdA list view:
all,mine,recentor a saved view's id (cvw_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/views/{viewId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
ok: true
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ recordsA page of records by a view, or filters (JSON) and sort; cursor continues.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Query parameters
viewstringUp to 40 characters.
filtersstringUp to 8,000 characters.
sortstringUp to 80 characters.
cursorstringUp to 8,000 characters.
limitintegerDefault
50. 1–200. Coerced from a string.
Errors
400filters: a JSON list of { field, op, value }.400sort: field:asc or field:desc.429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/records' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
names: {
records: {
[key: string]: {
id: string
name: string
object: string
}
}
people: {
[key: string]: string
}
}
records: {
id: string
object: string
version: number
ownerId: string
name: string
fields: {
[key: string]: unknown
}
createdAt: number
updatedAt: number
createdBy: string
updatedBy: string
via: "app" | "api" | "mcp" | "calendar" | "mail" | "marketing" | "system" | "import" | "convert"
}[]
cursor?: string
total?: number
missingIndex?: {
eq: string[]
sort: string
}
partial?: boolean
plan: {
index: string
exactSort: boolean
memorySort: boolean
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ records/ queryThe same list with the filters in the body.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Request body
viewstringUp to 40 characters.
filtersobject[]Up to 20 items.
filters[].fieldstringrequired1–60 characters.
filters[].op"eq" | "ne" | "in" | "gt" | "gte" | "lt" | "lte" | "contains" | "startsWith" | "blank" | "notBlank"requiredfilters[].valueany JSONsortobjectsort.fieldstringrequired1–60 characters.
sort.dir"asc" | "desc"requiredcursorstringUp to 8,000 characters.
limitintegerDefault
50. 1–200.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/records/query' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"view": "example",
"filters": [
{
"field": "example",
"op": "eq"
}
],
"sort": {
"field": "example",
"dir": "asc"
}
}'Response 200
{
names: {
records: {
[key: string]: {
id: string
name: string
object: string
}
}
people: {
[key: string]: string
}
}
records: {
id: string
object: string
version: number
ownerId: string
name: string
fields: {
[key: string]: unknown
}
createdAt: number
updatedAt: number
createdBy: string
updatedBy: string
via: "app" | "api" | "mcp" | "calendar" | "mail" | "marketing" | "system" | "import" | "convert"
}[]
cursor?: string
total?: number
missingIndex?: {
eq: string[]
sort: string
}
partial?: boolean
plan: {
index: string
exactSort: boolean
memorySort: boolean
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ recordsCreates a record owned by the caller (or ownerId); field errors come back as 422 with errors.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Request body
fieldsobjectrequiredKeys up to 60 characters. Values: any JSON.
ownerIdstringUp to 40 characters.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/records' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"fields": {}
}'Response 201
{
record: {
id: string
object: string
version: number
ownerId: string
name: string
fields: {
[key: string]: unknown
}
createdAt: number
updatedAt: number
createdBy: string
updatedBy: string
via: "app" | "api" | "mcp" | "calendar" | "mail" | "marketing" | "system" | "import" | "convert"
}
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ records/ bulkUpdates, transfers or deletes many records; each reports its own result.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Request body
idsstring[]required1–1,000 items. Each matches
^[a-z][a-z0-9]{1,5}_[0-9a-z]{26}$.operation"update" | "transfer" | "delete"requiredfieldsobjectKeys up to 60 characters. Values: any JSON.
ownerIdstringUp to 40 characters.
Errors
400ownerId: who gets the records.429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/records/bulk' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"ids": [
"example"
],
"operation": "update"
}'Response 200
{
results: {
id: string
ok: true
error?: undefined
} | {
id: string
ok: false
error: string
}[]
}/ v1/ orgs/ :orgId/ crm/ objects/ :object/ exportA view (or filters) as CSV, up to 10,000 rows; X-More: 1 when there are more (use an export job).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Query parameters
viewstringUp to 40 characters.
filtersstringUp to 8,000 characters.
sortstringUp to 80 characters.
columnsstringUp to 2,000 characters.
Errors
400filters: a JSON list of { field, op, value }.400sort: field:asc or field:desc.429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/export' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200 with no body
/ v1/ orgs/ :orgId/ crm/ objects/ :object/ exportsExports a view to a file in the background (any size); download it from the job when done.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).objectAn object's id in Customers:
account,contact,lead,opportunity,activity, or a custom object's (x_…).
Request body
viewstringUp to 40 characters.
filtersobject[]Up to 20 items.
filters[].fieldstringrequired1–60 characters.
filters[].op"eq" | "ne" | "in" | "gt" | "gte" | "lt" | "lte" | "contains" | "startsWith" | "blank" | "notBlank"requiredfilters[].valueany JSONsortobjectsort.fieldstringrequired1–60 characters.
sort.dir"asc" | "desc"requiredcolumnsstring[]Up to 60 items. Each 1–60 characters.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/objects/{object}/exports' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"view": "example",
"filters": [
{
"field": "example",
"op": "eq"
}
],
"sort": {
"field": "example",
"dir": "asc"
}
}'Response 202
{
job: {
id: string
kind: "import" | "export"
object: string
state: "queued" | "ready" | "done" | "failed" | "running" | "uploading"
fileName: string
fileKey: string
size: number
headers?: string[]
mapping?: string[]
options?: {
mode: "create" | "upsert"
ownerId?: string
dateOrder: "iso" | "dmy" | "mdy"
}
view?: {
viewId?: string
filters?: unknown[]
sort?: unknown
columns?: string[]
}
progress: {
rows: number
created: number
updated: number
failed: number
offset: number
}
errors: {
row: number
message: string
}[]
error?: string
createdBy: string
createdByLabel: string
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ crm/ records/ :idThe record, what the caller may do with it, and names of the people and records it refers to.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).idA record's id in Customers: its object's prefix and a time-sortable id (
acc_…,cnt_…,led_…,opp_…,act_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/records/{id}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
record: {
id: string
object: string
version: number
ownerId: string
name: string
fields: {
[key: string]: unknown
}
createdAt: number
updatedAt: number
createdBy: string
updatedBy: string
via: "app" | "api" | "mcp" | "calendar" | "mail" | "marketing" | "system" | "import" | "convert"
}
object: string
access: {
read: boolean
edit: boolean
delete: boolean
transfer: boolean
}
names: {
records: {
[key: string]: {
id: string
name: string
object: string
}
}
people: {
[key: string]: string
}
}
}/ v1/ orgs/ :orgId/ crm/ records/ :idChanges fields and the owner; version refuses a stale edit (409).
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).idA record's id in Customers: its object's prefix and a time-sortable id (
acc_…,cnt_…,led_…,opp_…,act_…).
Request body
fieldsobjectKeys up to 60 characters. Values: any JSON.
ownerIdstringUp to 40 characters.
versioninteger
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/records/{id}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"fields": {},
"ownerId": "<ownerId>",
"version": 1
}'Response 200
{
record: {
id: string
object: string
version: number
ownerId: string
name: string
fields: {
[key: string]: unknown
}
createdAt: number
updatedAt: number
createdBy: string
updatedBy: string
via: "app" | "api" | "mcp" | "calendar" | "mail" | "marketing" | "system" | "import" | "convert"
}
}/ v1/ orgs/ :orgId/ crm/ records/ :idDeletes the record; its history and the audit log keep who deleted it.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).idA record's id in Customers: its object's prefix and a time-sortable id (
acc_…,cnt_…,led_…,opp_…,act_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/records/{id}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
ok: true
}/ v1/ orgs/ :orgId/ crm/ records/ :id/ historyField changes, newest first.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).idA record's id in Customers: its object's prefix and a time-sortable id (
acc_…,cnt_…,led_…,opp_…,act_…).
Query parameters
cursorstringUp to 2,000 characters.
limitintegerDefault
50. 1–200. Coerced from a string.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/records/{id}/history' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
entries: {
at: number
version: number
actor: string
via: "app" | "api" | "mcp" | "calendar" | "mail" | "marketing" | "system" | "import" | "convert"
kind: "deleted" | "created" | "updated" | "converted"
changes: {
field: string
from?: unknown
to?: unknown
}[]
}[]
cursor?: string
}/ v1/ orgs/ :orgId/ crm/ records/ :id/ activitiesThe timeline: activities related to the record, newest first.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).idA record's id in Customers: its object's prefix and a time-sortable id (
acc_…,cnt_…,led_…,opp_…,act_…).
Query parameters
cursorstringUp to 8,000 characters.
limitintegerDefault
25. 1–100. Coerced from a string.type"task" | "call" | "meeting" | "note" | "email"
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/records/{id}/activities' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
names: {
records: {
[key: string]: {
id: string
name: string
object: string
}
}
people: {
[key: string]: string
}
}
records: {
id: string
object: string
version: number
ownerId: string
name: string
fields: {
[key: string]: unknown
}
createdAt: number
updatedAt: number
createdBy: string
updatedBy: string
via: "app" | "api" | "mcp" | "calendar" | "mail" | "marketing" | "system" | "import" | "convert"
}[]
cursor?: string
total?: number
missingIndex?: {
eq: string[]
sort: string
}
partial?: boolean
plan: {
index: string
exactSort: boolean
memorySort: boolean
}
}/ v1/ orgs/ :orgId/ crm/ records/ :id/ activitiesLogs a task, call, meeting, note or email on the record (and any others in relatedIds).
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).idA record's id in Customers: its object's prefix and a time-sortable id (
acc_…,cnt_…,led_…,opp_…,act_…).
Request body
type"task" | "call" | "meeting" | "note" | "email"requiredsubjectstringrequired1–255 characters. Trimmed.
bodystringUp to 32,000 characters.
status"open" | "completed"dueDatestringMatches
^\d{4}-\d{2}-\d{2}$.startAtnumber | stringUp to 40 characters.
endAtnumber | stringUp to 40 characters.
durationMinutesinteger0–100000.
direction"inbound" | "outbound"relatedIdsstring[]Default
[]. Up to 24 items. Each matches^[a-z][a-z0-9]{1,5}_[0-9a-z]{26}$.ownerIdstringUp to 40 characters.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/records/{id}/activities' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"type": "task",
"subject": "Example"
}'Response 201
{
record: {
id: string
object: string
version: number
ownerId: string
name: string
fields: {
[key: string]: unknown
}
createdAt: number
updatedAt: number
createdBy: string
updatedBy: string
via: "app" | "api" | "mcp" | "calendar" | "mail" | "marketing" | "system" | "import" | "convert"
}
}/ v1/ orgs/ :orgId/ crm/ records/ :id/ convertConverts a lead into an account (or uses one), a contact (or uses one) and an opportunity.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).idA record's id in Customers: its object's prefix and a time-sortable id (
acc_…,cnt_…,led_…,opp_…,act_…).
Request body
accountIdstringMatches
^[a-z][a-z0-9]{1,5}_[0-9a-z]{26}$.contactIdstringMatches
^[a-z][a-z0-9]{1,5}_[0-9a-z]{26}$.createOpportunitybooleanDefault
true.opportunityobjectopportunity.namestringUp to 255 characters.
opportunity.pipelineIdstringUp to 40 characters.
opportunity.stagestringUp to 40 characters.
opportunity.amountnumber≥ 0.
opportunity.closeDatestringMatches
^\d{4}-\d{2}-\d{2}$.ownerIdstringUp to 40 characters.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/records/{id}/convert' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"accountId": "<accountId>",
"contactId": "<contactId>",
"createOpportunity": true
}'Response 200
{
lead: {
id: string
object: string
version: number
ownerId: string
name: string
fields: {
[key: string]: unknown
}
createdAt: number
updatedAt: number
createdBy: string
updatedBy: string
via: "app" | "api" | "mcp" | "calendar" | "mail" | "marketing" | "system" | "import" | "convert"
}
accountId: string
contactId: string
opportunityId?: string
}/ v1/ orgs/ :orgId/ crm/ pipelinesOpportunity pipelines with their stages.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/pipelines' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
pipelines: {
id: string
name: string
stages: {
id: string
name: string
probability: number
category: "open" | "lost" | "won"
}[]
isDefault?: boolean
order: number
version: number
}[]
}/ v1/ orgs/ :orgId/ crm/ pipelinesA pipeline (Customers admins): stages with probability and whether each is open, won or lost.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).
Request body
namestringrequired1–80 characters. Trimmed.
stagesobject[]required3–30 items.
stages[].idstringUp to 40 characters.
stages[].namestringrequired1–60 characters. Trimmed.
stages[].probabilitynumberrequired0–100.
stages[].category"open" | "won" | "lost"requiredisDefaultbooleanorderinteger0–1000.
versioninteger
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/pipelines' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "Example",
"stages": [
{
"name": "Example",
"probability": 1,
"category": "open"
}
]
}'Response 201
{
pipeline: {
id: string
name: string
stages: {
id: string
name: string
probability: number
category: "open" | "lost" | "won"
}[]
isDefault?: boolean
order: number
version: number
}
}/ v1/ orgs/ :orgId/ crm/ pipelines/ :pipelineIdReplaces a pipeline's name and stages (Customers admins), over version; a stage with deals can't be removed.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).pipelineIdA pipeline's id in Customers (
sales, orpip_…).
Request body
namestringrequired1–80 characters. Trimmed.
stagesobject[]required3–30 items.
stages[].idstringUp to 40 characters.
stages[].namestringrequired1–60 characters. Trimmed.
stages[].probabilitynumberrequired0–100.
stages[].category"open" | "won" | "lost"requiredisDefaultbooleanorderinteger0–1000.
versioninteger
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/pipelines/{pipelineId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "Example",
"stages": [
{
"name": "Example",
"probability": 1,
"category": "open"
}
]
}'Response 200
{
pipeline: {
id: string
name: string
stages: {
id: string
name: string
probability: number
category: "open" | "lost" | "won"
}[]
isDefault?: boolean
order: number
version: number
}
}/ v1/ orgs/ :orgId/ crm/ pipelines/ :pipelineIdDeletes a pipeline without opportunities (Customers admins); the default stays.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).pipelineIdA pipeline's id in Customers (
sales, orpip_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/pipelines/{pipelineId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
ok: true
}/ v1/ orgs/ :orgId/ crm/ pipelines/ :pipelineId/ boardThe board: each stage's first opportunities by close date with its count and amount; stage and cursor page one column.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).pipelineIdA pipeline's id in Customers (
sales, orpip_…).
Query parameters
perStageintegerDefault
25. 1–100. Coerced from a string.stagestringUp to 40 characters.
cursorstringUp to 8,000 characters.
ownerstringUp to 40 characters.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/pipelines/{pipelineId}/board' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
names: {
records: {
[key: string]: {
id: string
name: string
object: string
}
}
people: {
[key: string]: string
}
}
pipeline: {
id: string
name: string
stages: {
id: string
name: string
probability: number
category: "open" | "lost" | "won"
}[]
isDefault?: boolean
order: number
version: number
}
columns: {
stage: {
id: string
name: string
probability: number
category: "open" | "lost" | "won"
}
records: {
id: string
object: string
version: number
ownerId: string
name: string
fields: {
[key: string]: unknown
}
createdAt: number
updatedAt: number
createdBy: string
updatedBy: string
via: "app" | "api" | "mcp" | "calendar" | "mail" | "marketing" | "system" | "import" | "convert"
}[]
cursor?: string
total: {
count: number
amount: number
}
}[]
}/ v1/ orgs/ :orgId/ crm/ jobsRecent imports and exports (the caller's; every one for Customers admins).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/jobs' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
jobs: {
id: string
kind: "import" | "export"
object: string
state: "queued" | "ready" | "done" | "failed" | "running" | "uploading"
fileName: string
fileKey: string
size: number
headers?: string[]
mapping?: string[]
options?: {
mode: "create" | "upsert"
ownerId?: string
dateOrder: "iso" | "dmy" | "mdy"
}
view?: {
viewId?: string
filters?: unknown[]
sort?: unknown
columns?: string[]
}
progress: {
rows: number
created: number
updated: number
failed: number
offset: number
}
errors: {
row: number
message: string
}[]
error?: string
createdBy: string
createdByLabel: string
createdAt: number
updatedAt: number
}[]
}/ v1/ orgs/ :orgId/ crm/ jobs/ :jobIdAn import or export: state, progress counts and the first errors.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).jobIdJob id: an agent job (
job_…), underpipelinesa pipeline job (pjb_…), or undercrman import or export (cjb_…); undermarketinga list import (mkj_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/jobs/{jobId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
job: {
id: string
kind: "import" | "export"
object: string
state: "queued" | "ready" | "done" | "failed" | "running" | "uploading"
fileName: string
fileKey: string
size: number
headers?: string[]
mapping?: string[]
options?: {
mode: "create" | "upsert"
ownerId?: string
dateOrder: "iso" | "dmy" | "mdy"
}
view?: {
viewId?: string
filters?: unknown[]
sort?: unknown
columns?: string[]
}
progress: {
rows: number
created: number
updated: number
failed: number
offset: number
}
errors: {
row: number
message: string
}[]
error?: string
createdBy: string
createdByLabel: string
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ crm/ jobs/ :jobId/ downloadA finished export's download link (ten minutes).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).jobIdJob id: an agent job (
job_…), underpipelinesa pipeline job (pjb_…), or undercrman import or export (cjb_…); undermarketinga list import (mkj_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/jobs/{jobId}/download' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
url: string
}/ v1/ orgs/ :orgId/ crm/ importsStarts an import: up to 5 MB in content, or a presigned uploadUrl for the file (PUT it, then call uploaded).
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).
Request body (up to 6,144 KB)
objectstringrequiredUp to 40 characters.
fileNamestringrequiredUp to 200 characters.
sizeintegerDefault
0. 0–53687091200.contentstring
Errors
413Send files over 5 MB through the upload link.429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/imports' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"object": "example",
"fileName": "Example"
}'Response 201
{
job: {
id: string
kind: "import" | "export"
object: string
state: "queued" | "ready" | "done" | "failed" | "running" | "uploading"
fileName: string
fileKey: string
size: number
headers?: string[]
mapping?: string[]
options?: {
mode: "create" | "upsert"
ownerId?: string
dateOrder: "iso" | "dmy" | "mdy"
}
view?: {
viewId?: string
filters?: unknown[]
sort?: unknown
columns?: string[]
}
progress: {
rows: number
created: number
updated: number
failed: number
offset: number
}
errors: {
row: number
message: string
}[]
error?: string
createdBy: string
createdByLabel: string
createdAt: number
updatedAt: number
}
uploadUrl?: string
}/ v1/ orgs/ :orgId/ crm/ imports/ :jobId/ uploadedMarks a presigned upload complete so the import can be previewed.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).jobIdJob id: an agent job (
job_…), underpipelinesa pipeline job (pjb_…), or undercrman import or export (cjb_…); undermarketinga list import (mkj_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/imports/{jobId}/uploaded' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
job: {
id: string
kind: "import" | "export"
object: string
state: "queued" | "ready" | "done" | "failed" | "running" | "uploading"
fileName: string
fileKey: string
size: number
headers?: string[]
mapping?: string[]
options?: {
mode: "create" | "upsert"
ownerId?: string
dateOrder: "iso" | "dmy" | "mdy"
}
view?: {
viewId?: string
filters?: unknown[]
sort?: unknown
columns?: string[]
}
progress: {
rows: number
created: number
updated: number
failed: number
offset: number
}
errors: {
row: number
message: string
}[]
error?: string
createdBy: string
createdByLabel: string
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ crm/ imports/ :jobId/ previewThe header, ten sample rows and a suggested column mapping.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).jobIdJob id: an agent job (
job_…), underpipelinesa pipeline job (pjb_…), or undercrman import or export (cjb_…); undermarketinga list import (mkj_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/imports/{jobId}/preview' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
job: {
id: string
kind: "import" | "export"
object: string
state: "queued" | "ready" | "done" | "failed" | "running" | "uploading"
fileName: string
fileKey: string
size: number
headers?: string[]
mapping?: string[]
options?: {
mode: "create" | "upsert"
ownerId?: string
dateOrder: "iso" | "dmy" | "mdy"
}
view?: {
viewId?: string
filters?: unknown[]
sort?: unknown
columns?: string[]
}
progress: {
rows: number
created: number
updated: number
failed: number
offset: number
}
errors: {
row: number
message: string
}[]
error?: string
createdBy: string
createdByLabel: string
createdAt: number
updatedAt: number
}
headers: string[]
sample: string[][]
mapping: string[]
estimatedRows: number
}/ v1/ orgs/ :orgId/ crm/ imports/ :jobId/ dry-runChecks the first 1,000 rows with the mapping, writing nothing.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).jobIdJob id: an agent job (
job_…), underpipelinesa pipeline job (pjb_…), or undercrman import or export (cjb_…); undermarketinga list import (mkj_…).
Request body
mappingstring[]requiredUp to 500 items. Each up to 60 characters.
optionsobjectrequiredoptions.mode"create" | "upsert"Default
"create".options.ownerIdstringUp to 40 characters.
options.dateOrder"iso" | "dmy" | "mdy"Default
"dmy".
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/imports/{jobId}/dry-run' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"mapping": [
"example"
],
"options": {
"mode": "create",
"ownerId": "<ownerId>",
"dateOrder": "dmy"
}
}'Response 200
{
checked: number
valid: number
updates: number
errors: {
row: number
message: string
}[]
complete: boolean
}/ v1/ orgs/ :orgId/ crm/ imports/ :jobId/ startQueues the import; follow it on the job.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).jobIdJob id: an agent job (
job_…), underpipelinesa pipeline job (pjb_…), or undercrman import or export (cjb_…); undermarketinga list import (mkj_…).
Request body
mappingstring[]requiredUp to 500 items. Each up to 60 characters.
optionsobjectrequiredoptions.mode"create" | "upsert"Default
"create".options.ownerIdstringUp to 40 characters.
options.dateOrder"iso" | "dmy" | "mdy"Default
"dmy".
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/imports/{jobId}/start' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"mapping": [
"example"
],
"options": {
"mode": "create",
"ownerId": "<ownerId>",
"dateOrder": "dmy"
}
}'Response 202
{
job?: {
id: string
kind: "import" | "export"
object: string
state: "queued" | "ready" | "done" | "failed" | "running" | "uploading"
fileName: string
fileKey: string
size: number
headers?: string[]
mapping?: string[]
options?: {
mode: "create" | "upsert"
ownerId?: string
dateOrder: "iso" | "dmy" | "mdy"
}
view?: {
viewId?: string
filters?: unknown[]
sort?: unknown
columns?: string[]
}
progress: {
rows: number
created: number
updated: number
failed: number
offset: number
}
errors: {
row: number
message: string
}[]
error?: string
createdBy: string
createdByLabel: string
createdAt: number
updatedAt: number
}
}/ v1/ orgs/ :orgId/ crm/ metaThe caller's view of Customers: objects, pipelines, settings, the people in the org and what the caller may do.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/meta' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
objects: {
id: string
label: string
plural: string
prefix: string
glyph: string
custom?: boolean
nameFields: string[]
fields: {
id: string
label: string
type: "number" | "text" | "email" | "url" | "date" | "owner" | "pipeline" | "phone" | "textarea" | "checkbox" | "currency" | "stage" | "lookup" | "datetime" | "percent" | "picklist" | "multipicklist" | "lookups"
required?: boolean
custom?: boolean
system?: boolean
readOnly?: boolean
searchable?: boolean
help?: string
maxLength?: number
min?: number
max?: number
decimals?: number
values?: {
value: string
label?: string
inactive?: boolean
}[]
target?: string
convertTo?: {
object: "contact" | "account" | "opportunity"
field: string
}
}[]
rules: {
id: string
name: string
active: boolean
when: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
require: {
field: string
op: "eq" | "contains" | "lte" | "gt" | "lt" | "ne" | "gte" | "blank" | "notBlank"
value?: unknown
}[]
message: string
field?: string
}[]
sharing: "read" | "private" | "readwrite"
indexes: {
id: string
eq: string[]
sort: string
status: "building" | "ready"
builtin?: boolean
createdAt: number
}[]
indexShards: number
listColumns: string[]
subtitleFields: string[]
version: number
createdAt: number
updatedAt: number
}[]
pipelines: {
id: string
name: string
stages: {
id: string
name: string
probability: number
category: "open" | "lost" | "won"
}[]
isDefault?: boolean
order: number
version: number
}[]
settings: {
currency: string
logEmails: boolean
logMeetings: boolean
roles: {
owner: {
viewAll: boolean | string[]
modifyAll: boolean | string[]
}
admin: {
viewAll: boolean | string[]
modifyAll: boolean | string[]
}
developer: {
viewAll: boolean | string[]
modifyAll: boolean | string[]
}
viewer: {
viewAll: boolean | string[]
modifyAll: boolean | string[]
}
}
version: number
}
people: {
userId: string
name: string
email?: string
role: "owner" | "admin" | "developer" | "viewer"
}[]
permissions: {
write: boolean
admin: boolean
viewAll: string[]
modifyAll: string[]
}
me: null | string
limits: {
bulkRecords: number
importMb: number
fieldsPerObject: number
indexesPerObject: number
}
}/ v1/ orgs/ :orgId/ crm/ summaryHome: the pipeline summary (counters) and the caller's open tasks.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/summary' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
tasks: [] | {
id: string
object: string
version: number
ownerId: string
name: string
fields: {
[key: string]: unknown
}
createdAt: number
updatedAt: number
createdBy: string
updatedBy: string
via: "app" | "api" | "mcp" | "calendar" | "mail" | "marketing" | "system" | "import" | "convert"
}[]
month: string
pipelines: {
pipeline: {
id: string
name: string
stages: {
id: string
name: string
probability: number
category: "open" | "lost" | "won"
}[]
isDefault?: boolean
order: number
version: number
}
stages: {
stage: {
id: string
name: string
probability: number
category: "open" | "lost" | "won"
}
total: {
count: number
amount: number
}
}[]
open: {
count: number
amount: number
weighted: number
}
won: {
count: number
amount: number
}
lost: {
count: number
amount: number
}
history: {
month: string
won: {
count: number
amount: number
}
lost: {
count: number
amount: number
}
}[]
}[]
records: {
[key: string]: number
}
}/ v1/ orgs/ :orgId/ crm/ searchRecords matching words, an email, a phone number or an id, that the caller can see.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).
Query parameters
qstringDefault
"". Up to 200 characters.objectsstringUp to 400 characters.
limitintegerDefault
20. 1–50. Coerced from a string.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/search' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
hits: {
id: string
object: string
name: string
subtitle: string
ownerId: string
score: number
}[]
}/ v1/ orgs/ :orgId/ crm/ settingsCustomers settings: currency, Mail and Calendar logging, role permissions, with version.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- crm:read
Path parameters
orgIdOrganization id (
org_…).
Errors
429Too many requests to Customers this minute. Try again shortly.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/settings' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
settings: {
currency: string
logEmails: boolean
logMeetings: boolean
roles: {
owner: {
viewAll: boolean | string[]
modifyAll: boolean | string[]
}
admin: {
viewAll: boolean | string[]
modifyAll: boolean | string[]
}
developer: {
viewAll: boolean | string[]
modifyAll: boolean | string[]
}
viewer: {
viewAll: boolean | string[]
modifyAll: boolean | string[]
}
}
version: number
}
}/ v1/ orgs/ :orgId/ crm/ settingsCurrency, Mail and Calendar logging, and what each role may see and change.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).
Request body
versionintegerrequired≥ 0.
currencystringMatches
^[A-Z]{3}$.logEmailsbooleanlogMeetingsbooleanrolesobjectroles.ownerobjectroles.owner.viewAllboolean | string[]requiredUp to 200 items. Each up to 40 characters.
roles.owner.modifyAllboolean | string[]requiredUp to 200 items. Each up to 40 characters.
roles.adminobjectroles.admin.viewAllboolean | string[]requiredUp to 200 items. Each up to 40 characters.
roles.admin.modifyAllboolean | string[]requiredUp to 200 items. Each up to 40 characters.
roles.developerobjectroles.developer.viewAllboolean | string[]requiredUp to 200 items. Each up to 40 characters.
roles.developer.modifyAllboolean | string[]requiredUp to 200 items. Each up to 40 characters.
roles.viewerobjectroles.viewer.viewAllboolean | string[]requiredUp to 200 items. Each up to 40 characters.
roles.viewer.modifyAllboolean | string[]requiredUp to 200 items. Each up to 40 characters.
Errors
429Too many requests to Customers this minute. Try again shortly.
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/settings' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"version": 1
}'Response 200
{
settings: {
currency: string
logEmails: boolean
logMeetings: boolean
roles: {
owner: {
viewAll: boolean | string[]
modifyAll: boolean | string[]
}
admin: {
viewAll: boolean | string[]
modifyAll: boolean | string[]
}
developer: {
viewAll: boolean | string[]
modifyAll: boolean | string[]
}
viewer: {
viewAll: boolean | string[]
modifyAll: boolean | string[]
}
}
version: number
}
}