---
title: "Vote on one or more translation slots"
method: PUT
path: "/api/v1/feedback/translations/{lang}/{termId}/votes"
tags: ["Feedback"]
---

# Vote on one or more translation slots

`PUT /api/v1/feedback/translations/{lang}/{termId}/votes`

## Request

- Base URL: `https://glossary.ethereum.org`
- URL: `https://glossary.ethereum.org/api/v1/feedback/translations/{lang}/{termId}/votes`
- Auth: API key in cookie `ethglossary-session`
- TypeScript: <https://skmtc.dev/ethereum/apis/ethglossary-api/docs/api/v1/feedback/translations/:lang/:termId/votes/put.ts> (a function with typed inputs; its response is checked against the schema)

One vote per person per slot value. `up`, `down`, or `none` to clear. Each item carries the hash of the value as rendered; a stale hash is refused with 409. Requires a session cookie.

## Path parameters

- `lang` string, required: Language code (e.g., es, ja, zh-tw)
- `termId` string, required: Term ID, alias, or variant (intelligent matching)

## Request body

- FeedbackVotes
  - `votes` object[], required
    - `context` 'prose' | 'heading' | 'tag' | 'ui' | 'plurals', required: The translation slot the feedback is about
    - `hash` string, required: Content hash of the value as rendered; the server refuses with 409 if it no longer matches
    - `direction` 'up' | 'down' | 'none', required: `none` clears your vote

## Response `200`

Current tallies for the slots voted on

- FeedbackVotesResponse
  - `ok` true, required
  - `tallies` object[], required
    - `context` 'prose' | 'heading' | 'tag' | 'ui' | 'plurals', required: The translation slot the feedback is about
    - `hash` string, required: Content hash of the value as rendered; the server refuses with 409 if it no longer matches
    - `up` integer, required
    - `down` integer, required
    - `mine` 'up' | 'down' | 'null', nullable, required

## Other responses

- `400`: Invalid request body
- `401`: Not signed in
- `403`: Cross-origin request
- `404`: Unknown term or language
- `409`: The value changed since the page loaded; reload
- `415`: Body is not application/json
- `429`: Too many writes; wait
- `503`: Database unavailable

---

[API](https://skmtc.dev/ethereum/apis/ethglossary-api.md) - [All operations](https://skmtc.dev/ethereum/apis/ethglossary-api/llms.txt) - [OpenAPI document](https://skmtc.dev/ethereum/apis/ethglossary-api/revisions/d0c021bf71fd?raw)
