Download OpenAPI specification:Download
Common Room API v2 for accessing contact and organization data.
For v1 and RTBF APIs see the V1 API documentation.
To use the Common Room API, you will need to create an API token.
To create an API token:
Use a Core API JWT as a Bearer token in the Authentication header.
Tokens can be created by room Admins through https://app.commonroom.io/
Example:
curl -H "Authorization: Bearer abcd123.xzy" \
https://api.commonroom.io/community/v1/api-token-status| Security Scheme Type | HTTP |
|---|---|
| HTTP Authorization Scheme | bearer |
| Bearer format | "JWT" |
List endpoints such as GET /contacts, GET /organizations, GET /activities,
and GET /objects/{objectTypeId} accept a lightFilter query parameter: the
URL-encoded JSON of a LightFilterExpression. The filterable field names and
the operators each accepts are listed in the lightFilter parameter of each
endpoint; the shared grammar is documented here.
Example — contacts in a segment who were active in the last 30 days:
{
"type": "and",
"clauses": [
{ "type": "stringListFilter", "field": "memberSegmentId", "params": { "op": "any", "value": ["s_123456"] } },
{ "type": "dateRangeFilter", "field": "memberLastActivity", "params": { "op": "in", "value": "P30D", "min": null, "max": null } }
]
}
| type required | string Enum: "and" "or" How to combine top-level clauses: "and" = all must match, "or" = any can match |
required | Array of any (LightFilterClause) non-empty Array of filter conditions — leaf clauses or nested groups. |
{- "type": "and",
- "clauses": [
- {
- "type": "booleanFilter",
- "field": "string",
- "params": {
- "op": "string",
- "value": true
}
}
]
}Apply the same change to up to 100 contacts in one request. The request must include at least one of segmentId, tagIdsToAdd, tagIdsToRemove, or customFields. Every ID, the segment, the tags, and the custom fields are validated before anything is written, and an error names every offending ID. Each change is idempotent: contacts already in the segment are skipped, so a request that fails part-way can be retried as a whole. Requires the contacts:write scope.
| contactIds required | Array of strings [ 1 .. 100 ] items Prefixed contact IDs (format |
| segmentId | string Add every contact to this segment (format |
| tagIdsToAdd | Array of strings <= 25 items Tag IDs (format |
| tagIdsToRemove | Array of strings <= 25 items Tag IDs (format |
Array of objects (BulkCustomFieldUpdates) non-empty Custom-field values to set on every record in the request. |
{- "contactIds": [
- "string"
], - "segmentId": "string",
- "tagIdsToAdd": [
- "string"
], - "tagIdsToRemove": [
- "string"
], - "customFields": [
- {
- "customFieldId": "string",
- "customFieldValue": {
- "type": "string",
- "value": "string"
}
}
]
}{- "success": true,
- "data": {
- "ids": [
- "string"
]
}
}Retrieve a specific contact by their unique identifier.
| id required | string The prefixed contact ID (format |
| cols | string Comma-separated list of additional columns to include in the response.
Valid values: |
{- "success": true,
- "data": {
- "id": "string",
- "name": "string",
- "fullName": "string",
- "location": {
- "city": "string",
- "region": "string",
- "country": "string"
}, - "primaryEmail": "string",
- "phoneNumbers": [
- {
- "type": "string",
- "value": "string"
}
], - "title": "string",
- "companyName": "string",
- "companyWebsite": "string",
- "connectedCustomObjects": [
- {
- "id": "string",
- "name": "string",
- "objectType": "string"
}
], - "customFields": {
- "property1": {
- "type": "string",
- "value": "string"
}, - "property2": {
- "type": "string",
- "value": "string"
}
}, - "profiles": [
- {
- "type": "string",
- "value": "string"
}
], - "jobHistory": [
- {
- "company": "string",
- "title": "string",
- "startDate": "string",
- "endDate": "string"
}
], - "leadScores": [
- {
- "scoreId": 0,
- "score": 0,
- "percentile": 0
}
], - "leadScoreKeyFactors": [
- {
- "scoreId": 0,
- "factors": [
- {
- "label": "string",
- "value": "string",
- "strength": 0
}
]
}
], - "segments": [
- {
- "id": "string",
- "name": "string"
}
], - "recentWebPages": [
- {
- "url": "string",
- "numVisits": 0
}
], - "recentWebVisitsNumber": 0,
- "recentActivities": [
- {
- "id": "string",
- "type": "string",
- "activityTime": "2019-08-24T14:15:22Z",
- "contactId": "string",
- "content": "string",
- "isUserInitiated": true,
- "participantCount": 0,
- "providerId": "string",
- "providerName": "string",
- "replyCount": 0,
- "sentiment": "string",
- "subSourceNames": [
- "string"
],
}
], - "activityCount7d": 0,
- "activityCount28d": 0,
- "activityCount8w": 0,
- "activityCount12w": 0,
- "activityCount6m": 0,
- "activityCount1y": 0,
- "activityCountAll": 0,
- "activateMessage": {
- "title": "string",
- "message": "string"
}, - "sparkSummary": "string",
- "recentSparkSummaries": [
- "string"
], - "tags": [
- "string"
],
}
}Retrieve a list of contacts with pagination support.
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of contacts to return per page | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cursor | string Pagination cursor from a previous response | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sort | string Default: "id" Field to sort results by. One of: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| direction | string Default: "asc" Enum: "asc" "desc" Sort direction | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cols | string Comma-separated list of additional columns to include in the response.
Valid column values: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| organizationId | string Filter contacts by prefixed organization ID (format | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| segmentId | string Filter contacts by segment ID (e.g. s_123456) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object (LightFilterExpression) Structured filter as URL-encoded JSON — see the Filterable fields:
|
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "fullName": "string",
- "location": {
- "city": "string",
- "region": "string",
- "country": "string"
}, - "primaryEmail": "string",
- "phoneNumbers": [
- {
- "type": "string",
- "value": "string"
}
], - "title": "string",
- "companyName": "string",
- "companyWebsite": "string",
- "connectedCustomObjects": [
- {
- "id": "string",
- "name": "string",
- "objectType": "string"
}
], - "customFields": {
- "property1": {
- "type": "string",
- "value": "string"
}, - "property2": {
- "type": "string",
- "value": "string"
}
}, - "profiles": [
- {
- "type": "string",
- "value": "string"
}
], - "jobHistory": [
- {
- "company": "string",
- "title": "string",
- "startDate": "string",
- "endDate": "string"
}
], - "leadScores": [
- {
- "scoreId": 0,
- "score": 0,
- "percentile": 0
}
], - "leadScoreKeyFactors": [
- {
- "scoreId": 0,
- "factors": [
- {
- "label": "string",
- "value": "string",
- "strength": 0
}
]
}
], - "segments": [
- {
- "id": "string",
- "name": "string"
}
], - "recentWebPages": [
- {
- "url": "string",
- "numVisits": 0
}
], - "recentWebVisitsNumber": 0,
- "recentActivities": [
- {
- "id": "string",
- "type": "string",
- "activityTime": "2019-08-24T14:15:22Z",
- "contactId": "string",
- "content": "string",
- "isUserInitiated": true,
- "participantCount": 0,
- "providerId": "string",
- "providerName": "string",
- "replyCount": 0,
- "sentiment": "string",
- "subSourceNames": [
- "string"
],
}
], - "activityCount7d": 0,
- "activityCount28d": 0,
- "activityCount8w": 0,
- "activityCount12w": 0,
- "activityCount6m": 0,
- "activityCount1y": 0,
- "activityCountAll": 0,
- "activateMessage": {
- "title": "string",
- "message": "string"
}, - "sparkSummary": "string",
- "recentSparkSummaries": [
- "string"
], - "tags": [
- "string"
],
}
], - "meta": {
- "nextCursor": "string",
- "recordCount": 0
}
}Apply the same change to up to 100 organizations in one request. The request must include at least one of segmentId, tagIdsToAdd, tagIdsToRemove, or customFields. Every ID, the segment, the tags, and the custom fields are validated before anything is written, and an error names every offending ID. Each change is idempotent: organizations already in the segment are skipped, so a request that fails part-way can be retried as a whole. Requires the organizations:write scope.
| organizationIds required | Array of strings [ 1 .. 100 ] items Prefixed organization IDs (format |
| segmentId | string Add every organization to this segment (format |
| tagIdsToAdd | Array of strings <= 25 items Tag IDs (format |
| tagIdsToRemove | Array of strings <= 25 items Tag IDs (format |
Array of objects (BulkCustomFieldUpdates) non-empty Custom-field values to set on every record in the request. |
{- "organizationIds": [
- "string"
], - "segmentId": "string",
- "tagIdsToAdd": [
- "string"
], - "tagIdsToRemove": [
- "string"
], - "customFields": [
- {
- "customFieldId": "string",
- "customFieldValue": {
- "type": "string",
- "value": "string"
}
}
]
}{- "success": true,
- "data": {
- "ids": [
- "string"
]
}
}Retrieve a specific organization by its unique identifier.
| id required | string The prefixed organization ID (format |
| cols | string Comma-separated list of additional columns to include in the response.
Valid values: |
{- "success": true,
- "data": {
- "id": "string",
- "name": "string",
- "primaryDomain": "string",
- "about": "string",
- "contactsCount": 0,
- "employees": 0,
- "linkedInUrl": "string",
- "revenueRangeMax": 0,
- "revenueRangeMin": 0,
- "subIndustry": "string",
- "location": {
- "city": "string",
- "region": "string",
- "country": "string"
}, - "customFields": {
- "property1": {
- "type": "string",
- "value": "string"
}, - "property2": {
- "type": "string",
- "value": "string"
}
}, - "leadScores": [
- {
- "scoreId": 0,
- "score": 0,
- "percentile": 0
}
], - "leadScoreKeyFactors": [
- {
- "scoreId": 0,
- "factors": [
- {
- "label": "string",
- "value": "string",
- "strength": 0
}
]
}
], - "researchResults": [
- {
- "promptId": "string",
- "answer": "string",
- "isPrimaryPrompt": true,
- "promptName": "string"
}
], - "recentJobOpenings": [
- {
- "jobTitle": "string",
- "jobDescription": "string",
- "firstSeenAt": "string",
- "isClosed": true,
- "location": "string"
}
], - "recentNews": [
- {
- "title": "string",
- "publishedAt": "string",
- "category": "string",
- "articleSentence": "string"
}
], - "surgingTopics": [
- "string"
], - "tags": [
- "string"
], - "topContacts": [
- {
- "id": "string",
- "name": "string",
- "fullName": "string",
- "location": {
- "city": "string",
- "region": "string",
- "country": "string"
}, - "primaryEmail": "string",
- "phoneNumbers": [
- {
- "type": "string",
- "value": "string"
}
], - "title": "string",
- "companyName": "string",
- "companyWebsite": "string",
- "connectedCustomObjects": [
- {
- "id": "string",
- "name": "string",
- "objectType": "string"
}
], - "customFields": {
- "property1": {
- "type": "string",
- "value": "string"
}, - "property2": {
- "type": "string",
- "value": "string"
}
}, - "profiles": [
- {
- "type": "string",
- "value": "string"
}
], - "jobHistory": [
- {
- "company": "string",
- "title": "string",
- "startDate": "string",
- "endDate": "string"
}
], - "leadScores": [
- {
- "scoreId": 0,
- "score": 0,
- "percentile": 0
}
], - "leadScoreKeyFactors": [
- {
- "scoreId": 0,
- "factors": [
- {
- "label": "string",
- "value": "string",
- "strength": 0
}
]
}
], - "segments": [
- {
- "id": "string",
- "name": "string"
}
], - "recentWebPages": [
- {
- "url": "string",
- "numVisits": 0
}
], - "recentWebVisitsNumber": 0,
- "recentActivities": [
- {
- "id": "string",
- "type": "string",
- "activityTime": "2019-08-24T14:15:22Z",
- "contactId": "string",
- "content": "string",
- "isUserInitiated": true,
- "participantCount": 0,
- "providerId": "string",
- "providerName": "string",
- "replyCount": 0,
- "sentiment": "string",
- "subSourceNames": [
- "string"
],
}
], - "activityCount7d": 0,
- "activityCount28d": 0,
- "activityCount8w": 0,
- "activityCount12w": 0,
- "activityCount6m": 0,
- "activityCount1y": 0,
- "activityCountAll": 0,
- "activateMessage": {
- "title": "string",
- "message": "string"
}, - "sparkSummary": "string",
- "recentSparkSummaries": [
- "string"
], - "tags": [
- "string"
],
}
],
}
}Retrieve a list of organizations with pagination support.
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of organizations to return per page | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cursor | string Pagination cursor from a previous response | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| sort | string Default: "id" Field to sort results by. One of: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| direction | string Default: "asc" Enum: "asc" "desc" Sort direction | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cols | string Comma-separated list of additional columns to include in the response.
Valid column values: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| name | string Filter organizations by exact name match | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| primaryDomain | string Filter organizations by primary domain (exact match) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object (LightFilterExpression) Structured filter as URL-encoded JSON — see the Filterable fields:
|
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "primaryDomain": "string",
- "about": "string",
- "contactsCount": 0,
- "employees": 0,
- "linkedInUrl": "string",
- "revenueRangeMax": 0,
- "revenueRangeMin": 0,
- "subIndustry": "string",
- "location": {
- "city": "string",
- "region": "string",
- "country": "string"
}, - "customFields": {
- "property1": {
- "type": "string",
- "value": "string"
}, - "property2": {
- "type": "string",
- "value": "string"
}
}, - "leadScores": [
- {
- "scoreId": 0,
- "score": 0,
- "percentile": 0
}
], - "leadScoreKeyFactors": [
- {
- "scoreId": 0,
- "factors": [
- {
- "label": "string",
- "value": "string",
- "strength": 0
}
]
}
], - "researchResults": [
- {
- "promptId": "string",
- "answer": "string",
- "isPrimaryPrompt": true,
- "promptName": "string"
}
], - "recentJobOpenings": [
- {
- "jobTitle": "string",
- "jobDescription": "string",
- "firstSeenAt": "string",
- "isClosed": true,
- "location": "string"
}
], - "recentNews": [
- {
- "title": "string",
- "publishedAt": "string",
- "category": "string",
- "articleSentence": "string"
}
], - "surgingTopics": [
- "string"
], - "tags": [
- "string"
], - "topContacts": [
- {
- "id": "string",
- "name": "string",
- "fullName": "string",
- "location": {
- "city": "string",
- "region": "string",
- "country": "string"
}, - "primaryEmail": "string",
- "phoneNumbers": [
- {
- "type": "string",
- "value": "string"
}
], - "title": "string",
- "companyName": "string",
- "companyWebsite": "string",
- "connectedCustomObjects": [
- {
- "id": "string",
- "name": "string",
- "objectType": "string"
}
], - "customFields": {
- "property1": {
- "type": "string",
- "value": "string"
}, - "property2": {
- "type": "string",
- "value": "string"
}
}, - "profiles": [
- {
- "type": "string",
- "value": "string"
}
], - "jobHistory": [
- {
- "company": "string",
- "title": "string",
- "startDate": "string",
- "endDate": "string"
}
], - "leadScores": [
- {
- "scoreId": 0,
- "score": 0,
- "percentile": 0
}
], - "leadScoreKeyFactors": [
- {
- "scoreId": 0,
- "factors": [
- {
- "label": "string",
- "value": "string",
- "strength": 0
}
]
}
], - "segments": [
- {
- "id": "string",
- "name": "string"
}
], - "recentWebPages": [
- {
- "url": "string",
- "numVisits": 0
}
], - "recentWebVisitsNumber": 0,
- "recentActivities": [
- {
- "id": "string",
- "type": "string",
- "activityTime": "2019-08-24T14:15:22Z",
- "contactId": "string",
- "content": "string",
- "isUserInitiated": true,
- "participantCount": 0,
- "providerId": "string",
- "providerName": "string",
- "replyCount": 0,
- "sentiment": "string",
- "subSourceNames": [
- "string"
],
}
], - "activityCount7d": 0,
- "activityCount28d": 0,
- "activityCount8w": 0,
- "activityCount12w": 0,
- "activityCount6m": 0,
- "activityCount1y": 0,
- "activityCountAll": 0,
- "activateMessage": {
- "title": "string",
- "message": "string"
}, - "sparkSummary": "string",
- "recentSparkSummaries": [
- "string"
], - "tags": [
- "string"
],
}
],
}
], - "meta": {
- "nextCursor": "string",
- "recordCount": 0
}
}Retrieve a specific activity by its unique identifier.
| id required | string The prefixed activity ID (format |
| cols | string Comma-separated list of additional columns to include in the response.
Valid values: |
{- "success": true,
- "data": {
- "id": "string",
- "type": "string",
- "activityTime": "2019-08-24T14:15:22Z",
- "contactId": "string",
- "content": "string",
- "isUserInitiated": true,
- "participantCount": 0,
- "providerId": "string",
- "providerName": "string",
- "replyCount": 0,
- "sentiment": "string",
- "subSourceNames": [
- "string"
],
}
}Retrieve a list of activities with pagination support.
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of activities to return per page | ||||||||||||||||||||||||||||||||||||||||||||
| cursor | string Pagination cursor from a previous response | ||||||||||||||||||||||||||||||||||||||||||||
| sort | string Default: "activityTime" Enum: "id" "activityTime" Field to sort results by. | ||||||||||||||||||||||||||||||||||||||||||||
| direction | string Default: "asc" Enum: "asc" "desc" Sort direction | ||||||||||||||||||||||||||||||||||||||||||||
| cols | string Comma-separated list of additional columns to include in the response.
Valid column values: | ||||||||||||||||||||||||||||||||||||||||||||
| contactId | string Filter activities by prefixed contact ID (format | ||||||||||||||||||||||||||||||||||||||||||||
| organizationId | string Filter activities by prefixed organization ID (format | ||||||||||||||||||||||||||||||||||||||||||||
| startDate | string <date-time> Only return activities occurring at or after this ISO-8601 datetime | ||||||||||||||||||||||||||||||||||||||||||||
| endDate | string <date-time> Only return activities occurring at or before this ISO-8601 datetime | ||||||||||||||||||||||||||||||||||||||||||||
object (LightFilterExpression) Structured filter as URL-encoded JSON — see the Filterable fields:
|
{- "success": true,
- "data": [
- {
- "id": "string",
- "type": "string",
- "activityTime": "2019-08-24T14:15:22Z",
- "contactId": "string",
- "content": "string",
- "isUserInitiated": true,
- "participantCount": 0,
- "providerId": "string",
- "providerName": "string",
- "replyCount": 0,
- "sentiment": "string",
- "subSourceNames": [
- "string"
],
}
], - "meta": {
- "nextCursor": "string",
- "recordCount": 0
}
}List all activity type identifiers supported by Common Room, along with
their human-readable display names. Use the id as the type value
returned by /activities.
{- "success": true,
- "data": [
- {
- "id": "string",
- "displayName": "string"
}
]
}Update the name of an existing segment without changing its ID, entity type, or memberships.
| id required | string The prefixed segment ID (format |
| name required | string <= 500 characters |
{- "name": "string"
}{- "success": true,
- "data": {
- "id": "string",
- "name": "string"
}
}Retrieve a specific segment by its unique identifier.
| id required | string The prefixed segment ID (format |
| cols | string Comma-separated list of additional columns to include in the response.
Valid values: |
{- "success": true,
- "data": {
- "id": "string",
- "name": "string",
- "entityType": "contact",
- "entityCount": 0,
}
}Retrieve a list of segments with pagination support.
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of segments to return per page |
| cursor | string Pagination cursor from a previous response |
| cols | string Comma-separated list of additional columns to include in the response.
Valid column values: |
| query | string Filter segments by name (substring match) |
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "entityType": "contact",
- "entityCount": 0,
}
], - "meta": {
- "nextCursor": "string",
- "recordCount": 0
}
}Create a new segment in the community.
| name required | string The name for the new segment (max 500 characters) |
| description | string Optional description for the segment (markdown supported) |
| entityType | string Default: "contact" Enum: "contact" "object" "organization" The type of entity this segment will contain |
| objectTypeId | string Required when entityType is |
{- "name": "string",
- "description": "string",
- "entityType": "contact",
- "objectTypeId": "string"
}{- "success": true,
- "data": {
- "id": "string",
- "name": "string"
}
}Retrieve a specific custom field definition by its unique identifier.
| id required | string The prefixed custom field ID (format |
{- "success": true,
- "data": {
- "id": "string",
- "name": "string",
- "entityTypes": [
- "contact"
], - "keyField": true,
- "valueType": "string",
- "sampleValues": [
- {
- "type": "string",
- "value": "string"
}
], - "description": "string",
- "targetSubTypes": [
- "string"
], - "providedBy": "string",
- "objectTypeId": "string"
}
}Retrieve all custom field definitions for the community, optionally filtered by entity type.
| entityType | string Filter fields by entity type. Valid values: |
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "entityTypes": [
- "contact"
], - "keyField": true,
- "valueType": "string",
- "sampleValues": [
- {
- "type": "string",
- "value": "string"
}
], - "description": "string",
- "targetSubTypes": [
- "string"
], - "providedBy": "string",
- "objectTypeId": "string"
}
]
}Retrieve a specific lead score definition by its unique identifier.
| id required | string The prefixed lead score ID (format |
{- "success": true,
- "data": {
- "id": "string",
- "name": "string",
- "enabled": true,
- "entityType": "contact",
- "isPrimaryScore": true,
- "outputType": "percentile"
}
}Retrieve all lead score definitions for the community.
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "enabled": true,
- "entityType": "contact",
- "isPrimaryScore": true,
- "outputType": "percentile"
}
]
}Retrieve information about the authenticated user, including their profile, bookmarked segments, personas, and company details.
{- "success": true,
- "data": {
- "id": "string",
- "communityId": "string",
- "name": "string",
- "title": "string",
- "role": "string",
- "loginEmail": "string",
- "profiles": [
- {
- "type": "string",
- "handle": "string"
}
], - "segments": [
- {
- "id": "string",
- "name": "string"
}
], - "personas": [
- {
- "id": "string",
- "name": "string"
}
], - "company": {
- "name": "string",
- "domains": [
- "string"
], - "summary": "string"
}
}
}Notify Common Room that new data is available for import from a connected data source. This triggers import and augmentation workflows for the specified provider.
| sourceId required | integer The numeric provider ID of the data source |
{- "sourceId": 0
}{- "success": true
}Retrieve a specific location by its unique identifier.
| id required | string The prefixed location ID |
{- "success": true,
- "data": {
- "id": "string",
- "name": "string",
- "type": "city",
- "city": "string",
- "region": "string",
- "country": "string"
}
}Retrieve a paginated list of locations, sorted by member count (descending).
| locationType required | string Enum: "city" "country" "country_region" "world_region" The granularity of locations to return (required) |
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of locations to return per page |
| cursor | string Pagination cursor from a previous response |
| cols | string Comma-separated list of meta columns. The meta column |
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "type": "city",
- "city": "string",
- "region": "string",
- "country": "string"
}
], - "meta": {
- "nextCursor": "string",
- "recordCount": 0
}
}Retrieve a paginated list of topics, sorted alphabetically by name.
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of topics to return per page |
| cursor | string Pagination cursor from a previous response |
| query | string Filter topics by display name prefix |
| cols | string Comma-separated list of meta columns. The meta column |
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string"
}
], - "meta": {
- "nextCursor": "string",
- "recordCount": 0
}
}List the visible signal sources (integrations) for the community, with pagination support.
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of providers to return per page |
| cursor | string Pagination cursor from a previous response |
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "serviceName": "string"
}
], - "meta": {
- "nextCursor": "string"
}
}Apply the same change to up to 100 custom objects in one request. The request must include at least one of segmentId or customFields. Every ID, the segment, the tags, and the custom fields are validated before anything is written, and an error names every offending ID. Each change is idempotent: custom objects already in the segment are skipped, so a request that fails part-way can be retried as a whole. Requires the objects:write scope.
| objectIds required | Array of strings [ 1 .. 100 ] items Prefixed custom object IDs (format |
| segmentId | string Add every custom object to this segment (format |
Array of objects (BulkCustomFieldUpdates) non-empty Custom-field values to set on every record in the request. |
{- "objectIds": [
- "string"
], - "segmentId": "string",
- "customFields": [
- {
- "customFieldId": "string",
- "customFieldValue": {
- "type": "string",
- "value": "string"
}
}
]
}{- "success": true,
- "data": {
- "ids": [
- "string"
]
}
}Retrieve a specific custom object by its unique identifier.
| id required | string The prefixed custom object ID (format |
| cols | string Comma-separated list of additional columns to include in the response.
Valid values: |
{- "success": true,
- "data": {
- "id": "string",
- "name": "string",
- "recordKey": "string",
- "customFields": {
- "property1": {
- "type": "string",
- "value": "string"
}, - "property2": {
- "type": "string",
- "value": "string"
}
}
}
}Set Common Room custom-field values on a custom object record.
| id required | string The prefixed custom object ID (format |
required | Array of objects non-empty |
{- "customFields": [
- {
- "customFieldId": "string",
- "customFieldValue": {
- "type": "string",
- "value": "string"
}
}
]
}{- "success": true,
- "data": {
- "id": "string",
- "name": "string",
- "recordKey": "string",
- "customFields": {
- "property1": {
- "type": "string",
- "value": "string"
}, - "property2": {
- "type": "string",
- "value": "string"
}
}
}
}Add a custom object record to an existing object segment.
| id required | string The prefixed custom object ID (format |
| segmentId required | string The prefixed segment ID (format |
{- "segmentId": "string"
}{- "success": true,
- "data": {
- "id": "string",
- "name": "string",
- "recordKey": "string",
- "customFields": {
- "property1": {
- "type": "string",
- "value": "string"
}, - "property2": {
- "type": "string",
- "value": "string"
}
}
}
}Retrieve a paginated list of custom objects.
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of objects to return per page | ||||||||||||||||||||||||||||
| cursor | string Pagination cursor from a previous response | ||||||||||||||||||||||||||||
| sort | string Default: "id" Enum: "id" "name" Field to sort results by | ||||||||||||||||||||||||||||
| direction | string Default: "asc" Enum: "asc" "desc" Sort direction | ||||||||||||||||||||||||||||
| objectTypeId required | string Filter objects by prefixed object type ID (format | ||||||||||||||||||||||||||||
| segmentId | string Filter objects by prefixed segment ID (format | ||||||||||||||||||||||||||||
| cols | string Comma-separated list of additional columns to include in the response.
Valid column values: | ||||||||||||||||||||||||||||
object (LightFilterExpression) Structured filter as URL-encoded JSON — see the Filterable fields:
|
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "recordKey": "string",
- "customFields": {
- "property1": {
- "type": "string",
- "value": "string"
}, - "property2": {
- "type": "string",
- "value": "string"
}
}
}
], - "meta": {
- "nextCursor": "string",
- "recordCount": 0
}
}Retrieve all custom object type definitions for the community, including their associations to other entity types.
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "assocs": [
- {
- "objectAssocType": "string",
- "targetEntity": "string",
- "targetObjectTypeId": "string"
}
]
}
]
}Retrieve a paginated list of website visits.
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of visits to return per page | ||||||||||||
| cursor | string Pagination cursor from a previous response | ||||||||||||
| cols | string Comma-separated list of additional columns to include in the response.
Valid column values: | ||||||||||||
| contactId | string Filter visits by prefixed contact ID (format | ||||||||||||
| organizationId | string Filter visits by prefixed organization ID (format | ||||||||||||
object (LightFilterExpression) Structured filter as URL-encoded JSON — see the Filterable fields:
|
{- "success": true,
- "data": [
- {
- "id": "string",
- "visitTime": "2019-08-24T14:15:22Z",
- "contactId": "string",
- "organizationId": "string"
}
], - "meta": {
- "nextCursor": "string",
- "recordCount": 0
}
}Retrieve a paginated list of prospector-discovered contacts.
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of contacts to return per page | ||||||||||||||||||||||||||||||||||||||||
| cursor | string Pagination cursor from a previous response | ||||||||||||||||||||||||||||||||||||||||
| cols | string Comma-separated list of additional columns to include in the response.
Valid column values: | ||||||||||||||||||||||||||||||||||||||||
object (LightFilterExpression) Structured filter as URL-encoded JSON — see the Filterable fields:
|
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "companyName": "string",
- "fullName": "string",
- "linkedInFollowerCount": 0,
- "linkedInHandle": "string",
- "location": {
- "city": "string",
- "region": "string",
- "country": "string"
}, - "role": "string",
- "seniority": "string",
- "skills": [
- "string"
], - "title": "string"
}
], - "meta": {
- "nextCursor": "string",
- "recordCount": 0
}
}Retrieve a paginated list of prospector-discovered companies.
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of companies to return per page | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cursor | string Pagination cursor from a previous response | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| cols | string Comma-separated list of additional columns to include in the response.
Valid column values: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
object (LightFilterExpression) Structured filter as URL-encoded JSON — see the Filterable fields:
|
{- "success": true,
- "data": [
- {
- "id": "string",
- "name": "string",
- "description": "string",
- "employees": 0,
- "linkedInHandles": [
- "string"
], - "location": {
- "address": "string",
- "city": "string",
- "state": "string",
- "country": "string",
- "countryCode": "string"
}, - "primaryWebsite": "string",
- "raised": 0,
- "revenueRange": {
- "min": 0,
- "max": 0
}, - "subIndustry": "string",
- "technologies": [
- "string"
]
}
], - "meta": {
- "nextCursor": "string",
- "recordCount": 0
}
}Retrieve a paginated list of NAICS industry codes, optionally filtered by search query.
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of codes to return per page |
| cursor | string Pagination cursor from a previous response |
| query | string Search text to filter industry codes by name |
{- "success": true,
- "data": [
- {
- "id": "string",
- "code": 0,
- "name": "string"
}
], - "meta": {
- "nextCursor": "string"
}
}Retrieve a paginated list of technographic products, optionally filtered by search query.
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of products to return per page |
| cursor | string Pagination cursor from a previous response |
| query | string Search text to filter products by name |
{- "success": true,
- "data": [
- {
- "id": "string",
- "product": "string",
- "vendor": "string"
}
], - "meta": {
- "nextCursor": "string"
}
}| query | string Optional prefix used to filter job titles. |
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of job titles to return per page, up to 1000. |
| cursor | string Opaque best-effort cursor from a previous response. Reuse a cursor with the same sort and direction; concurrent writes may affect pagination consistency. |
| sort | string Default: "alphabetical" Enum: "popularity" "alphabetical" Leading sort factor. Popularity orders by count with raw job title ascending as the tie-breaker; alphabetical orders by raw job title with count descending as the tie-breaker. |
| direction | string Default: "asc" Enum: "asc" "desc" Direction for the leading sort factor. Defaults to desc for popularity and asc for alphabetical. |
{- "success": true,
- "data": [
- {
- "value": "string"
}
], - "meta": {
- "nextCursor": "string"
}
}Retrieve the materialized buying committee cells for one organization. The full committee is returned in a single response — this endpoint is not paginated. Cells are returned in the same seniority-row and department-column order as the product. Every cell includes its full bounded list of available ranked contacts.
A buying committee must already be configured in the workspace. The
token must grant organizations:read, contacts:read, and
prospector:read (or the encompassing read scope).
Candidates are a ranked sample using up to five engagement-ranked and
five recently touched candidates per cell, not every eligible person. Prospector
emails are intentionally withheld and returned as null, matching the
buying committee view in the product. Cells without available candidates have an
empty contacts array.
meta.nextCursor is always null. Pagination parameters, sorting,
filters other than organizationId, and retrieving a cell by ID
are not supported.
Example request:
curl --get 'https://api.commonroom.io/api/v2/buying-committee-cells' \
--header "Authorization: Bearer $COMMON_ROOM_API_TOKEN" \
--data-urlencode 'organizationId=o_123' \
--data-urlencode 'cols=recordCount'
| organizationId required | string^o_[0-9]+$ Example: organizationId=o_123 Organization ID in the authenticated workspace whose buying committee should be read |
| cols | string Comma-separated columns. Use |
{- "success": true,
- "data": [
- {
- "id": "buying-committee-cell:o_123:200:106",
- "department": {
- "id": 200,
- "key": "Sales",
- "name": "Sales"
}, - "seniority": {
- "id": 106,
- "key": "CLevel",
- "name": "C-Level"
}, - "contacts": [ ]
}
], - "meta": {
- "nextCursor": null,
- "recordCount": 1
}
}Retrieve a paginated list of job postings for one organization or custom object. Exactly one of organizationId or objectId is required: postings live in a corpus keyed by company domain, so they are only readable within the scope of a record you already have.
| organizationId | string Prefixed organization ID (format | ||||||||||||||||||||||||||||||||||||||||
| objectId | string Prefixed custom object ID (format | ||||||||||||||||||||||||||||||||||||||||
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of job openings to return per page | ||||||||||||||||||||||||||||||||||||||||
| cursor | string Pagination cursor from a previous response | ||||||||||||||||||||||||||||||||||||||||
| cols | string Comma-separated list of additional columns to include in the response.
Valid column value: | ||||||||||||||||||||||||||||||||||||||||
| sort | string Value: "firstSeenAt" Sort field | ||||||||||||||||||||||||||||||||||||||||
| direction | string Default: "desc" Enum: "asc" "desc" Sort direction | ||||||||||||||||||||||||||||||||||||||||
object (LightFilterExpression) Structured filter as URL-encoded JSON — see the Filterable fields:
|
{- "success": true,
- "data": [
- {
- "id": "string",
- "jobTitle": "string",
- "firstSeenAt": "2019-08-24T14:15:22Z",
- "isClosed": true,
- "location": "string",
- "jobDescription": "string"
}
], - "meta": {
- "nextCursor": "string",
- "recordCount": 0
}
}Retrieve a paginated list of news articles for one organization or custom object. Exactly one of organizationId or objectId is required: articles live in a corpus keyed by company domain, so they are only readable within the scope of a record you already have.
| organizationId | string Prefixed organization ID (format | ||||||||||||||||||||||||
| objectId | string Prefixed custom object ID (format | ||||||||||||||||||||||||
| limit | integer [ 1 .. 1000 ] Default: 50 The maximum number of news items to return per page | ||||||||||||||||||||||||
| cursor | string Pagination cursor from a previous response | ||||||||||||||||||||||||
| cols | string News items have no opt-in columns; every field is always returned.
The meta column | ||||||||||||||||||||||||
| sort | string Value: "publishedAt" Sort field | ||||||||||||||||||||||||
| direction | string Default: "desc" Enum: "asc" "desc" Sort direction | ||||||||||||||||||||||||
object (LightFilterExpression) Structured filter as URL-encoded JSON — see the Filterable fields:
|
{- "success": true,
- "data": [
- {
- "id": "string",
- "title": "string",
- "publishedAt": "2019-08-24T14:15:22Z",
- "category": "string",
- "articleSentence": "string"
}
], - "meta": {
- "nextCursor": "string",
- "recordCount": 0
}
}