---
title: "Common-path compatibility alias for an artifact download-plan."
method: GET
path: "/api/downloads/{artifactId}"
tags: ["Artifacts", "Downloads", "Agent Docs"]
---

# Common-path compatibility alias for an artifact download-plan.

`GET /api/downloads/{artifactId}`

## Request

- Base URL: `https://huggingbay.xyz`
- URL: `https://huggingbay.xyz/api/downloads/{artifactId}`
- Auth: none declared

Returns the existing manifest-backed, hosted-file-only download-plan for one artifact. This ID-only path never redirects to bytes; use /api/downloads/{artifactId}/{path} only with an exact hosted path returned in files.

**Inputs.** Path, query and header fields are listed below. No request body is required.

**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.** Public read budgets apply by client IP and route group. This operation can have a smaller route-specific budget. Read Retry-After on 429 or retryable 503 responses.

**Example setup.** Use an identifier returned by the matching list, search or create operation. Sample identifiers are not a promise that a record exists.

## Path parameters

- `artifactId` string, required

## Query parameters

- `tool` 'ollama' | 'lm-studio' | 'comfyui' | 'transformers' | 'llama.cpp'

## Response `200`

Bounded manifest-backed artifact download-plan

- ArtifactDownloadPlan
  - `schemaVersion` 'hugging-bay.artifact-download-plan.v1', required
  - `runTested` boolean: True when an exact hosted file has passing recorded run tests; independent of runReady.
  - `runKit` object: Harness-tested runner steps for the best exact file: passing runners, dates, versions and host.
  - `generatedAt` string, required
  - `artifact` object, required
  - `status` string, required
  - `tool` string
  - `manifest` object, required
  - `peerFallbackReadiness` object
  - `verified` object
  - `stats` object
  - `fileIntegrity` object
  - `completionAttestation` object
  - `files` object[], required
    - `runKit` object: Harness-tested runner steps for this exact path and SHA-256.
    - `downloadUrl` string, nullable: Transfer URL when this read authorized the file; null when the live check was unavailable or the file is not servable.
    - `downloadEndpoint` string, uri: Always present: the recorded transfer URL /api/downloads/{id}/{path} (the same URL deployment-plan runKits use). A GET authorizes live and answers 302 to the bytes, or an error when the file is not servable. Compare the SHA-256 after download.
  - `lastGood` object: Present when the live check was unavailable and this is the plan last checked as ready (degraded and stale are true).
    - `ageSeconds` integer
    - `source` string
    - `note` string
  - `commands` object[], required
  - `actions` object
  - `warnings` string[]

## Other responses

- `403`: Gated terms required
- `404`: Artifact not found or not public
- `409`: External-only artifact is not mirrored
- `423`: Manifest is not public or not final

## Changes

- **2026-10-20** `63c474bf0fe4`: 3 info
  - added the optional property `files/items/downloadEndpoint` to the response with the `200` status
  - added the optional property `files/items/downloadUrl` to the response with the `200` status
  - added the optional property `lastGood` to the response with the `200` status

[Operation history](https://skmtc.dev/huggingbay/apis/hugging-bay-public-api/changes/api/downloads/:artifactId/get.md)

---

[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)
