Skip to content
Preview. The endpoints on this page are illustrative and are likely to change as they move toward general availability. Documentation is published in advance so you can start shaping your integration; treat request and response details as subject to revision.

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

MethodEndpointDescription
GET/api/v1alpha1/accountsList 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}/relatedFetch contacts + deals + recent activity in one call. Details ↓
GET/api/v1alpha1/accounts/{accountId}/activityPaginated activity timeline for one account. Details ↓

List accounts

GET /api/v1alpha1/accounts

Query parameters

ParameterTypeDescription
cursorstringStandard keyset cursor.
limitnumberClamped 1–100, default 25.
sortstringupdatedAt, createdAt, name, employeeCount. Prefix - for descending. Default -updatedAt.
namestring(optional) Case-insensitive substring on account name.
domainstring(optional) Exact match on rootDomain. Useful for CRM-sync lookup.
industrystring(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

bash
curl -s "https://altus.cirrusinsight.com/api/v1alpha1/accounts?limit=25&sort=-updatedAt" \
  -H "X-Cirrus-Api-Key: $TOKEN"
python
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()
csharp
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();
json
{
  "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

  • summary is LLM-generated. May be stale. Not fresh-per-request — enrichment runs on a schedule.
  • sourceRefs.salesforce.id is 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, id is null and name is the raw string.

Errors

  • 404 account-not-found — id unknown or cross-org

bash
curl -s "https://altus.cirrusinsight.com/api/v1alpha1/accounts/acct_..." \
  -H "X-Cirrus-Api-Key: $TOKEN"
python
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()
csharp
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();
json
{
  "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"
}

Bundle of contacts + deals + recent activity in one call. Saves partners 3-4 round trips for account-detail rendering.

Query parameters

ParameterTypeDescription
contactsLimitnumberCap on contacts returned. Default 20, max 100.
dealsLimitnumberCap on deals returned. Default 20, max 100.
activityLimitnumberCap on activity items. Default 10, max 50.
activitySincestring(optional) ISO 8601. Activity from this timestamp forward. Default 90 days ago.

Response

  • hasMore: true on 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 to GET /api/v1alpha1/scheduled-meetings/{id} for the full canonical Meeting shape.

Errors

Same as GET /accounts/{id}.


bash
curl -s "https://altus.cirrusinsight.com/api/v1alpha1/accounts/acct_.../related?dealsLimit=10" \
  -H "X-Cirrus-Api-Key: $TOKEN"
python
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()
csharp
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();
json
{
  "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

ParameterTypeDescription
cursorstringStandard keyset cursor.
limitnumberClamped 1–100, default 25.
sortstringoccurredAt only. Prefix - for descending. Default -occurredAt.
typestring(optional, repeatable) Filter to meeting, email, etc.
sincestring(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}.

bash
curl -s "https://altus.cirrusinsight.com/api/v1alpha1/accounts/acct_.../activity?type=meeting&limit=25" \
  -H "X-Cirrus-Api-Key: $TOKEN"
python
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()
csharp
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();

Raleigh, NC — a Cirruspath, Inc. company