API Reference

Last updated 2026-03-03

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:

ParameterTypeDefaultDescription
pageinteger1Page number
perPageinteger20Results 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:

ParameterTypeDescription
viewstringdefault or export
perPageintegerResults per page
pageintegerPage number
sortBystringAccount field to sort by (default: mainScore)
sortOrderstringasc or desc (default: desc)
onlyWithFieldsstringComma-separated fields to return (e.g. id,name,domain)
includestringRelated resources to include: company, owner
textQuerystringSearch accounts by name or domain
idsstringComma-separated account IDs to fetch
domainstringExact domain match (e.g. acme.com)
companyIdstringFilter by linked company ID
ownerIdstringFilter by account owner user ID
typestringFilter by account type: prospect, customer, partner, churned, open-opportunity, competitor, other
prioritynumberFilter by priority: 1 (high), 2 (medium), 3 (low)
hasSignalsOfTypestringComma-separated signal types — combined with hasSignalsAfterDate to filter accounts by signal activity
hasSignalsAfterDatestringISO 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:

ParameterTypeDescription
accountIdintegerRequired. The account ID

Query parameters:

ParameterTypeDescription
viewstringdefault or export
onlyWithFieldsstringComma-separated fields to return
includestringRelated resources: company, owner
signalsLimitintegerMax number of signals to include
contactsLimitintegerMax 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:

ParameterTypeDescription
companyIdstringRequired. The company ID

Query parameters:

ParameterTypeDescription
viewstringdefault or export
onlyWithFieldsstringComma-separated fields to return
includestringlatestEarningsCall, 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:

ParameterTypeDescription
companyInputIdstringRequired. 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:

ParameterTypeDescription
perPageintegerResults per page
pageintegerPage number
sortBystringContact field to sort by (default: inCurrentRoleSince)
sortOrderstringasc or desc (default: desc)
onlyWithFieldsstringComma-separated fields to return
includestringRelated resources: account
accountIdstringFilter by account ID (comma-separated for multiple)
textQuerystringFull-text search on name, title, company, location
currentTitleTextQuerystringTitle-specific search
typestringFilter by contact type: prospect, champion, contact
changeTypestringFilter by career change: promotion, newJoiner, departure, internalChange, newInRole
isInCurrentRoleBeforeDatestringISO date — contacts in their current role before this date
isInCurrentRoleAfterDatestringISO date — contacts in their current role after this date
lastChangeDetectedBeforestringISO date — career change detected before this date
lastChangeDetectedAfterstringISO 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:

ParameterTypeDescription
contactIdstringRequired. The contact ID

Query parameters:

ParameterTypeDescription
onlyWithFieldsstringComma-separated fields to return
includestringRelated resources: account

Signals

List signals

GET /v1/signals

Retrieve a paginated list of signals with filtering.

Query parameters:

ParameterTypeDescription
perPageintegerResults per page
pageintegerPage number
sortBystringSignal field to sort by (default: date)
sortOrderstringasc or desc (default: desc)
onlyWithFieldsstringComma-separated fields to return
textQuerystringFull-text search on signal content
accountIdstringFilter by account ID (comma-separated for multiple)
typestringComma-separated signal types: relevant-news, hiring-alert, press-release, m-and-a-alert, funding-alert, earnings-call
afterDatestringISO date — signals after this date
beforeDatestringISO 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:

ParameterTypeDescription
textQuerystringFull-text search filter
accountIdstringFilter by account ID (comma-separated for multiple)
afterDatestringISO date — count signals after this date
beforeDatestringISO 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:

ParameterTypeDescription
signalIdintegerRequired. The signal ID

Query parameters:

ParameterTypeDescription
onlyWithFieldsstringComma-separated fields to return

Usage

Get usage

GET /v1/usage

Retrieve API usage and quota information for your organization.

Query parameters:

ParameterTypeDescription
windowstringdaily, monthly, or custom
groupBystringendpoint, apiKey, or day
fromstringStart date for custom window
tostringEnd 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):

FieldTypeRequiredDescription
messagestringYesYour feedback
ratingnumberNo1–5 satisfaction rating
categorystringNomissing-data, wrong-data, api-usability, feature-request, other
contextobjectNoAdditional 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.

Still need help?

Our team is here to help you get the most out of Salesmotion.