---
title: Jira API Integration on Truto
slug: jira
category: Ticketing
canonical: "https://truto.one/integrations/detail/jira/"
---

# Jira API Integration on Truto



**Category:** Ticketing  
**Status:** Generally available

## Unified APIs

### Unified User Directory API

- **Activities** — Activities are the actions performed by users in the source application.
- **Groups** — Groups are a collection of users in the source application. In some applications, they might also be called Teams.
- **Licenses** — Licenses represent concepts like user seats in apps that support them
- **Me** — 
- **Roles** — The Role object represents a role of a User.
- **Users** — The User object represents a User.
- **Utilization** — Utilization object represents utilization reports.

### Unified Ticketing API

- **Attachments** — Attachments are the files associated with a ticket or a comment.
- **Collections** — Tickets and contacts can be grouped into Collections. Collection resource usually maps to the various grouping systems used in the underlying product. Some examples are lists, projects, epics, etc. You can differentiate between these grouping systems using the type attribute of a Collection.
- **Comments** — Comments represent the communication happening on a Ticket, both between a User and a Contact and the internal things like notes, private comments, etc. A Ticket can have one or more Comments.
- **Fields** — Fields represent the attributes defined for various entities in the underlying product. Depending on the underlying product, custom attributes can be defined by a User on various entities like Ticket, Contact, etc. is_user_defined attribute within Field can be used to differentiate between custom and system defined Fields.
- **Tags** — Tags represent a common classification approach used in various ticketing systems. A Ticket may have one or more Tags associated with them.
- **Teams** — Teams represent the grouping system used for Users. These are usually called groups, teams, agent groups, etc. in the underlying products. A User can belong to one or more Teams.
- **Ticket Priorities** — Ticket Priorities represent the intended order in which the Tickets should be worked on. Some products provide customizing the Ticket Priorities.
- **Ticket Status** — Ticket Status represents the completion level of the Ticket. Some products provide customizing the Ticket Status.
- **Ticket Types** — Ticket Types represent the classification system used by the underlying products for Tickets. Some examples are bugs, feature, incident, etc.
- **Tickets** — Core resource which represents some work that needs to be carried out. Tickets are usually mapped to issues, tasks, work items, etc. depending on the underlying product.
- **Users** — Users represent the people using the underlying ticketing system. They are usually called agents, team members, admins, etc.

### Unified Search API

- **Search** — Search endpoint for all the apps.

## MCP-ready AI tools

Truto exposes 40 tools for Jira that AI agents can call directly.

