---
title: "Downloads a job photo's image."
method: GET
path: "/api/v1/jobs/{id}/photos/{photoId}/content"
tags: ["Jobs"]
---

# Downloads a job photo's image.

`GET /api/v1/jobs/{id}/photos/{photoId}/content`

## Request

- Base URL: `https://app.flexonthejob.com`
- URL: `https://app.flexonthejob.com/api/v1/jobs/{id}/photos/{photoId}/content`
- Auth: HTTP bearer

Streams the image bytes with `Content-Type``image/jpeg` or `image/png` (up to 10 MB).
`photoId` is the `id` from `GET /jobs/{id}/photos` (or of a `Photo` entry in the
job's `updates`). A photo taken on a phone becomes downloadable once that phone has synced
its upload; until then this answers 503. Needs `ViewJobs`. Example:
`curl https://app.flexonthejob.com/api/v1/jobs/42/photos/77/content -H "Authorization: Bearer flx_live_…" -o roof.jpg`.

## Path parameters

- `id` integer, required
- `photoId` integer, required

## Response `200`

The image bytes.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: No such photo on this job in this organization.
- `429`: Too Many Requests
- `503`: The image has not reached the server yet (a phone that has not synced) or storage is unreachable; retry later.

---

[API](https://skmtc.dev/flexonthejob/apis/flex-api.md) · [All operations](https://skmtc.dev/flexonthejob/apis/flex-api/llms.txt) · [OpenAPI document](https://skmtc.dev/flexonthejob/apis/flex-api/revisions/19c8f4d27acf?raw)
