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

Worlds / Sales and crm

Outreach API

A local Outreach with prospects, accounts, sequences, sequence states, mailings and tasks. Test the agent that adds prospects to sequences, handles replies and pauses or finishes sequence states.

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

This reference previews the surface the Outreach world serves in the closed beta. Paths mirror the public Outreach 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_OUTREACH_URLThis world's origin followed by /api/v2
WORLDS_API_KEYThe world key, accepted wherever Outreach expects a credential
WORLDS_WORLD_IDThe isolated world's identity
js · fetch
const base = process.env.WORLDS_OUTREACH_URL;
const headers = {
  Authorization: "Bearer " + process.env.WORLDS_API_KEY,
  "Content-Type": "application/vnd.api+json",
};

const res = await fetch(base + "/prospects?page[size]=25", { headers });
const { data } = await res.json();

API reference

Prospects

People being contacted in sequences.

  • GET/api/v2/prospectsList prospects
  • POST/api/v2/prospectsCreate a prospect
  • GET/api/v2/prospects/{id}Get a prospect
  • PATCH/api/v2/prospects/{id}Update a prospect
Fields · 6
idintegerProspect id
attributes.firstNamestringFirst name
attributes.lastNamestringLast name
attributes.emailsarrayEmail addresses
attributes.titlestringJob title
relationships.accountobjectAccount link

Sequences

Multi-step outreach cadences.

  • GET/api/v2/sequencesList sequences
  • POST/api/v2/sequencesCreate a sequence
  • GET/api/v2/sequences/{id}Get a sequence
Fields · 5
idintegerSequence id
attributes.namestringName
attributes.enabledbooleanWhether it is active
attributes.sequenceTypestringinterval or date
attributes.stepCountintegerNumber of steps

Sequence states

A prospect's enrollment in a sequence.

  • GET/api/v2/sequenceStatesList sequence states
  • POST/api/v2/sequenceStatesEnroll a prospect
  • GET/api/v2/sequenceStates/{id}Get a sequence state
Fields · 4
idintegerState id
attributes.statestringactive, paused, finished and so on
relationships.prospectobjectProspect link
relationships.sequenceobjectSequence link

Mailings

Emails sent or scheduled by sequences.

  • GET/api/v2/mailingsList mailings
  • GET/api/v2/mailings/{id}Get a mailing
  • POST/api/v2/mailingsCreate a mailing
Fields · 5
idintegerMailing id
attributes.subjectstringSubject
attributes.statestringscheduled, delivered, bounced and so on
attributes.openCountintegerOpens
attributes.replyCountintegerReplies

Test workflow

  1. Prepare. Select the Outreach setup for your workflow and review its starting records, including prospects, sequences, sequence states.
  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

  • Dana Lee sequence state finished
  • Call task created for Dana Lee, owner unchanged
  • Sam Moss has no active sequence state
  • Ana Ruiz paused with a resume date
  • No mailing sent to a bounced address

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 · Outreach
version: 2
connector: outreach
seed: outreach-starter
mode: isolated
policy: >
  Process yesterday's replies on Q4 Outbound. Finish the sequence for anyone
  who replied and create a call task for positive replies. Pause out of office
  replies for a week. Never add opted out prospects.
tasks:
  - id: add-prospects-to-the-right-sequence-and-mailbox
    prompt: Add prospects to the right sequence and mailbox
  - id: finish-the-sequence-when-a-prospect-replies
    prompt: Finish the sequence when a prospect replies
  - id: create-a-call-task-after-a-positive-reply
    prompt: Create a call task after a positive reply
expected:
  - Dana Lee sequence state finished
  - "Call task created for Dana Lee, owner unchanged"
  - Sam Moss has no active sequence state
  - Ana Ruiz paused with a resume date
  - No mailing sent to a bounced address
scenarios:
  - rate-limited
  - already-in-sequence
  - mailbox-disconnected

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 hourly request limit is reached
already-in-sequence422 validation error when the prospect has an active state
mailbox-disconnectedMailings fail until the mailbox is reauthorized
token-expiredThe OAuth token expires after two hours and returns 401

Starting data

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

RecordsStarting setup
prospects60 with stage and owner, a few opted out
sequences4, including Q4 Outbound and Event Follow Up
sequence states45 active, paused, finished and bounced
mailings120 delivered, opened and replied
tasks20 call and email tasks

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.

Prospects records

Prospects

People being contacted in sequences.

FieldTypeMeaning / relationship
idintegerProspect id
attributes.firstNamestringFirst name
attributes.lastNamestringLast name
attributes.emailsarrayEmail addresses
attributes.titlestringJob title
relationships.accountobjectAccount link
json · illustrative record shape
{
  "id": 1,
  "attributes.firstName": "<First name>",
  "attributes.lastName": "<Last name>",
  "attributes.emails": [],
  "attributes.title": "<Job title>",
  "relationships.account": {}
}

See prospects operations

Sequences records

Sequences

Multi-step outreach cadences.

FieldTypeMeaning / relationship
idintegerSequence id
attributes.namestringName
attributes.enabledbooleanWhether it is active
attributes.sequenceTypestringinterval or date
attributes.stepCountintegerNumber of steps
json · illustrative record shape
{
  "id": 1,
  "attributes.name": "<Name>",
  "attributes.enabled": false,
  "attributes.sequenceType": "<interval or date>",
  "attributes.stepCount": 1
}

See sequences operations

Sequence states records

Sequence states

A prospect's enrollment in a sequence.

FieldTypeMeaning / relationship
idintegerState id
attributes.statestringactive, paused, finished and so on
relationships.prospectobjectProspect link
relationships.sequenceobjectSequence link
json · illustrative record shape
{
  "id": 1,
  "attributes.state": "<active, paused, finished and so on>",
  "relationships.prospect": {},
  "relationships.sequence": {}
}

See sequence states operations

Mailings records

Mailings

Emails sent or scheduled by sequences.

FieldTypeMeaning / relationship
idintegerMailing id
attributes.subjectstringSubject
attributes.statestringscheduled, delivered, bounced and so on
attributes.openCountintegerOpens
attributes.replyCountintegerReplies
json · illustrative record shape
{
  "id": 1,
  "attributes.subject": "<Subject>",
  "attributes.state": "<scheduled, delivered, bounced and so on>",
  "attributes.openCount": 1,
  "attributes.replyCount": 1
}

See mailings operations

See the Outreach world in the catalog