The whole hunk
from line 195, old and new numbered
/
lines
from line 195
195195```bash cURL
196196file_id="claude_file_01UaT9wBcDfGhJkLmNpQrSv7"
197197
198curl --fail-with-body -sS -OJ \
198curl --fail-with-body -sS \
199 "https://api.anthropic.com/v1/compliance/apps/chats/files/$file_id/content" \
199200 --header "x-api-key: $ANTHROPIC_COMPLIANCE_ACCESS_KEY" \
200201 --header "anthropic-version: 2023-06-01" \
201 "https://api.anthropic.com/v1/compliance/apps/chats/files/$file_id/content"
202 --output "dashboard_mockup_v1.pdf"
202203```
203204
204The `-OJ` flags tell curl to save the response under the file name from `Content-Disposition`, which is the original file name the user uploaded.
205In curl, the `--remote-header-name` (`-J`) option, which normally saves a download under the `Content-Disposition` file name, does not read the `filename*` form, so name the saved file yourself with `--output`. In a script, take the name from the file's `filename` field in the chat messages or [Get file metadata](https://platform.claude.com/docs/en/api/compliance/apps/chats/files/retrieve) response, or decode `filename*`. Either way, it is the name the user gave the upload, so treat it as untrusted before using it as an output path: keep only the base name, allow only characters that are safe on your filesystem, and refuse names that begin with `-` or `.`.
205206
206The artifact content endpoint returns the text body of one artifact version. Pass the `version_id` from one of the entries in an assistant message's `artifacts` array, not the artifact's stable `id`. Each new version of an artifact has its own `version_id`, and the Compliance API serves the exact bytes of that version.
207Unlike the file content endpoint, the artifact content endpoint returns a JSON object. Pass the `version_id` from one of the entries in an assistant message's `artifacts` array, not the artifact's stable `id`; each new version of an artifact has its own `version_id`. The response's `content` field holds exactly that version's text, and its `title` and `artifact_type` fields describe the artifact. [Get artifact metadata](https://platform.claude.com/docs/en/api/compliance/apps/artifacts/retrieve) computes `size_bytes` and `md5` over the UTF-8 encoding of that text, so compare them with the `content` value rather than the whole response body.
207208
208209## Retrieve projects and attachments
209210
from line 307
306307```json
307308{
308309 "error": {
309 "type": "conflict_error",
310 "type": "invalid_request_error",
310311 "message": "The \"claude_proj_01KGp4eZNug9ri4kE35RSppq\" project cannot be deleted as it has chats attached to it. Delete or detach all chats, and try deleting the project again."
311312 }
312313}