---
title: "Vote for ticket"
url: https://docs.gleap.ai/en/reference/rest-api/vote-for-ticket
method: POST
path: "/tickets/{ticketId}/vote"
api: "API Reference"
tag: "Ticket"
operationId: "VoteForTicket"
updatedAt: "2026-11-01T18:40:15.677Z"
language: en
---

# Vote for ticket

`POST https://api.gleap.io/v3/tickets/{ticketId}/vote`

Vote for a feature request. `action` controls semantics: `'toggle'` (default) flips the vote, `'subscribe'` is idempotent add, `'unsubscribe'` is idempotent remove. `ticketId` is the ticket id or its number; only feature requests take votes. Emails are matched case-insensitively and stored lowercased. The response carries the request's `status` (customer-facing label, null when not public), `public` flag and `shareUrl`.

## Authorization

- `Authorization` (header, required): `Bearer <token>`

## Path parameters

- `ticketId` (string, required)

## Request body (`application/json`, required)

- `action` (enum<string>): One of: `toggle`, `subscribe`, `unsubscribe`.
- `name` (string)
- `email` (string, required)

## Example request

```bash
curl --request POST \
  --url 'https://api.gleap.io/v3/tickets/{ticketId}/vote' \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
  "action": "toggle",
  "email": "<email>"
}'
```

## Responses

### 200 (`application/json`)

Ok
