Private preview of the new site. Not live.

media.setSummary

Write or correct what a photo or video shows. Use it to fix a summary, to fill in one marked needs_summary (older photos and browser captures have none), or after a person edits the words. Each change keeps the earlier wording. Workers on the shop can edit; the summary is never shown to customers.

WhoAgents can call this
RESTPOST /v1/media/summary
MCP toolmedia_setSummary
Writesyes, send an Idempotency-Key
AreaShop

When to use it

Look at the photo or video first and write its summary, then upload it with media.requestUpload (summary is required) and PUT the bytes to the upload_url. If you cannot see the media, send summary.unable_reason and it is marked needs_summary; media.needsSummary lists those and older photos with no summary, and media.setSummary fills or edits one.

What to tell the owner

Say what you did in plain words and what happens next.

Input

FieldTypeRequired
media_idstringyes
summaryobjectyes
summary.summarystringno
summary.notablearrayno
summary.notable[].kindstring (one of damage, leak, safety, code_issue, wear, pest, mold, access, other)yes
summary.notable[].textstringyes
summary.readable_textarrayno
summary.readable_text[].whatstringyes
summary.readable_text[].textstringyes
summary.measurementsarrayno
summary.measurements[].whatstringyes
summary.measurements[].valuenumberyes
summary.measurements[].unitstringyes
summary.measurements[].howstring (one of read, estimated)yes
summary.transcriptstringno
summary.key_momentsarrayno
summary.key_moments[].at_secondsnumberyes
summary.key_moments[].textstringyes
summary.duration_secondsnumberno
summary.languagestringno
summary.generated_bystringno
summary.unable_to_analyzeobjectno
summary.unable_to_analyze.reasonstring (one of no_vision, no_video, file_unreadable, too_large, not_allowed, other)yes
summary.unable_to_analyze.detailstringno
edited_by_personbooleanno

Example

POST https://doingwork.work/v1/media/summary
content-type: application/json
Idempotency-Key: 3f1c...

{
  "media_id": "00000000-0000-4000-8000-000000000000",
  "summary": {
    "summary": "...",
    "notable": [
      {
        "kind": "damage",
        "text": "..."
      }
    ],
    "readable_text": [
      {
        "what": "...",
        "text": "..."
      }
    ],
    "measurements": [
      {
        "what": "...",
        "value": "...",
        "unit": "...",
        "how": "read"
      }
    ],
    "transcript": "...",
    "key_moments": [
      {
        "at_seconds": "...",
        "text": "..."
      }
    ],
    "duration_seconds": "...",
    "language": "...",
    "generated_by": "...",
    "unable_to_analyze": {
      "reason": "no_vision"
    }
  }
}

Output

JSON. The response shape isn't published yet; read the fields you need and ignore the rest. Errors are {code, message, status}.

Errors

CodeStatusWhat to do
invalid_input, invalid_token, rate_limitedCan happen on any call. See errors.