---
title: "Add profile media"
method: POST
path: "/api/profiles/{profile_id}/google_business/create_media"
tags: ["Google Business"]
---

# Add profile media

`POST /api/profiles/{profile_id}/google_business/create_media`

## Request

- Base URL: `https://api.postproxy.dev`
- URL: `https://api.postproxy.dev/api/profiles/{profile_id}/google_business/create_media`
- Auth: HTTP bearer

Adds a photo or video to the Business Profile. Google downloads the file from media_url itself, so it must be publicly reachable — a signed URL that expires quickly, or a localhost address, will fail. category: CATEGORY_UNSPECIFIED, COVER, PROFILE, LOGO, EXTERIOR, INTERIOR, PRODUCT, AT_WORK, FOOD_AND_DRINK, MENU, COMMON_AREA, ROOMS, TEAMS, ADDITIONAL (default).

## Path parameters

- `profile_id` string, required

## Query parameters

- `profile_group_id` string

## Headers

- `Idempotency-Key` string

## Request body

- object
  - `location_id` string, required: Placement ID — the location's full Google resource path
  - `media_url` string, required: Public https URL — Google fetches the file itself
  - `category` string: Default ADDITIONAL
  - `media_format` 'PHOTO' | 'VIDEO': Default PHOTO
  - `description` string: Max 2000 characters

## Response `200`

The created media item

- object: Google's own resource shape, camelCased keys, passed through unchanged

## Other responses

- `400`: Missing required parameters.
- `401`: Invalid, missing, or insufficient API key permissions.
- `403`: Google refused the operation for this account
- `404`: Resource does not exist or is not accessible.
- `422`: Validation failed.
- `429`: Posting rate limit reached.

---

[API](https://skmtc.dev/postproxy/apis/postproxy-social-media-api.md) - [All operations](https://skmtc.dev/postproxy/apis/postproxy-social-media-api/llms.txt) - [OpenAPI document](https://skmtc.dev/postproxy/apis/postproxy-social-media-api/revisions/d54482ac4ce7?raw)
