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

Worlds / Comms and scheduling

Calendly API

A local Calendly with event types, availability, buffers, scheduled events and invitees. Test the scheduling agent that books, cancels and handles reschedule requests through the right flow.

Base path
/
Auth
Personal access token or OAuth bearer token, the world key
Endpoints
12
Status
Active today

This reference previews the surface the Calendly world serves in the closed beta. Paths mirror the public Calendly 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_CALENDLY_URLThis world's origin followed by /
WORLDS_API_KEYThe world key, accepted wherever Calendly expects a credential
WORLDS_WORLD_IDThe isolated world's identity
js · fetch
const base = process.env.WORLDS_CALENDLY_URL;

const res = await fetch(base + "/scheduled_events?user=" + encodeURIComponent(userUri) + "&status=active", {
  headers: {
    Authorization: "Bearer " + process.env.WORLDS_API_KEY,
  },
});

const { collection } = await res.json();

API reference

Scheduled events

Meetings that invitees booked.

  • GET/scheduled_eventsList scheduled events
  • GET/scheduled_events/{uuid}Get a scheduled event
  • POST/scheduled_events/{uuid}/cancellationCancel an event
Fields · 6
uristringEvent URI
namestringEvent name
statusstringactive or canceled
start_timedatetimeStart
end_timedatetimeEnd
event_typestringEvent type URI

Invitees

People who booked a slot.

  • GET/scheduled_events/{uuid}/inviteesList event invitees
  • GET/scheduled_events/{event_uuid}/invitees/{invitee_uuid}Get an invitee
  • POST/invitee_no_showsMark an invitee as no show
Fields · 5
uristringInvitee URI
namestringName
emailstringEmail
statusstringactive or canceled
questions_and_answersarrayBooking form answers

Event types

The bookable meeting templates.

  • GET/event_typesList event types
  • GET/event_types/{uuid}Get an event type
  • GET/event_type_available_timesList available times
Fields · 5
uristringEvent type URI
namestringName
durationintegerMinutes
activebooleanWhether it can be booked
scheduling_urlstringBooking link

Users and memberships

Hosts and who belongs to the organization.

  • GET/users/meGet the current user
  • GET/organization_membershipsList organization memberships
  • POST/webhook_subscriptionsCreate a webhook subscription
Fields · 5
uristringUser URI
namestringName
emailstringEmail
timezonestringTime zone
current_organizationstringOrganization URI

Test workflow

  1. Prepare. Select the Calendly setup for your workflow and review its starting records, including scheduled events, invitees, event types.
  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

  • Jamie Fox intro canceled with a reason
  • Pat Moore intro on Wed 12 at 11:00
  • Northwind demo still active
  • No events inside buffer time
  • Lin Wei and Sam Diaz 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 · Calendly
version: 2
connector: calendly
seed: calendly-starter
mode: isolated
policy: >
  Jamie asked to cancel, so cancel that intro with a reason. Pat wants
  Wednesday, so move it to an open slot that respects buffers. Leave every
  demo as is.
tasks:
  - id: cancel-events-with-a-reason-and-notify-the-invitee
    prompt: Cancel events with a reason and notify the invitee
  - id: send-single-use-scheduling-links-for-the-right-event-type
    prompt: Send single-use scheduling links for the right event type
  - id: mark-invitees-as-no-shows
    prompt: Mark invitees as no-shows
expected:
  - Jamie Fox intro canceled with a reason
  - "Pat Moore intro on Wed 12 at 11:00"
  - Northwind demo still active
  - No events inside buffer time
  - Lin Wei and Sam Diaz untouched
scenarios:
  - rate-limited
  - already-canceled
  - 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-limitedThe API returns 429
already-canceledA second cancellation on the same event is rejected
token-expiredThe OAuth token expires and calls return 401
webhook-twiceinvitee.canceled is delivered two times
slot-takenThe slot is booked by someone else before the invitee rebooks

Starting data

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

RecordsStarting setup
event types30 min intro, 60 min demo and a round robin team event
scheduled events120 active and canceled events with invitees
availabilityWeekly hours, date overrides and buffers
hosts6 hosts with connected calendars
webhooksinvitee.created and invitee.canceled subscriptions

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.

Scheduled events records

Scheduled events

Meetings that invitees booked.

FieldTypeMeaning / relationship
uristringEvent URI
namestringEvent name
statusstringactive or canceled
start_timedatetimeStart
end_timedatetimeEnd
event_typestringEvent type URI
json · illustrative record shape
{
  "uri": "<Event URI>",
  "name": "<Event name>",
  "status": "<active or canceled>",
  "start_time": "<Start>",
  "end_time": "<End>",
  "event_type": "<Event type URI>"
}

See scheduled events operations

Invitees records

Invitees

People who booked a slot.

FieldTypeMeaning / relationship
uristringInvitee URI
namestringName
emailstringEmail
statusstringactive or canceled
questions_and_answersarrayBooking form answers
json · illustrative record shape
{
  "uri": "<Invitee URI>",
  "name": "<Name>",
  "email": "person@example.test",
  "status": "<active or canceled>",
  "questions_and_answers": []
}

See invitees operations

Event types records

Event types

The bookable meeting templates.

FieldTypeMeaning / relationship
uristringEvent type URI
namestringName
durationintegerMinutes
activebooleanWhether it can be booked
scheduling_urlstringBooking link
json · illustrative record shape
{
  "uri": "<Event type URI>",
  "name": "<Name>",
  "duration": 1,
  "active": false,
  "scheduling_url": "<Booking link>"
}

See event types operations

Users and memberships records

Users and memberships

Hosts and who belongs to the organization.

FieldTypeMeaning / relationship
uristringUser URI
namestringName
emailstringEmail
timezonestringTime zone
current_organizationstringOrganization URI
json · illustrative record shape
{
  "uri": "<User URI>",
  "name": "<Name>",
  "email": "person@example.test",
  "timezone": "<Time zone>",
  "current_organization": "<Organization URI>"
}

See users and memberships operations

See the Calendly world in the catalog