---
title: "Update location details"
method: PUT
path: "/v1/messaging/accounts/{accountId}/gmb-location-details"
tags: ["GMB Location Details"]
---

# Update location details

`PUT /v1/messaging/accounts/{accountId}/gmb-location-details`

## Request

- Base URL: `https://apihub.co.il`
- URL: `https://apihub.co.il/v1/messaging/accounts/{accountId}/gmb-location-details`
- Auth: HTTP bearer

Updates Google Business Profile location details. The updateMask field is required and specifies which fields to update.
This endpoint proxies Google's Business Information API locations.patch, so any valid updateMask field is supported.
Common fields: regularHours, specialHours, profile.description, websiteUri, phoneNumbers, categories, serviceItems.


**Billing:** Request; paid actions are priced in credits (see GET /v1/messaging/prices) · **Rate limit:** 60/min

## Path parameters

- `accountId` string, required: The Zernio account ID (from /v1/accounts)

## Query parameters

- `locationId` string: Override which location to target. If omitted, uses the account's selected location. Use GET /gmb-locations to list valid IDs.

## Headers

- `Idempotency-Key` string
- `X-Tag` string

## Request body

- object
  - `title` string: Business name. Use updateMask='title'.
  - `labels` string[]: Free-form, internal-only labels for grouping (1-255 characters each). Use updateMask='labels'.
  - `latlng` object: Precise coordinates. Use updateMask='latlng'. Google restricts latlng writes to approved clients, so this update may be silently ignored or rejected.
    - `latitude` number
    - `longitude` number
  - `profile` object
    - `description` string
  - `openInfo` object: Open/closed status of the location. Use updateMask='openInfo'.
    - `status` 'OPEN' | 'CLOSED_PERMANENTLY' | 'CLOSED_TEMPORARILY'
    - `openingDate` object
      - `day` integer
      - `year` integer
      - `month` integer
  - `moreHours` object[]: Additional hours for specific services (delivery, drive-through, etc.). Use updateMask='moreHours'.
    - `periods` object[]
      - `openDay` string
      - `closeDay` string
      - `openTime` string
      - `closeTime` string
    - `hoursTypeId` string: Hours type from Google's catalog (e.g. 'DELIVERY', 'DRIVE_THROUGH')
  - `storeCode` string: External store identifier, unique within the account. Use updateMask='storeCode'.
  - `categories` object: Primary and additional business categories. Use updateMask='categories' to update.
    - `primaryCategory` object
      - `name` string: Category resource name (e.g. 'categories/gcid:laundromat'). Use Google's Categories API to look up valid IDs.
    - `additionalCategories` object[]
      - `name` string: Category resource name (e.g. 'categories/gcid:dry_cleaner')
  - `updateMask` string, required: Required. Comma-separated fields to update (e.g. 'regularHours', 'specialHours', 'profile.description', 'categories', 'serviceItems'). Any valid Google Business Information API updateMask field is supported.
  - `websiteUri` string
  - `serviceArea` object: Areas the business serves. Use updateMask='serviceArea'. Full replacement: send every place you want to keep.
    - `places` object
      - `placeInfos` object[]
        - `placeId` string: Google Place ID for the area
        - `placeName` string: Localized area name (e.g. 'Sao Paulo, SP, Brasil')
    - `regionCode` string: Immutable. CLDR region code of the country the business is based in (e.g. 'BR')
    - `businessType` 'CUSTOMER_LOCATION_ONLY' | 'CUSTOMER_AND_BUSINESS_LOCATION'
  - `phoneNumbers` object
    - `primaryPhone` string
    - `additionalPhones` string[]
  - `regularHours` object
    - `periods` object[]
      - `openDay` string
      - `closeDay` string
      - `openTime` string
      - `closeTime` string
  - `serviceItems` object[]: Services offered by the business. Use updateMask='serviceItems' to update.
    - `price` object: Optional price for the service
      - `nanos` integer: Nano units (10^-9) of the amount
      - `units` string: Whole units of the amount
      - `currencyCode` string: ISO 4217 currency code (e.g. 'USD')
    - `freeFormServiceItem` object: A custom service not in Google's catalog
      - `label` object
        - `displayName` string: Service name as displayed to users
        - `languageCode` string: Language code (e.g. 'en')
      - `category` string: Category resource name this service belongs to (e.g. 'categories/gcid:laundromat')
    - `structuredServiceItem` object: A predefined service from Google's service type catalog
      - `description` string: Optional description of the service
      - `serviceTypeId` string: Service type ID from Google's catalog (e.g. 'job_type_id:plumbing_drain_repair')
  - `specialHours` object
    - `specialHourPeriods` object[]
      - `closed` boolean
      - `endDate` object
        - `day` integer
        - `year` integer
        - `month` integer
      - `openTime` string
      - `closeTime` string
      - `startDate` object
        - `day` integer
        - `year` integer
        - `month` integer
  - `storefrontAddress` object: Postal address of the storefront. Use updateMask='storefrontAddress'. Omit for service-area-only businesses.
    - `locality` string: City
    - `postalCode` string
    - `regionCode` string: ISO 3166-1 alpha-2 country code (e.g. 'BR')
    - `addressLines` string[]
    - `languageCode` string
    - `administrativeArea` string: State or province
  - `adWordsLocationExtensions` object: Alternate phone shown in Google Ads location extensions. Use updateMask='adWordsLocationExtensions'.
    - `adPhone` string

## Response `200`

Completed

- object
  - `id` string: Execution id — stable across internal retries; use it with GET /v1/executions/{id}
  - `status` 'pending' | 'processing' | 'completed' | 'partial' | 'failed' | 'cancelled' | 'timeout'
  - `operation` string
  - `tag` string, nullable: Your X-Tag, if sent
  - `created_at` string, date-time
  - `completed_at` string, date-time, nullable
  - `output` object: Operation result (see each operation). While a Studio render is processing: `stage` (queued · transcribing · downloading · preparing · cleaning_voice · mixing_audio · rendering · finishing), `phase` (the engine's: download · prepare · voice · audio · encode · qa · upload, or null), `progress` (a percent, 0–100) and `progress_fraction` (0–1), `eta_seconds` (seconds left, never below 0) and `estimate_seconds`
    - `success` boolean
    - `accountId` string
    - `locationId` string
  - `error` string, nullable
  - `usage` object
    - `credits_charged` number, nullable
    - `credits_reserved` number
    - `estimated_credits` number
    - `cost_source` 'provider_reported' | 'calculated' | 'estimated' | 'null', nullable
    - `provider_usage` object, nullable: Normalised consumption, e.g. { VIDEO_SECOND: 22.4 }
  - `balance` object
    - `available` number
    - `reserved` number

## Other responses

- `400`: Invalid input
- `402`: Insufficient credits / project budget
- `404`: Resource not found (or not yours)
- `429`: Rate limited
- `503`: Service temporarily paused

---

[API](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai.md) · [All operations](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/llms.txt) · [OpenAPI document](https://skmtc.dev/apihub/apis/apihub-one-api-for-chat-image-video-ai/revisions/a8caa42835ce?raw)
