GitLab CI/CD gitlab_pages API

Operations about gitlab_pages

Operations 10

DELETE /api/v4/projects/{id}/pages Unpublish pages #
PATCH /api/v4/projects/{id}/pages Update pages settings #
GET /api/v4/projects/{id}/pages Get pages settings #
GET /api/v4/projects/{id}/pages/domains #
POST /api/v4/projects/{id}/pages/domains #
GET /api/v4/projects/{id}/pages/domains/{domain} #
PUT /api/v4/projects/{id}/pages/domains/{domain} #
DELETE /api/v4/projects/{id}/pages/domains/{domain} #
PUT /api/v4/projects/{id}/pages/domains/{domain}/verify #
GET /api/v4/pages/domains #

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-gitlab-pages-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-gitlab-pages-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: GitLab access_requests Gitlab Pages API
  version: v4
  description: Operations related to access requests
servers:
- url: https://gitlab.com
tags:
- name: gitlab_pages
  description: Operations about gitlab_pages
paths:
  /api/v4/projects/{id}/pages:
    delete:
      summary: Unpublish pages
      description: Remove pages. The user must have administrator access. This feature was introduced in GitLab 12.6
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project owned by the authenticated user
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Unpublish pages
        '401':
          description: Unauthorized
        '404':
          description: Not Found
      tags:
      - gitlab_pages
      operationId: deleteApiV4ProjectsIdPages
    patch:
      summary: Update pages settings
      description: Update page settings for a project. User must have administrative access.
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project owned by the authenticated user
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Update pages settings
        '401':
          description: Unauthorized
        '404':
          description: Not Found
      tags:
      - gitlab_pages
      operationId: patchApiV4ProjectsIdPages
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/patchApiV4ProjectsIdPages'
        required: true
    get:
      summary: Get pages settings
      description: Get pages URL and other settings. This feature was introduced in Gitlab 16.8
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project owned by the authenticated user
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Get pages settings
        '401':
          description: Unauthorized
        '404':
          description: Not Found
      tags:
      - gitlab_pages
      operationId: getApiV4ProjectsIdPages
  /api/v4/projects/{id}/pages/domains:
    get:
      description: Get all pages domains
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project owned by the authenticated user
        required: true
        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: Get all pages domains
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/API_Entities_PagesDomain'
      tags:
      - gitlab_pages
      operationId: getApiV4ProjectsIdPagesDomains
    post:
      description: Create a new pages domain
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project owned by the authenticated user
        required: true
        schema:
          type: string
      responses:
        '201':
          description: Create a new pages domain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_PagesDomain'
      tags:
      - gitlab_pages
      operationId: postApiV4ProjectsIdPagesDomains
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/postApiV4ProjectsIdPagesDomains'
        required: true
  /api/v4/projects/{id}/pages/domains/{domain}:
    get:
      description: Get a single pages domain
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project owned by the authenticated user
        required: true
        schema:
          type: string
      - in: path
        name: domain
        description: The domain
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Get a single pages domain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_PagesDomain'
      tags:
      - gitlab_pages
      operationId: getApiV4ProjectsIdPagesDomainsDomain
    put:
      description: Updates a pages domain
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project owned by the authenticated user
        required: true
        schema:
          type: string
      - in: path
        name: domain
        description: The domain
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Updates a pages domain
      tags:
      - gitlab_pages
      operationId: putApiV4ProjectsIdPagesDomainsDomain
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/putApiV4ProjectsIdPagesDomainsDomain'
        required: true
    delete:
      description: Delete a pages domain
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project owned by the authenticated user
        required: true
        schema:
          type: string
      - in: path
        name: domain
        description: The domain
        required: true
        schema:
          type: string
      responses:
        '204':
          description: Delete a pages domain
      tags:
      - gitlab_pages
      operationId: deleteApiV4ProjectsIdPagesDomainsDomain
  /api/v4/projects/{id}/pages/domains/{domain}/verify:
    put:
      description: Verify a pages domain
      parameters:
      - in: path
        name: id
        description: The ID or URL-encoded path of the project owned by the authenticated user
        required: true
        schema:
          type: string
      - in: path
        name: domain
        description: The domain to verify
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Verify a pages domain
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_PagesDomain'
      tags:
      - gitlab_pages
      operationId: putApiV4ProjectsIdPagesDomainsDomainVerify
  /api/v4/pages/domains:
    get:
      description: Get all pages domains
      parameters:
      - in: query
        name: domain
        description: The domain of the GitLab Pages site to filter on.
        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: Get all pages domains
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/API_Entities_PagesDomainBasic'
      tags:
      - gitlab_pages
      operationId: getApiV4PagesDomains
components:
  schemas:
    API_Entities_PagesDomainCertificate:
      type: object
      properties:
        subject:
          type: string
        expired:
          type: string
        certificate:
          type: string
        certificate_text:
          type: string
      required:
      - subject
      - expired
      - certificate
      - certificate_text
    putApiV4ProjectsIdPagesDomainsDomain:
      type: object
      properties:
        certificate:
          type: string
          description: The certificate
          format: binary
        key:
          type: string
          description: The key
          format: binary
        auto_ssl_enabled:
          type: boolean
          description: Enables automatic generation of SSL certificates issued by Let's Encrypt for custom domains.
      description: Updates a pages domain
    API_Entities_PagesDomainCertificateExpiration:
      type: object
      properties:
        expired:
          type: string
        expiration:
          type: string
      required:
      - expired
      - expiration
    API_Entities_PagesDomain:
      type: object
      properties:
        domain:
          type: string
        url:
          type: string
        verified:
          type: string
        verification_code:
          type: string
        enabled_until:
          type: string
        auto_ssl_enabled:
          type: string
        certificate:
          $ref: '#/components/schemas/API_Entities_PagesDomainCertificate'
      required:
      - domain
      - url
      - verified
      - verification_code
      - enabled_until
      - auto_ssl_enabled
      description: API_Entities_PagesDomain model
    patchApiV4ProjectsIdPages:
      type: object
      properties:
        pages_unique_domain_enabled:
          type: boolean
          description: Whether to use unique domain
        pages_https_only:
          type: boolean
          description: Whether to force HTTPS
        pages_primary_domain:
          type: string
          description: Set pages primary domain
      description: Update pages settings
    postApiV4ProjectsIdPagesDomains:
      type: object
      properties:
        domain:
          type: string
          description: The domain
        certificate:
          type: string
          description: The certificate
          format: binary
        key:
          type: string
          description: The key
          format: binary
        auto_ssl_enabled:
          type: boolean
          description: Enables automatic generation of SSL certificates issued by Let's Encrypt for custom domains.
          default: false
        user_provided_certificate:
          type: string
        user_provided_key:
          type: string
      required:
      - domain
      description: Create a new pages domain
    API_Entities_PagesDomainBasic:
      type: object
      properties:
        domain:
          type: string
        url:
          type: string
        project_id:
          type: string
        verified:
          type: string
        verification_code:
          type: string
        enabled_until:
          type: string
        auto_ssl_enabled:
          type: string
        certificate_expiration:
          $ref: '#/components/schemas/API_Entities_PagesDomainCertificateExpiration'
      required:
      - domain
      - url
      - project_id
      - verified
      - verification_code
      - enabled_until
      - auto_ssl_enabled
      description: API_Entities_PagesDomainBasic model
  securitySchemes:
    access_token_header:
      type: apiKey
      name: PRIVATE-TOKEN
      in: header
    access_token_query:
      type: apiKey
      name: private_token
      in: query