Buying Committee API
Manage the buying committee for an account. A buying committee represents the group of contacts (leads) at a company who are involved in a purchase decision, each with a defined role such as decision maker, influencer, or champion.
Understanding who is on the buying committee helps your sales team engage the right stakeholders and build consensus across the account.
GET /accounts/{accountId}/buying-committee
Retrieve the current buying committee members for an account, including their roles, engagement scores, and activity metrics.
Request
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string (UUID) | Yes | Account identifier (path parameter) |
Response
200 OK
Returns an array of buying committee members.
[
{
"id": "bc_001",
"lead_id": "ld_abc",
"account_id": "acct_123",
"role": "decision_maker",
"engagement_score": 85,
"activity_count": 42,
"first_engagement_at": "2025-11-01T08:00:00Z",
"last_engagement_at": "2026-03-07T14:30:00Z",
"is_manual": false,
"notes": null,
"best_alias": "sarah.chen@acme.com",
"first_name": "Sarah",
"last_name": "Chen",
"email": "sarah.chen@acme.com",
"title": "VP of Engineering",
"company_name": "Acme Corp",
"engagement_level": "Hot",
"profile_level": "A",
"owner_name": "Jane Smith"
}
]
Response Fields
| Field | Type | Description |
|---|---|---|
id | string | Buying committee membership ID |
lead_id | string | Lead identifier for this contact |
account_id | string | Account this committee belongs to |
role | string | Committee role (see Roles below) |
engagement_score | integer | Contact's current engagement score |
activity_count | integer | Total number of tracked activities |
first_engagement_at | timestamp | When the contact first engaged |
last_engagement_at | timestamp | Most recent activity |
is_manual | boolean | true if manually added, false if auto-detected |
notes | string or null | Optional notes about this member's role |
best_alias | string or null | Primary email or identifier for display |
first_name | string or null | Contact's first name, populated from their lead profile |
last_name | string or null | Contact's last name, populated from their lead profile |
email | string or null | Contact's email address, populated from their lead profile |
title | string or null | Contact's job title, populated from their lead profile |
company_name | string or null | Company name associated with the contact, populated from their lead profile |
engagement_level | string or null | Current engagement level (e.g., "Hot", "Warm") |
profile_level | string or null | Profile fit level (e.g., "A", "B") |
owner_name | string or null | Assigned owner name |
Roles
| Role | Description |
|---|---|
decision_maker | Has final authority on the purchase decision |
influencer | Shapes the evaluation criteria and vendor selection |
champion | Internal advocate who actively promotes your solution |
kol | Key opinion leader whose perspective carries weight |
other | Involved in the process but without a specific defined role |
Example
curl -X GET "https://api.kenbun.io/accounts/acct_123/buying-committee" \
-H "Authorization: Bearer <token>"
POST /accounts/{accountId}/buying-committee
Manually add a lead to an account's buying committee with a specific role. Use this when you know a contact's role in the buying process and want to track it explicitly.
Request
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string (UUID) | Yes | Account identifier (path parameter) |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
lead_id | string | Yes | ID of the lead to add to the committee |
role | string | Yes | Committee role: decision_maker, influencer, champion, kol, or other |
notes | string | No | Optional notes about this member's role or context |
{
"lead_id": "ld_abc",
"role": "champion",
"notes": "Primary technical evaluator, strong advocate in Q1 review"
}
Response
201 Created
Returns the newly created buying committee member with enriched fields.
{
"id": "bc_002",
"lead_id": "ld_abc",
"account_id": "acct_123",
"role": "champion",
"engagement_score": 85,
"activity_count": 42,
"is_manual": true,
"notes": "Primary technical evaluator, strong advocate in Q1 review",
"best_alias": "alex@acme.com"
}
Example
curl -X POST "https://api.kenbun.io/accounts/acct_123/buying-committee" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{
"lead_id": "ld_abc",
"role": "champion",
"notes": "Primary technical evaluator"
}'
Common Errors
| Status | Meaning | Solution |
|---|---|---|
| 400 | Bad Request | Missing lead_id or role, or invalid role value |
| 401 | Unauthorized | Check authentication credentials |
DELETE /accounts/{accountId}/buying-committee/{leadId}
Remove a lead from an account's buying committee.
Request
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string (UUID) | Yes | Account identifier (path parameter) |
leadId | string (UUID) | Yes | Lead identifier to remove (path parameter) |
Response
204 No Content
No response body on success.
Example
curl -X DELETE "https://api.kenbun.io/accounts/acct_123/buying-committee/ld_abc" \
-H "Authorization: Bearer <token>"
PUT /accounts/{accountId}/contact-role
Update a contact's role in the buying committee. Use this when a contact's role changes during the sales process.
Request
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string (UUID) | Yes | Account identifier (path parameter) |
Request Body
| Field | Type | Required | Description |
|---|---|---|---|
lead_id | string | Yes | ID of the lead whose role to update |
role | string | Yes | New role: decision_maker, influencer, champion, kol, or other |
notes | string | No | Updated notes about this member |
{
"lead_id": "ld_abc",
"role": "decision_maker",
"notes": "Promoted to VP, now owns the budget"
}
Response
204 No Content
No response body on success.
Example
curl -X PUT "https://api.kenbun.io/accounts/acct_123/contact-role" \
-H "Authorization: Bearer <token>" \
-H "Content-Type: application/json" \
-d '{"lead_id": "ld_abc", "role": "decision_maker"}'
Common Errors
| Status | Meaning | Solution |
|---|---|---|
| 400 | Bad Request | Missing lead_id or role, or invalid role value |
| 401 | Unauthorized | Check authentication credentials |
POST /accounts/{accountId}/buying-committee/refresh
Re-run automatic role detection for the buying committee. This recalculates roles for auto-detected members based on current engagement data and activity patterns. Manually assigned roles are preserved.
Request
| Parameter | Type | Required | Description |
|---|---|---|---|
accountId | string (UUID) | Yes | Account identifier (path parameter) |
Response
200 OK
Returns the updated buying committee array (same format as GET).
Example
curl -X POST "https://api.kenbun.io/accounts/acct_123/buying-committee/refresh" \
-H "Authorization: Bearer <token>"
Notes
- All buying committee endpoints are OU-scoped to the active Organizational Unit
- Members added manually are marked with
is_manual: trueand their roles are preserved during automatic refresh - Auto-detected members have roles inferred from engagement patterns and activity data
- The buying committee is a key component of Account-Based Marketing (ABM) workflows
Related Endpoints
- Account Detail - View account information
- Account Engagement Timeline - See contact activity at the account
- Leads - List and manage leads
Related Documentation
- Account Management - User guide for working with accounts