/collections/{id}/downloadScope collections:downloadThe signed, hash-verifiable ZIP. Signed or refused: there is no third outcome, and you never receive an archive still in the candidate state. Verify it against the fingerprint from GET /export/trust, never against one inside the archive.
curl -sS -X GET https://tavonel.com/api/v1/collections/{id}/download \
-H "Authorization: Bearer $TAVONEL_API_KEY"import os
import requests
response = requests.request(
"GET",
"https://tavonel.com/api/v1/collections/{id}/download",
headers={"Authorization": "Bearer " + os.environ["TAVONEL_API_KEY"]},
timeout=30,
)
response.raise_for_status()
print(response.json())const response = await fetch("https://tavonel.com/api/v1/collections/{id}/download", {
method: "GET",
headers: { authorization: `Bearer ${process.env.TAVONEL_API_KEY}` },
});
if (!response.ok) throw new Error(`${response.status} ${(await response.json()).code}`);
console.log(await response.json());| Status | Response |
|---|---|
200 | The signed package. manifest/export-manifest.json carries a digest for every file and signatures/export-manifest.ed25519.json is the detached Ed25519 signature over those bytes. |
400 | COLLECTION_ID_INVALID — The collection id did not match collection-<32 hex>. |
401 | AUTH_REQUIRED — No credential was presented, or the bearer token is not a key TAVONEL issued. This is what an unauthenticated request to any scoped route returns. |
404 | NOT_FOUND — The addressed resource does not exist in this workspace. Deliberately uniform across tenants: the same answer for an id that is not yours and an id that is nobody's. |
422 | COLLECTION_PACKAGE_INVALID — The package failed its own validation, so it was not served. COLLECTION_PACKAGE_TOO_LARGE — The stored World's package is larger than one read may load, so it was not opened, downloaded, answered from or activated. The body carries bytes (the package's stored content) and bound. Nothing in the stored World was changed. INVALID_SIGNATURE — The signature did not verify against the key it names. EVIDENCE_DANGLING — An object cites evidence that is not in the package. |
503 | EXPORT_SIGNER_NOT_CONFIGURED — No signing key is configured, so neither a signed archive nor a fingerprint can be produced. GET /export/trust answers this rather than a fingerprint nobody can verify against. SIGNATURE_READ_FAILED — The detached signature could not be read. R2_NOT_CONFIGURED — Object storage is not configured. |