---
title: "Get a ticket"
method: GET
path: "/tickets/{id}"
tags: ["tickets"]
---

# Get a ticket

`GET /tickets/{id}`

## Request

- Base URL: `https://api.instruxi.dev/api/v1/enforcer`
- URL: `https://api.instruxi.dev/api/v1/enforcer/tickets/{id}`
- Auth: one of:
  - API key in header `Authorization`
  - API key in header `X-API-Key`

## Path parameters

- `id` string, required

## Response `200`

OK

- InternalDeliveryHttpHandlerTicketResponse
  - `data` EnforcerV3InternalDomainTicketTicket
    - `assignee_account_id` string
    - `closed_at` string
    - `created_at` string
    - `external_key` string: ExternalKey is the FILING SYSTEM's own id for the thing this ticket is about — a payment id, a refund id — set only when a service raised it. It exists because Kafka is at-least-once: a redelivered message, a DLQ replay or two consumer replicas racing would each open a fresh ticket for one payout, and three copies of a problem is worse than none — the second agent works a ticket the first already answered. Unique per tenant (partial index, migration 000090), so a re-file returns the existing row. Read-only to clients: a requester cannot claim a service's key.
    - `id` string
    - `priority` string
    - `requester_account_id` string
    - `source` string
    - `status` string
    - `subject` string
    - `tenant_id` string
    - `ticket_number` integer: TicketNumber is the human reference ("ticket #1042") — DB-generated identity, global across tenants (see migration 000061).
    - `updated_at` string
  - `success` boolean

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `404`: Not Found

---

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