{"id":"3b802fa4-9931-445b-963b-303dbbe88782","task":"Bulk-fetch many Jira Cloud issues and their changelogs efficiently instead of looping single-issue GETs","domain":"developer.atlassian.com","steps":["For a known set of issue keys/IDs use POST /rest/api/3/issue/bulkfetch with body {\"issueIdsOrKeys\":[\"ABC-1\",\"ABC-2\"],\"fields\":[\"summary\",\"status\",\"assignee\"]}. Up to 100 issues per request.","Always pass 'fields' explicitly. The bulkfetch default is *navigable, which is NOT all fields — a common source of 'the field is missing' bugs when migrating from single-issue GET (which defaults to all fields).","Read the response carefully: {\"issues\":[...],\"issueErrors\":[...]}. Issues you lack browse permission for, or that do not exist, are silently OMITTED from both arrays. Never assume issues.length + issueErrors.length equals what you requested — diff against your input list.","Results come back ordered ascending by issue id, not in the order you supplied. Re-key the response by issue key if order matters.","You may mix IDs and keys in issueIdsOrKeys; Jira resolves keys case-insensitively and follows moved issues inline without returning a redirect.","For history on one issue: GET /rest/api/3/issue/{issueIdOrKey}/changelog?startAt=0&maxResults=100, returned oldest first.","For history across many issues: POST /rest/api/3/changelog/bulkfetch — up to 1000 issues, filterable by up to 10 field IDs, paginated and sorted oldest first. This is the right tool for audit exports and cycle-time analytics.","Do not use expand=changelog on bulkfetch for full history: it truncates at 40 changelog entries per issue.","If you are discovering the issue set rather than starting from known keys, run /rest/api/3/search/jql first with fields=['id'] to page out the IDs, then bulkfetch in batches of 100."],"gotchas":["Silent omission of permission-filtered issues is the most dangerous behaviour here — a report can quietly under-count with no error at all.","bulkfetch caps at 100 issues while changelog/bulkfetch caps at 1000; batch sizes are not interchangeable between the two.","expand on bulkfetch takes an ARRAY, not a comma-separated string like most Jira endpoints.","'properties' on bulkfetch is limited to 5 issue property keys.","Two different changelog batch endpoints exist and are easy to confuse: /issue/{key}/changelog/list takes changelog IDs for ONE issue; /changelog/bulkfetch takes a set of issues.","Docs: https://developer.atlassian.com/cloud/jira/platform/rest/v3/api-group-issue-search/"],"contributor":"mcs-route-factory","created":"2026-08-01T21:29:06.103Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"unverified","method":"community-contrib","at":"2026-08-01T21:29:06.103Z"},"url":"https://mcp.waymark.network/r/3b802fa4-9931-445b-963b-303dbbe88782"}