canonical: https://jentic.com/apis/apideck.com/issue-tracking

# Apideck Issue Tracking API

The Apideck Issue Tracking API is a unified interface across Jira, Linear, GitHub Issues, GitLab Issues, Asana, and Trello. A single set of 15 endpoints covers tickets, comments, users, tags, and the project-like 'collections' that group them, eliminating the need to maintain a separate integration per tracker. All ticket and comment operations support full CRUD, while users and tags are read-only - they reflect data managed in the underlying tool. Tickets are addressed by both collection_id (the project) and ticket_id, mirroring how trackers scope issues to a project or repository.

## For AI agents

Create, update, and comment on tickets across Jira, Linear, GitHub Issues, GitLab Issues, Asana, and Trello through one unified API surface.

## Scope

Does not handle CI/CD, source control operations, or release management - use for tickets, comments, and project metadata across trackers only.

## Capabilities

- Create a ticket inside a specific collection (project, board, or repo) with title, description, assignees, and tags
- Update a ticket's status, assignee, priority, or due date with PATCH /issue-tracking/collections/{collection_id}/tickets/{ticket_id}
- Add and edit comments on a ticket via the nested /comments endpoints
- List collections (projects/boards/repos) the connected user has access to in the tracker
- Look up users in a collection to populate assignee or reviewer pickers
- List the tags configured on a collection so the agent can apply them to a new ticket

## Use cases

### Cross-Tracker Ticket Creation

Build a feature that creates a ticket in whichever issue tracker the customer uses (Jira, Linear, GitHub Issues, GitLab Issues, Asana, or Trello) without writing per-vendor logic. POST /issue-tracking/collections/{collection_id}/tickets accepts the same payload across providers, and the response normalises the resulting ticket ID and URL. Useful for support or alerting flows that auto-file bugs.

Example prompt: Create a ticket in collection 'PROJ-BACKEND' with title 'Login API returns 500 on expired token' and tags ['bug','urgent'], then return the resulting ticket URL

### Two-Way Comment Sync

Sync a conversation thread between a chat tool (Slack, Teams) and an issue tracker. The /comments endpoints support create, list, get, update, and delete, so a bot can mirror new chat messages into the ticket and surface tracker replies back into the chat. The same code path works for any tracker the customer has connected.

Example prompt: List comments on ticket 'ENG-204' since timestamp X, mirror them into a Slack thread, and post any new Slack messages back via POST /issue-tracking/collections/{collection_id}/tickets/{ticket_id}/comments

### Triage Dashboard Across Trackers

Aggregate open tickets across multiple customers using different trackers into a single triage view. GET /issue-tracking/collections lists each customer's projects, then GET /issue-tracking/collections/{collection_id}/tickets returns the tickets - assignees and tags are normalised so a single dashboard renders consistently regardless of source tracker.

Example prompt: For each connected consumer, list their collections and then list open tickets in each, returning a flat array of {customer_id, ticket_id, title, assignee, status}

### AI Agent Bug Filing via Jentic

An AI agent receives an alert from monitoring and files a bug in the customer's tracker. Through Jentic, the agent searches 'create a ticket', loads the POST /issue-tracking/collections/{collection_id}/tickets operation, and executes it. Jentic stores the Apideck Authorization, x-apideck-app-id, and x-apideck-consumer-id headers separately, and the agent never sees the raw key.

Example prompt: Through Jentic, search 'create a ticket', load POST /issue-tracking/collections/{collection_id}/tickets, and create a ticket in the customer's default backend collection with the alert details

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /issue-tracking/collections | List collections (projects/boards/repos) |
| GET | /issue-tracking/collections/{collection_id}/tickets | List tickets in a collection |
| POST | /issue-tracking/collections/{collection_id}/tickets | Create a ticket |
| PATCH | /issue-tracking/collections/{collection_id}/tickets/{ticket_id} | Update a ticket |
| POST | /issue-tracking/collections/{collection_id}/tickets/{ticket_id}/comments | Add a comment to a ticket |
| GET | /issue-tracking/collections/{collection_id}/users | List users in a collection |
| GET | /issue-tracking/collections/{collection_id}/tags | List tags configured on a collection |

