Hello Support,
I am currently working on calculating KPIs based on Jira board data, specifically measuring the time each issue spends in various statuses such as "To Do", "In Progress", and "Done".
I am using the Jira REST API endpoint /rest/api/3/search
with the following JQL to fetch issues:
maxResults=10&jql=project IN ("Scrum - Application Engineering", "Kanban - Application Engineering", "Bug Lifecycle Management") AND issuetype NOT IN ("Job request", Meeting, Spike) AND status WAS IN (Rework, Reopened) AND created >= startOfMonth()
From the response, I extract each issue and its assignee. To calculate the time spent in each status, I need historical transition data. I found that the changelog expansion on the issue endpoint provides this:
{/rest/api/3/issue/{issueIdOrKey}?expand=changelog
However, this API only supports one issue at a time. Since I need to process a large number of issues (e.g., 1000+), making individual requests per issue is inefficient and hits API rate limits quickly.
My questions are:
Is there any Jira REST API that supports retrieving changelog or status transition history for multiple issues in a single request?
If not, is there an alternative recommended approach to efficiently retrieve time spent in each status across many issues?
Are there any official plugins, webhooks, or reporting APIs that can help with this use case?
I would appreciate any guidance or best practices for efficiently extracting this data at scale.
Thank you for your support.
Hi @Aditya Sinha ,
Welcome to the Community !
You may refer to previous articles https://community.atlassian.com/forums/Jira-articles/Getting-time-in-status-using-API/ba-p/1814555 wherein python lib is used.
Also, same discussion related to time in status is mentioned at https://community.atlassian.com/forums/Jira-questions/Time-in-status-via-Jira-API/qaq-p/1935065 - citing message from this link as below
If you read an issue over the REST API, you can get its full history, which includes a date and time of every change of status (and create as well, of course), so you can easily code something to parse the history for each "changed status to" line.
Hi @Piyush Annadate _ACE Pune_ . Thanks for the solution but i am looking for code in nodejs not in pyhton. You are using pyhton inbuilt library for finding time in status. I want solution in node. Could you please help
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
Hi @Aditya Sinha ! 👋
Welcome to the Community!
Great and detailed question — and you're absolutely right: retrieving status transition history at scale using the standard Jira REST API can become very inefficient due to the one-issue-per-request limit with changelogs.
Let me break down your questions and provide recommendations:
Unfortunately, no — Jira Cloud’s current REST API (/rest/api/3/search
) doesn’t include full changelog/history per issue in bulk.
You can only get changelog data by expanding it per issue:
GET /rest/api/3/issue/{issueIdOrKey}?expand=changelog
So for 1000+ issues, this means 1000+ API calls — which will quickly hit rate limits (usually 500 requests per 10 seconds).
If you’re open to using a Marketplace app, I’d recommend checking out Time in Status.
With Time in Status, you can:
Build a report showing how long each issue spent from Created until reaching a specific status (like "Agreed")
Apply filters to display only issues where this duration > 7 days
Export the data to Excel or CSV
Visualize bottlenecks or long waits in workflow stages
From status: Created (or simply the issue creation date)
To status: Agreed Then filter issues where the time exceeds 7 days.
It’s a much easier way to get exactly the insights you need without complex automation.
Apps developed by my team.
Hope this helps! Let me know if you want help configuring a report like that. 🙌
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.
You must be a registered user to add a comment. If you've already registered, sign in. Otherwise, register and sign in.