# Usage

This page presents some sample calls using the Travel Partner API v3.

The Travel Partner API endpoints accept REST-ful syntax in HTTPS calls. The <var translate="no">base_url</var> for all API requests is:

```
https://travelpartner.googleapis.com/v3/accounts/account_id
```

For the complete list of request and response fields, check out the [API resources catalog](https://developers.google.com/hotels/hotel-prices/api-reference/rest).

## Property performance report

The [Property Performance Report View Service](https://developers.google.com/hotels/hotel-prices/api-reference/rest/v3/accounts.propertyPerformanceReportViews/query) provides the ability to query (get, filter, and segment) a property performance report for a particular account.

### Querying a property performance report

The following example gets the property performance report for all properties in account `12345678`, filtered to the date of May 11, 2022, and grouped by partner hotel ID.

```
GET https://travelpartner.googleapis.com/v3/accounts/12345678/propertyPerformanceReportViews:query?filter=date%20%3D%20%272022-05-11%27\&aggregateBy=partnerPropertyId
```

<br />

#### Sample response

<br />

```
{
  "results": [
    {
      "partnerPropertyId": "10001",
      "clickCount": "47"
      "impressionCount": "360"
    },
    {
      "partnerPropertyId": "10003",
      "clickCount": "23"
      "impressionCount": "400"
    },
    {
      "partnerPropertyId": "10007",
      "clickCount": "106"
      "impressionCount": "780"
    },
    {
      "partnerPropertyId": "10009",
      "clickCount": "81"
      "impressionCount": "520"
    },
  ]
}
```

<br />

<br />

## Hotels

The [Hotel View Service](https://developers.google.com/hotels/hotel-prices/api-reference/rest/v3/accounts.hotelViews) provides either a list of all the hotels or a summary of them for a particular account.

### Getting a list of hotels

The following example retrieves a list of all the hotels in account `12345678`:

```
GET https://travelpartner.googleapis.com/v3/accounts/12345678/hotelViews
```

The request accepts [query parameters](https://developers.google.com/hotels/hotel-prices/api-reference/rest/v3/accounts.hotelViews/list#query-parameters) for navigating through multi-page results:

```
GET base_url/hotelViews?pageSize=10&pageToken=11
```

<br />

#### Sample response

<br />

```
{
  "nextPageToken": "11",
  "hotelViews": [
    {
      "googleHotelDisplayName": "Alameda Hotel",
      "googleHotelId": "11111111111111111111",
      "partnerHotelDisplayName": "Alameda Hotel",
      "partnerHotelId": "10",
      "dataIssues": [
        "MISSING_STREET_NUMBER"
      ],
      "googleClusterId": "1131326789990787753"
    },
    {
      "googleClusterId": "11390920309628839218",
      "googleHotelDisplayName": "At Hotel",
      "googleHotelId": "9999999999999999999",
      "partnerHotelDisplayName": "At Hotel and Restaurant",
      "partnerHotelId": "100001"
    },
...
    {
      "googleHotelDisplayName": "Aquapark & Spa Hotel",
      "googleHotelId": "444444444444444444",
      "partnerHotelDisplayName": "Aquapark & Spa Hotel",
      "partnerHotelId": "100069",
      "dataIssues": [
        "MISSING_PHONE_NUMBER",
        "MISSING_STREET_NUMBER",
        "LATLONG_INCONSISTENT_WITH_ADDRESS"
      ],
      "googleClusterId": "18401597592098761505"
    }
  ]
}
```

<br />

<br />

### Getting a properties summary

This example gets a summary of the properties for account `12345678`:

```
GET https://travelpartner.googleapis.com/v3/accounts/12345678/hotelViews:summarize
```

<br />

#### Sample response

<br />

```
{
  "lastManifestUpdateTime": "2019-09-26T18:24:54.479972Z",
  "matchedPropertyCount": "206107",
  "overclusteredPropertyWithErrorsCount": "16927",
  "overclusteredPropertyCount": "17611",
  "unmatchedPropertyWithErrorsCount": "93638",
  "lastFeedSubmissionTime": "2019-09-19T20:51:08Z",
  "unmatchedPropertyCount": "99673"
}
```

<br />

<br />

## Participation report

The [Participation Report View Service](https://developers.google.com/hotels/hotel-prices/api-reference/rest/v3/accounts.participationReportViews/query) provides the ability to query (get, filter, and segment) a participation report for a particular account.

### Querying a participation report

The following example gets the participation report for all properties in account `12345678` and filters the report using a date of 10/4/20.

```
GET https://travelpartner.googleapis.com/v3/accounts/12345678/participationReportViews:query?filter=date%20%3D%20%272020-10-04%27
```

<br />

#### Sample response

<br />

```
{
  "results": [
    {
      "missedParticipationCountDetails": {
        "noAvailabilityCount": "628873",
        "otherReasonCount": "22",
        "hotelSuspendedCount": "262",
        "noTaxBreakdownCount": "1",
        "noLandingPageCount": "4558",
        "noPriceCount": "43194",
        "noPriceCountDetails": {
          "livePricingTechnicalIssueCount": "4795",
          "livePricingNotTriggeredCount": "2",
          "livePricingConfigIssueCount": "3",
          "livePricingNotAvailableCount": "27731",
          "livePricingOtherReasonCount": "1"
        }
        "otherReasonCount": "1"
        "priceMissingCount": "2235",
        "priceMissingCountDetails": {
          "cacheRateMissingCount": "2030",
          "itineraryBlockedCount": "196",
          "livePricingNotSetupCount": "0",
          "bandwidthDepletedCount": "1",
          "livePricingTimeoutCount": "8",
          "livePricingErrorCount": "0"
        }
        "priceProblemCount": "0",
        "priceProblemCountDetails": {
          "hotelSuspendedCount": "0",
          "priceUnusuallyHighCount": "0",
          "priceUnusuallyLowCount": "0",
          "taxesAndFeesMissingCount": "0"
        }
        "priceUnavailableCount": "0",
        "priceUnavailableCountDetails": {
          "priceUnavailableCount": "0",
          "participationNotLikelyCount": "0"
        }
      },
      "participationCount": "1298876",
      "missedParticipationCount": "679146",
      "opportunityCount": "1975787",
      "participationPercent": 0.6573967740444975
    }
  ]
}
```

<br />

<br />

## Price accuracy

The [Price Accuracy Views Service](https://developers.google.com/hotels/hotel-prices/api-reference/rest/v3/accounts.priceAccuracyViews) enables retrieval of price accuracy reports and scorecards for a particular account.

### Getting a price accuracy report

The following example retrieves the price accuracy report on 8/26/2019 for account `12345678`:

```
GET https://travelpartner.googleapis.com/v3/accounts/12345678/priceAccuracyViews/20190826
```

Besides the usual [query parameters](https://developers.google.com/hotels/hotel-prices/api-reference/rest/v3/accounts.priceAccuracyViews/get#query-parameters) for paging through the response, there are a couple more for including matched prices or pixel signals in the results.

In this example, the price accuracy report on 8/26/2019 includes matched prices and pixel signals:

```
GET base_url/priceAccuracyViews/20190826?includeMatchedPrices=true&includePixels=true
```

### Listing available price accuracy reports

To get a list of the available reports, send this request:

```
GET https://travelpartner.googleapis.com/v3/accounts/12345678/priceAccuracyViews
```

You can include the usual [query parameters](https://developers.google.com/hotels/hotel-prices/api-reference/rest/v3/accounts.priceAccuracyViews/list#query-parameters) for paging through the results.

<br />

#### Sample response

<br />

```
{
  "priceAccuracyViews": [
    {
      "name": "accounts/12345678/priceAccuracyViews/20190925"
    },
...
    {
      "name": "accounts/12345678/priceAccuracyViews/20190827"
    }
  ]
}
```

<br />

<br />

### Getting a price accuracy score

To get the price accuracy scorecard, use the `summarize` method:

```
GET https://travelpartner.googleapis.com/v3/accounts/12345678/priceAccuracyViews:summarize
```

<br />

#### Sample response

<br />

```
{
  "updateTime": "2019-09-26T18:29:32.372204Z",
  "currentScore": "EXCELLENT",
  "predictedScore": "EXCELLENT"
}
```

<br />

<br />

## Price coverage

The [Price Coverage Views Service](https://developers.google.com/hotels/hotel-prices/api-reference/rest/v3/accounts.priceCoverageViews) provides the latest price coverage report or the entire price coverage history.

### Getting the latest price coverage stats

The following example retrieves the latest price coverage stats for account `12345678`:

```
GET https://travelpartner.googleapis.com/v3/accounts/12345678/priceCoverageViews:latest
```

<br />

#### Sample response

<br />

```
{
  "calculationDate": {
    "month": 10,
    "day": 1,
    "year": 2019
  },
  "priceCoveragePercent": 7.683124346337668,
  "matchedPropertyCount": 486546,
  "priceCoverageBuckets": [
    {
      "availablePriceCount": "57708897",
      "advanceBookingWindowRange": "DAYS_0_TO_30",
      "priceCoveragePercent": 54.65867924338515,
      "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
    },
    {
      "availablePriceCount": "44221",
      "advanceBookingWindowRange": "DAYS_0_TO_30",
      "priceCoveragePercent": 0.04188368831276978,
      "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
    },
    {
      "availablePriceCount": "59988397",
      "advanceBookingWindowRange": "DAYS_31_TO_60",
      "priceCoveragePercent": 58.71161890824986,
      "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
    },
    {
      "availablePriceCount": "8805",
      "advanceBookingWindowRange": "DAYS_31_TO_60",
      "priceCoveragePercent": 0.008617596574336533,
      "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
    },
    {
      "availablePriceCount": "55096752",
      "advanceBookingWindowRange": "DAYS_61_TO_90",
      "priceCoveragePercent": 53.9240864613594,
      "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
    },
    {
      "availablePriceCount": "11747",
      "advanceBookingWindowRange": "DAYS_61_TO_90",
      "priceCoveragePercent": 0.011496979779526548,
      "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
    },
    {
      "availablePriceCount": "117074",
      "advanceBookingWindowRange": "DAYS_91_TO_120",
      "priceCoveragePercent": 0.11458222616057641,
      "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
    },
    {
      "availablePriceCount": "7527",
      "advanceBookingWindowRange": "DAYS_91_TO_120",
      "priceCoveragePercent": 0.007366797207839987,
      "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
    },
    {
      "availablePriceCount": "71904",
      "advanceBookingWindowRange": "DAYS_121_TO_150",
      "priceCoveragePercent": 0.07037361318354277,
      "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
    },
    {
      "availablePriceCount": "5544",
      "advanceBookingWindowRange": "DAYS_121_TO_150",
      "priceCoveragePercent": 0.005426002885646989,
      "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
    },
    {
      "availablePriceCount": "56528",
      "advanceBookingWindowRange": "DAYS_151_TO_180",
      "priceCoveragePercent": 0.05532487213561562,
      "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
    },
    {
      "availablePriceCount": "4680",
      "advanceBookingWindowRange": "DAYS_151_TO_180",
      "priceCoveragePercent": 0.00458039204632538,
      "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
    },
    {
      "availablePriceCount": "29269",
      "advanceBookingWindowRange": "DAYS_181_TO_210",
      "priceCoveragePercent": 0.02864604589826871,
      "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
    },
    {
      "availablePriceCount": "2336",
      "advanceBookingWindowRange": "DAYS_181_TO_210",
      "priceCoveragePercent": 0.0022862811581658314,
      "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
    },
    {
      "availablePriceCount": "22967",
      "advanceBookingWindowRange": "DAYS_211_TO_240",
      "priceCoveragePercent": 0.022478176095716885,
      "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
    },
    {
      "availablePriceCount": "1906",
      "advanceBookingWindowRange": "DAYS_211_TO_240",
      "priceCoveragePercent": 0.001865433171003456,
      "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
    },
    {
      "availablePriceCount": "19387",
      "advanceBookingWindowRange": "DAYS_241_TO_270",
      "priceCoveragePercent": 0.01897437192352781,
      "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
    },
    {
      "availablePriceCount": "2179",
      "advanceBookingWindowRange": "DAYS_241_TO_270",
      "priceCoveragePercent": 0.0021326227070391033,
      "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
    },
    {
      "availablePriceCount": "14102",
      "advanceBookingWindowRange": "DAYS_271_TO_300",
      "priceCoveragePercent": 0.013801856546427458,
      "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
    },
    {
      "availablePriceCount": "2048",
      "advanceBookingWindowRange": "DAYS_271_TO_300",
      "priceCoveragePercent": 0.0020044108783919615,
      "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
    },
    {
      "availablePriceCount": "10280",
      "advanceBookingWindowRange": "DAYS_301_TO_330",
      "priceCoveragePercent": 0.010061203041928398,
      "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
    },
    {
      "availablePriceCount": "1333",
      "advanceBookingWindowRange": "DAYS_301_TO_330",
      "priceCoveragePercent": 0.0013046287602033614,
      "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
    }
  ],
  "priceCoverageBinaryPercent": 76.38722751805585
}
```

<br />

<br />

### Getting the price coverage history

This request gets the entire price coverage history for an account:

```
GET https://travelpartner.googleapis.com/v3/accounts/12345678/priceCoverageViews
```

<br />

#### Sample response

<br />

```
{
  "priceCoverageViews": [
    {
      "calculationDate": {
        "month": 9,
        "day": 17,
        "year": 2019
      },
      "priceCoveragePercent": 7.75351958685931,
      "matchedPropertyCount": 492550,
      "priceCoverageBuckets": [
        {
          "availablePriceCount": "57557901",
          "advanceBookingWindowRange": "DAYS_0_TO_30",
          "priceCoveragePercent": 53.85113864788107,
          "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
        },
        {
          "availablePriceCount": "40549",
          "advanceBookingWindowRange": "DAYS_0_TO_30",
          "priceCoveragePercent": 0.037937620780037304,
          "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
        },
        {
          "availablePriceCount": "60927294",
          "advanceBookingWindowRange": "DAYS_31_TO_60",
          "priceCoveragePercent": 58.90365880186203,
          "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
        },
        {
          "availablePriceCount": "9151",
          "advanceBookingWindowRange": "DAYS_31_TO_60",
          "priceCoveragePercent": 0.00884705927848756,
          "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
        },
        {
          "availablePriceCount": "58125328",
          "advanceBookingWindowRange": "DAYS_61_TO_90",
          "priceCoveragePercent": 56.19475711917089,
          "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
        },
        {
          "availablePriceCount": "6943",
          "advanceBookingWindowRange": "DAYS_61_TO_90",
          "priceCoveragePercent": 0.0067123956475291366,
          "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
        },
        {
          "availablePriceCount": "112206",
          "advanceBookingWindowRange": "DAYS_91_TO_120",
          "priceCoveragePercent": 0.10847919718085183,
          "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
        },
        {
          "availablePriceCount": "9665",
          "advanceBookingWindowRange": "DAYS_91_TO_120",
          "priceCoveragePercent": 0.00934398731576683,
          "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
        },
        {
          "availablePriceCount": "42373",
          "advanceBookingWindowRange": "DAYS_121_TO_150",
          "priceCoveragePercent": 0.04096562592146797,
          "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
        },
        {
          "availablePriceCount": "4123",
          "advanceBookingWindowRange": "DAYS_121_TO_150",
          "priceCoveragePercent": 0.0039860589449463675,
          "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
        },
        {
          "availablePriceCount": "34813",
          "advanceBookingWindowRange": "DAYS_151_TO_180",
          "priceCoveragePercent": 0.033656723271990756,
          "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
        },
        {
          "availablePriceCount": "3296",
          "advanceBookingWindowRange": "DAYS_151_TO_180",
          "priceCoveragePercent": 0.003186526869401704,
          "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
        },
        {
          "availablePriceCount": "26839",
          "advanceBookingWindowRange": "DAYS_181_TO_210",
          "priceCoveragePercent": 0.02594757119170884,
          "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
        },
        {
          "availablePriceCount": "2188",
          "advanceBookingWindowRange": "DAYS_181_TO_210",
          "priceCoveragePercent": 0.00211532790966351,
          "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
        },
        {
          "availablePriceCount": "20301",
          "advanceBookingWindowRange": "DAYS_211_TO_240",
          "priceCoveragePercent": 0.0196267239004017,
          "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
        },
        {
          "availablePriceCount": "1589",
          "advanceBookingWindowRange": "DAYS_211_TO_240",
          "priceCoveragePercent": 0.0015362230568808583,
          "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
        },
        {
          "availablePriceCount": "17661",
          "advanceBookingWindowRange": "DAYS_241_TO_270",
          "priceCoveragePercent": 0.01707440868947315,
          "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
        },
        {
          "availablePriceCount": "1768",
          "advanceBookingWindowRange": "DAYS_241_TO_270",
          "priceCoveragePercent": 0.0017092777624703316,
          "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
        },
        {
          "availablePriceCount": "14245",
          "advanceBookingWindowRange": "DAYS_271_TO_300",
          "priceCoveragePercent": 0.013771867492301967,
          "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
        },
        {
          "availablePriceCount": "2019",
          "advanceBookingWindowRange": "DAYS_271_TO_300",
          "priceCoveragePercent": 0.0019519410647214931,
          "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
        },
        {
          "availablePriceCount": "10625",
          "advanceBookingWindowRange": "DAYS_301_TO_330",
          "priceCoveragePercent": 0.010272101937922665,
          "lengthOfStayRange": "LENGTH_OF_STAY_1_TO_7"
        },
        {
          "availablePriceCount": "1401",
          "advanceBookingWindowRange": "DAYS_301_TO_330",
          "priceCoveragePercent": 0.0013544672767086734,
          "lengthOfStayRange": "LENGTH_OF_STAY_8_TO_14"
        }
      ],
      "priceCoverageBinaryPercent": 77.83737691604914
    },
...
  ]
}
```

<br />

<br />

## Price

The [Price Views Service](https://developers.google.com/hotels/hotel-prices/api-reference/rest/v3/accounts.priceViews) lets you retrieve a price report for a given property.

### Getting pricing data for a property

To get the pricing report for a particular hotel (ID=`101`) belonging to account `12345678`, issue this request:

```
GET https://travelpartner.googleapis.com/v3/accounts/12345678/priceViews/101
```

<br />

#### Sample response

<br />

```
{
  "perItineraryPrices": [
    {
      "updateTime": "2019-09-30T23:24:32Z",
      "checkinDate": {
        "month": 9,
        "day": 30,
        "year": 2019
      },
      "taxes": 8.83,
      "currencyCode": "USD",
      "lengthOfStayDays": 1,
      "roomAvailable": true,
      "price": 68.25
    },
...
    {
      "updateTime": "2019-10-02T03:32:22.347810Z",
      "checkinDate": {
        "month": 4,
        "day": 23,
        "year": 2020
      },
      "currencyCode": "USD",
      "price": -1,
      "lengthOfStayDays": 3,
      "allInclusive": true
    }
  ],
  "name": "accounts/12345678/priceViews/101"
}
```

<br />

<br />

## Reconciliation reports

<br />

> [!WARNING]
> This content applies to Hotel Ads only.

<br />

The [Reconciliation Reports Service](https://developers.google.com/hotels/hotel-prices/api-reference/rest/v3/accounts.reconciliationReports) lets you get a list of reports, download a particular report, validate it, then upload the report to Google.

### Getting a list of reconciliation reports

The following example gets a list of reports for account `12345678`:

```
GET https://travelpartner.googleapis.com/v3/accounts/12345678/reconciliationReports
```

You can include optional start and end date query parameters to limit the results. For example, this query confines reports to only those between 6/15/2019 to 9/15/2019:

```
GET base_url/reconciliationReports?startDate=2019-06-15&endDate=2019-09-15
```

<br />

#### Sample response

<br />

```
{
  "reconciliationReports": [
    {
      "name": "accounts/12345678/reconciliationReports/2019-09-19T08:32:00~booking_report.csv"
    }
  ]
}
```

<br />

<br />

### Downloading a reconciliation report

This example retrieves the `booking_report.csv` report (as a JSON response) that was uploaded at `2019-08-26T12:00:00`:

```
GET base_url/reconciliationReports/2019-08-26T12%3A00%3A00~bookings.csv
```

<br />

#### Sample response

<br />

```
{
  "contents": "Hotel ID,Hotel Name,Hotel Address,Hotel City,Hotel State/Region,Hotel PostalCode,Hotel Country Code,Hotel Phone Number,Booking Reference,Booking Date and Time,Check-in Date,Check-out Date,Number of Rooms,Number of Guests,Booking Revenue,Booking Revenue Currency,Booking Revenue Currency to Billing Currency Conversion Rate,Booking Status,Commission,Commission Currency,Commission Currency to Billing Currency Conversion Rate,Payment Date,Payment Status\n\n111,\"Capybara Hotel and Spa\",123 Foo Driveway,Boston,MA,02472,US,+11234567890,2thHRTY,2016-01-04,2016-02-01,2016-02-03,1,4,213.88,USD,1,Stayed,21.39,USD,1.0,2016-06-07,Invoice Required\n\n211,\"Mabels Gabels\",45678 Bar Street,London,,KT13 0PU,GB,+440203456123,z452121A,2016-02-04,2016-02-01,2016-02-03,1,3,414.21,GBP,1.249,Stayed,64.43,USD,1.0,2016-06-07,Invoice Required\n\n311,\"No-Tell Motels\",66 Acacia Avenue,Geneva,,1211,CH,+412241820000,42,2016-03-04,2016-02-01,2016-02-03,1,2,451.15,CHF,1.05,Stayed,37.41,EUR,0.99889,2016-06-07,Invoice Required"
}
```

<br />

<br />

### Validating a reconciliation report

You can use this method to validate the report before uploading it. Validating a report does not upload it.

The reconciliation report is included in the body of the request, as the value for the `contents` field. The reconciliation report must follow the syntax described in [Reconciliation reports](https://support.google.com/hotelprices/answer/7019060#creating).

The following example validates a report for account `12345678`:

```
POST https://travelpartner.googleapis.com/v3/accounts/12345678/reconciliationReports:validate
```

<br />

#### Sample successful response

<br />

```
{
  "successfulRecordCount": 3
}
```

<br />

<br />

### Uploading a reconciliation report

After you've confirmed that a reconciliation report is valid, you can upload it to Google like in this example:

```
POST https://travelpartner.googleapis.com/v3/accounts/12345678/reconciliationReports
```

<br />

#### Sample successful response

<br />

```
{
  "successfulRecordCount": 3,
  "reconciliationReport": {
    "name": "accounts/12345678/reconciliationReports/2019-09-30T09:17~2019-09-19T08:32:00~booking_report.csv"
  }
}
```

<br />

<br />