- **list_all_jira_accessible_resources** — Get list of accessible resources in Jira. Returns id, name, url, scopes, and avatarUrl for each resource.
- **create_a_jira_issue_attachment** — Add one or more attachments to an issue in Jira using issueIdOrKey. Returns attachment details including id, filename, mimeType, size, content URL, author info, and creation timestamp.
- **get_single_jira_issue_attachment_by_id** — Get metadata for an attachment by id in Jira. Returns author details, content URL, creation date, filename, mimeType, size, thumbnail URL, and self link.
- **list_all_jira_issue_attachments** — Get details about a specific issue in Jira by id. Returns key fields including attachments with author info, filename, size, and content URL.
- **list_all_jira_issue_comments** — Get all comments for an issue in Jira by issue_id_or_key. Returns author, body, created, id, updateAuthor, updated, and visibility fields for each comment.
- **get_single_jira_issue_comment_by_id** — Get comment for issue with issue_id_or_key and id in Jira. Returns author, body, created, updated, and visibility fields of the comment.
- **create_a_jira_issue_comment** — Add a comment to an issue in Jira using issueIdOrKey. Returns the comment id, author, body, created and updated timestamps, and visibility details.
- **update_a_jira_issue_comment_by_id** — Update comment by issue_id_or_key and id in Jira. Returns author, body, created, id, updateAuthor, updated, and visibility fields of the updated comment.
- **delete_a_jira_issue_comment_by_id** — Delete comment by id for issue identified by issue_id_or_key in Jira. Returns no content on success.
- **list_all_jira_search** — Search issues using JQL in Jira. Requires jql parameter. Returns issues array with key fields like id, key, fields (including watcher, attachment, description, project, comment, issuelinks, worklog, timetracking).
- **get_single_jira_issue_by_id** — Get details for a specific issue in Jira by id. Returns key fields including status, project info, description, comments, attachments, and worklog.
- **create_a_jira_issue** — Create an issue or subtask in Jira. Requires fields and update parameters to define issue content. Returns details about the created issue including key and id.
- **update_a_jira_issue_by_id** — Edit an issue in Jira by issue id. Updates issue fields and properties. Returns the updated issue if returnIssue is true. Note: issue transition is not supported here.
- **delete_a_jira_issue_by_id** — Delete an issue by id in Jira. If the issue has subtasks, set deleteSubtasks to true to delete them along with the issue. Returns no content on success.
- **list_all_jira_projects** — Get a paginated list of projects visible to the user in Jira. Returns project id, key, name, category, avatar URLs, and insight fields including totalIssueCount and lastIssueUpdateTime.
- **get_single_jira_project_by_id** — Get project details in Jira. Requires id. Returns fields such as assigneeType, avatarUrls, components, description, id, insight, issueTypes, key, lead, name, projectCategory, properties, roles, self, simplified, style, url, and versions.
- **list_all_jira_users** — Get all users in Jira. Returns a list of users with accountId, accountType, active status, avatarUrls, displayName, and self URL. Privacy controls may hide some user details.
- **get_single_jira_user_by_id** — Get user details by accountId in Jira. Returns accountId, displayName, emailAddress, avatarUrls, groups, applicationRoles, active status, and timeZone as permitted by user privacy settings.
- **list_all_jira_groups** — Get user groups by accountId in Jira. Returns groupId, name, and self URL for each group the user belongs to.
- **list_all_jira_labels** — Get all labels in Jira. Returns a list of label names including 'values' array, with pagination details such as 'isLast', 'maxResults', 'startAt', and 'total'.
- **list_all_jira_roles** — Get all project roles in Jira. Returns an array of project roles with details including id, name, description, scope, and actors (users and groups) associated with each role.
- **get_single_jira_role_by_id** — Get project role details and default actors by id in Jira. Returns actors with displayName and type, role description, id, name, and project scope.
- **list_all_jira_audit_logs** — Get audit records filtered by filter, from, and to parameters in Jira. Returns records with fields id, summary, category, eventSource, objectItem, changedValues, authorAccountId, created, and remoteAddress.
- **list_all_jira_licenses** — Get licensing information for the Jira instance. Returns applications array with id and plan fields indicating license details.
- **get_single_jira_license_count_by_id** — Get approximate application license count for a Jira license using applicationKey. Returns total approximate number of user accounts, cached with a 7-day lifecycle.
- **list_all_jira_issue_createmeta** — Get create issue metadata including projects and issue types with their create screen fields in Jira. Returns projects with id, key, name, avatarUrls, and issue types with id, name, description, iconUrl, and required fields.
- **list_all_jira_status** — Get a paginated list of statuses filtered by projectId, searchString, and statusCategory in Jira. Returns id, name, description, statusCategory, usages, and workflowUsages for each status.
- **list_all_jira_priorities** — Get a list of priorities in Jira filtered by id or projectId. Returns fields id, name, description, isDefault, iconUrl, and statusColor for each priority.
- **list_all_jira_application_roles** — Get all application roles in Jira. Returns key fields including key, name, userCount, numberOfSeats, remainingSeats, and associated groups for each application role.
- **list_all_jira_groups_picker** — Find groups whose names contain query string in Jira. Returns groups with groupId, name, and html highlighting matched query. Response includes header showing count and total matching groups.
- **list_all_jira_user_groups** — Get user groups for accountId in Jira. Returns groupId, name, and self URL of each group the user belongs to.
- **list_all_jira_users_default** — Get all users including active, inactive, and deleted users in Jira. Returns accountId, accountType, active status, avatarUrls, displayName, and self link for each user.
- **list_all_jira_versions** — Get a paginated list of all versions for a project in Jira using project_id_or_key. Returns fields like id, name, description, releaseDate, released, and overdue for each version.
- **get_single_jira_version_by_id** — Get version details by id in Jira. Returns fields including archived, description, id, name, overdue, projectId, releaseDate, released, self, and userReleaseDate.
- **create_a_jira_webhook** — Register dynamic webhooks with url and webhooks list in Jira. Returns createdWebhookId or errors for each webhook registration.
- **list_all_jira_webhooks** — Get dynamic webhooks registered by the calling app in Jira. Returns webhook id, events, expirationDate, and filters like jqlFilter and fieldIdsFilter.
- **delete_a_jira_webhook_by_id** — Delete webhooks by webhookIds in Jira. Only webhooks registered by the calling app are removed. 
- **jira_webhooks_refresh** — Extend webhook life by refreshing webhooks with webhookIds in Jira. Returns expirationDate indicating the new expiry date of the refreshed webhooks. Unrecognized webhook IDs are ignored.
- **list_all_jira_plans** — Get a paginated list of plans in Jira. Returns fields id, name, scenarioId, status, and issueSources for each plan. Supports includeTrashed and includeArchived filters.
- **list_all_jira_search_users** — Find active users matching query, accountId, or property in Jira. Returns user accountId, displayName, active status, avatarUrls, and self link. Requires query, accountId, or property parameter.

## How it works

