# DELETE /v1/quotes/{quoteId}/attachments/{attachmentId}

**Service:** Quotes  
**Operation:** `QuoteService_DeleteAttachment`

Removes the file from the quote's conversation and from attachment lists. The removal is reversible by a Factory app administrator. Only the person who posted the file or an administrator can remove it; for an API key, the acting user is the person the key belongs to, so a key can always remove files it uploaded. Documents generated by the Factory app (`isGenerated`) cannot be removed.

## Parameters

| Parameter | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `quoteId` | path | string | yes | The id of the quote the attachment belongs to. Required. |
| `attachmentId` | path | string | yes | The id of the attachment to remove. Required. |

## Responses

| Status | Schema | Description |
| --- | --- | --- |
| 200 | `quotesDeleteAttachmentResponse` | A successful response. |
| 400 | `Error` | The request was rejected because it failed validation, or the attachment is a document generated by the Factory app, which cannot be removed (failed_precondition). The body is a validation-failure envelope: an overall type and message and one entry per field-level problem (each with a stable code, a message, and a param pointing at the offending field). |
| 401 | `Error` | The request is missing a valid bearer token, or the token is invalid or expired. |
| 403 | `Error` | The acting user did not post this file and is not an administrator. |
| 404 | `Error` | No quote with the given id exists for the authenticated company, the attachment is not part of this quote's conversation, or it has already been removed. |
| 429 | `Error` | The request was throttled (rate_limited) or exceeded a size limit (resource_exhausted). When throttled, the Retry-After header says how many seconds to wait before retrying; a resource_exhausted request will fail the same way if retried unchanged. |
| default | `Error` | Any other error. The body is the same error envelope every error uses: a short stable type identifying the kind of failure (for example "rate_limited" or "internal"), a human-readable message, and the request's idempotency key echoed back when one was supplied. |

---

Source: https://developer.factory.app/reference/quotes/delete-attachment · Factory Sales API v1
