POST/api/v4/locations/update

Update a location

Updates writable fields on an existing location. Only the fields you send are changed.

Requires an API key. See Authentication for header format and key rotation.

Parameters

Body

NameTypeRequiredDescription
input.idstringrequiredThe location's Base64-encoded Relay ID to update.
input.namestringoptionalBusiness name.
input.streetstringoptionalStreet address.
input.citystringoptionalCity.
input.stateIsostringoptionalState/region ISO code.
input.postalCodestringoptionalPostal or ZIP code.
input.countryIsostringoptionalTwo-letter country ISO code.
input.phonestringoptionalPrimary phone number.
input.websitestringoptionalBusiness website URL.
input.businessHoursarray of objectsoptionalWeekly hours. Each entry: `day` (MONDAY–SUNDAY), optional `slots` array, and optional `closed`.
input.businessHours[].daystringrequiredDay of week: one of MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY.
input.businessHours[].slotsarray of objectsoptionalOpen intervals for the day; each has `openTime` and `closeTime` (e.g. `09:00`, `17:00`).
input.businessHours[].closedbooleanoptionalSet to true to mark the day closed (omit `slots`).
input.moreHoursarray of objectsoptionalAdditional hour sets (e.g. delivery, drive-through). Each has a `type` and a `days` array of `{ day, openTime, closeTime }`.
input.serviceAreaobjectoptionalService-area business config: `businessType`, `regionCode`, and a `placeInfos` array of `{ placeId, placeName }`.
input.customAttributesarray of objectsoptionalPublisher custom attributes; each has `name` (required), `value`, `type`, and `levelType`.
input.placeActionLinksarray of objectsoptionalGoogle action links (ordering, delivery, takeout, reservation, appointment). Each item: `placeActionType` (enum), `uri` (string), optional `isPreferred` (boolean), optional `action` (`add`, the default, or `delete`), optional `name` (the link identifier returned by read endpoints once synced to Google). Only the links you reference are affected; links you don't include are left unchanged. See the Place Action Links guide.

Sample request

Ready-to-paste body. Replace placeholder IDs and values with yours.

{
  "input": {
    "id": "TG9jYXRpb246MTgwMDI4OQ==",
    "phone": "8073326999",
    "website": "https://jennyhome.example.com",
    "businessHours": [
      { "day": "MONDAY", "slots": [{ "openTime": "09:00", "closeTime": "17:00" }] },
      { "day": "TUESDAY", "slots": [{ "openTime": "09:00", "closeTime": "17:00" }] },
      { "day": "WEDNESDAY", "slots": [{ "openTime": "09:00", "closeTime": "17:00" }] },
      { "day": "THURSDAY", "slots": [{ "openTime": "09:00", "closeTime": "17:00" }] },
      { "day": "FRIDAY", "slots": [{ "openTime": "09:00", "closeTime": "17:00" }] },
      { "day": "SATURDAY", "slots": [{ "openTime": "10:00", "closeTime": "14:00" }] },
      { "day": "SUNDAY", "closed": true }
    ]
  }
}

Responses

200Location updated. `success` is true and the updated location summary is returned.
{
  "data": {
    "updateLocation": {
      "clientMutationId": null,
      "success": true,
      "errors": null,
      "location": {
        "id": "TG9jYXRpb246MTgwMDI4OQ==",
        "databaseId": 1800289,
        "name": "Jenny Home",
        "street": "19 east, 5th B cross road, Trinity Enclave Main Rd, Banjara Layout",
        "city": "Bengaluru",
        "stateIso": "KA",
        "countryIso": "IN",
        "postalCode": "560043",
        "phone": "8073326999",
        "website": "https://jennyhome.example.com",
        "storeId": null,
        "status": "APPROVED",
        "placeActionLinks": [
          { "placeActionType": "FOOD_ORDERING", "uri": "https://order.example.com", "isPreferred": true, "name": null, "submissionStatus": null }
        ],
        "discoveredPlaceActionLinks": []
      }
    }
  }
}
401Unauthenticated — missing or invalid API key.

Updates a single location. Only the fields present in input are modified; everything you omit keeps its current value. id is the only required field.

Use case — correct a phone number and website. Send just id, phone, and website to fix contact details without touching address or hours. The response echoes the updated location so you can confirm the new values landed.

Use case — publish a full weekly schedule. Send the seven-day businessHours array (as in the sample request) to set open intervals per day. Mark closed days with { "day": "SUNDAY", "closed": true } and leave slots off.

Business hours rules.

  • Provide all seven days; a partial week is rejected.
  • Times use openTime/closeTime inside each slots entry; intervals within a day must not overlap.
  • Use moreHours for secondary schedules (delivery, drive-through) keyed by a type string.

Gotchas.

  • The identifier field is id (the Base64 Relay ID returned by every read endpoint).
  • On validation failure the call still returns HTTP 200 with success: false and a populated errors array — always check success, not just the status code.

placeActionLinks manages a location's Google action buttons (ordering, delivery, takeout, reservation, appointment). The write model is append/upsert, not replace:

  • action: "add" (the default) — adds a new link, or updates a saved link's uri/isPreferred in place.
  • action: "delete" — removes a saved link and queues its removal from Google.
  • Links you don't reference in the request are left unchanged — omitting a link never removes it.

How a link is matched (for edit/delete): by name if present, otherwise by placeActionType + uri. Include name (from a read endpoint) when you have it, for the most accurate match; a link that hasn't synced to Google yet has no name and is matched by placeActionType + uri.

Valid placeActionType values: APPOINTMENT, ONLINE_APPOINTMENT, DINING_RESERVATION, FOOD_ORDERING, FOOD_DELIVERY, FOOD_TAKEOUT, SHOP_ONLINE. At most one preferred link per type.

Changing a link's URL = remove the old + add the new in the same request:

{
  "input": {
    "id": "TG9jYXRpb246MTgwMDI4OQ==",
    "placeActionLinks": [
      { "placeActionType": "FOOD_ORDERING", "uri": "https://order.example.com",     "name": "<link-name-if-synced>", "action": "delete" },
      { "placeActionType": "FOOD_ORDERING", "uri": "https://new-order.example.com", "isPreferred": true, "action": "add" }
    ]
  }
}

Right after a write, a link's name and submissionStatus are null; they populate once the link syncs to Google. See the Place Action Links guide for the full flow, including how links discovered directly on Google surface under discoveredPlaceActionLinks.

curl -X POST 'https://listingsapi.com/api/v4/locations/update' \
  -H "Authorization: API $LISTINGSAPI_KEY" \
  -H 'Content-Type: application/json' \
  -d '{
    "input.id": "<input.id>",
    "input.name": "<input.name>",
    "input.street": "<input.street>",
    "input.city": "<input.city>",
    "input.stateIso": "<input.stateIso>",
    "input.postalCode": "<input.postalCode>",
    "input.countryIso": "<input.countryIso>",
    "input.phone": "<input.phone>",
    "input.website": "<input.website>",
    "input.businessHours": "<input.businessHours>",
    "input.businessHours[].day": "<input.businessHours[].day>",
    "input.businessHours[].slots": "<input.businessHours[].slots>",
    "input.businessHours[].closed": "<input.businessHours[].closed>",
    "input.moreHours": "<input.moreHours>",
    "input.serviceArea": "<input.serviceArea>",
    "input.customAttributes": "<input.customAttributes>",
    "input.placeActionLinks": "<input.placeActionLinks>"
  }'