# Reports & attachments

> Download verified research artifacts and add supplementary files to a task.

Source: https://math-api.qmindlabs.ai/docs/guides/files

## Find and download a report

Read the task’s report mapping, or request its storage locations with `paths:read`. Use the returned `download_url` with your API key and `files:read`. Storage paths are private identifiers, not public download links.

[GETGet report locations](https://math-api.qmindlabs.ai/docs/api-reference/tag/research-reports/GET/api/math/tasks/%7Btask_id%7D/paths.md)

[GETDownload a verified artifact](https://math-api.qmindlabs.ai/docs/api-reference/tag/research-reports/GET/api/math/artifacts/%7Bartifact_id%7D/download.md)

The service checks file size and SHA-256 before returning bytes. Private and provenance artifacts are excluded. Reviewer access is checked against every task sharing a report.

## Upload an attachment

Send raw bytes with `Content-Type: application/octet-stream` and an `X-Filename` header. Do not use multipart for task attachments.

```sh
curl --fail-with-body 'https://math-api.qmindlabs.ai/api/math/tasks/TASK_ID/attachments' \
  -H "Authorization: Bearer $MATH_API_KEY" \
  -H 'Content-Type: application/octet-stream' \
  -H 'X-Filename: proof.pdf' \
  --data-binary @proof.pdf
```

Replace `TASK_ID` with a visible task ID. Filenames cannot contain slashes, backslashes, or control characters. The optional `description` query parameter accepts up to 2,000 characters.

[POSTUpload fields and response](https://math-api.qmindlabs.ai/docs/api-reference/tag/attachments/POST/api/math/tasks/%7Btask_id%7D/attachments.md)

## File limits

| Type | Limit |
| --- | --- |
| Task attachment | 1 byte–16 MiB; 200 active attachments per task. |
| Bug screenshot | Up to 8 MiB; PNG, JPEG, or WebP via multipart. |

Archived tasks are read-only. Attachments supplement imported reports; they do not replace them.

## Remove an attachment

Reviewers can remove their own uploads while still assigned to the task. Owners and admins can remove any permitted attachment. Removal hides the record while retaining bytes for audit and recovery.

[DELETERemove an attachment](https://math-api.qmindlabs.ai/docs/api-reference/tag/attachments/DELETE/api/math/tasks/%7Btask_id%7D/attachments/%7Battachment_id%7D.md)
