GitLab CI/CD jobs API

Operations about jobs

Operations 7

GET /api/v4/runners/{id}/jobs List runner's jobs #
POST /api/v4/jobs/request #
PUT /api/v4/jobs/{id} #
PATCH /api/v4/jobs/{id}/trace #
POST /api/v4/jobs/{id}/artifacts/authorize #
POST /api/v4/jobs/{id}/artifacts #
GET /api/v4/jobs/{id}/artifacts #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/gitlab-ci-jobs-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

gitlab-ci-jobs-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GitLab access_requests Jobs API
  version: v4
  description: Operations related to access requests
servers:
- url: https://gitlab.com
tags:
- name: jobs
  description: Operations about jobs
paths:
  /api/v4/runners/{id}/jobs:
    get:
      summary: List runner's jobs
      description: List jobs that are being processed or were processed by the specified runner. The list of jobs is limited to projects where the user has at least the Reporter role.
      parameters:
      - in: path
        name: id
        description: The ID of a runner
        required: true
        schema:
          type: integer
          format: int32
      - in: query
        name: system_id
        description: System ID associated with the runner manager
        required: false
        schema:
          type: string
      - in: query
        name: status
        description: Status of the job
        required: false
        schema:
          type: string
          enum:
          - created
          - waiting_for_resource
          - preparing
          - waiting_for_callback
          - pending
          - running
          - success
          - failed
          - canceling
          - canceled
          - skipped
          - manual
          - scheduled
      - in: query
        name: order_by
        description: Order by `id`
        required: false
        schema:
          type: string
          enum:
          - id
      - in: query
        name: sort
        description: Sort by `asc` or `desc` order. Specify `order_by` as well, including for `id`
        required: false
        schema:
          type: string
          enum:
          - asc
          - desc
          default: desc
      - in: query
        name: cursor
        description: Cursor for obtaining the next set of records
        required: false
        schema:
          type: string
      - in: query
        name: page
        description: Current page number
        required: false
        example: 1
        schema:
          type: integer
          format: int32
          default: 1
      - in: query
        name: per_page
        description: Number of items per page
        required: false
        example: 20
        schema:
          type: integer
          format: int32
          default: 20
      responses:
        '200':
          description: List jobs running on a runner
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_Ci_JobBasicWithProject'
        '401':
          description: Unauthorized
        '403':
          description: No access granted
        '404':
          description: Runner not found
      tags:
      - jobs
      operationId: getApiV4RunnersIdJobs
  /api/v4/jobs/request:
    post:
      description: Request a job
      responses:
        '201':
          description: Job was scheduled
        '204':
          description: No job for Runner
        '403':
          description: Forbidden
        '409':
          description: Conflict
        '422':
          description: Runner is orphaned
        '429':
          description: Too Many Requests
      tags:
      - jobs
      operationId: postApiV4JobsRequest
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postApiV4JobsRequest'
        required: true
  /api/v4/jobs/{id}:
    put:
      description: Update a job
      parameters:
      - in: path
        name: id
        description: Job's ID
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: Job was updated
        '202':
          description: Update accepted
        '400':
          description: Unknown parameters
        '403':
          description: Forbidden
        '409':
          description: Conflict
        '429':
          description: Too Many Requests
      tags:
      - jobs
      operationId: putApiV4JobsId
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/putApiV4JobsId'
        required: true
  /api/v4/jobs/{id}/trace:
    patch:
      description: Append a patch to the job trace
      parameters:
      - in: path
        name: id
        description: Job's ID
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '202':
          description: Trace was patched
        '400':
          description: Missing Content-Range header
        '403':
          description: Forbidden
        '416':
          description: Range not satisfiable
        '429':
          description: Too Many Requests
      tags:
      - jobs
      operationId: patchApiV4JobsIdTrace
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchApiV4JobsIdTrace'
        required: true
  /api/v4/jobs/{id}/artifacts/authorize:
    post:
      description: Authorize uploading job artifact
      parameters:
      - in: path
        name: id
        description: Job's ID
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '200':
          description: Upload allowed
        '403':
          description: Forbidden
        '405':
          description: Artifacts support not enabled
        '413':
          description: File too large
        '429':
          description: Too Many Requests
      tags:
      - jobs
      operationId: postApiV4JobsIdArtifactsAuthorize
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postApiV4JobsIdArtifactsAuthorize'
        required: true
  /api/v4/jobs/{id}/artifacts:
    post:
      description: Upload a job artifact
      parameters:
      - in: path
        name: id
        description: Job's ID
        required: true
        schema:
          type: integer
          format: int32
      responses:
        '201':
          description: Artifact uploaded
        '400':
          description: Bad request
        '403':
          description: Forbidden
        '405':
          description: Artifacts support not enabled
        '413':
          description: File too large
        '429':
          description: Too Many Requests
      tags:
      - jobs
      operationId: postApiV4JobsIdArtifacts
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postApiV4JobsIdArtifacts'
        required: true
    get:
      description: Download the artifacts file for job
      parameters:
      - in: path
        name: id
        description: Job's ID
        required: true
        schema:
          type: integer
          format: int32
      - in: query
        name: token
        description: Job's authentication token
        required: false
        schema:
          type: string
      - in: query
        name: direct_download
        description: Perform direct download from remote storage instead of proxying artifacts
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '200':
          description: Download allowed
        '302':
          description: Found
        '401':
          description: Unauthorized
        '403':
          description: Forbidden
        '404':
          description: Artifact not found
        '429':
          description: Too Many Requests
      tags:
      - jobs
      operationId: getApiV4JobsIdArtifacts
