Room Match

Match supplier rooms to a reference catalog

What it does: For each supplier room, returns the best reference room match with confidence scores and ranked alternatives.

Workflow role: Optional step 0 — quick sync scoring before async hotel jobs.

Use when: You need an immediate answer with suppliers. Either send references yourself, or omit references and set hotelId so the service resolves the catalog (room_mapping_catalog → LiteAPI data API; your references win if supplied; max 500 rooms).

Do not use when: You need persisted mappings, audit reasons, or room attributes — use POST /rooms/match/async. Not for clustering without a catalog — use POST /rooms/group.

If references is omitted: missing hotelId or unresolvable catalog → 400; Redis or data API failure → 500; suppliers×references over upstream cap → 413 when configured.

Details, examples, limits, and result codes: Implementation Workflow (doc page: implementation-workflow).

post/rooms/match

Request

  • Base URL
    https://api.liteapi.travel/v3.0
  • URL
    https://api.liteapi.travel/v3.0/rooms/match
  • Auth
    API key in header X-API-Key

Request body

OR

Example request

{
  "hotelId": "lpfc771",
  "chunkKey": "chunk-1",
  "threshold": 0.5,
  "topK": 3,
  "references": [
    {
      "name": "King Room"
    }
  ],
  "suppliers": [
    {
      "name": "Deluxe King"
    }
  ]
}

Response

OK

Example response

{
  "data": {
    "hotelId": "lpfc771",
    "results": [
      {
        "i": 0,
        "name": "Deluxe King",
        "status": "mapped",
        "selected": {
          "id": "ref-1",
          "name": "King Room",
          "scoreCalibrated": 0.87,
          "predictedLabel": 1
        },
        "candidates": [
          {
            "id": "ref-1",
            "name": "King Room",
            "scoreCalibrated": 0.87,
            "predictedLabel": 1
          },
          {
            "id": "ref-3",
            "name": "Junior Suite",
            "scoreCalibrated": 0.31,
            "predictedLabel": 0
          },
          {
            "id": "ref-2",
            "name": "Twin Room",
            "scoreCalibrated": 0.21,
            "predictedLabel": 0
          }
        ]
      },
      {
        "i": 1,
        "name": "Standard Twin Room",
        "status": "mapped",
        "selected": {
          "id": "ref-2",
          "name": "Twin Room",
          "scoreCalibrated": 0.91,
          "predictedLabel": 1
        },
        "candidates": [
          {
            "id": "ref-2",
            "name": "Twin Room",
            "scoreCalibrated": 0.91,
            "predictedLabel": 1
          },
          {
            "id": "ref-1",
            "name": "King Room",
            "scoreCalibrated": 0.34,
            "predictedLabel": 0
          },
          {
            "id": "ref-3",
            "name": "Junior Suite",
            "scoreCalibrated": 0.18,
            "predictedLabel": 0
          }
        ]
      },
      {
        "i": 2,
        "name": "1 King Junior Suite",
        "status": "mapped",
        "selected": {
          "id": "ref-3",
          "name": "Junior Suite",
          "scoreCalibrated": 0.88,
          "predictedLabel": 1
        },
        "candidates": [
          {
            "id": "ref-3",
            "name": "Junior Suite",
            "scoreCalibrated": 0.88,
            "predictedLabel": 1
          },
          {
            "id": "ref-1",
            "name": "King Room",
            "scoreCalibrated": 0.42,
            "predictedLabel": 0
          },
          {
            "id": "ref-2",
            "name": "Twin Room",
            "scoreCalibrated": 0.19,
            "predictedLabel": 0
          }
        ]
      }
    ]
  }
}

Changes

No recorded changes to this operation across all 1 revision of this API.