SalesOS

Digital Workers

Automated task execution bots

Get signals

GET
/v1/digital-workers/signals

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

accountIdstring
statusstring
Value in: "PENDING" | "EXPIRED" | "DISMISSED" | "ACKNOWLEDGED" | "ACTIONED"
prioritystring
Value in: "HIGH" | "MEDIUM" | "LOW" | "CRITICAL"
signalTypesarray<string>
timeframestring
Value in: "24h" | "7d" | "30d" | "90d"
limitnumber
Minimum: 1Maximum: 100
offsetnumber
Minimum: 0
curl -X GET "https://api.salesos.org/v1/digital-workers/signals?accountId=%3Cstring%3E&status=PENDING&priority=HIGH&signalTypes=COMPETITIVE_THREAT&timeframe=24h&limit=1&offset=0" \
  -H "Authorization: Bearer <token>"

[
  {
    "id": "string",
    "accountId": "string",
    "accountName": "string",
    "type": "COMPETITIVE_THREAT",
    "title": "string",
    "description": "string",
    "confidence": 0,
    "source": "MANUAL",
    "sourceId": "string",
    "data": {},
    "recommendedAction": "string",
    "status": "PENDING",
    "priority": "HIGH",
    "acknowledgedAt": "2019-08-24T14:15:22Z",
    "acknowledgedBy": "string",
    "actionedAt": "2019-08-24T14:15:22Z",
    "actionedBy": "string",
    "dismissedAt": "2019-08-24T14:15:22Z",
    "dismissedBy": "string",
    "dismissReason": "string",
    "expiresAt": "2019-08-24T14:15:22Z",
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z"
  }
]

Create a new signal (manual entry)

POST
/v1/digital-workers/signals

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
accountIdRequiredstring
typeRequiredstring
Value in: "COMPETITIVE_THREAT" | "EXPANSION" | "EXEC_CHANGE" | "FUNDING" | "NEWS" | "USAGE_SPIKE" | "USAGE_DECLINE" | "ENGAGEMENT_SPIKE" | "ENGAGEMENT_DECLINE" | "TECH_CHANGE" | "CONTRACT_RENEWAL" | "BUDGET_CYCLE"
titleRequiredstring
descriptionstring
confidencenumber
Minimum: 0Maximum: 1
sourceRequiredstring
Value in: "MANUAL" | "NEWS" | "INTERNAL_CRM" | "ZOOMINFO" | "SNOWFLAKE" | "NEWSLETTER" | "SIXSENSE"
sourceIdstring
dataobject
recommendedActionstring
prioritystring
Value in: "HIGH" | "MEDIUM" | "LOW" | "CRITICAL"

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/digital-workers/signals" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "accountId": "string",
    "type": "COMPETITIVE_THREAT",
    "title": "string",
    "description": "string",
    "confidence": 1,
    "source": "MANUAL",
    "sourceId": "string",
    "data": {},
    "recommendedAction": "string",
    "priority": "HIGH"
  }'

