Base URL and authentication
All API requests use the base URL:
https://api.salesmotion.io
Authenticate every request with a Bearer token (JWT) in the Authorization header:
Authorization: Bearer YOUR_API_TOKEN
API access is included with the Enterprise plan. Contact your account manager to receive your credentials.
Pagination
List endpoints return paginated results. Use the page and perPage query parameters to navigate:
| Parameter | Type | Default | Description |
|---|---|---|---|
page | integer | 1 | Page number |
perPage | integer | 20 | Results per page |
Field selection
Most endpoints support the onlyWithFields query parameter — a comma-separated list of field names to return. This reduces payload size when you only need specific data:
GET /v1/accounts?onlyWithFields=id,name,domain,mainScore
Accounts
List accounts
GET /v1/accounts
Retrieve a paginated list of accounts with filtering and sorting.
Query parameters:
| Parameter | Type | Description |
|---|---|---|
view | string | default or export |
perPage | integer | Results per page |
page | integer | Page number |
sortBy | string | Account field to sort by (default: mainScore) |
sortOrder | string | asc or desc (default: desc) |
onlyWithFields | string | Comma-separated fields to return (e.g. id,name,domain) |
include | string | Related resources to include: company, owner |
textQuery | string | Search accounts by name or domain |
ids | string | Comma-separated account IDs to fetch |
domain | string | Exact domain match (e.g. acme.com) |
companyId | string | Filter by linked company ID |
ownerId | string | Filter by account owner user ID |
type | string | Filter by account type: prospect, customer, partner, churned, open-opportunity, competitor, other |
priority | number | Filter by priority: 1 (high), 2 (medium), 3 (low) |
hasSignalsOfType | string | Comma-separated signal types — combined with hasSignalsAfterDate to filter accounts by signal activity |
hasSignalsAfterDate | string | ISO date — only accounts with signals after this date |
Example request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.salesmotion.io/v1/accounts?perPage=10&type=prospect&sortBy=mainScore&sortOrder=desc"
Response: Paginated array of Account objects.
Get account
GET /v1/accounts/{accountId}
Retrieve a single account by ID, with optional related resources.
Path parameters:
| Parameter | Type | Description |
|---|---|---|
accountId | integer | Required. The account ID |
Query parameters:
| Parameter | Type | Description |
|---|---|---|
view | string | default or export |
onlyWithFields | string | Comma-separated fields to return |
include | string | Related resources: company, owner |
signalsLimit | integer | Max number of signals to include |
contactsLimit | integer | Max number of contacts to include |
Example request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.salesmotion.io/v1/accounts/12345?include=company"
Companies
Get company
GET /v1/companies/{companyId}
Retrieve a company by its canonical Salesmotion ID.
Path parameters:
| Parameter | Type | Description |
|---|---|---|
companyId | string | Required. The company ID |
Query parameters:
| Parameter | Type | Description |
|---|---|---|
view | string | default or export |
onlyWithFields | string | Comma-separated fields to return |
include | string | latestEarningsCall, latestEarningsCallAnalysis |
Example request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.salesmotion.io/v1/companies/abc123?include=latestEarningsCall,latestEarningsCallAnalysis"
Get company by external identifier
GET /v1/companies/by-input/{companyInputId}
Look up a company using a domain, URL, LinkedIn URL, Crunchbase URL, or company ID.
Path parameters:
| Parameter | Type | Description |
|---|---|---|
companyInputId | string | Required. Domain, URL, LinkedIn URL, Crunchbase URL, or company ID |
Query parameters: Same as Get company above.
Example request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.salesmotion.io/v1/companies/by-input/salesforce.com"
Contacts
List contacts
GET /v1/contacts
Retrieve a paginated list of contacts with filtering.
Query parameters:
| Parameter | Type | Description |
|---|---|---|
perPage | integer | Results per page |
page | integer | Page number |
sortBy | string | Contact field to sort by (default: inCurrentRoleSince) |
sortOrder | string | asc or desc (default: desc) |
onlyWithFields | string | Comma-separated fields to return |
include | string | Related resources: account |
accountId | string | Filter by account ID (comma-separated for multiple) |
textQuery | string | Full-text search on name, title, company, location |
currentTitleTextQuery | string | Title-specific search |
type | string | Filter by contact type: prospect, champion, contact |
changeType | string | Filter by career change: promotion, newJoiner, departure, internalChange, newInRole |
isInCurrentRoleBeforeDate | string | ISO date — contacts in their current role before this date |
isInCurrentRoleAfterDate | string | ISO date — contacts in their current role after this date |
lastChangeDetectedBefore | string | ISO date — career change detected before this date |
lastChangeDetectedAfter | string | ISO date — career change detected after this date |
Example request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.salesmotion.io/v1/contacts?accountId=12345&changeType=newJoiner"
Get contact
GET /v1/contacts/{contactId}
Retrieve a single contact by ID.
Path parameters:
| Parameter | Type | Description |
|---|---|---|
contactId | string | Required. The contact ID |
Query parameters:
| Parameter | Type | Description |
|---|---|---|
onlyWithFields | string | Comma-separated fields to return |
include | string | Related resources: account |
Signals
List signals
GET /v1/signals
Retrieve a paginated list of signals with filtering.
Query parameters:
| Parameter | Type | Description |
|---|---|---|
perPage | integer | Results per page |
page | integer | Page number |
sortBy | string | Signal field to sort by (default: date) |
sortOrder | string | asc or desc (default: desc) |
onlyWithFields | string | Comma-separated fields to return |
textQuery | string | Full-text search on signal content |
accountId | string | Filter by account ID (comma-separated for multiple) |
type | string | Comma-separated signal types: relevant-news, hiring-alert, press-release, m-and-a-alert, funding-alert, earnings-call |
afterDate | string | ISO date — signals after this date |
beforeDate | string | ISO date — signals before this date |
Example request:
curl -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.salesmotion.io/v1/signals?accountId=12345&type=earnings-call,funding-alert&afterDate=2026-01-01"
Get signal counts
GET /v1/signals/counts
Retrieve aggregated signal counts by type. Useful for dashboards and prioritization.
Query parameters:
| Parameter | Type | Description |
|---|---|---|
textQuery | string | Full-text search filter |
accountId | string | Filter by account ID (comma-separated for multiple) |
afterDate | string | ISO date — count signals after this date |
beforeDate | string | ISO date — count signals before this date |
Response fields: all, accounts, plus counts per signal type.
Get signal
GET /v1/signals/{signalId}
Retrieve a single signal by ID, including full content and sources.
Path parameters:
| Parameter | Type | Description |
|---|---|---|
signalId | integer | Required. The signal ID |
Query parameters:
| Parameter | Type | Description |
|---|---|---|
onlyWithFields | string | Comma-separated fields to return |
Usage
Get usage
GET /v1/usage
Retrieve API usage and quota information for your organization.
Query parameters:
| Parameter | Type | Description |
|---|---|---|
window | string | daily, monthly, or custom |
groupBy | string | endpoint, apiKey, or day |
from | string | Start date for custom window |
to | string | End date for custom window |
Response: Quota snapshot, totals (requests, successful, failed), and breakdown by endpoint.
Get usage limits
GET /v1/usage/limits
Retrieve your contracted daily and monthly API limits.
Feedback
Submit feedback
POST /v1/feedback
Submit feedback on API data quality or feature requests.
Request body (JSON):
| Field | Type | Required | Description |
|---|---|---|---|
message | string | Yes | Your feedback |
rating | number | No | 1–5 satisfaction rating |
category | string | No | missing-data, wrong-data, api-usability, feature-request, other |
context | object | No | Additional context: endpoint, accountId, etc. |
Example request:
curl -X POST -H "Authorization: Bearer YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d '{"message": "Missing earnings data for MSFT Q3", "category": "missing-data", "context": {"accountId": "12345"}}' \
"https://api.salesmotion.io/v1/feedback"
Data schemas
Account fields
id · organizationId · companyId · ownerId · createdAt · updatedAt · name · domain · logoUrl · featuredImageUrl · description · industry · headquartersLocation · numberOfEmployees · type · priority · mainScore · mainScoreComponents · summary · insights · swotAnalysis · threeWhys · valuePyramid · valueProposition · valueHypothesis · pointOfView · linkedInUrl · crunchbaseUrl · zoomInfoUrl · salesforceUrl · salesNavigatorUrl · addedOn · lastRefreshAt · countryCode
Contact fields
id · organizationId · accountId · firstName · lastName · currentTitle · currentCompanyName · changeType · inCurrentRoleSince · lastChangeDetectedOn · mainScore · linkedInUrl · email · emailStatus · phone · location · previousTitle · previousCompanyName · profilePictureUrl · type · contactRole · personInsights · talkingPoints · positionWhenFormerUser · introPaths · matchingTargetKeywords · matchingTargetJobTitles · matchingTargetLocations · matchingTargetTechnologies
Signal fields
id · organizationId · accountId · type · subtype · headline · description · date · sources · matchingKeywords · relevance · fullContent · smartSummary · playUrls · slidesUrls · documentsUrls · clinicalTrialPrimaryCompletionDate · clinicalTrialStudyCompletionDate · clinicalTrialLastKnownStatus · clinicalTrialCollaborators · createdAt · updatedAt
Company fields
id · name · domain · websiteUrl · description · industry · headquartersLocation · numberOfEmployees · mainStockSymbol · crunchbaseUrl · linkedInUrl · zoomInfoUrl · fiscalYearInfo · insights
Frequently asked questions
What authentication method does the API use?
The API uses Bearer token (JWT) authentication. Include your token in the Authorization header of every request. Your account manager will provide your token when you activate API access.
What are the rate limits?
Standard rate limits apply to ensure fair usage. Use the /v1/usage and /v1/usage/limits endpoints to monitor your consumption. Contact your account manager if you need higher throughput.
Can I look up a company by domain instead of ID?
Yes. Use the GET /v1/companies/by-input/{companyInputId} endpoint with the company's domain (e.g. salesforce.com), LinkedIn URL, or Crunchbase URL.
How do I get signals for a specific account?
Use the GET /v1/signals endpoint with the accountId query parameter. You can also filter by signal type and date range.
Is there a sandbox or test environment?
Contact your account manager to discuss testing options. We recommend starting with read-only requests against a small set of accounts to validate your integration before scaling.