Create Google Business Profile location
Changed onCreates a Google Business Profile listing under the Google account of this Zernio account and attaches it to this account, so verification, details, posts and reviews work on it right away.
Only for an account with no location yet (connected with allowNoLocation). If the account already has a location, the request is rejected with 409 and nothing is created.
Search first with POST /v1/accounts/{accountId}/gmb-locations/search to avoid duplicating an existing listing, and pick primaryCategory from GET /v1/accounts/{accountId}/gmb-categories.
Required by Google: title, languageCode (immutable once set) and primaryCategory. At least one of storefrontAddress or serviceArea is required. When storefrontAddress is absent, at least one of phone or websiteUri is required. Both rules are checked before Google is called and a violation returns 400 naming the field.
Set validateOnly to check the request with Google without creating anything: the response carries the would-be location and nothing is attached.
A new listing is not on Google Maps until it is verified. voiceOfMerchantState.hasVoiceOfMerchant is false after creation; start verification with the gmb-verifications endpoints. voiceOfMerchantState is null if Google could not return it, and the listing was still created.
If Google creates the listing but it cannot be attached, the error message names the created locations/<id>; attach it with PUT /v1/accounts/{accountId}/gmb-locations.
Request
- Base URLhttps://zernio.com/api
- AuthHTTP bearer
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Path parameters
Headers
Optional client-generated unique key (e.g. a UUID) that makes retries safe.
- Same key + same body: replays the original response.
- Same key + different body: 422.
- Key still processing: 409.
A request cut off mid-handler (e.g. by a function timeout) can leave its key in progress, answering 409 until the key expires after 24 hours.
On the Ads create, boost and duplicate endpoints, a same-body retry runs again once the cut-off request started more than 15 minutes ago.
Request body
Response
Listing created and attached (or validated, when validateOnly is true)
Changes
- info
endpoint added
- info