Skip to main content

Accounts

An account is a buyer company you have interviews on. The accounts endpoints roll your interviews up by company, so you can answer "which companies match this profile?" and "what does this company's stack and buying context look like?" without paging through transcripts yourself.

note

Account endpoints require API vendor access and the account_pages feature on your account — the same two conditions that expose the search_accounts and fetch_account MCP tools. Contact support if you receive 403 Forbidden on these endpoints.

List accounts​

GET /api/v1/accounts

Search accounts using the same filter surface as transcript search, deduplicated to one row per company.

Results are ordered by how many of the matching interviews belong to each account, then by the most recent of those interviews.

How the search works​

The account list is built from an interview search, not from a dump of every company. Alium runs your filters against the interview index, inspects up to 1,000 matching interviews, and groups those into accounts. meta.transcript_hits_inspected reports how many it actually inspected; meta.transcript_total how many matched overall.

When more interviews matched than could be inspected, meta.truncated is true. meta.total_count is then a floor, not a total, and accounts whose interviews ranked below the cap are missing. Narrow the filters — by industry, use case, vendor, or company size — rather than paging further.

Query parameters​

ParameterTypeDescription
qstringFree-text search across the account's interviews
pageintegerPage number over the deduplicated account list (default: 1)
per_pageintegerAccounts per page (default: 10, max: 50)
accounts[]string[]Filter to specific accounts by slug, name, or domain
buyers[]string[]Alias for accounts[]
in_market_for[]string[]Filter by use case names
industry[]string[]Filter by buyer industry names
vendors[]string[]Filter by vendor company names
products[]string[]Filter by product names
min_rating / max_ratingintegerTech stack rating bounds, 1–10. Requires products[]
mgmt_level[]string[]Filter by the interviewee's management level
department[]string[]Filter by the interviewee's department
revenuestringRevenue range in dollars, e.g. 1000000;50000000
employee_countstringEmployee count range, e.g. 1000;5000
intro_optinstringopen or closed
targeted_accounts_onlybooleanOnly accounts on your team's targeted list
sincestringInterview date window, e.g. 6.months
start_date / end_datestringInterview date bounds, YYYY-MM-DD
start_publish_date / end_publish_datestringPublish date bounds, YYYY-MM-DD

Unlike transcript search, unrecognized names are an error here, not a silent no-op. An accounts[], buyers[], vendors[], products[], industry[], or in_market_for[] value that doesn't resolve returns 422 Unprocessable Entity with suggestions:

{
"error": "- Could not find vendor 'Salesfroce'. Did you mean: Salesforce?"
}

Example request​

curl -H "Authorization: Token YOUR_API_KEY" \
"https://app.alium.io/api/v1/accounts?in_market_for[]=CDP&revenue=1000000000;"

Response​

{
"data": [
{
"name": "Acme Corp",
"slug": "acme-corp",
"domain_name": "acme.com",
"url": "https://app.alium.io/accounts/acme-corp",
"industry": ["Retail > Footwear"],
"revenue": 17000000000,
"employee_count": 62000,
"location": "New York, NY",
"icp_matches": 3,
"targeted": true,
"matching_interviews": 4,
"last_matching_interview": "2026-06-18"
}
],
"meta": {
"total_count": 27,
"transcript_hits_inspected": 112,
"transcript_total": 112,
"truncated": false,
"page": 1,
"per_page": 10
}
}

Response fields​

FieldTypeDescription
namestringBuyer company name
slugstringURL-safe account identifier — pass to the detail endpoint
domain_namestringCompany website domain
urlstringAccount page in the Alium app
industrystring[]Buyer industries, as Parent > Child paths
revenueinteger | nullAnnual revenue in US dollars (17000000000 = $17B) — the same unit the revenue filter takes
employee_countinteger | nullHeadcount
locationstring | nullCompany headquarters
icp_matchesinteger | nullICP attributes this account matches for your team
targetedbooleanWhether the account is on your team's targeted list
matching_interviewsintegerInterviews from this account among the inspected hits
last_matching_interviewstring | nullDate of the most recent matching interview (YYYY-MM-DD)

Meta fields​

FieldTypeDescription
total_countintegerAccounts found. A floor rather than a total when truncated is true
transcript_hits_inspectedintegerInterviews the accounts were aggregated from (capped at 1,000)
transcript_totalintegerInterviews matching your filters in total
truncatedbooleantrue when the cap was hit, so coverage is partial
pageintegerCurrent page of the deduplicated account list
per_pageintegerAccounts per page

