Core concepts

Sailor outcomes are the bridge between call work and downstream operations. They let an agent say what happened, let Sailor move the contacted person between Smart Lists, and let your backend receive a structured event.

There are two outcome moments: actions happen during a live call, and dispositions capture the required final classification after the call.

Workspace Scope

Every request acts on the workspace attached to the API token. The public API does not accept a workspace ID in the path or body.

If Sailor returns no_subaccount, the token could not resolve a workspace scope. Confirm the token belongs to the workspace you expect.

Outcome Types

TypeWhen agents use itTypical use
actionDuring a live callMark interest, trigger an external workflow, move the person to a follow-up list.
dispositionAfter the callRequire final call classification before the agent returns to open-slot dialing.

Action outcomes require a webhook_url. Disposition outcomes are what enable the required post-call disposition workflow.

Destination Types

DestinationRequest fieldsResult
noneNo destination fields.Sailor records the outcome without moving the person between lists.
smart_listdestination_idSailor adds the contacted person to the target Smart List.
remove_from_smart_listremove_from_smart_listsSailor removes the contacted person from all Smart Lists or from selected list IDs.

Use remove_from_smart_lists: { "all": true } to remove from every Smart List. Use remove_from_smart_lists: { "list_ids": [...] } to remove from selected lists.

Outcome Shape

1{
2 "outcome_name": "Interested",
3 "outcome_type": "action",
4 "order": 10,
5 "destination_type": "smart_list",
6 "destination_id": "00000000-0000-4000-8000-000000000000",
7 "webhook_url": "https://example.com/sailor/outcomes"
8}

Think of this as one instruction Sailor shows and runs:

  • Show Interested during a call.
  • Place it before lower-priority outcomes.
  • Move the contacted person to the target Smart List.
  • Send your backend the outcome webhook.

Ordering

The order field controls outcome display order. Lower numbers appear earlier. Use gaps such as 10, 20, and 30 so you can insert new outcomes later without reordering every item.

Idempotency

Create and update operations are safe to retry only when you use the right request shape:

  • POST and PATCH require an Idempotency-Key header.
  • Reuse the same key for retries of the same logical operation.
  • Use a new key when you intentionally want a new operation.

Webhook acknowledgement

When Sailor sends an outcome webhook, your endpoint should return any 2xx status after it accepts the event. Do slow work asynchronously so the webhook response stays fast.

Supported API Surface

Build against the endpoints and payloads documented in the API Reference. Undocumented paths can change without notice.

Naming Outcomes

Outcome names are shown to agents and sent in webhook payloads. Use names that are short enough to scan during a call and clear enough to become downstream audit text.

Good shapeWhy it works
InterestedFast to read during a live call.
Not QualifiedClear post-call classification.
Remove from Active ListsDescribes the list operation the action performs.