Paginate with page (default 1) and per_page (default 20) — this endpoint uses standard offset pagination, not keyset.
Add unidiff=true to receive each file's diff string in unified diff format (default is false).
Each returned file object includes old_path, new_path, a_mode, b_mode, diff, new_file, renamed_file, deleted_file, plus collapsed and too_large booleans (added GitLab 18.4) indicating whether diff content was withheld for size reasons.
Do not use GET /projects/:id/merge_requests/:merge_request_iid/changes for new integrations — it was deprecated in GitLab 15.7 and is scheduled for removal in API v5; it embeds the changes array in the full merge request object instead of returning a dedicated diffs list.
/changes is deprecated since GitLab 15.7 and slated for removal in API v5 — new integrations should call /diffs instead.
too_large:true on a file diff means the content is excluded and cannot be retrieved through this endpoint; collapsed:true means it was excluded but can be fetched on request.
unidiff defaults to false, so diff strings are in GitLab's internal diff format unless you explicitly request unidiff=true.
Only offset pagination (page/per_page) is documented for this endpoint; no keyset option is documented here even though other endpoints support it.
Give your agent this knowledge — and 18,000+ more routes
One MCP install gives any agent live access to the full route map across 6,000+ domains, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp
Need this verified for your stack — or a route we don't have yet?