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.
| binding | meaning |
|---|---|
WORLDS_OUTREACH_URL | This world's origin followed by /api/v2 |
WORLDS_API_KEY | The world key, accepted wherever Outreach expects a credential |
WORLDS_WORLD_ID | The isolated world's identity |
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
id | integer | Prospect id |
attributes.firstName | string | First name |
attributes.lastName | string | Last name |
attributes.emails | array | Email addresses |
attributes.title | string | Job title |
relationships.account | object | Account 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
id | integer | Sequence id |
attributes.name | string | Name |
attributes.enabled | boolean | Whether it is active |
attributes.sequenceType | string | interval or date |
attributes.stepCount | integer | Number 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
id | integer | State id |
attributes.state | string | active, paused, finished and so on |
relationships.prospect | object | Prospect link |
relationships.sequence | object | Sequence 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
id | integer | Mailing id |
attributes.subject | string | Subject |
attributes.state | string | scheduled, delivered, bounced and so on |
attributes.openCount | integer | Opens |
attributes.replyCount | integer | Replies |
Test workflow
- Prepare. Select the Outreach setup for your workflow and review its starting records, including prospects, sequences, sequence states.
- 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.
- Define. Describe the task, expected final changes and records that must stay untouched. Keep expected outcomes separate from the agent's instructions.
- 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.
# 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-disconnectedSee 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.
| condition | what the agent sees |
|---|---|
rate-limited | 429 once the hourly request limit is reached |
already-in-sequence | 422 validation error when the prospect has an active state |
mailbox-disconnected | Mailings fail until the mailbox is reauthorized |
token-expired | The 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.
| Records | Starting setup |
|---|---|
| prospects | 60 with stage and owner, a few opted out |
| sequences | 4, including Q4 Outbound and Event Follow Up |
| sequence states | 45 active, paused, finished and bounced |
| mailings | 120 delivered, opened and replied |
| tasks | 20 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.
| Field | Type | Meaning / relationship |
|---|---|---|
id | integer | Prospect id |
attributes.firstName | string | First name |
attributes.lastName | string | Last name |
attributes.emails | array | Email addresses |
attributes.title | string | Job title |
relationships.account | object | Account link |
{
"id": 1,
"attributes.firstName": "<First name>",
"attributes.lastName": "<Last name>",
"attributes.emails": [],
"attributes.title": "<Job title>",
"relationships.account": {}
}Sequences records
Sequences
Multi-step outreach cadences.
| Field | Type | Meaning / relationship |
|---|---|---|
id | integer | Sequence id |
attributes.name | string | Name |
attributes.enabled | boolean | Whether it is active |
attributes.sequenceType | string | interval or date |
attributes.stepCount | integer | Number of steps |
{
"id": 1,
"attributes.name": "<Name>",
"attributes.enabled": false,
"attributes.sequenceType": "<interval or date>",
"attributes.stepCount": 1
}Sequence states records
Sequence states
A prospect's enrollment in a sequence.
| Field | Type | Meaning / relationship |
|---|---|---|
id | integer | State id |
attributes.state | string | active, paused, finished and so on |
relationships.prospect | object | Prospect link |
relationships.sequence | object | Sequence link |
{
"id": 1,
"attributes.state": "<active, paused, finished and so on>",
"relationships.prospect": {},
"relationships.sequence": {}
}Mailings records
Mailings
Emails sent or scheduled by sequences.
| Field | Type | Meaning / relationship |
|---|---|---|
id | integer | Mailing id |
attributes.subject | string | Subject |
attributes.state | string | scheduled, delivered, bounced and so on |
attributes.openCount | integer | Opens |
attributes.replyCount | integer | Replies |
{
"id": 1,
"attributes.subject": "<Subject>",
"attributes.state": "<scheduled, delivered, bounced and so on>",
"attributes.openCount": 1,
"attributes.replyCount": 1
}