---
title: "Create a tracker ticket"
url: https://docs.gleap.ai/en/reference/rest-api/create-tracker-ticket
method: POST
path: "/tickets/tracker-tickets"
api: "API Reference"
tag: "Ticket"
operationId: "CreateTrackerTicket"
updatedAt: "2026-11-01T18:40:15.677Z"
language: en
---

# Create a tracker ticket

`POST https://api.gleap.io/v3/tickets/tracker-tickets`

Create a tracker ticket in a project. When `customerEmail` is set, the customer is added as the first upvoter (`upvotes: [{ email, name }]`, `upvotesCount: 1`) and their session (source ticket's session, else resolved by email) becomes the ticket's creator `session` — used for feature requests where the originating customer should own the request like a portal-submitted one.

Feature requests filed by an agent (`createdByAgent` set) are created as ordinary customer requests linked to their conversation, NOT as tracker tickets — only human/dashboard creates get `trackerTicket: true`.

A feature request that strongly matches existing ones is refused with a 409 `DUPLICATE_FEATURE_REQUEST` listing them in `candidates` (best first; `duplicate` is the best one). Repeat the call with their ids in `notDuplicateOf` when they are a different need.

## Authorization

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

## Headers

- `project` (string, required)

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

- `createdByAgent` (object): Provenance for agent-created tickets ("Created by Kai from #123").
  - `sourceTicketId` (string)
  - `agentName` (string, required)
  - `agentId` (string)
- `notDuplicateOf` (string[]): Ids of existing feature requests (from a duplicate response's `candidates`) that are a different need than this one, e.g. the same feature on another product surface. The duplicate check skips them.
- `skipDuplicateCheck` (boolean): Dashboard creates pass true (humans already saw duplicate suggestions in the modal). Agent/MCP creates must NOT set this — the server-side duplicate guard is what keeps agents from filing the same request twice.
- `customerName` (string)
- `customerEmail` (string)
- `linkedTicketIds` (string[])
- `description` (string)
- `title` (string)
- `type` (string)

## Example request

```bash
curl --request POST \
  --url https://api.gleap.io/v3/tickets/tracker-tickets \
  --header 'Authorization: Bearer <token>' \
  --header 'project: <project>' \
  --header 'Content-Type: application/json' \
  --data '{
  "skipDuplicateCheck": true,
  "customerName": "<customerName>",
  "customerEmail": "<customerEmail>",
  "description": "<description>"
}'
```

## Responses

### 200 (`application/json`)

Ok
