To enable the Compliance API, see the setup guide.
Set up the Compliance APIDownload Code Artifact Content
Streams an Artifact's current content as the response body, in chunks with no Content-Length.
For a Claude Doc (an Artifact whose artifact_type is claude_docs), the request must set multi_file_format=zip, and the content is the Doc's text as a ZIP archive of Word files. That ZIP has no files.json. It holds one Word file per text tab, in tab order, named NN-<tab id>.docx, where NN counts from 01. A Doc with one text tab gets one file, 01-document.docx.
For any other Artifact, the content is the latest version. With multi_file_format=zip, when the latest version has more than one file, it comes back as a ZIP archive of its files.
Headers: Content-Type (application/zip for a ZIP archive, otherwise the stored MIME type), Content-Disposition: attachment; filename*=utf-8''<name> (RFC 5987), Cache-Control: no-store, private and, when available, Content-MD5 (base64). <name> is {artifact_id}.zip for a ZIP archive, otherwise {artifact_id}.txt, whatever the content is. Content-MD5 is always on a Claude Doc's ZIP, only on a single file stored uncompressed, and never on a ZIP archive of a version's files. Check the body against it when present.
Errors specific to this download:
404: the Artifact doesn't exist, or the API key cannot read it.400witherror.details.error_codecmek_key_disabled: the organization's customer-managed encryption key can't be used, for example because it is disabled or revoked. Retry once the key can be used again.503: the content can't be produced right now. Wait the number of seconds in theRetry-Afterheader, or retry with backoff when it is absent.422withmulti_file_unavailable: the request does not setmulti_file_format=zip, and the Artifact is a Claude Doc or its latest version has more than one file. Add the parameter.422withfile_set_unavailable: the request setsmulti_file_format=zip, the Artifact is not a Claude Doc, and one of the latest version's files has a path the API cannot export. Do not retry.422withdocument_unavailable: Claude Docs has no document it can export for the Doc, for example because it has no text tab or is in the trash. Retrying will not help unless that changes.422withdocument_too_large: the Doc's export is over 16 MiB. Do not retry.422withcmek_org_unsupported: the organization uses customer-managed encryption keys and the export can't be served for it right now. Try again later, and contact Anthropic support if this continues.
An error after the download has started stops the body early, with the 200 status already sent. For example, this happens to content stored compressed when it is over 16 MiB once decompressed. For a single file with no Content-MD5, the only sign is a transfer that aborts before its last chunk, so treat a download that aborts this way as failed.
A ZIP archive of a version's files holds one top-level folder, named for the Artifact. That folder holds a files/ folder and an index, files.json. The index is written last, so treat an archive as incomplete if it cannot be opened or has no files.json in its top-level folder.
files.json has these fields:
artifact_id: the Artifact ID, as in the request.version_id: null.title: the title of the version in the archive, or that version's ID when no title is kept.created_at: when the version was published (RFC 3339, UTC), or null when that is not known.files: one entry for each file underfiles/, withoriginal_path(the file's path in the version),exported_as(its path in the archive),sha256(lowercase hex),size_bytes(before compression) andmime_type.exported_asis the top-level folder, thenfiles/, thenoriginal_path. A name that could not be saved or opened safely on every operating system is changed. Useexported_as, notoriginal_path, to find a file in the archive.omitted_files: the files left out of the archive, each withoriginal_path,sha256,size_bytesandmime_type. They include files the version uses from another Artifact. They also include files copied from the Artifact type the Artifact was made from, such as the app that displays it, when another organization owns that type.
files and omitted_files together list at most 4,096 files, their size_bytes add up to at most 1 GiB, and no file is over 20 MiB.
Path parameters
Query parameters
Headers
curl https://api.anthropic.com/v1/compliance/apps/code/artifacts/$ARTIFACT_ID/content \
-H 'anthropic-version: 2023-06-01' \
-H "Authorization: Bearer $ANTHROPIC_COMPLIANCE_API_KEY"