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
| Tool | Reads | Writes | Asks you first |
|---|---|---|---|
| Add a photo from your phone | No | Yes | Yes |
| Add a photo from a link | No | Yes | Yes |
| See your photos | Yes | No | No |
| Put a photo on a page | No | Yes | Yes |
| Take a photo off a page | No | Yes | Yes |
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
| Field | Required | Description |
|---|---|---|
file_namestring | Yes | Including the extension, e.g. van.jpg. |
content_typestring | No | MIME type, e.g. image/jpeg. Images and video only. |
owner_requeststring | No | What the owner asked for, in their words, one sentence. Optional. Stored with the audit record so their team can see what owners ask for. |
{
"file_name": "new-sign.jpg",
"content_type": "image/jpeg"
}{
"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
| Field | Required | Description |
|---|---|---|
urlstring | Yes | Public https URL of an image to copy into the library. |
file_namestring | No | Defaults to the name in the URL. |
descriptionstring | No | |
alt_textstring | No | |
owner_requeststring | No | What the owner asked for, in their words, one sentence. Optional. Stored with the audit record so their team can see what owners ask for. |
{
"url": "https://images.example/new-sign.jpg",
"alt_text": "Our new sign out front"
}{
"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
| Field | Required | Description |
|---|---|---|
searchstring | No | Matches file name, description, and alt text. |
file_typeone of: image, video | No | |
limitinteger | No | Default 20. |
{
"file_type": "image"
}{
"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
| Field | Required | Description |
|---|---|---|
roleenum | Yes | The slot. Every slot takes a photo except location.video and location.hero, which take an MP4. |
mediaIdstring | Yes | An id from list_media. |
targetobject | No | service.card: { type: "service", serviceSlug }. location.*: { type: "location", areaSlug }. Omit for site-wide slots. |
confirmobject | Yes | Required. One line stating the change, in the owner's words. |
owner_requeststring | No | What the owner asked for, in their words, one sentence. Optional. Stored with the audit record so their team can see what owners ask for. |
{
"role": "hero.main",
"mediaId": "0b8e2c1a-5f7d-4e3b-9a61-3c2d4e5f6a7b",
"confirm": {
"intent": "Use the new team photo on the home page"
}
}{
"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
| Field | Required | Description |
|---|---|---|
roleenum | Yes | The slot to empty. |
targetobject | No | service.card: { type: "service", serviceSlug }. location.*: { type: "location", areaSlug }. Omit for site-wide slots. |
confirmobject | Yes | Required. One line stating the change, in the owner's words. |
owner_requeststring | No | What the owner asked for, in their words, one sentence. Optional. Stored with the audit record so their team can see what owners ask for. |
{
"role": "hero.main",
"confirm": {
"intent": "Take the old photo off the home page"
}
}{
"removed": true,
"applied": true,
"slot": "Homepage hero",
"previous": null,
"reversible": "The file stays in the library; attach_media with its id puts it back."
}