1. **Link your customer's Jira account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach Jira.** The Proxy API is a 1-to-1 mapping of the Jira API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Escalate support tickets to engineering without context loss** — Customer support platforms let agents push bug reports directly into Jira with full context—screenshots, logs, and customer details—so engineering teams can triage without back-and-forth. Bidirectional status sync means agents know the moment a fix ships.
- **Auto-create Jira issues from security and compliance alerts** — Security and compliance SaaS products automatically generate Jira issues when vulnerabilities or policy violations are detected, attaching raw scan data and assigning the right team. Webhook-driven status tracking closes the loop when remediation is confirmed.
- **Surface engineering progress inside product management tools** — Product and feedback management platforms push feature requests and epics into Jira, then pull real-time status of linked sub-tasks back via JQL search. This gives product and GTM teams live visibility into engineering velocity without requiring Jira seats.
- **Log rich bug reports from QA and testing platforms** — QA and automated testing tools push detailed failure reports—video recordings, DOM snapshots, console logs—directly into Jira as issues with attachments, assigned to the right developer. This eliminates manual bug filing and accelerates fix cycles.
- **Sync project and sprint data into analytics dashboards** — Engineering analytics and DevOps intelligence platforms pull issue data, statuses, and user assignments from Jira to compute cycle time, throughput, and bottleneck metrics across teams and projects.

## What you can build

- **Two-way ticket status sync** — Keep your app's tickets and Jira issues in lockstep by registering webhooks for status changes and pushing updates back, so neither side goes stale.
- **Dynamic Jira issue creation form** — Fetch projects, issue types, priorities, labels, and required custom fields from the user's Jira instance at runtime to render a fully accurate issue creation form inside your product.
- **Contextual attachment sync** — Automatically attach logs, screenshots, screen recordings, or audit trails to Jira issues at creation time so engineers have everything they need without switching tools.
- **JQL-powered issue search and display** — Embed a live, filterable view of Jira issues inside your app using JQL queries, letting users see relevant engineering work scoped to their project, label, or status.
- **User and project picker components** — Populate assignee and project dropdowns by fetching users and projects from your customer's Jira instance, ensuring issues land in the right place with the right owner.
- **Real-time webhook-driven event feed** — Register and manage Jira webhooks to stream issue creation, update, and deletion events into your app for real-time notifications, audit logs, or workflow triggers.

## FAQs

### What authentication methods does the Jira integration support?

Truto supports OAuth 2.0 for Jira Cloud, which is the recommended approach for end-user authorization. Truto handles the full OAuth flow, token refresh, and secure credential storage so you don't manage any of it yourself.

### How does Truto handle Jira's heavily customized fields and issue types?

You can use the create issue metadata endpoint (list_all_jira_issue_createmeta) to dynamically discover the projects, issue types, required fields, and custom fields configured on each customer's Jira instance. This lets you render accurate forms and avoid creation failures due to missing required fields.

### Can I search for Jira issues using JQL through Truto?

Yes. The list_all_jira_search endpoint accepts JQL queries, giving you full access to Jira's powerful query language. You can filter by project, status, labels, assignee, date ranges, and any custom field.

### Does Truto support real-time updates from Jira via webhooks?

Yes. You can create, list, refresh, and delete Jira webhooks through Truto's API. This lets you listen for events like issue creation, updates, and deletion to keep your app in sync without polling.

### How does Truto handle pagination and rate limits for the Jira API?

Truto automatically manages cursor-based and offset pagination across Jira's list endpoints, and handles rate limit responses with appropriate backoff and retry logic. You receive clean, paginated results without writing retry logic yourself.

### Does the Jira integration work through Truto's Unified Ticketing API?

Yes. Jira is fully mapped to Truto's Unified Ticketing API covering Tickets, Comments, Attachments, Collections (projects), Tags (labels), Users, Ticket Types, Ticket Statuses, and Priorities. You can also use Jira-specific proxy endpoints for capabilities like JQL search or issue metadata that go beyond the unified model.

## Related reading

- [Connect Jira to Claude: Coordinate Projects & Team Collaboration](https://truto.one/blog/connect-jira-to-claude-coordinate-projects-team-collaboration/) — Learn how to connect Jira to Claude using a managed Model Context Protocol (MCP) server. Automate issue tracking, JQL searches, and sprint triage.
- [Connect Jira to ChatGPT: Automate Issue Tracking & Task Updates](https://truto.one/blog/connect-jira-to-chatgpt-automate-issue-tracking-task-updates/) — Learn how to connect Jira to ChatGPT using a managed Model Context Protocol (MCP) server. Automate ticket triage, issue updates, and IT workflows without building custom API integrations.
- [How to Connect Jira to AI Agents: Tool Calling & Workflow Automation](https://truto.one/blog/connect-jira-to-ai-agents-streamline-workflows-dev-operations/) — Learn how to connect Jira to AI agents using Truto's dynamic tool calling, OAuth handling, and ready-made Jira tools for autonomous ITSM workflows.
- [How to Build an AI Product That Auto-Responds to Zendesk and Jira Tickets](https://truto.one/blog/how-to-build-an-ai-product-that-auto-responds-to-zendesk-and-jira-tickets/) — Technical guide to building an AI auto-responder for Zendesk and Jira tickets — covering architecture, API quirks, rate limits, and how unified ticketing APIs accelerate shipping.
