Skip to content
TheShopMarketing Guys

Photos and video

Get photos from your phone into your library and onto the right page.

Overview

To add a photo, ask your assistant for an upload link and send the photo from your phone, or give it a link to a photo that's already online. It can't take a photo you attach in the chat. If you try, it sends you an upload link instead.

Real photos of your team and your work do more for trust than any stock image. The upload link works on your phone or your computer. The photos go straight into your library, the same one our team uses.

Then tell it where the photo goes, like the main picture on your homepage or a service page. It shows you what was there before and what's there now. If you take a photo down, the page goes back to its default picture. The photo stays in your library in case you want it again.

A photo spot takes a photo and a video spot takes a video, so a page never ends up with the wrong kind of file. If you're not sure which photo is which, ask it to find the one you mean.

Changes here need an active account. If your account is on hold or cancelled, editing pauses until it's back.

You can also do this in your workspace. Look in Home or Site, with the Photos button (/workspace).

The tools on this page

Photos and video: what each tool reads, writes, and asks
ToolReadsWritesAsks you first
Add a photo from your phoneNoYesYes
Add a photo from a linkNoYesYes
See your photosYesNoNo
Put a photo on a pageNoYesYes
Take a photo off a pageNoYesYes

Add a photo from your phone

create_media_upload_urlChanges your site or sends something

What you can ask

  • Add a photo of the new truck.
  • I want to add some shop photos.
  • Send me a link to upload pictures.

What it does

The way to add a photo from a phone or computer: a link that sends photos straight into your library.

Your assistant asks you to confirm this first.

What it won't do

The link works for 30 minutes and only puts photos in your own library.

What your assistant sends

FieldRequiredDescription
file_namestringYesIncluding the extension, e.g. van.jpg.
content_typestringNoMIME type, e.g. image/jpeg. Images and video only.
owner_requeststringNoWhat the owner asked for, in their words, one sentence. Optional. Stored with the audit record so their team can see what owners ask for.
Example: what your assistant sends
{
  "file_name": "new-sign.jpg",
  "content_type": "image/jpeg"
}
Example: what comes back
{
  "upload_page_url": "https://www.theservicemarketingguys.com/upload/abc",
  "expires_in_minutes": 30,
  "max_files": 20,
  "instructions": "Open it on your phone."
}

Add a photo from a link

add_mediaChanges your site or sends something

What you can ask

  • Add this photo: <link>
  • Grab the team photo from our Facebook page.

What it does

Add a photo from a public link. For a photo on your phone, use the upload link tool.

Your assistant asks you to confirm this first.

What it needs

  • A public link to the photo.

What it won't do

It takes JPEG, PNG, WebP, or GIF photos up to 10 MB from a public link. A link that needs a login won't work. Send those from your phone instead.

What your assistant sends

FieldRequiredDescription
urlstringYesPublic https URL of an image to copy into the library.
file_namestringNoDefaults to the name in the URL.
descriptionstringNo
alt_textstringNo
owner_requeststringNoWhat the owner asked for, in their words, one sentence. Optional. Stored with the audit record so their team can see what owners ask for.
Example: what your assistant sends
{
  "url": "https://images.example/new-sign.jpg",
  "alt_text": "Our new sign out front"
}
Example: what comes back
{
  "media": {
    "id": "0b8e2c1a-5f7d-4e3b-9a61-3c2d4e5f6a7b",
    "file_name": "new-sign.jpg",
    "url": "https://cdn.example/new-sign.jpg"
  }
}

See your photos

list_mediaReads only

What you can ask

  • Show me the photos in my library.
  • Find the picture of our new sign.

What it does

Your photos and videos. Search by type or by words.

What your assistant sends

FieldRequiredDescription
searchstringNoMatches file name, description, and alt text.
file_typeone of: image, videoNo
limitintegerNoDefault 20.
Example: what your assistant sends
{
  "file_type": "image"
}
Example: what comes back
{
  "media": [
    {
      "id": "0b8e2c1a-5f7d-4e3b-9a61-3c2d4e5f6a7b",
      "file_name": "team-photo.jpg",
      "url": "https://cdn.example/team-photo.jpg",
      "email_src": "media://0b8e2c1a-5f7d-4e3b-9a61-3c2d4e5f6a7b",
      "email_url": "https://esg.example/images/client/team-photo.jpg",
      "type": "image",
      "mime_type": "image/jpeg",
      "size_bytes": 412880,
      "dimensions": "1600x1200",
      "alt_text": "The whole crew out front",
      "description": null,
      "created_at": "2026-09-12T14:03:11.000Z"
    }
  ],
  "awaiting_upload": []
}

Put a photo on a page

attach_mediaChanges your site or sends something

What you can ask

  • Use the new team photo as the main picture on my homepage.
  • Put this job photo on the brake repair page.

What it does

Put a photo or video from your library on your site, in place of what's there.

Your assistant asks you to confirm this first.

What it needs

  • Where on your site it goes.
  • The photo or video, from your library.

What it won't do

A photo slot takes a photo and a video slot takes a video. It won't put one in the other's place.

What your assistant sends

FieldRequiredDescription
roleenumYesThe slot. Every slot takes a photo except location.video and location.hero, which take an MP4.
mediaIdstringYesAn id from list_media.
targetobjectNoservice.card: { type: "service", serviceSlug }. location.*: { type: "location", areaSlug }. Omit for site-wide slots.
confirmobjectYesRequired. One line stating the change, in the owner's words.
owner_requeststringNoWhat the owner asked for, in their words, one sentence. Optional. Stored with the audit record so their team can see what owners ask for.
Example: what your assistant sends
{
  "role": "hero.main",
  "mediaId": "0b8e2c1a-5f7d-4e3b-9a61-3c2d4e5f6a7b",
  "confirm": {
    "intent": "Use the new team photo on the home page"
  }
}
Example: what comes back
{
  "recorded": true,
  "applied": true,
  "placementId": "7d1e9f20-3b4c-4d5e-8f6a-1b2c3d4e5f60",
  "slot": "Homepage hero",
  "url": "https://cdn.example/team-photo.jpg",
  "previous": null,
  "reversible": "Assigning a different file to the same slot deactivates this row rather than deleting it, so the previous one can be put back."
}

Take a photo off a page

detach_mediaChanges your site or sends something

What you can ask

  • Take that photo off the about page.
  • Go back to the default picture on the homepage.

What it does

Take a photo or video off your site. The page shows its default again, and the file stays in your library.

Your assistant asks you to confirm this first.

What it needs

  • Which spot on your site to clear.

What it won't do

The photo stays in your library, so you can put it back any time.

What your assistant sends

FieldRequiredDescription
roleenumYesThe slot to empty.
targetobjectNoservice.card: { type: "service", serviceSlug }. location.*: { type: "location", areaSlug }. Omit for site-wide slots.
confirmobjectYesRequired. One line stating the change, in the owner's words.
owner_requeststringNoWhat the owner asked for, in their words, one sentence. Optional. Stored with the audit record so their team can see what owners ask for.
Example: what your assistant sends
{
  "role": "hero.main",
  "confirm": {
    "intent": "Take the old photo off the home page"
  }
}
Example: what comes back
{
  "removed": true,
  "applied": true,
  "slot": "Homepage hero",
  "previous": null,
  "reversible": "The file stays in the library; attach_media with its id puts it back."
}
Add your own photos through your assistant | The Shop Marketing Guys