---
title: "Upload photo"
method: POST
path: "/v1/accounts/{accountId}/gmb-media"
tags: ["GMB Media"]
---

# Upload photo

`POST /v1/accounts/{accountId}/gmb-media`

Creates a media item (photo) for a location from a publicly accessible URL.

Categories determine where the photo appears: CATEGORY_UNSPECIFIED, COVER, PROFILE, LOGO, EXTERIOR, INTERIOR, PRODUCT, FOOD_AND_DRINK, MENU, COMMON_AREA, ROOMS, TEAMS, AT_WORK, ADDITIONAL.

## Path parameters

- `accountId` string, required

## Query parameters

- `locationId` string

## Request body

- object
  - `sourceUrl` string, uri, required — Publicly accessible image URL
  - `mediaFormat` 'PHOTO' | 'VIDEO'
  - `description` string — Photo description
  - `category` 'CATEGORY_UNSPECIFIED' | 'COVER' | 'PROFILE' | 'LOGO' | 'EXTERIOR' | 'INTERIOR' | 'PRODUCT' | 'FOOD_AND_DRINK' | 'MENU' | 'COMMON_AREA' | 'ROOMS' | 'TEAMS' | 'AT_WORK' | 'ADDITIONAL' — Where the photo appears on the listing

## Response `200`

Media created successfully

- object
  - `success` boolean
  - `name` string
  - `mediaFormat` string
  - `googleUrl` string

## Other responses

- `400` — Invalid request or unsupported media format
- `401` — Unauthorized

## Changes

- **2026-09-25** `2c04683ce694` — 8 info
  - added the optional property `details/adAccountId` to the response with the `400` status
  - added the optional property `details/adAccountId` to the response with the `401` status
  - added the optional property `details/createdObjects` to the response with the `400` status
  - added the optional property `details/createdObjects` to the response with the `401` status
  - …4 more
- **2026-09-16** `3e6ddf2a99ea` — 2 info
  - added the optional property `details/budgetScope` to the response with the `400` status
  - added the optional property `details/budgetScope` to the response with the `401` status
- **2026-09-15** `0dba7d004d75` — 4 info
  - added the optional property `details/quotaExhausted` to the response with the `400` status
  - added the optional property `details/quotaExhausted` to the response with the `401` status
  - added the optional property `details/quotaScope` to the response with the `400` status
  - added the optional property `details/quotaScope` to the response with the `401` status

[Change history](https://skmtc.dev/zernio/apis/zernio-api/changes/v1/accounts/:accountId/gmb-media/post.md)

---

[API](https://skmtc.dev/zernio/apis/zernio-api.md) · [All operations](https://skmtc.dev/zernio/apis/zernio-api/llms.txt) · [OpenAPI document](https://skmtc.dev/zernio/apis/zernio-api/revisions/b2325332041a?raw)