{
  "id": "string",
  "accountId": "string",
  "accountName": "string",
  "type": "COMPETITIVE_THREAT",
  "title": "string",
  "description": "string",
  "confidence": 0,
  "source": "MANUAL",
  "sourceId": "string",
  "data": {},
  "recommendedAction": "string",
  "status": "PENDING",
  "priority": "HIGH",
  "acknowledgedAt": "2019-08-24T14:15:22Z",
  "acknowledgedBy": "string",
  "actionedAt": "2019-08-24T14:15:22Z",
  "actionedBy": "string",
  "dismissedAt": "2019-08-24T14:15:22Z",
  "dismissedBy": "string",
  "dismissReason": "string",
  "expiresAt": "2019-08-24T14:15:22Z",
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Get signals summary/stats

GET
/v1/digital-workers/signals/summary

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/digital-workers/signals/summary" \
  -H "Authorization: Bearer <token>"

{
  "pending": 0,
  "critical": 0,
  "high": 0,
  "actioned": 0,
  "byType": {
    "property1": 0,
    "property2": 0
  },
  "bySource": {
    "property1": 0,
    "property2": 0
  }
}

Get a single signal by ID

GET
/v1/digital-workers/signals/{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 GET "https://api.salesos.org/v1/digital-workers/signals/<string>" \
  -H "Authorization: Bearer <token>"

{
  "id": "string",
  "accountId": "string",
  "accountName": "string",
  "type": "COMPETITIVE_THREAT",
  "title": "string",
  "description": "string",
  "confidence": 0,
  "source": "MANUAL",
  "sourceId": "string",
  "data": {},
  "recommendedAction": "string",
  "status": "PENDING",
  "priority": "HIGH",
  "acknowledgedAt": "2019-08-24T14:15:22Z",
  "acknowledgedBy": "string",
  "actionedAt": "2019-08-24T14:15:22Z",
  "actionedBy": "string",
  "dismissedAt": "2019-08-24T14:15:22Z",
  "dismissedBy": "string",
  "dismissReason": "string",
  "expiresAt": "2019-08-24T14:15:22Z",
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Acknowledge, action, or dismiss a signal

PATCH
/v1/digital-workers/signals/{id}/acknowledge

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
actionRequiredstring
Value in: "action" | "acknowledge" | "dismiss"
notesstring

Path Parameters

idRequiredstring

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 PATCH "https://api.salesos.org/v1/digital-workers/signals/<string>/acknowledge" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "action": "action",
    "notes": "string"
  }'

{
  "id": "string",
  "accountId": "string",
  "accountName": "string",
  "type": "COMPETITIVE_THREAT",
  "title": "string",
  "description": "string",
  "confidence": 0,
  "source": "MANUAL",
  "sourceId": "string",
  "data": {},
  "recommendedAction": "string",
  "status": "PENDING",
  "priority": "HIGH",
  "acknowledgedAt": "2019-08-24T14:15:22Z",
  "acknowledgedBy": "string",
  "actionedAt": "2019-08-24T14:15:22Z",
  "actionedBy": "string",
  "dismissedAt": "2019-08-24T14:15:22Z",
  "dismissedBy": "string",
  "dismissReason": "string",
  "expiresAt": "2019-08-24T14:15:22Z",
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Get AI recommendation for a signal

GET
/v1/digital-workers/signals/{id}/recommend

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 GET "https://api.salesos.org/v1/digital-workers/signals/<string>/recommend" \
  -H "Authorization: Bearer <token>"

{
  "id": "string",
  "signalId": "string",
  "accountId": "string",
  "action": "string",
  "rationale": "string",
  "priority": "string",
  "confidence": 0,
  "suggestedAssignee": "string",
  "playbookId": "string",
  "suggestedContent": {
    "emailSubject": "string",
    "emailBody": "string",
    "talkingPoints": [
      "string"
    ]
  },
  "status": "string",
  "createdAt": "2019-08-24T14:15:22Z"
}

Execute a recommendation

POST
/v1/digital-workers/recommendations/{id}/execute

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
modificationsobject

Path Parameters

idRequiredstring

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/digital-workers/recommendations/<string>/execute" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "modifications": {}
  }'

Trigger signal detection (manual scan)

POST
/v1/digital-workers/signals/detect

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

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/digital-workers/signals/detect" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>"

Generate coaching agenda

POST
/v1/digital-workers/coaching/agenda/generate

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
repIdstring
repEmailstring
focusAreasarray<string>

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/digital-workers/coaching/agenda/generate" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "repId": "string",
    "repEmail": "string",
    "focusAreas": [
      "string"
    ]
  }'

{
  "id": "string",
  "repId": "string",
  "repName": "string",
  "managerId": "string",
  "agenda": {},
  "pipelineSnapshot": {},
  "performanceSnapshot": {},
  "status": "DRAFT",
  "scheduledFor": "2019-08-24T14:15:22Z",
  "completedAt": "2019-08-24T14:15:22Z",
  "sessionNotes": "string",
  "followUpActions": [
    {}
  ],
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Get coaching agendas (history) — the caller's own, for reps in their org.

GET
/v1/digital-workers/coaching/agenda

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

repIdstring
statusstring
Value in: "DRAFT" | "COMPLETED" | "CANCELLED" | "SCHEDULED" | "IN_PROGRESS"
limitnumber
offsetnumber
curl -X GET "https://api.salesos.org/v1/digital-workers/coaching/agenda?repId=%3Cstring%3E&status=DRAFT&limit=0&offset=0" \
  -H "Authorization: Bearer <token>"

[
  {
    "id": "string",
    "repId": "string",
    "repName": "string",
    "managerId": "string",
    "agenda": {},
    "pipelineSnapshot": {},
    "performanceSnapshot": {},
    "status": "DRAFT",
    "scheduledFor": "2019-08-24T14:15:22Z",
    "completedAt": "2019-08-24T14:15:22Z",
    "sessionNotes": "string",
    "followUpActions": [
      {}
    ],
    "createdAt": "2019-08-24T14:15:22Z",
    "updatedAt": "2019-08-24T14:15:22Z"
  }
]

Get a single coaching agenda by ID

GET
/v1/digital-workers/coaching/agenda/{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 GET "https://api.salesos.org/v1/digital-workers/coaching/agenda/<string>" \
  -H "Authorization: Bearer <token>"

{
  "id": "string",
  "repId": "string",
  "repName": "string",
  "managerId": "string",
  "agenda": {},
  "pipelineSnapshot": {},
  "performanceSnapshot": {},
  "status": "DRAFT",
  "scheduledFor": "2019-08-24T14:15:22Z",
  "completedAt": "2019-08-24T14:15:22Z",
  "sessionNotes": "string",
  "followUpActions": [
    {}
  ],
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Update a coaching agenda

PATCH
/v1/digital-workers/coaching/agenda/{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

Request Body

application/jsonRequired
statusstring
Value in: "DRAFT" | "COMPLETED" | "CANCELLED" | "SCHEDULED" | "IN_PROGRESS"
sessionNotesstring
followUpActionsarray<object>
outcomeobject

Path Parameters

idRequiredstring

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 PATCH "https://api.salesos.org/v1/digital-workers/coaching/agenda/<string>" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "status": "DRAFT",
    "sessionNotes": "string",
    "followUpActions": [
      {}
    ],
    "outcome": {}
  }'

{
  "id": "string",
  "repId": "string",
  "repName": "string",
  "managerId": "string",
  "agenda": {},
  "pipelineSnapshot": {},
  "performanceSnapshot": {},
  "status": "DRAFT",
  "scheduledFor": "2019-08-24T14:15:22Z",
  "completedAt": "2019-08-24T14:15:22Z",
  "sessionNotes": "string",
  "followUpActions": [
    {}
  ],
  "createdAt": "2019-08-24T14:15:22Z",
  "updatedAt": "2019-08-24T14:15:22Z"
}

Analyze playbook alignment

POST
/v1/digital-workers/coaching/sessions/{id}/analyze-playbook

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
playbookIdstring

Path Parameters

idRequiredstring

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/digital-workers/coaching/sessions/<string>/analyze-playbook" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "playbookId": "string"
  }'

{}

Get key moments from a coaching session

GET
/v1/digital-workers/coaching/sessions/{id}/key-moments

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 GET "https://api.salesos.org/v1/digital-workers/coaching/sessions/<string>/key-moments" \
  -H "Authorization: Bearer <token>"

[
  {}
]

Compare two coaching sessions

POST
/v1/digital-workers/coaching/sessions/compare

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
sessionId1Requiredstring
sessionId2Requiredstring

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/digital-workers/coaching/sessions/compare" \
  -H "Idempotency-Key: <string>" \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "sessionId1": "string",
    "sessionId2": "string"
  }'

{}

Get team members

GET
/v1/digital-workers/team

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/digital-workers/team" \
  -H "Authorization: Bearer <token>"

Get playbooks

GET
/v1/digital-workers/playbooks

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/digital-workers/playbooks" \
  -H "Authorization: Bearer <token>"

{}