---
title: "Submit an unmetered response."
method: POST
path: "/v1/collections/{id}/responses"
---

# Submit an unmetered response.

`POST /v1/collections/{id}/responses`

## Request

- Base URL: `http://127.0.0.1:8080`
- URL: `http://127.0.0.1:8080/v1/collections/{id}/responses`
- Auth: HTTP bearer

Accepted responses are idempotent, counted for observability and never metered or charged.

## Path parameters

- `id` string, required

## Request body

- Submission
  - `idempotencyKey` string, required
  - `answers` object, required: Question-ID keyed answers. Legacy and schema-v3 choice answers retain their documented wire types. Ranking is a complete option-ID permutation; matrix is a row-ID map to a column ID or nonempty column-ID array; constant_sum is an exact item-ID map to nonnegative integers totaling the configured total. The backend validates dynamic membership, sums, requiredness, routes and visibility.
  - `metadata` object: Untrusted caller metadata; compact serialized JSON must be at most 4096 bytes.

## Response `200`

Success

- Receipt: Immutable acknowledgement of one accepted response. Likerts does not meter or charge responses.
  - `responseId` string, uuid, required
  - `collectionId` string, uuid, required
  - `accepted` unknown, required

## Other responses

- `400`: Invalid JSON, unknown fields or domain validation failure.
- `401`: Missing/invalid bearer credential, including wrong collection credential.
- `403`: Browser Origin is not in the exact collection allowlist.
- `409`: Changed payload for an existing idempotency key, a closed collection, or an exhausted response cap.
- `410`: The collection is expired or irrevocably revoked.
- `413`: Request body exceeds 65536 bytes.
- `415`: Content-Type must be application/json.
- `429`: Admission or collection rate limit reached. Honor Retry-After in seconds; admission usually returns1, the collection minute window returns60.
- `500`: Internal failure; do not assume a write failed. Retry only with its original idempotency key and payload.
- `503`: Distributed request admission is temporarily unavailable. No protected handler ran; honor Retry-After.

---

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