> ## Documentation Index
> Fetch the complete documentation index at: https://docs.mapping.travel/llms.txt
> Use this file to discover all available pages before exploring further.

# Get mapping job status and result counts

> Retrieve the current status, rowCount, matchedCount, and unmatchedCount for a mapping job. Poll this endpoint until status is COMPLETED or FAILED.

After starting a mapping job, use this endpoint to poll for its progress. The response includes the current status along with counts of matched, unmatched, and total hotels once the job has processed enough data to report them.

## Request

```bash theme={null} theme={null}
GET https://api.mapping.travel/api/v1/mapping/{mappingJobId}
```

<ParamField path="mappingJobId" type="string" required>
  UUID of the mapping job to retrieve. You receive this from the [start mapping](/api/mapping/start) response.
</ParamField>

## Response

<ResponseField name="mappingJobId" type="string" required>
  UUID of the mapping job.
</ResponseField>

<ResponseField name="status" type="string" required>
  Current status of the job.

  | Value       | Description                                       |
  | ----------- | ------------------------------------------------- |
  | `PENDING`   | Job is queued and has not started yet.            |
  | `RUNNING`   | Job is actively processing hotels.                |
  | `COMPLETED` | Job finished successfully. Results are available. |
  | `FAILED`    | Job encountered an error and did not complete.    |
</ResponseField>

<ResponseField name="mode" type="string" required>
  Mapping mode used for this job: `STANDARD`, `ID_TO_ID`, or `HYBRID`.
</ResponseField>

<ResponseField name="rowCount" type="number">
  Total number of hotels in the partner inventory. Available once the job begins processing.
</ResponseField>

<ResponseField name="matchedCount" type="number">
  Number of hotels successfully matched to a reference hotel. For `HYBRID` jobs, this is the combined count of ID-to-ID and fuzzy matches.
</ResponseField>

<ResponseField name="unmatchedCount" type="number">
  Number of hotels that could not be matched to any reference hotel.
</ResponseField>

<ResponseField name="partnerInventoryId" type="string" required>
  UUID of the partner inventory being mapped.
</ResponseField>

<ResponseField name="createdAt" type="string" required>
  ISO 8601 timestamp of when the job was created.
</ResponseField>

<ResponseField name="updatedAt" type="string" required>
  ISO 8601 timestamp of the last status update.
</ResponseField>

## Error responses

| Status             | Reason                                                         |
| ------------------ | -------------------------------------------------------------- |
| `401 Unauthorized` | Missing or invalid `Authorization` header.                     |
| `404 Not Found`    | No mapping job with the given ID exists for your organization. |

<Note>
  For `HYBRID` mode jobs, the `matchedCount` reflects matches from both phases — ID-to-ID matches completed in phase 1 plus any additional fuzzy matches from phase 2. The job stays in `RUNNING` until both phases complete.
</Note>

## Example

<RequestExample>
  ```bash cURL theme={null} theme={null}
  curl --request GET \
    --url https://api.mapping.travel/api/v1/mapping/f7e6d5c4-b3a2-1098-fedc-ba9876543210 \
    --header 'Authorization: Bearer <token>'
  ```
</RequestExample>

<ResponseExample>
  ```json 200 (running) theme={null} theme={null}
  {
    "mappingJobId": "f7e6d5c4-b3a2-1098-fedc-ba9876543210",
    "status": "RUNNING",
    "mode": "HYBRID",
    "partnerInventoryId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "rowCount": 5000,
    "matchedCount": 3200,
    "unmatchedCount": null,
    "createdAt": "2026-04-25T09:00:00Z",
    "updatedAt": "2026-04-25T09:04:12Z"
  }
  ```

  ```json 200 (completed) theme={null} theme={null}
  {
    "mappingJobId": "f7e6d5c4-b3a2-1098-fedc-ba9876543210",
    "status": "COMPLETED",
    "mode": "HYBRID",
    "partnerInventoryId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "rowCount": 5000,
    "matchedCount": 4750,
    "unmatchedCount": 250,
    "createdAt": "2026-04-25T09:00:00Z",
    "updatedAt": "2026-04-25T09:08:45Z"
  }
  ```

  ```json 404 theme={null} theme={null}
  {
    "error": "Not Found",
    "message": "Mapping job not found"
  }
  ```
</ResponseExample>
