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

Worlds / Support

Front API

A local Front with shared inboxes, conversations, tags, assignees, comments and rules. Test the agent that triages a team inbox, drafts replies and archives what is done.

Base path
/
Auth
Bearer API token, the world key
Endpoints
14
Status
Active today

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

const res = await fetch(base + "/conversations?limit=25", { headers });
const { _results } = await res.json();

API reference

Conversations

Threads across email, chat and SMS.

  • GET/conversationsList conversations
  • GET/conversations/{conversation_id}Get a conversation
  • PATCH/conversations/{conversation_id}Update a conversation
  • PUT/conversations/{conversation_id}/assigneeAssign a conversation
  • GET/conversations/search/{query}Search conversations
Fields · 6
idstringConversation id
subjectstringSubject
statusstringunassigned, assigned, archived, deleted or snoozed
assigneeobjectAssigned teammate
recipientobjectCustomer handle
tagsarrayTags

Messages

Individual emails and replies.

  • GET/conversations/{conversation_id}/messagesList messages
  • POST/conversations/{conversation_id}/messagesSend a reply
  • GET/messages/{message_id}Get a message
Fields · 5
idstringMessage id
typestringemail, sms, custom and so on
is_inboundbooleanReceived from the customer
bodystringMessage body
authorobjectTeammate who sent it

Comments

Internal teammate discussion on a conversation.

  • GET/conversations/{conversation_id}/commentsList comments
  • POST/conversations/{conversation_id}/commentsAdd a comment
Fields · 4
idstringComment id
bodystringComment text
authorobjectTeammate
posted_atnumberUnix time

Contacts

Customers and their handles.

  • GET/contactsList contacts
  • POST/contactsCreate a contact
  • GET/contacts/{contact_id}Get a contact
  • PATCH/contacts/{contact_id}Update a contact
Fields · 4
idstringContact id
namestringName
handlesarrayEmail, phone and other handles
descriptionstringNotes

Test workflow

  1. Prepare. Select the Front setup for your workflow and review its starting records, including conversations, messages, comments.
  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 conversation has a draft, no outbound message
  • Kim Park conversation still open with a comment for Maya
  • Moss & Co tagged invoice and archived
  • No conversation assigned to the out of office teammate
  • Partner digest untouched

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 · Front
version: 2
connector: front
seed: front-starter
mode: isolated
policy: >
  Triage billing@. Refund questions get a draft reply and a comment for Maya,
  never a sent message. Payment confirmations get the invoice tag and are
  archived. Leave newsletters alone.
tasks:
  - id: assign-new-conversations-to-the-right-teammate
    prompt: Assign new conversations to the right teammate
  - id: draft-a-reply-for-review-and-leave-a-comment
    prompt: Draft a reply for review and leave a comment
  - id: tag-and-archive-conversations-that-need-no-answer
    prompt: Tag and archive conversations that need no answer
expected:
  - "Kim Park conversation has a draft, no outbound message"
  - Kim Park conversation still open with a comment for Maya
  - "Moss & Co tagged invoice and archived"
  - No conversation assigned to the out of office teammate
  - Partner digest untouched
scenarios:
  - rate-limited
  - teammate-unavailable
  - conversation-moved

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 with Retry-After on the messages endpoint
teammate-unavailableAssignment to an out of office teammate is rejected by a rule
conversation-movedThe conversation was moved to another inbox before the write
token-revoked401 when the API token is rotated mid run

Starting data

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

RecordsStarting setup
inboxessupport@, billing@, partners@
conversations30 unassigned, assigned and archived
teammates6, one out of office
tagsurgent, invoice, partner, no-reply-needed
rulesRound robin on support@

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.

Conversations records

Conversations

Threads across email, chat and SMS.

FieldTypeMeaning / relationship
idstringConversation id
subjectstringSubject
statusstringunassigned, assigned, archived, deleted or snoozed
assigneeobjectAssigned teammate
recipientobjectCustomer handle
tagsarrayTags
json · illustrative record shape
{
  "id": "<Conversation id>",
  "subject": "<Subject>",
  "status": "<unassigned, assigned, archived, deleted or snoozed>",
  "assignee": {},
  "recipient": {},
  "tags": []
}

See conversations operations

Messages records

Messages

Individual emails and replies.

FieldTypeMeaning / relationship
idstringMessage id
typestringemail, sms, custom and so on
is_inboundbooleanReceived from the customer
bodystringMessage body
authorobjectTeammate who sent it
json · illustrative record shape
{
  "id": "<Message id>",
  "type": "<email, sms, custom and so on>",
  "is_inbound": false,
  "body": "<Message body>",
  "author": {}
}

See messages operations

Comments records

Comments

Internal teammate discussion on a conversation.

FieldTypeMeaning / relationship
idstringComment id
bodystringComment text
authorobjectTeammate
posted_atnumberUnix time
json · illustrative record shape
{
  "id": "<Comment id>",
  "body": "<Comment text>",
  "author": {},
  "posted_at": 1
}

See comments operations

Contacts records

Contacts

Customers and their handles.

FieldTypeMeaning / relationship
idstringContact id
namestringName
handlesarrayEmail, phone and other handles
descriptionstringNotes
json · illustrative record shape
{
  "id": "<Contact id>",
  "name": "<Name>",
  "handles": [],
  "description": "<Notes>"
}

See contacts operations

See the Front world in the catalog