## Key resources

- **Tickets** — List, create, get, update, and delete tickets within a collection
- **Comments** — List, create, get, update, and delete comments on a ticket
- **Collections** — Read-only - list and get projects, boards, or repos the consumer has access to
- **Users** — Read-only - list and get users associated with a collection for assignee selection
- **Tags** — Read-only - list tags configured on a collection

## Why Jentic

- **Setup:** Wiring the Apideck Issue Tracking API by hand means setting up its API key plus consumer and service headers, learning the unified collection and ticket shapes, and normalising across trackers yourself. Through Jentic you install once, import Apideck Issue Tracking from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** The Apideck Issue Tracking API puts the collection id and ticket id in the URL path (/issue-tracking/collections/{collection_id}/tickets/{ticket_id}), so a rule can pin your agent to one collection: it can read and update tickets in that collection and nothing else. You choose the operations it may call, so posting comments is not included unless you add it.
- **Credential handling:** Your Apideck API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'list tickets in a project' or 'update a ticket', and Jentic returns the matching Apideck Issue Tracking operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Linear API** — Linear-only GraphQL API with deeper Linear-specific features (cycles, projects, triage views) the unified API does not surface.
- **Jira API** — Jira-only API with full access to JQL, custom fields, and workflow transitions.
- **Apideck Vault API** — Vault sets up the OAuth connection the Issue Tracking API executes against.

## FAQ

### What authentication does the Apideck Issue Tracking API use?

An apiKey scheme on the `Authorization` header with your Apideck application key, plus `x-apideck-app-id` and `x-apideck-consumer-id` headers. Through Jentic these are stored encrypted in the vault and injected at execution time.

### Can I create and update tickets across different trackers with one call signature?

Yes. POST /issue-tracking/collections/{collection_id}/tickets and PATCH /issue-tracking/collections/{collection_id}/tickets/{ticket_id} use the same request shape regardless of whether the underlying tracker is Jira, Linear, GitHub Issues, GitLab, Asana, or Trello. Field availability depends on the connector - check the response for unmapped fields.

### What are the rate limits for the Apideck Issue Tracking API?

The OpenAPI spec does not publish per-endpoint rate limits. Apideck applies plan-based limits at unify.apideck.com plus per-connector limits passed through from the tracker (Jira's 10 req/sec, GitHub's 5,000/hour, etc.). See https://developers.apideck.com for your plan's quotas.

### How do I create a ticket through Jentic?

Install with `pip install jentic`, then run the search query 'create a ticket'. Jentic returns POST /issue-tracking/collections/{collection_id}/tickets - load its schema, supply collection_id, title, description, and any tags or assignees, then execute.

### Can I list and select users for ticket assignment?

Yes. GET /issue-tracking/collections/{collection_id}/users returns the user records associated with that project/board/repo. Use the returned IDs in the assignees array of a ticket create or update payload. Note that the users endpoint is read-only - user accounts are managed in the underlying tracker.

### What's the difference between collections and tickets in this API?

A collection is a project, board, or repository - the container that scopes a set of tickets. Every ticket operation requires a collection_id. List available collections with GET /issue-tracking/collections to discover what the connected user can write to.

### Can I limit what my agent is allowed to do with the Apideck Issue Tracking API?

Yes. Because you run Jentic One yourself, your own rules decide which operations and credentials the agent may use. Since this API puts the collection and ticket IDs in the URL path (/issue-tracking/collections/{collection_id}/tickets/{ticket_id}), a rule can pin your agent to a single collection so it reads and updates tickets there and nothing else. You also choose which operations it may call, so posting comments via POST .../tickets/{ticket_id}/comments is excluded unless you add it.
