Sapilon becomes publicly available on 1 December 2026: 42 days to go. The core goes open source the same day →

GitLab integration

In short

Read projects and pipelines, and work with issues and merge requests. Connect it on the Integrations page; your app then calls GitLab through Sapilon without ever holding a GitLab credential.

Lets your app list projects and pipelines, browse a repository tree, and open, update and comment on issues and merge requests on gitlab.com, with a personal, group or project access token.

Connecting

On the Integrations page choose Connect on GitLab and fill in:

  • Access token — GitLab → Edit profile → Access tokens (or a group or project → Settings → Access tokens) → Add new token with the api scope.

Sapilon checks the key with the provider before it saves it, and stores it encrypted; it is never shown again.

  • Only gitlab.com is supported; self-managed GitLab is not.

What your app can do

Only these requests are available; anything else is refused.

  • GET /user
  • GET /projects
  • GET /projects/*
  • GET|POST /projects/*/issues
  • GET|PUT /projects/*/issues/*
  • GET|POST /projects/*/issues/*/notes
  • GET|POST /projects/*/merge_requests
  • GET|PUT /projects/*/merge_requests/*
  • GET /projects/*/pipelines
  • GET /projects/*/repository/tree

How the agent uses it

Use integrations.request('gitlab', …); paths are relative to https://gitlab.com/api/v4. Use a project’s numeric id in paths (a group/project path would need an encoded /, which is refused).

  • GET /user — the token’s account.
  • GET /projects — Example: { method: 'GET', path: '/projects', query: { membership: 'true', per_page: '50' } }. GET /projects/{id} — one project.
  • GET|POST /projects/{id}/issues, GET|PUT /projects/{id}/issues/{iid} — Example: { method: 'POST', path: '/projects/123/issues', body: { title: 'Login fails', labels: 'bug' } }; close with body: { state_event: 'close' }.
  • GET|POST /projects/{id}/issues/{iid}/notes — comments. Example: { method: 'POST', path: '/projects/123/issues/7/notes', body: { body: 'Fixed' } }.
  • GET|POST /projects/{id}/merge_requests, GET|PUT /projects/{id}/merge_requests/{iid} — list, open, read or update merge requests.
  • GET /projects/{id}/pipelines — Example: { method: 'GET', path: '/projects/123/pipelines', query: { ref: 'main' } }.
  • GET /projects/{id}/repository/tree — Example: { method: 'GET', path: '/projects/123/repository/tree', query: { path: 'docs' } }.

Deleting is not allowed.

More from GitLab: https://docs.gitlab.com/api/rest/

Last updated .

Was this page helpful?