Group wikis API

  • Tier: Premium, Ultimate
  • Offering: GitLab.com, GitLab Self-Managed, GitLab Dedicated

The group wikis API is available only in APIv4. An API for project wikis is also available.

List wiki pages

List all wiki pages for a given group.

Copy to clipboard
GET /groups/:id/wikis
AttributeTypeRequiredDescription
idinteger/stringYesThe ID or URL-encoded path of the group.
with_contentbooleanNoInclude pages’ content.
Shell Copy to clipboard
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/wikis?with_content=1"

Example response:

JSON Copy to clipboard
[
  {
    "content" : "Here is an instruction how to deploy this project.",
    "format" : "markdown",
    "slug" : "deploy",
    "title" : "deploy",
    "encoding": "UTF-8"
  },
  {
    "content" : "Our development process is described here.",
    "format" : "markdown",
    "slug" : "development",
    "title" : "development",
    "encoding": "UTF-8"
  },{
    "content" : "*  [Deploy](deploy)\n*  [Development](development)",
    "format" : "markdown",
    "slug" : "home",
    "title" : "home",
    "encoding": "UTF-8"
  }
]

Get a wiki page

Get a wiki page for a given group.

Copy to clipboard
GET /groups/:id/wikis/:slug
AttributeTypeRequiredDescription
idinteger/stringYesThe ID or URL-encoded path of the group.
slugstringYesURL-encoded slug (a unique string) of the wiki page, such as dir%2Fpage_name.
render_htmlbooleanNoReturn the rendered HTML of the wiki page.
versionstringNoWiki page version SHA.
Shell Copy to clipboard
curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/wikis/home"

Example response:

JSON Copy to clipboard
{
  "content" : "home page",
  "format" : "markdown",
  "slug" : "home",
  "title" : "home",
  "encoding": "UTF-8"
}

Create a new wiki page

Create a new wiki page for the given repository with the given title, slug, and content.

Copy to clipboard
POST /projects/:id/wikis
AttributeTypeRequiredDescription
idinteger/stringYesThe ID or URL-encoded path of the group.
contentstringYesThe content of the wiki page.
titlestringYesThe title of the wiki page.
formatstringNoThe format of the wiki page. Available formats are: markdown (default), rdoc, asciidoc, and org.
Shell Copy to clipboard
curl --data "format=rdoc&title=Hello&content=Hello world" \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     "https://gitlab.example.com/api/v4/groups/1/wikis"

Example response:

JSON Copy to clipboard
{
  "content" : "Hello world",
  "format" : "markdown",
  "slug" : "Hello",
  "title" : "Hello",
  "encoding": "UTF-8"
}

Edit an existing wiki page

Update an existing wiki page. At least one parameter is required to update the wiki page.

Copy to clipboard
PUT /groups/:id/wikis/:slug
AttributeTypeRequiredDescription
idinteger/stringYesThe ID or URL-encoded path of the group.
contentstringYes, if title is not providedThe content of the wiki page.
titlestringYes, if content is not providedThe title of the wiki page.
formatstringNoThe format of the wiki page. Available formats are markdown (default), rdoc, asciidoc, and org.
slugstringYesURL encoded slug (a unique string) of the wiki page. For example: dir%2Fpage_name.
Shell Copy to clipboard
curl --request PUT --data "format=rdoc&content=documentation&title=Docs" \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     "https://gitlab.example.com/api/v4/groups/1/wikis/foo"

Example response:

JSON Copy to clipboard
{
  "content" : "documentation",
  "format" : "markdown",
  "slug" : "Docs",
  "title" : "Docs",
  "encoding": "UTF-8"
}

Delete a wiki page

Delete a wiki page with a given slug.

Copy to clipboard
DELETE /groups/:id/wikis/:slug
AttributeTypeRequiredDescription
idinteger/stringYesThe ID or URL-encoded path of the group.
slugstringYesURL-encoded slug (a unique string) of the wiki page, such as dir%2Fpage_name.
Shell Copy to clipboard
curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/groups/1/wikis/foo"

If successful, a 204 No Content HTTP response with an empty body is expected.

Upload an attachment to the wiki repository

Upload a file to the attachment folder inside the wiki’s repository. The attachment folder is the uploads folder.

Copy to clipboard
POST /groups/:id/wikis/attachments
AttributeTypeRequiredDescription
idinteger/stringYesThe ID or URL-encoded path of the group.
filestringYesThe attachment to be uploaded.
branchstringNoThe name of the branch. Defaults to the wiki repository default branch.

To upload a file from your file system, use the --form argument. This causes cURL to post data using the header Content-Type: multipart/form-data. The file= parameter must point to a file on your file system and be preceded by @. For example:

Shell Copy to clipboard
curl --request POST --header "PRIVATE-TOKEN: <your_access_token>" \
     --form "file=@dk.png" "https://gitlab.example.com/api/v4/groups/1/wikis/attachments"

Example response:

JSON Copy to clipboard
{
  "file_name" : "dk.png",
  "file_path" : "uploads/6a061c4cf9f1c28cb22c384b4b8d4e3c/dk.png",
  "branch" : "main",
  "link" : {
    "url" : "uploads/6a061c4cf9f1c28cb22c384b4b8d4e3c/dk.png",
    "markdown" : "![dk](uploads/6a061c4cf9f1c28cb22c384b4b8d4e3c/dk.png)"
  }
}