Get an account​

GET /api/v1/accounts/:id

:id accepts an account slug (current or historical, so a renamed account keeps resolving), a domain, or an exact company name — matched against canonical and alternative names.

note

Unlike the MCP tools, this endpoint treats :id as an identifier: there is no fuzzy fallback. A near-miss like acme-corportation returns 404 rather than resolving to a different account. Accounts you have no provisioned interviews for also return 404.

Query parameters​

ParameterTypeDescription
fields[]string[]Sections to include: kpis, tech_stack, qa, or all. Default: kpis,tech_stack

The Q&A section can be large, so it is omitted unless you ask for it. The header fields are always included.

Passing fields[] replaces the default rather than adding to it — fields[]=qa returns the header plus Q&A, without kpis or tech_stack. An unrecognized value is an error, not an empty selection: fields[]=tech-stack returns 422 listing the valid values.

Example request​

curl -H "Authorization: Token YOUR_API_KEY" \
"https://app.alium.io/api/v1/accounts/acme-corp?fields[]=all"

Response​

{
"data": {
"name": "Acme Corp",
"slug": "acme-corp",
"domain_name": "acme.com",
"url": "https://app.alium.io/accounts/acme-corp",
"industry": ["Retail > Footwear"],
"revenue": 17000000000,
"employee_count": 62000,
"location": "New York, NY",
"icp_matches": 3,
"targeted": true,
"icp": {
"revenue_match": true,
"employees_match": false
},
"kpis": {
"interview_count": 4,
"first_interviewed": "2025-02-10",
"last_interviewed": "2026-06-18"
},
"tech_stack": [
{
"product": "Salesforce Marketing Cloud",
"vendor": "Salesforce",
"vendor_slug": "salesforce",
"rating": 4.2,
"status": "unhappy_with",
"interview_count": 3,
"first_seen": "2025-02-10",
"last_seen": "2026-06-18",
"use_cases": ["Email Marketing"]
}
],
"qa": [
{
"category": "Budget & Procurement",
"questions": [
{
"question": "How is the martech budget allocated?",
"answer": "Most teams report spending between $200K-$500K annually...",
"evidence_count": 3,
"total_interviews": 4,
"confidence": 0.75
}
]
}
],
"links": {
"interviews": "/api/v1/transcripts?accounts[]=acme-corp"
}
}
}

Response fields​

The header fields are the same as a list row, minus matching_interviews and last_matching_interview, plus:

FieldTypeDescription
icp.revenue_matchbooleanAccount revenue falls inside your team's ICP revenue range
icp.employees_matchbooleanAccount headcount falls inside your team's ICP range
kpis.interview_countintegerInterviews you have for this account
kpis.first_interviewedstring | nullDate of the earliest interview (YYYY-MM-DD)
kpis.last_interviewedstring | nullDate of the most recent interview (YYYY-MM-DD)
tech_stack[].productstringProduct found in the account's stack
tech_stack[].vendorstring | nullCompany that makes the product
tech_stack[].vendor_slugstring | nullPass to GET /api/v1/vendors/:slug
tech_stack[].ratingfloat | nullRecency-weighted buyer rating, 1–10
tech_stack[].statusstringsatisfied, unhappy_with, or not_recently_mentioned
tech_stack[].interview_countintegerInterviews mentioning this product
tech_stack[].first_seen / last_seenstring | nullInterview dates bounding the mentions
tech_stack[].use_casesstring[]Use cases the product is associated with here
qa[].categorystringQuestion category
qa[].questions[].questionstringThe question asked
qa[].questions[].answerstring | nullAI-synthesized answer across the account's interviews
qa[].questions[].evidence_countintegerInterviews that supplied evidence
qa[].questions[].total_interviewsintegerInterviews considered
qa[].questions[].confidencefloatConfidence in the synthesis, 0–1
links.interviewsstringTranscript search scoped to this account

Responses are cached for 10 minutes.

Errors​

StatusMeaning
403Account endpoints aren't enabled for your account — they require both API vendor access and the account_pages feature
404No account matched :id, or you have no provisioned interviews for it
422An unrecognized fields[] value, or (on the list endpoint) a filter name that didn't resolve