Closed beta · run Worlds on your machineBrowse worlds →
Docs menu · Salesloft API

Worlds / Sales and crm

Salesloft API

A local Salesloft with people, accounts, cadences, cadence memberships, calls, emails and tasks. Test the agent that works the cadence queue, logs calls and removes people who should stop.

Base path
/v2
Auth
OAuth 2.0 bearer token, the world key
Endpoints
14
Status
Active today

This reference previews the surface the Salesloft world serves in the closed beta. Paths mirror the public Salesloft API; the exact subset is confirmed when your workflow is scoped.

Connect

The run gives your agent these bindings. Keep your SDK; change only where it sends requests.

bindingmeaning
WORLDS_SALESLOFT_URLThis world's origin followed by /v2
WORLDS_API_KEYThe world key, accepted wherever Salesloft expects a credential
WORLDS_WORLD_IDThe isolated world's identity
js · fetch
const base = process.env.WORLDS_SALESLOFT_URL;
const headers = {
  Authorization: "Bearer " + process.env.WORLDS_API_KEY,
  "Content-Type": "application/json",
};

const res = await fetch(base + "/people.json?per_page=25", { headers });
const { data } = await res.json();

API reference

People

Prospects and contacts.

  • GET/v2/people.jsonList people
  • POST/v2/people.jsonCreate a person
  • GET/v2/people/{id}.jsonFetch a person
  • PUT/v2/people/{id}.jsonUpdate a person
Fields · 6
idintegerPerson id
first_namestringFirst name
last_namestringLast name
email_addressstringEmail address
titlestringJob title
accountobjectLinked account

Accounts

Companies you prospect.

  • GET/v2/accounts.jsonList accounts
  • POST/v2/accounts.jsonCreate an account
  • GET/v2/accounts/{id}.jsonFetch an account
Fields · 4
idintegerAccount id
namestringName
domainstringWebsite domain
industrystringIndustry

Cadences

Automated sequences of steps.

  • GET/v2/cadences.jsonList cadences
  • GET/v2/cadences/{id}.jsonFetch a cadence
Fields · 4
idintegerCadence id
namestringName
draftbooleanWhether it is a draft
people_acted_countintegerPeople who acted

Cadence memberships

A person's enrollment in a cadence.

  • GET/v2/cadence_memberships.jsonList memberships
  • POST/v2/cadence_memberships.jsonAdd a person to a cadence
  • POST/v2/cadence_memberships/{id}/remove.jsonRemove a person from a cadence
Fields · 4
idintegerMembership id
person_idintegerPerson
cadence_idintegerCadence
currently_on_cadencebooleanWhether still enrolled

Activities

Emails sent and calls made.

  • GET/v2/activities/emails.jsonList emails
  • GET/v2/activities/calls.jsonList calls
Fields · 4
idintegerActivity id
subjectstringSubject
statusstringDelivery status
recipientobjectPerson who received it

Test workflow

  1. Prepare. Select the Salesloft setup for your workflow and review its starting records, including people, accounts, cadences.
  2. Connect. Configure your agent with this world's URL and key using the SDK example. Check that it reaches the intended API before running a test.
  3. Define. Describe the task, expected final changes and records that must stay untouched. Keep expected outcomes separate from the agent's instructions.
  4. Run and inspect. Use the dashboard or your workflow's generated CLI setup. Review final records and changes, then rerun from the same starting setup with the relevant failure conditions. Use Deployment and CI to automate the same workflow.

What to verify

  • Kim Park removed from the cadence
  • Raj Patel on no cadence
  • Ana Ruiz has a call with disposition and sentiment
  • No call logged on a person not called
  • Ji Woo membership still paused

Test file

A task file names the jobs, the policy your agent is given and what the grader reads back from the world's final state. The agent never sees the expected outcomes.

yaml · worlds/tasks.yaml
# worlds/tasks.yaml · Salesloft
version: 2
connector: salesloft
seed: salesloft-starter
mode: isolated
policy: >
  Work today's Enterprise Outbound tasks. Remove anyone who booked a meeting.
  Log calls with disposition and sentiment on the right person. Never add
  people flagged do not contact.
tasks:
  - id: add-people-to-a-cadence-on-the-right-step
    prompt: Add people to a cadence on the right step
  - id: log-a-call-with-disposition-and-sentiment
    prompt: Log a call with disposition and sentiment
  - id: remove-people-from-cadences-after-a-reply-or-meeting
    prompt: Remove people from cadences after a reply or meeting
expected:
  - Kim Park removed from the cadence
  - Raj Patel on no cadence
  - Ana Ruiz has a call with disposition and sentiment
  - No call logged on a person not called
  - Ji Woo membership still paused
scenarios:
  - rate-limited
  - already-a-member
  - token-expired

See Tasks and outcomes for every field, and Deployment and CI to run the file on every pull request.

Failure conditions

Each one fires before the handler, at the same step on every run.

conditionwhat the agent sees
rate-limited429 once the per-minute cost limit is used
already-a-member422 when the person is already on the cadence
token-expiredThe OAuth access token expires and returns 401
person-deleted404 because the person was merged by a teammate

Starting data

Start each run from the same records and relationships. The overview below describes the Salesloft starter; use the setup supplied for your workflow when preparing your own snapshot.

RecordsStarting setup
people70 with owner and do not contact flags
cadences5 with email, phone and other steps
cadence memberships50 active, paused and removed
calls40 logged with dispositions
tasks25 due today

The record shapes below reuse this world's API field definitions. They show illustrative values and placeholders, not an importable seed. API responses and seed input can differ; include all required records and references in the accepted import format for your workflow.

People records

People

Prospects and contacts.

FieldTypeMeaning / relationship
idintegerPerson id
first_namestringFirst name
last_namestringLast name
email_addressstringEmail address
titlestringJob title
accountobjectLinked account
json · illustrative record shape
{
  "id": 1,
  "first_name": "<First name>",
  "last_name": "<Last name>",
  "email_address": "person@example.test",
  "title": "<Job title>",
  "account": {}
}

See people operations

Accounts records

Accounts

Companies you prospect.

FieldTypeMeaning / relationship
idintegerAccount id
namestringName
domainstringWebsite domain
industrystringIndustry
json · illustrative record shape
{
  "id": 1,
  "name": "<Name>",
  "domain": "<Website domain>",
  "industry": "<Industry>"
}

See accounts operations

Cadences records

Cadences

Automated sequences of steps.

FieldTypeMeaning / relationship
idintegerCadence id
namestringName
draftbooleanWhether it is a draft
people_acted_countintegerPeople who acted
json · illustrative record shape
{
  "id": 1,
  "name": "<Name>",
  "draft": false,
  "people_acted_count": 1
}

See cadences operations

Cadence memberships records

Cadence memberships

A person's enrollment in a cadence.

FieldTypeMeaning / relationship
idintegerMembership id
person_idintegerPerson
cadence_idintegerCadence
currently_on_cadencebooleanWhether still enrolled
json · illustrative record shape
{
  "id": 1,
  "person_id": 1,
  "cadence_id": 1,
  "currently_on_cadence": false
}

See cadence memberships operations

Activities records

Activities

Emails sent and calls made.

FieldTypeMeaning / relationship
idintegerActivity id
subjectstringSubject
statusstringDelivery status
recipientobjectPerson who received it
json · illustrative record shape
{
  "id": 1,
  "subject": "<Subject>",
  "status": "<Delivery status>",
  "recipient": {}
}

See activities operations

See the Salesloft world in the catalog