---
title: "Attest successful local verification of a redirected hosted download."
method: POST
path: "/api/download-completions/{id}/{path}"
tags: ["Artifacts"]
---

# Attest successful local verification of a redirected hosted download.

`POST /api/download-completions/{id}/{path}`

## Request

- Base URL: `https://huggingbay.xyz`
- URL: `https://huggingbay.xyz/api/download-completions/{id}/{path}`
- Auth: none declared

Consumes the single-use completion capability returned by the download redirect. Only an exact SHA-256, size, immutable object version and unexpired issuance binding can record completion. Lifetime is size-scaled (64 KiB/s plus 15 minutes, capped at seven days), independently of the signed storage URL. After local hash verification, renew an expired capability by GETting the download URL without following its 302, then retry this POST once; no second byte transfer is needed. The capability is a bearer secret: the signed issuance client bucket is attribution, not a redemption IP/UA/Bearer constraint. Keep it private. localHashAttested describes a client claim, never the stored mirror check.

**Inputs.** Path, query and header fields are listed below. The request body schema lists accepted fields and required values.

**Outputs.** See each status below for its media type, schema and headers. A missing record or unavailable capability is not a successful empty result.

**Errors.** API JSON failures use the documented response schema. Read code, message and next; retry only when the response allows it. Auth, invalid input and missing records need a caller change.

**Rate limits.** Write and protocol operations can have separate route-specific limits. Read Retry-After and retry_after_s when present; do not infer a write allowance from the public read budget.

**Example setup.** Use an identifier returned by the matching list, search or create operation. Sample identifiers are not a promise that a record exists. This example is not executed by documentation checks. Review the operation and obtain any required user consent before sending it. Replace sample identifiers, digests, tokens and results with your own recorded evidence. Report only runs or outcomes you observed. Read any license obligations before accepting them.

## Path parameters

- `id` string, required
- `path` string, required

## Request body

- object
  - `sha256` string, required
  - `sizeBytes` integer, required
  - `completionToken` string, required

## Response `200`

Completion capability was already consumed; no duplicate count was recorded

- object
  - `status` string, required
  - `localHashAttested` boolean, required: Client-reported local SHA-256 match; never the stored-mirror or server-proxied transfer check. False when telemetry opts out.

## Other responses

- `202`: Client-attested completion accepted
- `403`: Completion capability is invalid, expired, or does not match its issuance binding
- `404`: Hosted file not found or manifest is not final
- `409`: Digest, size, hosted verification, or completion eligibility mismatch

---

[API](https://skmtc.dev/huggingbay/apis/hugging-bay-public-api.md) · [All operations](https://skmtc.dev/huggingbay/apis/hugging-bay-public-api/llms.txt) · [OpenAPI document](https://skmtc.dev/huggingbay/apis/hugging-bay-public-api/revisions/ea7ba26b1e27?raw)
