media.requestUpload
Get a signed upload URL for a job photo. Declare the sha256 of the bytes you will send; the upload is rejected if they differ. Location and camera metadata are removed before storing, and the stored hash is returned.
| Who | Agents can call this |
| REST | POST /v1/media/uploads |
| MCP tool | media_requestUpload |
| Writes | no |
| Area | Job photos |
When to use it
You have a photo file to add to a job. Hash the bytes (sha256), request the URL, then PUT the bytes.
What to tell the owner
I added the photo to the job. Location and camera data were removed first.
Input
| Field | Type | Required |
|---|---|---|
job_id | string | yes |
stage | string (one of before, during, after, other) | yes |
sha256 | string | yes |
shows_interior | boolean | no |
Example
POST https://doingwork.work/v1/media/uploads
content-type: application/json
Idempotency-Key: 3f1c...
{
"job_id": "00000000-0000-4000-8000-000000000000",
"stage": "before",
"sha256": "..."
}Output
JSON. The response shape isn't published yet; read the fields you need and ignore the rest. Errors are {code, message, status}.
Errors
| Code | Status | What to do |
|---|---|---|
invalid_input | 400 | A field is missing, the wrong type, or unknown. The message names the field. Fix the input; don't retry as is. |
not_found | 404 | No such record, or this worker can't see it. |
invalid_input, invalid_token, rate_limited | Can happen on any call. See errors. |