components:
  schemas:
    patchApiV4JobsIdTrace:
      type: object
      properties:
        token:
          type: string
          description: Job's authentication token
        debug_trace:
          type: boolean
          description: Enable or disable the debug trace
      description: Append a patch to the job trace
    API_Entities_Ci_JobBasicWithProject:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        status:
          type: string
          example: waiting_for_resource
        stage:
          type: string
          example: deploy
        name:
          type: string
          example: deploy_to_production
        ref:
          type: string
          example: main
        tag:
          type: boolean
        coverage:
          type: number
          format: float
          example: 98.29
        allow_failure:
          type: boolean
        created_at:
          type: string
          format: date-time
          example: '2015-12-24T15:51:21.880Z'
        started_at:
          type: string
          format: date-time
          example: '2015-12-24T17:54:30.733Z'
        finished_at:
          type: string
          format: date-time
          example: '2015-12-24T17:54:31.198Z'
        erased_at:
          type: string
          format: date-time
          example: '2015-12-24T18:00:29.728Z'
        duration:
          type: number
          format: float
          example: 0.465
          description: Time spent running
        queued_duration:
          type: number
          format: float
          example: 0.123
          description: Time spent enqueued
        user:
          $ref: '#/components/schemas/API_Entities_User'
        commit:
          $ref: '#/components/schemas/API_Entities_Commit'
        pipeline:
          $ref: '#/components/schemas/API_Entities_Ci_PipelineBasic'
        failure_reason:
          type: string
          example: script_failure
        web_url:
          type: string
          example: https://example.com/foo/bar/-/jobs/1
        project:
          $ref: '#/components/schemas/API_Entities_ProjectIdentity'
      required:
      - id
      - status
      - stage
      - name
      - ref
      - tag
      - coverage
      - allow_failure
      - created_at
      - started_at
      - finished_at
      - erased_at
      - duration
      - queued_duration
      - user
      - commit
      - pipeline
      - web_url
      - project
      description: API_Entities_Ci_JobBasicWithProject model
    API_Entities_ProjectIdentity:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        description:
          type: string
          example: desc
        name:
          type: string
          example: project1
        name_with_namespace:
          type: string
          example: John Doe / project1
        path:
          type: string
          example: project1
        path_with_namespace:
          type: string
          example: namespace1/project1
        created_at:
          type: string
          format: date-time
          example: '2020-05-07T04:27:17.016Z'
      required:
      - id
      - description
      - name
      - name_with_namespace
      - path
      - path_with_namespace
      - created_at
    postApiV4JobsIdArtifactsAuthorize:
      type: object
      properties:
        token:
          type: string
          description: Job's authentication token
        filesize:
          type: integer
          format: int32
          description: Size of artifact file
        artifact_type:
          type: string
          description: The type of artifact
          enum:
          - archive
          - metadata
          - trace
          - junit
          - sast
          - dependency_scanning
          - container_scanning
          - dast
          - codequality
          - license_scanning
          - performance
          - metrics
          - metrics_referee
          - network_referee
          - lsif
          - dotenv
          - cobertura
          - terraform
          - accessibility
          - cluster_applications
          - secret_detection
          - requirements
          - coverage_fuzzing
          - browser_performance
          - load_performance
          - api_fuzzing
          - cluster_image_scanning
          - cyclonedx
          - requirements_v2
          - annotations
          - repository_xray
          - jacoco
          - scip
          - sarif
          - environment_key
          default: archive
      description: Authorize uploading job artifact
    API_Entities_CustomAttribute:
      type: object
      properties:
        key:
          type: string
          example: foo
        value:
          type: string
          example: bar
      required:
      - key
      - value
      description: API_Entities_CustomAttribute model
    postApiV4JobsIdArtifacts:
      type: object
      properties:
        file:
          type: string
          description: The artifact file to store (generated by Multipart middleware)
          format: binary
        token:
          type: string
          description: Job's authentication token
        expire_in:
          type: string
          description: Specify when artifact should expire
        artifact_type:
          type: string
          description: The type of artifact
          enum:
          - archive
          - metadata
          - trace
          - junit
          - sast
          - dependency_scanning
          - container_scanning
          - dast
          - codequality
          - license_scanning
          - performance
          - metrics
          - metrics_referee
          - network_referee
          - lsif
          - dotenv
          - cobertura
          - terraform
          - accessibility
          - cluster_applications
          - secret_detection
          - requirements
          - coverage_fuzzing
          - browser_performance
          - load_performance
          - api_fuzzing
          - cluster_image_scanning
          - cyclonedx
          - requirements_v2
          - annotations
          - repository_xray
          - jacoco
          - scip
          - sarif
          - environment_key
          default: archive
        artifact_format:
          type: string
          description: The format of artifact
          enum:
          - raw
          - zip
          - gzip
          default: zip
        metadata:
          type: string
          description: The artifact metadata to store (generated by Multipart middleware)
          format: binary
        accessibility:
          type: string
          description: Specify accessibility level of artifact private/public
      required:
      - file
      description: Upload a job artifact
    putApiV4JobsId:
      type: object
      properties:
        token:
          type: string
          description: Job's authentication token
        state:
          type: string
          description: 'Job''s status: running, success, failed'
        checksum:
          type: string
          description: Job's trace CRC32 checksum
        failure_reason:
          type: string
          description: Job's failure_reason
        output:
          type: object
          description: Build log state
          properties:
            checksum:
              type: string
              description: Job's trace CRC32 checksum
            bytesize:
              type: integer
              format: int32
              description: Job's trace size in bytes
        exit_code:
          type: integer
          format: int32
          description: Job's exit code
      required:
      - token
      description: Update a job
    API_Entities_User:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        username:
          type: string
          example: admin
        public_email:
          type: string
          example: john@example.com
        name:
          type: string
          example: Administrator
        state:
          type: string
          example: active
        locked:
          type: boolean
        avatar_url:
          type: string
          example: https://gravatar.com/avatar/1
        avatar_path:
          type: string
          example: /user/avatar/28/The-Big-Lebowski-400-400.png
        custom_attributes:
          type: array
          items:
            $ref: '#/components/schemas/API_Entities_CustomAttribute'
        web_url:
          type: string
          example: https://gitlab.example.com/root
        created_at:
          type: string
        bio:
          type: string
        location:
          type: string
        linkedin:
          type: string
        twitter:
          type: string
        discord:
          type: string
        website_url:
          type: string
        github:
          type: string
        job_title:
          type: string
        pronouns:
          type: string
        organization:
          type: string
        bot:
          type: boolean
        work_information:
          type: string
        followers:
          type: string
        following:
          type: string
        is_followed:
          type: string
        local_time:
          type: string
      required:
      - id
      - username
      - public_email
      - name
      - state
      - locked
      - avatar_url
      - web_url
      - bio
      - location
      - linkedin
      - twitter
      - discord
      - website_url
      - github
      - job_title
      - pronouns
      - organization
      - bot
      - work_information
      - local_time
    API_Entities_Ci_PipelineBasic:
      type: object
      properties:
        id:
          type: integer
          format: int32
          example: 1
        iid:
          type: integer
          format: int32
          example: 2
        project_id:
          type: integer
          format: int32
          example: 3
        sha:
          type: string
          example: 0ec9e58fdfca6cdd6652c083c9edb53abc0bad52
        ref:
          type: string
          example: feature-branch
        status:
          type: string
          example: success
        source:
          type: string
          example: push
        created_at:
          type: string
          format: date-time
          example: '2022-10-21T16:49:48.000+02:00'
        updated_at:
          type: string
          format: date-time
          example: '2022-10-21T16:49:48.000+02:00'
        web_url:
          type: string
          example: https://gitlab.example.com/gitlab-org/gitlab-foss/-/pipelines/61
      required:
      - id
      - iid
      - project_id
      - sha
      - ref
      - status
      - source
      - created_at
      - updated_at
      - web_url
      description: API_Entities_Ci_PipelineBasic model
    API_Entities_Commit:
      type: object
      properties:
        id:
          type: string
          example: 2695effb5807a22ff3d138d593fd856244e155e7
        short_id:
          type: string
          example: 2695effb
        created_at:
          type: string
          format: date-time
          example: '2017-07-26T11:08:53.000+02:00'
        parent_ids:
          type: array
          items:
            type: string
          example:
          - 2a4b78934375d7f53875269ffd4f45fd83a84ebe
        title:
          type: string
          example: Initial commit
        message:
          type: string
          example: Initial commit
        author_name:
          type: string
          example: John Smith
        author_email:
          type: string
          example: john@example.com
        authored_date:
          type: string
          format: date-time
          example: '2012-05-28T04:42:42-07:00'
        committer_name:
          type: string
          example: Jack Smith
        committer_email:
          type: string
          example: jack@example.com
        committed_date:
          type: string
          format: date-time
          example: '2012-05-28T04:42:42-07:00'
        trailers:
          type: object
          example:
            Merged-By: Jane Doe janedoe@gitlab.com
        extended_trailers:
          type: object
          example:
            Signed-off-by:
            - John Doe <johndoe@gitlab.com>
            - Jane Doe <janedoe@gitlab.com>
        web_url:
          type: string
          example: https://gitlab.example.com/janedoe/gitlab-foss/-/commit/ed899a2f4b50b4370feeea94676502b42383c746
      required:
      - id
      - short_id
      - created_at
      - parent_ids
      - title
      - message
      - author_name
      - author_email
      - authored_date
      - committer_name
      - committer_email
      - committed_date
      - trailers
      - extended_trailers
      - web_url
      description: API_Entities_Commit model
    postApiV4JobsRequest:
      type: object
      properties:
        token:
          type: string
          description: Runner's authentication token
        system_id:
          type: string
          description: Runner's system identifier
        last_update:
          type: string
          description: Runner's queue last_update token
        info:
          type: object
          description: Runner's metadata
          properties:
            name:
              type: string
              description: Runner's name
            version:
              type: string
              description: Runner's version
            revision:
              type: string
              description: Runner's revision
            platform:
              type: string
              description: Runner's platform
            architecture:
              type: string
              description: Runner's architecture
            executor:
              type: string
              description: Runner's executor
            features:
              type: object
              description: Runner's features
            config:
              type: object
              description: Runner's config
              properties:
                gpus:
                  type: string
                  description: GPUs enabled
            labels:
              type: object
              description: Runner's labels
        session:
          type: object
          description: Runner's session data
          properties:
            url:
              type: string
              description: Session's url
            certificate:
              type: string
              description: Session's certificate
            authorization:
              type: string
              description: Session's authorization
      required:
      - token
      description: Request a job
  securitySchemes:
    access_token_header:
      type: apiKey
      name: PRIVATE-TOKEN
      in: header
    access_token_query:
      type: apiKey
      name: private_token
      in: query