---
title: "Redeem a signed artifact download URL"
method: GET
path: "/v1/artifacts/download"
tags: ["runs"]
---

# Redeem a signed artifact download URL

`GET /v1/artifacts/download`

## Request

- Base URL: `https://api.hyperresearch.ai`
- URL: `https://api.hyperresearch.ai/v1/artifacts/download`
- Auth: none required

Keyless. Verifies the HMAC over workspace/kind/owner/path/expiry, then streams the allowlisted R2 object. Invalid, tampered or expired links are denied.

## Query parameters

- `ws` string, required
- `k` 'runs' | 'verify' | 'exports' | 'imports'
- `o` string
- `run` string
- `p` string
- `path` string
- `exp` integer, nullable
- `sig` string, required

## Response `200`

Artifact body

## Other responses

- `400`: Invalid request
- `401`: Authentication failed
- `403`: Insufficient scope or plan
- `404`: Not found
- `429`: Rate limited or over quota
- `500`: Internal error

---

[API](https://skmtc.dev/hyperresearch/apis/hyperresearch-cloud-api.md) · [All operations](https://skmtc.dev/hyperresearch/apis/hyperresearch-cloud-api/llms.txt) · [OpenAPI document](https://skmtc.dev/hyperresearch/apis/hyperresearch-cloud-api/revisions/726ef831ebf4?raw)
