Accounts
Read enriched account records from Cirrus Insight's Cortex data model — the "company" objects that contacts, deals, and Q&As hang off.
All endpoints require the accounts:read scope.
Endpoints on this page
| Method | Endpoint | Description |
|---|---|---|
GET | /api/v1alpha1/accounts | List accounts visible to the org. Filter by name, domain, or industry. Details ↓ |
GET | /api/v1alpha1/accounts/{accountId} | Fetch one account's full record — including enrichment (valuation, funding, summary). Details ↓ |
GET | /api/v1alpha1/accounts/{accountId}/related | Fetch contacts + deals + recent activity in one call. Details ↓ |
GET | /api/v1alpha1/accounts/{accountId}/activity | Paginated activity timeline for one account. Details ↓ |
List accounts
GET /api/v1alpha1/accounts
Query parameters
| Parameter | Type | Description |
|---|---|---|
cursor | string | Standard keyset cursor. |
limit | number | Clamped 1–100, default 25. |
sort | string | updatedAt, createdAt, name, employeeCount. Prefix - for descending. Default -updatedAt. |
name | string | (optional) Case-insensitive substring on account name. |
domain | string | (optional) Exact match on rootDomain. Useful for CRM-sync lookup. |
industry | string | (optional) Exact match on primaryIndustry. |
Response
See the Accountmodel for the full field reference.
List view is deliberately narrow — enrichment fields (valuation, funding, parentCompany, summary) appear on the detail response only. Keeps list responses fast.
The domain filter is exact-match only — no wildcards, no fuzzy matching. Prevents accidental cross-org matches on generic domains like gmail.com. For substring searches on domain, use the name filter or query the account by its Salesforce id via GET /api/v1alpha1/deals/by-source and follow the account link.
Errors
400 invalid-cursor,400 invalid-sort-field— standard pagination errors
curl -s "https://altus.cirrusinsight.com/api/v1alpha1/accounts?limit=25&sort=-updatedAt" \
-H "X-Cirrus-Api-Key: $TOKEN"import requests
response = requests.get(
"https://altus.cirrusinsight.com/api/v1alpha1/accounts",
headers={"X-Cirrus-Api-Key": token},
params={"limit": 25, "sort": "-updatedAt"},
)
response.raise_for_status()
page = response.json()using System.Net.Http;
using System.Net.Http.Headers;
using System.Web;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-Cirrus-Api-Key", token);
var query = HttpUtility.ParseQueryString(string.Empty);
query["limit"] = "25";
query["sort"] = "-updatedAt";
var uri = new UriBuilder("https://altus.cirrusinsight.com/api/v1alpha1/accounts")
{
Query = query.ToString()
}.Uri;
var response = await client.GetAsync(uri);
response.EnsureSuccessStatusCode();
var page = await response.Content.ReadAsStringAsync();{
"items": [
{
"id": "acct_...",
"orgId": "org_...",
"name": "Acme Corporation",
"rootDomain": "acme.example.com",
"fullyQualifiedDomain": "www.acme.example.com",
"primaryIndustry": "SaaS",
"industries": ["SaaS", "Enterprise Software"],
"employeeCount": 1250,
"primaryLocation": "San Francisco, CA",
"profileIconUri": "https://cdn.example.com/logos/acme.png",
"createdAt": "2026-05-01T12:00:00Z",
"updatedAt": "2026-07-14T09:30:00Z"
}
],
"nextCursor": null
}Get an account
GET /api/v1alpha1/accounts/{accountId}
Full detail — same shape as the list view plus enrichment fields.
Response
summaryis LLM-generated. May be stale. Not fresh-per-request — enrichment runs on a schedule.sourceRefs.salesforce.idis the raw Salesforce id (not wrapped in the Platform API ResourceId prefix scheme). Salesforce ids are stable public identifiers; wrapping them would obscure a value partners recognise.parentCompany— lightweight{id, name}reference. When the parent isn't tracked in Cortex,idisnullandnameis the raw string.
Errors
404 account-not-found— id unknown or cross-org
curl -s "https://altus.cirrusinsight.com/api/v1alpha1/accounts/acct_..." \
-H "X-Cirrus-Api-Key: $TOKEN"import requests
response = requests.get(
f"https://altus.cirrusinsight.com/api/v1alpha1/accounts/{account_id}",
headers={"X-Cirrus-Api-Key": token},
)
response.raise_for_status()
account = response.json()using System.Net.Http;
using System.Net.Http.Headers;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-Cirrus-Api-Key", token);
var response = await client.GetAsync(
$"https://altus.cirrusinsight.com/api/v1alpha1/accounts/{accountId}");
response.EnsureSuccessStatusCode();
var account = await response.Content.ReadAsStringAsync();{
"id": "acct_...",
"orgId": "org_...",
"name": "Acme Corporation",
"rootDomain": "acme.example.com",
"primaryIndustry": "SaaS",
"industries": ["SaaS", "Enterprise Software"],
"employeeCount": 1250,
"primaryLocation": "San Francisco, CA",
"profileIconUri": "https://cdn.example.com/logos/acme.png",
"valuation": {
"amount": 850000000,
"currency": "USD",
"asOf": "2026-04-15"
},
"funding": {
"totalRaised": 175000000,
"currency": "USD",
"lastRound": {
"series": "D",
"amount": 90000000,
"closedOn": "2026-04-15"
}
},
"parentCompany": {
"id": "acct_...",
"name": "Acme Holdings"
},
"summary": "Acme Corporation is a mid-market SaaS company focused on ...",
"sourceRefs": {
"salesforce": {
"id": "0011U00000abcXYZ",
"url": "https://acme.my.salesforce.com/0011U00000abcXYZ"
}
},
"createdAt": "2026-05-01T12:00:00Z",
"updatedAt": "2026-07-14T09:30:00Z"
}Get related resources
GET /api/v1alpha1/accounts/{accountId}/related
Bundle of contacts + deals + recent activity in one call. Saves partners 3-4 round trips for account-detail rendering.
Query parameters
| Parameter | Type | Description |
|---|---|---|
contactsLimit | number | Cap on contacts returned. Default 20, max 100. |
dealsLimit | number | Cap on deals returned. Default 20, max 100. |
activityLimit | number | Cap on activity items. Default 10, max 50. |
activitySince | string | (optional) ISO 8601. Activity from this timestamp forward. Default 90 days ago. |
Response
hasMore: trueon any bucket signals there are more items than the cap. Fetch full lists via the standalone endpoints (GET /api/v1alpha1/contacts?accountId=, etc.).recentActivity.items[].type— enum"meeting" | "email"in v1alpha1. Room to add"call","note"in future channels.- Meeting references use the standard
mtg_id — click through toGET /api/v1alpha1/scheduled-meetings/{id}for the full canonical Meeting shape.
Errors
Same as GET /accounts/{id}.
curl -s "https://altus.cirrusinsight.com/api/v1alpha1/accounts/acct_.../related?dealsLimit=10" \
-H "X-Cirrus-Api-Key: $TOKEN"import requests
response = requests.get(
f"https://altus.cirrusinsight.com/api/v1alpha1/accounts/{account_id}/related",
headers={"X-Cirrus-Api-Key": token},
params={"dealsLimit": 10},
)
response.raise_for_status()
bundle = response.json()using System.Net.Http;
using System.Net.Http.Headers;
using System.Web;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-Cirrus-Api-Key", token);
var query = HttpUtility.ParseQueryString(string.Empty);
query["dealsLimit"] = "10";
var uri = new UriBuilder(
$"https://altus.cirrusinsight.com/api/v1alpha1/accounts/{accountId}/related")
{
Query = query.ToString()
}.Uri;
var response = await client.GetAsync(uri);
response.EnsureSuccessStatusCode();
var bundle = await response.Content.ReadAsStringAsync();{
"account": { /* same shape as GET /accounts/{id} */ },
"contacts": {
"items": [ /* Contact list items */ ],
"hasMore": false
},
"deals": {
"items": [ /* Deal list items */ ],
"hasMore": true
},
"recentActivity": {
"items": [
{
"type": "meeting",
"occurredAt": "2026-07-14T15:00:00Z",
"reference": { "id": "mtg_...", "title": "Q3 QBR", "hostName": "Alex Rivera" }
},
{
"type": "email",
"occurredAt": "2026-07-13T09:22:00Z",
"reference": { "subject": "Following up on the demo", "senderName": "Sam Chen" }
}
],
"hasMore": true
}
}List activity
GET /api/v1alpha1/accounts/{accountId}/activity
Paginated activity timeline for one account. The standalone version of the recentActivity bundle above.
Query parameters
| Parameter | Type | Description |
|---|---|---|
cursor | string | Standard keyset cursor. |
limit | number | Clamped 1–100, default 25. |
sort | string | occurredAt only. Prefix - for descending. Default -occurredAt. |
type | string | (optional, repeatable) Filter to meeting, email, etc. |
since | string | (optional) ISO 8601. Default 12 months ago. |
Response
Standard paginated list of activity items — same shape as recentActivity.items in the related bundle.
12-month default lookback matches transcript retention. Older activity accessible only through cursor pagination.
Errors
Same as GET /accounts/{id}.
curl -s "https://altus.cirrusinsight.com/api/v1alpha1/accounts/acct_.../activity?type=meeting&limit=25" \
-H "X-Cirrus-Api-Key: $TOKEN"import requests
response = requests.get(
f"https://altus.cirrusinsight.com/api/v1alpha1/accounts/{account_id}/activity",
headers={"X-Cirrus-Api-Key": token},
params={"type": "meeting", "limit": 25},
)
response.raise_for_status()
page = response.json()using System.Net.Http;
using System.Net.Http.Headers;
using System.Web;
var client = new HttpClient();
client.DefaultRequestHeaders.Add("X-Cirrus-Api-Key", token);
var query = HttpUtility.ParseQueryString(string.Empty);
query["type"] = "meeting";
query["limit"] = "25";
var uri = new UriBuilder(
$"https://altus.cirrusinsight.com/api/v1alpha1/accounts/{accountId}/activity")
{
Query = query.ToString()
}.Uri;
var response = await client.GetAsync(uri);
response.EnsureSuccessStatusCode();
var page = await response.Content.ReadAsStringAsync();