Skip to main content

gitlab:api

GitLab REST and GraphQL API access via glab. Use when making API requests, querying project data, or automating GitLab operations.

Stars
13
Source
bendrucker/claude
Updated
2026-05-31
Slug
bendrucker--claude--api
View on GitHubRaw SKILL.md

// install — copy + paste into any project

mkdir -p .claude/skills && curl -fsSL https://raw.githubusercontent.com/bendrucker/claude/HEAD/plugins/gitlab/skills/api/SKILL.md -o .claude/skills/api.md

Drops the SKILL.md into .claude/skills/api.md. Works with Claude Code, Cursor, and any agent that loads SKILL.md files from .claude/skills/.

GitLab API

REST and GraphQL API access via glab api.

Placeholders

Auto-resolve to current project values:

  • :fullpath - Full project path (e.g., group/project)
  • :id - Project ID
  • :branch - Current branch
  • :user / :username - Current user
glab api projects/:fullpath/merge_requests

REST

glab api projects/:id/issues                          # GET
glab api projects/:id/issues -X POST -f title="..."   # POST with field
glab api projects/:id/issues --paginate               # All pages

Pagination pitfall: --paginate concatenates JSON arrays across pages as ][, producing invalid JSON (e.g., [{...}][{...}]). Fix by replacing ][ with , before parsing: .replace(/\]\s*\[/g, ",").

Nested fields: -f and --raw-field silently drop bracket-nested keys like position[base_sha]=.... For nested objects, write JSON to a file and use --input:

echo '{"position":{"base_sha":"abc","head_sha":"def","old_path":"file.ts","new_path":"file.ts","position_type":"text","new_line":10}}' > /tmp/payload.json
glab api projects/:id/merge_requests/:iid/discussions -X POST -H "Content-Type: application/json" --input /tmp/payload.json

GraphQL

glab api graphql -f query='{ currentUser { username } }'

For pagination, accept $endCursor variable and fetch pageInfo { hasNextPage, endCursor }.

Output

  • --output json (default) - Pretty-printed JSON
  • --output ndjson - Newline-delimited, works with jq streaming

Documentation

  • REST endpoints: /api/ in GitLab docs
  • GraphQL schema: /api/graphql/reference/