Code Suggestions API
Use the Code Suggestions API to access the Code Suggestions feature.
Generate code completions
- Status: Experiment
The availability of the context
and user_instruction
attributes is controlled by a feature flag.
For more information, see the history.
These attributes are available for testing, but are not ready for production use.
POST /code_suggestions/completions
This endpoint rate-limits each user to 60 requests per 1-minute window.
Use the AI abstraction layer to generate code completions.
Requests to this endpoint are proxied to the AI gateway.
Parameters:
Attribute | Type | Required | Description |
---|---|---|---|
current_file | hash | yes | Attributes of file that suggestions are being generated for. See File attributes for a list of strings this attribute accepts. |
intent | string | no | The intent of the completion request. This can be either completion or generation . |
stream | boolean | no | Whether to stream the response as smaller chunks as they are ready (if applicable). Default: false . |
project_path | string | no | The path of the project. |
generation_type | string | no | The type of event for generation requests. This can be comment , empty_function , or small_file . |
context | array | no | Additional context to be used for Code Suggestions. See Context attributes for a list of parameters this attribute accepts. |
user_instruction | string | no | A user’s instructions for Code Suggestions. |
File attributes
The current_file
attribute accepts the following strings:
file_name
- The name of the file. Required.content_above_cursor
- The content of the file above the current cursor position. Required.content_below_cursor
- The content of the file below the current cursor position. Optional.
Context attributes
The context
attribute accepts a list of elements with the following attributes:
type
- The type of the context element. This can be eitherfile
orsnippet
.name
- The name of the context element. A name of the file or a code snippet.content
- The content of the context element. The body of the file or a function.
Example request:
curl --request POST \
--header "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
--data '{
"current_file": {
"file_name": "car.py",
"content_above_cursor": "class Car:\n def __init__(self):\n self.is_running = False\n self.speed = 0\n def increase_speed(self, increment):",
"content_below_cursor": ""
},
"intent": "completion"
}' \
--url "https://gitlab.example.com/api/v4/code_suggestions/completions"
Example response:
{
"id": "id",
"model": {
"engine": "vertex-ai",
"name": "code-gecko"
},
"object": "text_completion",
"created": 1688557841,
"choices": [
{
"text": "\n if self.is_running:\n self.speed += increment\n print(\"The car's speed is now",
"index": 0,
"finish_reason": "length"
}
]
}
Validate that Code Suggestions is enabled
Use this endpoint to validate if either:
- A project has
code_suggestions
enabled. - A project’s group has
code_suggestions
enabled in its namespace settings.
POST code_suggestions/enabled
Supported attributes:
Attribute | Type | Required | Description |
---|---|---|---|
project_path | string | yes | The path of the project to be validated. |
If successful, returns:
Additionally, returns a 404
if the path is empty or the project does not exist.
Example request:
curl --request POST \
--url "https://gitlab.example.com/api/v4/code_suggestions/enabled"
--header "Private-Token: <YOUR_ACCESS_TOKEN>" \
--header "Content-Type: application/json" \
--data '{
"project_path": "group/project_name"
}' \
Fetch direct connection information
POST /code_suggestions/direct_access
This endpoint rate-limits each user to 10 requests per 5-minute window.
Returns user-specific connection details which can be used by IDEs/clients to send completion requests directly to AI gateway.
Example request:
curl --request POST \
--header "Authorization: Bearer <YOUR_ACCESS_TOKEN>" \
--url "https://gitlab.example.com/api/v4/code_suggestions/direct_access"
Example response:
{
"base_url": "http://0.0.0.0:5052",
"token": "a valid token",
"expires_at": 1713343569,
"headers": {
"X-Gitlab-Instance-Id": "292c3c7c-c5d5-48ec-b4bf-f00b724ce560",
"X-Gitlab-Realm": "saas",
"X-Gitlab-Global-User-Id": "Df0Jhs9xlbetQR8YoZCKDZJflhxO0ZBI8uoRzmpnd1w=",
"X-Gitlab-Host-Name": "gitlab.example.com"
}
}
Docs
Edit this page to fix an error or add an improvement in a merge request.
Create an issue to suggest an improvement to this page.
Product
Create an issue if there's something you don't like about this feature.
Propose functionality by submitting a feature request.
Feature availability and product trials
View pricing to see all GitLab tiers and features, or to upgrade.
Try GitLab for free with access to all features for 30 days.
Get help
If you didn't find what you were looking for, search the docs.
If you want help with something specific and could use community support, post on the GitLab forum.
For problems setting up or using this feature (depending on your GitLab subscription).
Request support