---
title: "Submit a bounded public review or run-report attestation."
method: POST
path: "/api/artifacts/{id}/reviews"
tags: ["Artifacts"]
---

# Submit a bounded public review or run-report attestation.

`POST /api/artifacts/{id}/reviews`

## Request

- Base URL: `https://huggingbay.xyz`
- URL: `https://huggingbay.xyz/api/artifacts/{id}/reviews`
- Auth: none declared

Accepts anonymous or authenticated community feedback. Personal contact fields are not required or returned.

**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.

## Path parameters

- `id` string, required

## Request body

- object
  - `rating` integer, required
  - `title` string
  - `body` string, required
  - `reviewer` string
  - `tool` string: Optional runtime/tool such as ollama, lm-studio, transformers, comfyui, llama.cpp.
  - `categoryRatings` object: Optional 1-5 category ratings keyed by documentation, performance, safety, easeOfUse, or commercialReadiness.
  - `version` string
  - `evidence` BenchmarkEvidence
    - `kind` 'benchmark' | 'performance' | 'load-test'
    - `benchmark` string
    - `task` string
    - `metric` string
    - `scoreValue` number, nullable
    - `scoreText` string
    - `higherIsBetter` boolean
    - `hardware` string
    - `tool` string
    - `command` string
    - `runUrl` string
    - `verified` boolean

## Response `201`

Review created

- ArtifactReview
  - `id` string, required
  - `artifactId` string, required
  - `repo` string
  - `reviewer` string
  - `reviewerRole` string
  - `rating` number, required
  - `title` string, required
  - `body` string, required
  - `tool` string
  - `categoryRatings` object
  - `version` string
  - `evidence` BenchmarkEvidence
    - `kind` 'benchmark' | 'performance' | 'load-test'
    - `benchmark` string
    - `task` string
    - `metric` string
    - `scoreValue` number, nullable
    - `scoreText` string
    - `higherIsBetter` boolean
    - `hardware` string
    - `tool` string
    - `command` string
    - `runUrl` string
    - `verified` boolean
  - `createdAt` string, required
  - `updatedAt` string

## Other responses

- `422`: Invalid review

---

[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/63c474bf0fe4?raw)
