GET /v1/render/artifacts/{artifact_id}
Returns an artifact's metadata with a fresh signed URL (valid for 24 hours). The URL needs no credentials and is safe to embed: it works for anyone who has it until `url_expires_at`, and the bytes are always served with `Content-Security-Policy: sandbox` (URL format: `renderGetArtifactContent`).

Authentication

Bearer Token (b3os_sk_ API key or b3os_pat_ token) API Key (cookie: __Host-b3os_session)

Path Parameters

artifact_id string required path
The artifact ID (`art_…`).
Example: "art_01m5t41x77fg4pdnm2ryq73wgs"

Responses

200 The artifact.
application/json
id string REQUIRED
object string REQUIRED
Enum: artifact
kind string REQUIRED
Enum: image, mp4, gif, poster, vtt, srt
content_type string REQUIRED
bytes integer
width integer
height integer
duration_ms integer
url string (uri)
Signed URL on `usercontent.b3os.org`, `https://usercontent.b3os.org/a/<id in host-safe form>/<name>?node=&exp=&sig=`: an Ed25519 signature by the node's key over the method, path and expiry (`renderGetArtifactContent`), no cookies. It works as soon as the artifact is reported, while the upload to storage is still finishing.
url_expires_at string (date-time)
created_at string (date-time)
expires_at string (date-time)
When the artifact is deleted.
400 The request failed validation (`invalid_request`, `invalid_url`).
401 Missing, malformed, expired or revoked credentials (`unauthorized`).
403 Authenticated but not allowed (`forbidden`, `egress_denied`).
404 No such artifact in this project (`artifact_not_found`).
410 The artifact was deleted at the end of its retention period (`artifact_expired`).
429 A rate, concurrency or quota limit applies (`rate_limited`, `concurrency_limited`, `quota_exceeded`).
500 Something failed inside B3OS (`internal`). Retry with backoff.
503 The node or the product is not available right now (`node_unavailable`, `product_unavailable`, `capacity_unavailable`).
curl -X GET 'https://beta-api.b3os.org/v1/render/artifacts/art_01m5t41x77fg4pdnm2ryq73wgs' \  -H 'Authorization: Bearer YOUR_API_TOKEN'
const response = await fetch('https://beta-api.b3os.org/v1/render/artifacts/art_01m5t41x77fg4pdnm2ryq73wgs', {  method: 'GET',  headers: {      "Authorization": "Bearer YOUR_API_TOKEN"  }});const data = await response.json();console.log(data);
import requestsheaders = {    'Authorization': 'Bearer YOUR_API_TOKEN'}response = requests.get('https://beta-api.b3os.org/v1/render/artifacts/art_01m5t41x77fg4pdnm2ryq73wgs', headers=headers)print(response.json())
200 Response
{  "id": "art_01m5t3nhzatn0b868d7pf7fh82",  "object": "artifact",  "kind": "poster",  "content_type": "image/jpeg",  "bytes": 98211,  "width": 1920,  "height": 1080,  "url": "https://usercontent.b3os.org/a/art-01m5t3nhzatn0b868d7pf7fh82/poster.jpg?node=n1&exp=1793040604&sig=ANijY83svvEUxb4X2Zo7fu8iEpsYJFSH_nPx7MpqcaW_EteYq9LYyOaOJLge5-pAhk1iNx60d6rBaBnJftlABw",  "url_expires_at": "2026-10-26T18:50:04.000Z",  "created_at": "2026-10-25T18:50:03.900Z",  "expires_at": "2026-11-01T18:50:03.900Z"}
Ask a question... ⌘I