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