doc/api/user_keys.md
{{< details >}}
{{< /details >}}
Use this API to interact with SSH keys and GPG keys for users.
Lists all SSH keys for your user account.
Use the page and per_page pagination parameters to filter the results.
Prerequisites:
GET /user/keys
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/user/keys"
Example response:
[
{
"id": 1,
"title": "Public key",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
"created_at": "2014-08-01T14:47:39.080Z",
"usage_type": "auth"
},
{
"id": 3,
"title": "Another Public key",
"key": "ssh-rsa AAAAB3NzaC1yc2EAAAABJQAAAIEAiPWx6WM4lhHNedGfBpPJNPpZ7yKu+dnn1SJejgt4596k6YjzGGphH2TUxwKzxcKDKKezwkpfnxPkSMkuEspGRt/aZZ9wa++Oi7Qkr8prgHc4soW6NUlfDzpvZK2H5E7eQaSeP3SAwGmQKUFHCddNaP0L+hM7zhFNzjFvpaMgJw0=",
"created_at": "2014-08-01T14:47:39.080Z",
"usage_type": "signing"
}
]
Lists all SSH keys for a specified user account. This endpoint does not require authentication.
GET /users/:id_or_username/keys
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
id_or_username | string | yes | ID or username of user account |
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/users/1/keys"
Retrieves an SSH key for your user account.
Prerequisites:
GET /user/keys/:key_id
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
key_id | string | yes | ID of existing key |
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/user/keys/1"
Example response:
{
"id": 1,
"title": "Public key",
"key": "<SSH_KEY>",
"created_at": "2014-08-01T14:47:39.080Z",
"usage_type": "auth"
}
Retrieves an SSH key for a specified user account. This endpoint does not require authentication.
GET /users/:id/keys/:key_id
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
id | integer | yes | ID or username of user account |
key_id | integer | yes | ID of existing key |
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/users/1/keys/1"
Example response:
{
"id": 1,
"title": "Public key",
"key": "<SSH_KEY>",
"created_at": "2014-08-01T14:47:39.080Z",
"usage_type": "auth"
}
{{< history >}}
usage_type parameter was introduced in GitLab 15.7.{{< /history >}}
Adds an SSH key for your user account.
Prerequisites:
POST /user/keys
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
title | string | yes | Title for key |
key | string | yes | Public key value |
expires_at | string | no | Expiration date of the key in ISO format (YYYY-MM-DD). |
usage_type | string | no | Usage scope for the key. Possible values: auth, signing or auth_and_signing. Default value: auth_and_signing |
Returns either:
The created key with status 201 Created on success.
A 400 Bad Request error with a message explaining the error:
{
"message": {
"fingerprint": [
"has already been taken"
],
"key": [
"has already been taken"
]
}
}
Example response:
{
"title": "ABC",
"key": "<SSH_KEY>",
"expires_at": "2016-01-21T00:00:00.000Z",
"usage_type": "auth"
}
{{< history >}}
usage_type parameter was introduced in GitLab 15.7.{{< /history >}}
Adds an SSH key for a specified user account.
[!note] This also adds an audit event.
Prerequisites:
POST /users/:id/keys
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
id | integer | yes | ID of user account |
title | string | yes | Title for key |
key | string | yes | Public key value |
expires_at | string | no | Expiration date of the key in ISO format (YYYY-MM-DD). |
usage_type | string | no | Usage scope for the key. Possible values: auth, signing or auth_and_signing. Default value: auth_and_signing |
Returns either:
The created key with status 201 Created on success.
A 400 Bad Request error with a message explaining the error:
{
"message": {
"fingerprint": [
"has already been taken"
],
"key": [
"has already been taken"
]
}
}
Example response:
{
"title": "ABC",
"key": "<SSH_KEY>",
"expires_at": "2016-01-21T00:00:00.000Z",
"usage_type": "auth"
}
Deletes an SSH key from your user account.
Prerequisites:
DELETE /user/keys/:key_id
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
key_id | integer | yes | ID of existing key |
Returns either:
204 No Content status code if the operation was successful.404 status code if the resource was not found.Deletes an SSH key from a specified user account.
Prerequisites:
DELETE /users/:id/keys/:key_id
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
id | integer | yes | ID of user account |
key_id | integer | yes | ID of existing key |
Lists all GPG keys for your user account.
Prerequisites:
GET /user/gpg_keys
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/user/gpg_keys"
Example response:
[
{
"id": 1,
"key": "<PGP_PUBLIC_KEY_BLOCK>",
"created_at": "2017-09-05T09:17:46.264Z"
}
]
Lists all GPG keys for a specified user account. This endpoint does not require authentication.
GET /users/:id/gpg_keys
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
id | integer | yes | ID of user account |
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/users/2/gpg_keys"
Example response:
[
{
"id": 1,
"key": "<PGP_PUBLIC_KEY_BLOCK>",
"created_at": "2017-09-05T09:17:46.264Z"
}
]
Retrieves a GPG key for your user account.
Prerequisites:
GET /user/gpg_keys/:key_id
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
key_id | integer | yes | ID of existing key |
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/user/gpg_keys/1"
Example response:
{
"id": 1,
"key": "<PGP_PUBLIC_KEY_BLOCK>",
"created_at": "2017-09-05T09:17:46.264Z"
}
Retrieves a GPG key for a specified user account. This endpoint does not require authentication.
GET /users/:id/gpg_keys/:key_id
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
id | integer | yes | ID of user account |
key_id | integer | yes | ID of existing key |
Example request:
curl --header "PRIVATE-TOKEN: <your_access_token>" \
--url "https://gitlab.example.com/api/v4/users/2/gpg_keys/1"
Example response:
{
"id": 1,
"key": "<PGP_PUBLIC_KEY_BLOCK>",
"created_at": "2017-09-05T09:17:46.264Z"
}
Adds a GPG key for your user account.
Prerequisites:
POST /user/gpg_keys
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
key | string | yes | Public key value |
Example request:
export KEY="$(gpg --armor --export <your_gpg_key_id>)"
curl --data-urlencode "key=<PGP_PUBLIC_KEY_BLOCK>" \
--header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/user/gpg_keys"
Example response:
[
{
"id": 1,
"key": "<PGP_PUBLIC_KEY_BLOCK>",
"created_at": "2017-09-05T09:17:46.264Z"
}
]
Adds a GPG key for a specified user account.
Prerequisites:
POST /users/:id/gpg_keys
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
id | integer | yes | ID of user account |
key | integer | yes | Public key value |
Example request:
curl --data-urlencode "key=<PGP_PUBLIC_KEY_BLOCK>" \
--header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/users/2/gpg_keys"
Example response:
[
{
"id": 1,
"key": "<PGP_PUBLIC_KEY_BLOCK>",
"created_at": "2017-09-05T09:17:46.264Z"
}
]
Deletes a GPG key from your user account.
Prerequisites:
DELETE /user/gpg_keys/:key_id
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
key_id | integer | yes | ID of existing key |
Returns either:
204 No Content on success.404 Not Found if the key cannot be found.Deletes a GPG key from a specified user account.
Prerequisites:
DELETE /users/:id/gpg_keys/:key_id
Supported attributes:
| Attribute | Type | Required | Description |
|---|---|---|---|
id | integer | yes | ID of user account |
key_id | integer | yes | ID of existing key |