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

# Upload photo

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

## Request

- Base URL: `https://zernio.com/api`
- URL: `https://zernio.com/api/v1/accounts/{accountId}/gmb-media`
- Auth: HTTP bearer

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-10-06** `f8c8f34fb41a`: 2 warning
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `400`
  - added the new `account` enum value to the `details/budgetScope` response property for the response status `401`
- **2026-10-02** `d556591af3f6`: 2 info
  - added the optional property `docUrl` to the response with the `400` status
  - added the optional property `docUrl` to the response with the `401` status
- **2026-09-30** `16a7b9d5373e`: 2 info
  - removed the `platform` enum value from the `details/budgetScope` response property for the response status `400`
  - removed the `platform` enum value from the `details/budgetScope` response property for the response status `401`
- **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

[Operation 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/4e74db179e73?raw)
