> For the complete documentation index, see [llms.txt](https://docs.cekat.ai/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cekat.ai/api-documentation/tickets/add-a-product-to-a-ticket.md).

# Add a product to a ticket

Adds a product to a ticket and lowers the product's stock by the quantity.

```json
{"openapi":"3.0.3","info":{"title":"Cekat Open API","version":"1.0.0"},"tags":[{"name":"Tickets","description":"Create, list and update support tickets and the products attached to them.\n\nBefore creating tickets, call `GET /api/ticket_settings` to get your ticket boards (each board's `id` is the `board_id`) and their status IDs, and `GET /api/ticket_templates` to get the templates for each board and their fields.\n\nPriority is a number: `0` Low, `1` Medium, `2` High, `3` Urgent. Status is a status `id` from the board's `statuses`, or `done`.\n"}],"servers":[{"url":"https://api.cekat.ai","description":"Production"}],"security":[{"CekatApiKey":[]},{"BearerAuth":[]}],"components":{"securitySchemes":{"CekatApiKey":{"type":"apiKey","in":"header","name":"api_key","description":"Your business's Cekat API key, from **Settings → Developers & API** in the Cekat dashboard (https://chat.cekat.ai/developers?section=apikeys). Available on the Business and Enterprise plans."},"BearerAuth":{"type":"http","scheme":"bearer","description":"The same Cekat API key, sent as `Authorization: Bearer YOUR_API_KEY`. Accepted only by endpoints under `/api/...`."}},"schemas":{"ApiError":{"type":"object","description":"Error body returned by the `/api/...` endpoints.","properties":{"success":{"type":"boolean"},"message":{"type":"string"},"statusCode":{"type":"integer"},"error":{"type":"object","properties":{"message":{"type":"string"}}},"correlationId":{"type":"string","description":"Request ID. Include it when contacting Cekat support."}}},"RateLimitError":{"type":"object","properties":{"message":{"type":"string"}}}},"responses":{"ApiUnauthorized":{"description":"The API key is missing or invalid.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"TooManyRequests":{"description":"Rate limit exceeded. Wait and retry.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateLimitError"}}}}}},"paths":{"/api/tickets/products":{"post":{"tags":["Tickets"],"operationId":"AddTicketProduct","summary":"Add a product to a ticket","description":"Adds a product to a ticket and lowers the product's stock by the quantity.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["product_id","ticket_id","quantity","adjusted_price"],"properties":{"product_id":{"type":"string","format":"uuid"},"ticket_id":{"type":"string","format":"uuid"},"quantity":{"type":"integer","minimum":1},"adjusted_price":{"type":"number","exclusiveMinimum":true,"minimum":0,"description":"The price for this ticket."}}}}}},"responses":{"201":{"description":"Product added.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"},"data":{"type":"array","items":{"type":"object","additionalProperties":true}}}}}}},"400":{"description":"A field is missing or invalid, or the ticket belongs to another business.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ApiError"}}}},"401":{"$ref":"#/components/responses/ApiUnauthorized"},"429":{"$ref":"#/components/responses/TooManyRequests"}}}}}}
```
