GitLab Duo Chat Completions API
The GitLab Duo Chat Completions API generates Chat responses. This API is for internal use only.
Generate Chat responses
History
-
Introducedin GitLab 16.7with a flagnamed
access_rest_chat
.Disabled by default. This feature is internal-only. -
Added additional_context parameterin GitLab 17.4with a flagnamed
duo_additional_context
.Disabled by default. This feature is internal-only.
POST /chat/completions
Requests to this endpoint are proxied to the
AI gateway.
Supported attributes:
Attribute | Type | Required | Description |
---|---|---|---|
content
| string | Yes | Question sent to Chat. |
resource_type
| string | No | Type of resource that is sent with Chat question. |
resource_id
| string, integer | No | ID of the resource. Can be a resource ID (integer) or a commit hash (string). |
referer_url
| string | No | Referer URL. |
client_subscription_id
| string | No | Client Subscription ID. |
with_clean_history
| boolean | No | Indicates if we need to reset the history before and after the request. |
project_id
| integer | No | Project ID. Required ifresource_type is a commit.
|
additional_context
| hash | No | Additional context for this chat request. SeeContext attributesfor a list of parameters this attribute accepts. |
Context attributes
Thecontext
attribute accepts a list of elements with the following attributes:
-
category
- The category of the context element. Valid values arefile
,merge_request
,issue
,orsnippet
. -
id
- The ID of the context element. -
content
- The content of the context element. The value depends on the category of the context element. -
metadata
- The optional additional metadata for this context element. The value depends on the category of the context element.
Example request:
curl--requestPOST\
--header"Authorization: Bearer <YOUR_ACCESS_TOKEN>"\
--header"Content-Type: application/json"\
--data'{
"content": "how to define class in ruby"
}'\
--url"https://gitlab.example /api/v4/chat/completions"
Example response:
"To define class in ruby..."