GET /entity/<type>/<id>/<field>/_upload
get_entity_type_id_field_upload
Step one of three. filename is a required query parameter and its absence is 400 filename is missing; the reply holds links.upload and a links.complete_upload already prefixed with /api/v1.
API
Params
| part | value |
|---|---|
<field> |
the media field, image, sg_uploaded_movie |
filename |
required query parameter. Its extension decides the upload type |
Sample requests
r = c.get("/entity/shots/7652/image/_upload", params={"filename": "probe041.png"})
info, links = r.json()["data"], r.json()["links"]
{
"data": {
"timestamp": "2026-09-04T03:53:31Z",
"upload_type": "Thumbnail",
"upload_id": null,
"storage_service": "s3",
"original_filename": "probe041.png",
"multipart_upload": false
},
"links": {
"upload": "<media-url>",
"complete_upload": "/api/v1/entity/shots/7652/image/_upload"
}
}
Without filename:
{"errors": [{"status": 400, "code": 103, "title": "Request Parameters invalid.",
"source": {"filename": ["filename is missing"]}}]}
Response codes
| status | when |
|---|---|
| 200 | links minted |
| 400 | source: {"filename": ["filename is missing"]} |
| 404 | Field 'Shot.attachments' does not exist. when the type has no such field |
Edge cases
links.complete_uploadis the same path as this call, differing only by method, and it comes back with/api/v1already on it. A client that prefixes it again gets 404 withsource: null, which reads as "this is not a valid upload target" rather than "your URL is wrong".upload_typeis derived from the field and the filename:Thumbnailforimage,Attachmentfor the fieldless form. Nothing in the request names it.datais theupload_infothat step three needs. Keep the whole object rather than picking keys out of it.