---
title: "Deletes a photo from a job."
method: DELETE
path: "/api/v1/jobs/{id}/photos/{photoId}"
tags: ["Jobs"]
---

# Deletes a photo from a job.

`DELETE /api/v1/jobs/{id}/photos/{photoId}`

## Request

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

Removes a `Photo` entry from the job's timeline and deletes its image. `photoId` is the
`id` from `GET /jobs/{id}/photos`, the `id` of a `Photo` entry in the job's
`updates`, or the `id` returned by `POST /jobs/{id}/photos`. Only photos can be
deleted: signatures, notes and status changes are part of the job's record and answer 404. The
removal syncs to every device running a current Flex version (older installs keep the entry
until they update), and an internal note "Photo removed: …" attributed to
the key's creator is added to the timeline. Needs `ManageJobs`. Not idempotent-keyed: deleting
the same photo again answers 404. Example:
`curl -X DELETE https://app.flexonthejob.com/api/v1/jobs/42/photos/77 -H "Authorization: Bearer flx_live_…"`.

## Path parameters

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

## Response `204`

Deleted.

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: No such photo on this job in this organization (including signatures and other non-photo entries, and a photo already deleted).
- `409`: The key's creator is unknown on this server or deactivated.
- `429`: Too Many Requests

---

[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)
