Skip to main content

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​

ParameterTypeRequiredDescription
accountIdstring (UUID)YesAccount 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​

FieldTypeDescription
idstringBuying committee membership ID
lead_idstringLead identifier for this contact
account_idstringAccount this committee belongs to
rolestringCommittee role (see Roles below)
engagement_scoreintegerContact's current engagement score
activity_countintegerTotal number of tracked activities
first_engagement_attimestampWhen the contact first engaged
last_engagement_attimestampMost recent activity
is_manualbooleantrue if manually added, false if auto-detected
notesstring or nullOptional notes about this member's role
best_aliasstring or nullPrimary email or identifier for display
first_namestring or nullContact's first name, populated from their lead profile
last_namestring or nullContact's last name, populated from their lead profile
emailstring or nullContact's email address, populated from their lead profile
titlestring or nullContact's job title, populated from their lead profile
company_namestring or nullCompany name associated with the contact, populated from their lead profile
engagement_levelstring or nullCurrent engagement level (e.g., "Hot", "Warm")
profile_levelstring or nullProfile fit level (e.g., "A", "B")
owner_namestring or nullAssigned owner name

Roles​

RoleDescription
decision_makerHas final authority on the purchase decision
influencerShapes the evaluation criteria and vendor selection
championInternal advocate who actively promotes your solution
kolKey opinion leader whose perspective carries weight
otherInvolved 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​

ParameterTypeRequiredDescription
accountIdstring (UUID)YesAccount identifier (path parameter)

Request Body​

FieldTypeRequiredDescription
lead_idstringYesID of the lead to add to the committee
rolestringYesCommittee role: decision_maker, influencer, champion, kol, or other
notesstringNoOptional 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​

StatusMeaningSolution
400Bad RequestMissing lead_id or role, or invalid role value
401UnauthorizedCheck authentication credentials

DELETE /accounts/{accountId}/buying-committee/{leadId}​

Remove a lead from an account's buying committee.

Request​

ParameterTypeRequiredDescription
accountIdstring (UUID)YesAccount identifier (path parameter)
leadIdstring (UUID)YesLead 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​

ParameterTypeRequiredDescription
accountIdstring (UUID)YesAccount identifier (path parameter)

Request Body​

FieldTypeRequiredDescription
lead_idstringYesID of the lead whose role to update
rolestringYesNew role: decision_maker, influencer, champion, kol, or other
notesstringNoUpdated 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​

StatusMeaningSolution
400Bad RequestMissing lead_id or role, or invalid role value
401UnauthorizedCheck 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​

ParameterTypeRequiredDescription
accountIdstring (UUID)YesAccount 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: true and 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