API reference
Integrations and webhooks
/ v1/ hooks/ slack/ commands/caity <question>: answered privately (the command's response URL).
- Auth
- None.
Errors
401Bad signature
curl -X POST 'https://api.cactive.com.au/v1/hooks/slack/commands'/ v1/ hooks/ slack/ eventsThe Events API: mentions and direct messages (questions), shared links (previews), and the app leaving.
- Auth
- None.
Errors
400Bad body401Bad signature
curl -X POST 'https://api.cactive.com.au/v1/hooks/slack/events'Response 200
{
challenge: string
}/ v1/ hooks/ teams/ messagesMicrosoft Teams' activities (Bot Framework, signed with its JWTs): channels the bot is added to, questions for Caity, link previews. No platform token.
- Auth
- None.
Errors
400Bad body400Bad service URL401Unauthorized413Too large503Not set up
curl -X POST 'https://api.cactive.com.au/v1/hooks/teams/messages'Response 200
{}
| {
composeExtension: {
type: string
attachmentLayout: string
attachments: {
contentType: string
content: {
tap: {
type: string
value: string
}
text?: string
title: string
}
preview: {
contentType: string
content: {
tap: {
type: string
value: string
}
text?: string
title: string
}
}
}[]
}
}/ v1/ orgs/ :orgId/ integrations/ sourcesThe import sources, for Tasks (Jira, Linear, GitHub, GitLab, Zendesk) and Customers (Stripe, HubSpot, Salesforce): whether each is connected and as which account, whether it takes a token or a sign-in (and whether that's set up here), with what connecting one needs. Tokens are never returned.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:read
Path parameters
orgIdOrganization id (
org_…).
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/sources' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
sources: {
provider: "jira" | "linear" | "github" | "gitlab" | "zendesk" | "stripe" | "hubspot" | "salesforce"
name: string
target: "tasks" | "crm"
connect: "token" | "oauth"
available: boolean
connected: boolean
accountName?: string
baseUrl?: string
login?: string
connectedAt?: number
connectedBy?: string
}[]
specs: {
name: string
connect: "token" | "oauth"
fields: {
id: "email" | "host" | "site"
label: string
hint: string
optional?: boolean
}[]
tokenLabel: string
tokenHelp: string
target: "tasks"
project: string
provider: "jira" | "linear" | "github" | "gitlab" | "zendesk" | "stripe" | "hubspot" | "salesforce"
} | {
name: string
connect: "token" | "oauth"
fields: {
id: "email" | "host" | "site"
label: string
hint: string
optional?: boolean
}[]
tokenLabel: string
tokenHelp: string
target: "crm"
objects: {
id: string
label: string
}[]
provider: "jira" | "linear" | "github" | "gitlab" | "zendesk" | "stripe" | "hubspot" | "salesforce"
}[]
}/ v1/ orgs/ :orgId/ integrations/ sources/ :providerConnects an import source with a token: Jira and Zendesk also take their site (<name>.atlassian.net, <name>.zendesk.com) and the account's email, GitLab its host (empty for gitlab.com); Stripe takes a restricted key only. The token is checked with the provider and sealed; it replaces an earlier one. Salesforce connects through POST …/integrations/salesforce/authorize instead. Owners and admins.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Path parameters
orgIdOrganization id (
org_…).providerGIF provider:
klipyorgiphy.
Request body
tokenstringrequired8–2,000 characters. Trimmed.
sitestringUp to 200 characters. Trimmed.
emailstringUp to 320 characters. Trimmed.
hoststringUp to 300 characters. Trimmed.
Also checked: Unknown fields are rejected.
Errors
403Connecting needs a signed-in person.404Unknown import source.
curl -X PUT 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/sources/{provider}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"token": "example"
}'Response 200
{
provider: "jira" | "linear" | "github" | "gitlab" | "zendesk" | "stripe" | "hubspot" | "salesforce"
name: string
target: "tasks" | "crm"
connect: "token" | "oauth"
available: boolean
connected: boolean
accountName?: string
baseUrl?: string
login?: string
connectedAt?: number
connectedBy?: string
}/ v1/ orgs/ :orgId/ integrations/ sources/ :providerForgets an import source's token (Salesforce's sign-in is revoked there first); imports still running stop at their next step. Owners and admins.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Path parameters
orgIdOrganization id (
org_…).providerGIF provider:
klipyorgiphy.
Errors
404Unknown import source.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/sources/{provider}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 204 with no body
/ v1/ orgs/ :orgId/ integrations/ sources/ :provider/ projectsWhat a Tasks source's token reads, to import from: Jira projects, Linear teams, GitHub repositories with issues, GitLab projects, Zendesk groups (and all; 200 at most), each with the id an import names. Owners and admins.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Path parameters
orgIdOrganization id (
org_…).providerGIF provider:
klipyorgiphy.
Errors
404Unknown import source.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/sources/{provider}/projects' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
projects: {
id: string
name: string
}[]
}/ v1/ orgs/ :orgId/ integrations/ importsImports into Tasks, newest first (space: one space's, by key or id), with their counts, last problems and status.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).
Query parameters
spacestringUp to 64 characters.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/imports' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
imports: {
importId: string
provider: "jira" | "linear" | "github" | "gitlab" | "zendesk"
source: string
project: string
projectName?: string
spaceId: string
spaceKey: string
closed: boolean
comments: boolean
status: "queued" | "done" | "failed" | "running" | "cancelled"
counts: {
seen: number
created: number
skipped: number
failed: number
comments: number
}
problems: string[]
message?: string
startedBy: string
startedAt: number
finishedAt?: number
}[]
}/ v1/ orgs/ :orgId/ integrations/ imports/ :importIdOne import into Tasks: its source project, space, options, status, counts and problems.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- issues:read
Path parameters
orgIdOrganization id (
org_…).importIdTakeout import id (
imp_…); underme/fooda Food import (fim_…); undervehiclesan import of a car's history (vim_…), as the imports list gives it.
Errors
404That import isn't here.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/imports/{importId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
importId: string
provider: "jira" | "linear" | "github" | "gitlab" | "zendesk"
source: string
project: string
projectName?: string
spaceId: string
spaceKey: string
closed: boolean
comments: boolean
status: "queued" | "done" | "failed" | "running" | "cancelled"
counts: {
seen: number
created: number
skipped: number
failed: number
comments: number
}
problems: string[]
message?: string
startedBy: string
startedAt: number
finishedAt?: number
}/ v1/ orgs/ :orgId/ integrations/ importsStarts importing a source project's issues (and, by default, closed ones and comments) into a space you administer, run in the background as you. Imported issues link back and are skipped when imported again. Owners and admins with issues:write; three running at once.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scopes
- tenant:write, issues:write
Path parameters
orgIdOrganization id (
org_…).
Request body
provider"jira" | "linear" | "github" | "gitlab" | "zendesk"requiredprojectstringrequired1–200 characters. Trimmed.
projectNamestringUp to 200 characters. Trimmed.
spacestringrequired1–64 characters. Trimmed.
closedbooleanDefault
true.commentsbooleanDefault
true.
Also checked: Unknown fields are rejected.
Errors
403Imports run as a signed-in person.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/imports' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"provider": "jira",
"project": "example",
"space": "example"
}'Response 201
{
importId: string
provider: "jira" | "linear" | "github" | "gitlab" | "zendesk"
source: string
project: string
projectName?: string
spaceId: string
spaceKey: string
closed: boolean
comments: boolean
status: "queued" | "done" | "failed" | "running" | "cancelled"
counts: {
seen: number
created: number
skipped: number
failed: number
comments: number
}
problems: string[]
message?: string
startedBy: string
startedAt: number
finishedAt?: number
}/ v1/ orgs/ :orgId/ integrations/ imports/ :importId/ cancelStops an import after its current page; what it imported stays. Owners and admins.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Path parameters
orgIdOrganization id (
org_…).importIdTakeout import id (
imp_…); underme/fooda Food import (fim_…); undervehiclesan import of a car's history (vim_…), as the imports list gives it.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/imports/{importId}/cancel' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
importId: string
provider: "jira" | "linear" | "github" | "gitlab" | "zendesk"
source: string
project: string
projectName?: string
spaceId: string
spaceKey: string
closed: boolean
comments: boolean
status: "queued" | "done" | "failed" | "running" | "cancelled"
counts: {
seen: number
created: number
skipped: number
failed: number
comments: number
}
problems: string[]
message?: string
startedBy: string
startedAt: number
finishedAt?: number
}/ v1/ orgs/ :orgId/ integrationsThe catalogue, the org's connections and the events a channel can carry.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:read
Path parameters
orgIdOrganization id (
org_…).
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
catalogue: {
id: string
name: string
area: "identity" | "crm" | "chat" | "support" | "automation" | "dev" | "home" | "productivity" | "accounting" | "storage"
status: "exists" | "available" | "later"
auth: string
flow: string
where?: string
}[]
connections: {
provider: "teams" | "slack"
name: string
available: boolean
connected: boolean
accountId?: string
accountName?: string
settings: {
channel?: {
id: string
name: string
serviceUrl?: string
}
events: string[]
ask: boolean
unfurl: boolean
}
connectedAt?: number
connectedBy?: string
}[]
noticeEvents: ["deployment.failed", "deployment.ready", "domain.verified", "domain.failed", "secret.rotation_due", "issue.sla_breached", "pipeline.failed", "pipeline.approval", "security.git_key", "security.git_clone", "tenant.domain", "agent.job_failed", "marketing.approval"]
}/ v1/ orgs/ :orgId/ integrations/ :providerOne chat connection (slack or teams): whether it's connected, to which workspace or Microsoft organisation, and its settings. Tokens are never returned.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:read
Path parameters
orgIdOrganization id (
org_…).providerGIF provider:
klipyorgiphy.
Errors
404Unknown integration.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/{provider}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
provider: "teams" | "slack"
name: string
available: boolean
connected: boolean
accountId?: string
accountName?: string
settings: {
channel?: {
id: string
name: string
serviceUrl?: string
}
events: string[]
ask: boolean
unfurl: boolean
}
connectedAt?: number
connectedBy?: string
}/ v1/ orgs/ :orgId/ integrations/ :provider/ channelsChannels the org can send notices to.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Path parameters
orgIdOrganization id (
org_…).providerGIF provider:
klipyorgiphy.
Errors
404Unknown integration.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/{provider}/channels' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
channels: {
id: string
name: string
serviceUrl?: string
private?: boolean
teamName?: string
}[]
}/ v1/ orgs/ :orgId/ integrations/ :providerChanges a chat connection's settings: the notice channel (one the channels list offers), which org-wide events go there, and whether Caity answers and links preview. Owners and admins.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Path parameters
orgIdOrganization id (
org_…).providerGIF provider:
klipyorgiphy.
Request body
channelIdstringor null1–200 characters.
events("deployment.failed" | "deployment.ready" | "domain.verified" | "domain.failed" | "secret.rotation_due" | "issue.sla_breached" | "pipeline.failed" | "pipeline.approval" | "security.git_key" | "security.git_clone" | "tenant.domain" | "agent.job_failed" | "marketing.approval")[]Up to 13 items.
askbooleanunfurlboolean
Also checked: Unknown fields are rejected.
Errors
404Unknown integration.
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/{provider}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"channelId": "<channelId>",
"events": [
"deployment.failed"
],
"ask": true
}'Response 200
{
settings: {
channel?: {
id: string
name: string
serviceUrl?: string
}
events: string[]
ask: boolean
unfurl: boolean
}
}/ v1/ orgs/ :orgId/ integrations/ :providerDisconnects: revokes at the provider (best effort) and forgets the tokens, links and channels.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Path parameters
orgIdOrganization id (
org_…).providerGIF provider:
klipyorgiphy.
Errors
404Unknown integration.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/{provider}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 204 with no body
/ v1/ orgs/ :orgId/ integrations/ :provider/ peopleThe org's people linked in the workspace (Caity answers and links unfurl as them).
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:read
Path parameters
orgIdOrganization id (
org_…).providerGIF provider:
klipyorgiphy.
Errors
404Unknown integration.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/{provider}/people' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
people: {
externalUserId: string
externalName?: string
userId: string
name?: string
email?: string
linkedAt?: number
}[]
}/ v1/ orgs/ :orgId/ integrations/ :provider/ people/ :externalUserIdUnlinks a chat account from its person: Caity stops answering it as them and its links stop previewing. Owners and admins.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Path parameters
orgIdOrganization id (
org_…).providerGIF provider:
klipyorgiphy.externalUserIdA chat account's id in its workspace: Slack's user id (
U…), or the person's Entra object id in Teams.
Errors
404Unknown integration.404That link isn't here.
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/integrations/{provider}/people/{externalUserId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 204 with no body
/ v1/ orgs/ :orgId/ webhooksThe organisation's outgoing webhooks: name, URL, events, on or off, and the secret's last four characters.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:read
Path parameters
orgIdOrganization id (
org_…).
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/webhooks' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
webhooks: {
webhookId: string
name: string
url: string
events: string[]
enabled: boolean
secretHint: string
createdAt?: number
updatedAt?: number
}[]
}/ v1/ orgs/ :orgId/ webhooksAdds a webhook: an https URL and the events it wants (audit actions such as member.join, categories such as member.*, or *). The signing secret is in this answer only. Owners and admins.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Path parameters
orgIdOrganization id (
org_…).
Request body
namestringrequired1–100 characters. Trimmed.
urlstringrequired1–2,000 characters. Trimmed.
eventsstring[]required1–100 items. Each up to 80 characters.
enabledbooleanrequiredenabledany JSON
Also checked: Unknown fields are rejected.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/webhooks' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": "Example",
"url": "https://example.com",
"events": [
"example"
],
"enabled": true
}'Response 201
{
webhook: {
webhookId: string
name: string
url: string
events: string[]
enabled: boolean
secretHint: string
createdAt?: number
updatedAt?: number
}
secret: string
}/ v1/ orgs/ :orgId/ webhooks/ :webhookIdChanges a webhook's name, URL, events or whether it's on. Owners and admins.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Path parameters
orgIdOrganization id (
org_…).webhookIdWebhook id (
whk_…).
Request body
nameany JSONurlany JSONeventsany JSONenabledany JSON
Also checked: Unknown fields are rejected.
curl -X PATCH 'https://api.cactive.com.au/v1/orgs/{orgId}/webhooks/{webhookId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"name": {},
"url": {},
"events": {}
}'Response 200
{
webhook: {
webhookId: string
name: string
url: string
events: string[]
enabled: boolean
secretHint: string
createdAt?: number
updatedAt?: number
}
}/ v1/ orgs/ :orgId/ webhooks/ :webhookId/ rotateA new secret, shown once; the old one stops signing.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Path parameters
orgIdOrganization id (
org_…).webhookIdWebhook id (
whk_…).
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/webhooks/{webhookId}/rotate' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
webhook: {
webhookId: string
name: string
url: string
events: string[]
enabled: boolean
secretHint: string
createdAt?: number
updatedAt?: number
}
secret: string
}/ v1/ orgs/ :orgId/ webhooks/ :webhookId/ pingSends a ping now, signed like every delivery.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Path parameters
orgIdOrganization id (
org_…).webhookIdWebhook id (
whk_…).
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/webhooks/{webhookId}/ping' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
ok: boolean
status: number
error?: string
ms: number
} | {
ok: boolean
status?: undefined
error: string
ms: number
}/ v1/ orgs/ :orgId/ webhooks/ :webhookId/ deliveriesA webhook's last 50 deliveries (30 days): event, status or error, try and time.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:read
Path parameters
orgIdOrganization id (
org_…).webhookIdWebhook id (
whk_…).
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/webhooks/{webhookId}/deliveries' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
deliveries: {
deliveryId: string
event: string
ok: boolean
status?: number
error?: string
attempt: number
ms?: number
at?: number
}[]
}/ v1/ orgs/ :orgId/ webhooks/ :webhookIdRemoves a webhook; its deliveries stop. Owners and admins.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Path parameters
orgIdOrganization id (
org_…).webhookIdWebhook id (
whk_…).
curl -X DELETE 'https://api.cactive.com.au/v1/orgs/{orgId}/webhooks/{webhookId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 204 with no body
/ v1/ integrations/ oauthFinishes connecting Slack, Teams or Salesforce with the provider's code (or error) and the state the connect started with. The state is used once, by the person who started it, still an owner or admin.
- Auth
- A person's token or an API key, as Authorization: Bearer.
- Scope
- tenant:write
Request body
statestringrequired10–300 characters.
codestring1–4,000 characters.
errorstringUp to 200 characters.
Errors
403Connecting needs a signed-in person.
curl -X POST 'https://api.cactive.com.au/v1/integrations/oauth' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"state": "example"
}'Response 200
{
orgId: string
provider: "teams" | "slack" | "salesforce"
connected: false
returnTo: string
accountName?: undefined
} | {
orgId: string
provider: "salesforce"
connected: true
accountName: string
returnTo: string
} | {
orgId: string
provider: "teams" | "slack"
connected: true
accountName: string
returnTo: string
}/ v1/ orgs/ :orgId/ crm/ source-importsImports into Customers from Stripe, HubSpot and Salesforce, newest first: the source account, objects, status, counts (seen, created, updated since an earlier import, linked to a match, skipped, failed) and last problems. Customers admins (crm:admin).
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/source-imports' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
imports: {
importId: string
provider: "stripe" | "hubspot" | "salesforce"
source: string
account: string
objects: string[]
object?: string
status: "queued" | "done" | "failed" | "running" | "cancelled"
counts: {
seen: number
created: number
updated: number
linked: number
skipped: number
failed: number
}
problems: string[]
message?: string
startedBy: string
startedAt: number
finishedAt?: number
}[]
}/ v1/ orgs/ :orgId/ crm/ source-imports/ :importIdOne import into Customers, as the list gives it. Customers admins (crm:admin).
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).importIdTakeout import id (
imp_…); underme/fooda Food import (fim_…); undervehiclesan import of a car's history (vim_…), as the imports list gives it.
curl 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/source-imports/{importId}' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
importId: string
provider: "stripe" | "hubspot" | "salesforce"
source: string
account: string
objects: string[]
object?: string
status: "queued" | "done" | "failed" | "running" | "cancelled"
counts: {
seen: number
created: number
updated: number
linked: number
skipped: number
failed: number
}
problems: string[]
message?: string
startedBy: string
startedAt: number
finishedAt?: number
}/ v1/ orgs/ :orgId/ crm/ source-importsStarts importing a connected source into Customers, run in the background as you: provider (stripe, hubspot, salesforce) and, optionally, which of its objects (taken in the source's order: accounts before the contacts and deals on them). Records link back; matches already here (accounts by name, contacts and leads by email) are linked, not copied; importing again changes a field only where the source changed it and nobody here did. Owners and admins with crm:write; three imports run at once.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).
Request body
provider"stripe" | "hubspot" | "salesforce"requiredobjectsstring[]Up to 10 items. Each 1–40 characters.
Also checked: Unknown fields are rejected.
Errors
403Imports run as a signed-in person.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/source-imports' \
-H "Authorization: Bearer $CACTIVE_TOKEN" \
-H 'Content-Type: application/json' \
-d '{
"provider": "stripe"
}'Response 201
{
importId: string
provider: "stripe" | "hubspot" | "salesforce"
source: string
account: string
objects: string[]
object?: string
status: "queued" | "done" | "failed" | "running" | "cancelled"
counts: {
seen: number
created: number
updated: number
linked: number
skipped: number
failed: number
}
problems: string[]
message?: string
startedBy: string
startedAt: number
finishedAt?: number
}/ v1/ orgs/ :orgId/ crm/ source-imports/ :importId/ cancelStops an import into Customers after its current page; what it imported stays. Owners and admins with crm:write.
- Auth
- A person's token or an API key, as Authorization: Bearer.
Path parameters
orgIdOrganization id (
org_…).importIdTakeout import id (
imp_…); underme/fooda Food import (fim_…); undervehiclesan import of a car's history (vim_…), as the imports list gives it.
Errors
403Imports run as a signed-in person.
curl -X POST 'https://api.cactive.com.au/v1/orgs/{orgId}/crm/source-imports/{importId}/cancel' \
-H "Authorization: Bearer $CACTIVE_TOKEN"Response 200
{
importId: string
provider: "stripe" | "hubspot" | "salesforce"
source: string
account: string
objects: string[]
object?: string
status: "queued" | "done" | "failed" | "running" | "cancelled"
counts: {
seen: number
created: number
updated: number
linked: number
skipped: number
failed: number
}
problems: string[]
message?: string
startedBy: string
startedAt: number
finishedAt?: number
}