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
Action outcomes require a webhook_url. Disposition outcomes are what enable the required post-call disposition workflow.
Destination Types
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
Think of this as one instruction Sailor shows and runs:
- Show
Interestedduring 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:
POSTandPATCHrequire anIdempotency-Keyheader.- 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.