GuideGuides/Recipes/Upload business photos
How do I upload business photos through the API?

Upload Business Photos via API

Add photos to a location by category with the Synup API, from a public URL or base64, and avoid uploading the same image twice on a schedule.

At a glance

What this guide accomplishes
Add images to one photo category on a location, sourced from a URL or raw bytes.
APIs used
Reference
LocationsMedia
Prerequisites
  • An API key with write access
  • The locationId, and public HTTPS image URLs or base64 bytes
Typical use cases
  • Pushing a business's photo library into its listings
  • Updating a cover or logo image
  • Syncing new photos as a customer adds them

Photos go up one category at a time. POST /api/v1/locations/{id}/media takes a category and a list of images, each a public HTTPS url that Synup fetches and re-hosts, or base64 bytes. Categories include COVER, PROFILE, LOGO, EXTERIOR, INTERIOR, PRODUCT, FOOD_AND_DRINK, MENU, AT_WORK, TEAMS, ROOMS, COMMON_AREA and ADDITIONAL.

curl -X POST https://ai.synup.com/api/v1/locations/LOCATION_ID/media \
  -H "Authorization: Bearer $SYNUP_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "category": "INTERIOR",
    "images": [
      { "url": "https://cdn.grovestreetdental.example/downtown/lobby.jpg", "label": "Lobby" },
      { "url": "https://cdn.grovestreetdental.example/downtown/room-2.jpg", "label": "Treatment room" }
    ]
  }'

Two rules decide what happens to what is already there. LOGO holds exactly one image and the upload overwrites the old one. Every other category appends. That difference matters the moment this runs on a schedule: an append category will happily store the same photo again on the next run.

Photos are the part of a listing that a business updates most often after launch, so it is usually worth a small sync loop rather than a one-time import. The managing listings guide puts photos in that wider update flow.