SalesOS

Call Intelligence

Call recording analysis and insights

Search calls with transcript content

GET
/v1/calls/search

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Query Parameters

querystring
phrasesarray<string>
participantsarray<string>
accountNamestring
accountIdstring
opportunityIdstring
trackersarray<string>
dateFromstring
dateTostring
platformstring
Value in: "zoom" | "teams" | "google_meet" | "webex" | "other"
mentionedBystring
Value in: "any" | "internal" | "external"
minDurationnumber
maxDurationnumber
sentimentstring
Value in: "positive" | "neutral" | "negative"
limitnumber
offsetnumber
curl -X GET "https://api.salesos.org/v1/calls/search?query=%3Cstring%3E&phrases=string&participants=string&accountName=%3Cstring%3E&accountId=%3Cstring%3E&opportunityId=%3Cstring%3E&trackers=string&dateFrom=%3Cstring%3E&dateTo=%3Cstring%3E&platform=zoom&mentionedBy=any&minDuration=0&maxDuration=0&sentiment=positive&limit=0&offset=0" \
  -H "Authorization: Bearer <token>"

Save a search for quick access

POST
/v1/calls/searches

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired
nameRequiredstring
filtersRequiredobject
isDefaultboolean

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/calls/searches" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "string",
    "filters": {
      "query": "string",
      "phrases": [
        "string"
      ],
      "participants": [
        "string"
      ],
      "accountName": "string",
      "accountId": "string",
      "opportunityId": "string",
      "trackers": [
        "string"
      ],
      "dateFrom": "string",
      "dateTo": "string",
      "platform": "zoom",
      "mentionedBy": "any",
      "minDuration": 0,
      "maxDuration": 0,
      "sentiment": "positive",
      "limit": 0,
      "offset": 0
    },
    "isDefault": true
  }'

Get saved searches

GET
/v1/calls/saved/searches

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

curl -X GET "https://api.salesos.org/v1/calls/saved/searches" \
  -H "Authorization: Bearer <token>"

[
  {}
]

Create or update a tracker

POST
/v1/calls/trackers

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired
nameRequiredstring
categoryRequiredstring
keywordsRequiredarray<string>
phrasesarray<string>
isEnabledboolean

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/calls/trackers" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "string",
    "category": "string",
    "keywords": [
      "string"
    ],
    "phrases": [
      "string"
    ],
    "isEnabled": true
  }'

Get tracker definitions

GET
/v1/calls/config/trackers

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

curl -X GET "https://api.salesos.org/v1/calls/config/trackers" \
  -H "Authorization: Bearer <token>"

[
  {
    "name": "string",
    "category": "string",
    "keywords": [
      "string"
    ],
    "phrases": [
      "string"
    ],
    "isEnabled": true
  }
]

Create a stream (saved search with notifications)

POST
/v1/calls/streams

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Request Body

application/jsonRequired
nameRequiredstring
filtersRequiredobject
descriptionstring
notifyOnNewboolean

Header Parameters

Idempotency-Keystring

Unique key (a UUID is ideal) that makes this write safe to retry for 24 hours: a retry with the same body replays the original response (Idempotent-Replayed: true); the same key with a different body is a 409.

Maximum length: 255
curl -X POST "https://api.salesos.org/v1/calls/streams" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "string",
    "filters": {
      "query": "string",
      "phrases": [
        "string"
      ],
      "participants": [
        "string"
      ],
      "accountName": "string",
      "accountId": "string",
      "opportunityId": "string",
      "trackers": [
        "string"
      ],
      "dateFrom": "string",
      "dateTo": "string",
      "platform": "zoom",
      "mentionedBy": "any",
      "minDuration": 0,
      "maxDuration": 0,
      "sentiment": "positive",
      "limit": 0,
      "offset": 0
    },
    "description": "string",
    "notifyOnNew": true
  }'

Get streams

GET
/v1/calls/saved/streams

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

curl -X GET "https://api.salesos.org/v1/calls/saved/streams" \
  -H "Authorization: Bearer <token>"
DELETE
/v1/calls/searches/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X DELETE "https://api.salesos.org/v1/calls/searches/<string>" \
  -H "Authorization: Bearer <token>"

Delete tracker

DELETE
/v1/calls/trackers/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X DELETE "https://api.salesos.org/v1/calls/trackers/<string>" \
  -H "Authorization: Bearer <token>"

Delete stream

DELETE
/v1/calls/streams/{id}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

idRequiredstring
curl -X DELETE "https://api.salesos.org/v1/calls/streams/<string>" \
  -H "Authorization: Bearer <token>"

Get call details with full transcript NOTE: This route must come after all fixed routes to avoid conflicts

GET
/v1/calls/{callId}

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

callIdRequiredstring
curl -X GET "https://api.salesos.org/v1/calls/<string>" \
  -H "Authorization: Bearer <token>"

{}

AI-powered call analysis

GET
/v1/calls/{callId}/analyze

Authorization

AuthorizationRequiredBearer <token>

Session token from the SalesOS web app.

In: header

X-API-Key<token>

API key from Settings → API Keys. Authorization: ApiKey <key> is also accepted. Each operation lists the scope it needs under x-api-key-scopes.

In: header

Path Parameters

callIdRequiredstring
curl -X GET "https://api.salesos.org/v1/calls/<string>/analyze" \
  -H "Authorization: Bearer <token>"