---
title: "A feed artifact, through the signed link a latest read returns"
method: GET
path: "/v2/feeds/artifact/{runId}/{name}"
tags: ["feeds"]
---

# A feed artifact, through the signed link a latest read returns

`GET /v2/feeds/artifact/{runId}/{name}`

## Request

- Base URL: `https://api.cardog.app`
- URL: `https://api.cardog.app/v2/feeds/artifact/{runId}/{name}`
- Auth: none required

The bytes behind an `artifacts[].url` from `GET /v2/feeds/{dataset}/latest`. Open that link exactly as printed. It is signed and good for 24 hours; it needs no API key or session, and it costs 0 credits. `.gz` artifacts are served as `application/gzip`, plain ones as `text/csv`, `application/x-ndjson` or `application/json` by their extension; all as attachments. An invalid or expired link is 403 `forbidden`: request the latest read again for a fresh one. 404 when no artifact is held under that run and name; 503 when it could not be fetched right now.

## Path parameters

- `runId` string, required
- `name` string, required

## Query parameters

- `t` string, required
- `d` string, required
- `exp` integer, required
- `sig` string, required

## Response `200`

The artifact as the builder wrote it

## Other responses

- `400`: Invalid request — grammar failure or unknown-but-well-formed refs, NAMED in `refs`/`details`, with nearest-ref `suggestions` where computable. Never a fuzzy fallback.
- `403`: Credential lacks the scope for this route group (`forbidden`)
- `404`: Resource not found
- `429`: Per-minute rate limit exceeded
- `500`: Internal error
- `503`: Temporarily unavailable (`unavailable`); retry with backoff

---

[API](https://skmtc.dev/cardog/apis/cardog-api-v2.md) · [All operations](https://skmtc.dev/cardog/apis/cardog-api-v2/llms.txt) · [OpenAPI document](https://skmtc.dev/cardog/apis/cardog-api-v2/revisions/b9d48193126f?raw)
