Forums

Articles
Create
cancel
Showing results for 
Search instead for 
Did you mean: 

Request for Efficient Method to Retrieve Status Transition Timings for Multiple Issues via Jira REST

Aditya Sinha
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
May 19, 2025

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:

  1. Is there any Jira REST API that supports retrieving changelog or status transition history for multiple issues in a single request?

  2. If not, is there an alternative recommended approach to efficiently retrieve time spent in each status across many issues?

  3. 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.




2 answers

1 vote
Piyush Annadate _ACE Pune_
Community Champion
May 19, 2025

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.

 

Aditya Sinha
I'm New Here
I'm New Here
Those new to the Atlassian Community have posted less than three times. Give them a warm welcome!
May 19, 2025

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 

Piyush Annadate _ACE Pune_
Community Champion
May 19, 2025

Not sure about the node.js - you may check the library at https://www.npmjs.com/package/jira-client

0 votes
Iryna Menzheha_SaaSJet
Atlassian Partner
May 19, 2025

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:


1. Is there a Jira API to get changelogs for multiple issues in one call?

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).

📈 Alternative: Try Time in Status

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

image.png

📊 In your case, also try  Time Metrics Tracker| Time Between Statuses app and set report:

  • From status: Created (or simply the issue creation date)

  • To status: Agreed Then filter issues where the time exceeds 7 days.

image.png

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. 🙌

Suggest an answer

Log in or Sign up to answer
DEPLOYMENT TYPE
CLOUD
PRODUCT PLAN
STANDARD
TAGS
AUG Leaders

Atlassian Community Events