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

Worlds / Travel

Expedia Partner API

A local Expedia Partner Central with properties, room types, rate plans, inventory, bookings and payouts. Test the revenue agent that manages rates and inventory and reconciles bookings.

Base path
/lodging
Auth
HTTP basic or OAuth bearer token, the world key
Endpoints
13
Status
Active today

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

const res = await fetch(base + "/properties/12345/reservations?status=booked", {
  headers: {
    Authorization: "Bearer " + process.env.WORLDS_API_KEY,
    Accept: "application/json",
  },
});

const { entity } = await res.json();
console.log(entity.length);

API reference

Reservations

Bookings for a property.

  • GET/lodging/properties/{propertyId}/reservationsList reservations
  • GET/lodging/properties/{propertyId}/reservations/{reservationId}Get a reservation
  • PUT/lodging/properties/{propertyId}/reservations/{reservationId}/cancelCancel a reservation
Fields · 6
reservationIdstringReservation id
statusstringbooked, cancelled, modified
checkIndateCheck-in
checkOutdateCheck-out
guestsobject[]Guest names and ages
totalobjectAmount and currency

Properties

Lodging properties and their content.

  • GET/lodging/propertiesList properties
  • GET/lodging/properties/{propertyId}Get a property
  • PATCH/lodging/properties/{propertyId}Update a property
Fields · 5
propertyIdstringProperty id
namestringProperty name
statusstringActive or inactive
addressobjectStreet, city, country
currencystringCurrency

Room types

Room types and their rate plans.

  • GET/lodging/properties/{propertyId}/roomTypesList room types
  • GET/lodging/properties/{propertyId}/roomTypes/{roomTypeId}Get a room type
  • POST/lodging/properties/{propertyId}/roomTypesCreate a room type
Fields · 4
roomTypeIdstringRoom type id
nameobjectLocalized name
maxOccupancyintegerMax guests
ratePlansobject[]Attached rate plans

Availability and rates

Inventory and nightly rates.

  • GET/lodging/properties/{propertyId}/availabilityGet availability and rates
  • PUT/lodging/properties/{propertyId}/availabilityUpdate availability and rates
Fields · 5
roomTypeIdstringRoom type id
ratePlanIdstringRate plan id
datedateStay date
totalInventoryAvailableintegerUnits open
baseRatenumberNightly base rate

Messages

Guest conversations.

  • GET/lodging/properties/{propertyId}/conversationsList conversations
  • POST/lodging/properties/{propertyId}/conversations/{conversationId}/messagesSend a message
Fields · 4
conversationIdstringConversation id
reservationIdstringRelated reservation
messagesobject[]Message history
unreadbooleanUnread flag

Test workflow

  1. Prepare. Select the Expedia Partner setup for your workflow and review its starting records, including reservations, properties, room 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

  • 7301884452 confirmed as HC-5512
  • No confirmation number used on two itineraries
  • 7301884456 confirmed by end of run
  • Missing payout booking flagged, payout not marked complete
  • No rate or inventory changes during the run

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 · Expedia Partner
version: 2
connector: expedia-partner
seed: expedia-partner-starter
mode: isolated
policy: >
  Confirm every booking missing a hotel confirmation number with a new unique
  number, then reconcile last week's payout. Flag any Expedia Collect booking
  missing from it.
tasks:
  - id: load-rates-and-inventory-for-upcoming-dates
    prompt: Load rates and inventory for upcoming dates
  - id: confirm-bookings-with-a-hotel-confirmation-number
    prompt: Confirm bookings with a hotel confirmation number
  - id: reconcile-expedia-collect-bookings-against-payouts
    prompt: Reconcile Expedia Collect bookings against payouts
expected:
  - 7301884452 confirmed as HC-5512
  - No confirmation number used on two itineraries
  - 7301884456 confirmed by end of run
  - "Missing payout booking flagged, payout not marked complete"
  - No rate or inventory changes during the run
scenarios:
  - booking-retrieved-twice
  - rate-limited
  - invalid-rate

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
booking-retrieved-twiceThe same booking comes back on two pulls
rate-limitedAvailability and rates updates return 429
invalid-rateA rate below the plan's minimum is rejected
credentials-expireThe API credentials return 401 after rotation

Starting data

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

RecordsStarting setup
properties3 hotels with 10 room types
rate plansRefundable and non refundable, Expedia Collect and Hotel Collect
bookings70 across booked, modified and cancelled
inventory90 days with closed out dates
payouts4 payout batches, one short a booking

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.

Reservations records

Reservations

Bookings for a property.

FieldTypeMeaning / relationship
reservationIdstringReservation id
statusstringbooked, cancelled, modified
checkIndateCheck-in
checkOutdateCheck-out
guestsobject[]Guest names and ages
totalobjectAmount and currency
json · illustrative record shape
{
  "reservationId": "<Reservation id>",
  "status": "<booked, cancelled, modified>",
  "checkIn": "<Check-in>",
  "checkOut": "<Check-out>",
  "guests": [],
  "total": {}
}

See reservations operations

Properties records

Properties

Lodging properties and their content.

FieldTypeMeaning / relationship
propertyIdstringProperty id
namestringProperty name
statusstringActive or inactive
addressobjectStreet, city, country
currencystringCurrency
json · illustrative record shape
{
  "propertyId": "<Property id>",
  "name": "<Property name>",
  "status": "<Active or inactive>",
  "address": {},
  "currency": "<Currency>"
}

See properties operations

Room types records

Room types

Room types and their rate plans.

FieldTypeMeaning / relationship
roomTypeIdstringRoom type id
nameobjectLocalized name
maxOccupancyintegerMax guests
ratePlansobject[]Attached rate plans
json · illustrative record shape
{
  "roomTypeId": "<Room type id>",
  "name": {},
  "maxOccupancy": 1,
  "ratePlans": []
}

See room types operations

Availability and rates records

Availability and rates

Inventory and nightly rates.

FieldTypeMeaning / relationship
roomTypeIdstringRoom type id
ratePlanIdstringRate plan id
datedateStay date
totalInventoryAvailableintegerUnits open
baseRatenumberNightly base rate
json · illustrative record shape
{
  "roomTypeId": "<Room type id>",
  "ratePlanId": "<Rate plan id>",
  "date": "<Stay date>",
  "totalInventoryAvailable": 1,
  "baseRate": 1
}

See availability and rates operations

Messages records

Messages

Guest conversations.

FieldTypeMeaning / relationship
conversationIdstringConversation id
reservationIdstringRelated reservation
messagesobject[]Message history
unreadbooleanUnread flag
json · illustrative record shape
{
  "conversationId": "<Conversation id>",
  "reservationId": "<Related reservation>",
  "messages": [],
  "unread": false
}

See messages operations

See the Expedia Partner world in the catalog