Release links API

Support for GitLab CI/CD job token authentication introduced in GitLab 15.1.

Use this API to manipulate GitLab Release links. For manipulating other Release assets, see Release API.

GitLab supports links to http, https, and ftp assets.

The external field in Release Links was deprecated in GitLab 15.9 and removed in 16.0.

Get assets as links from a release.

GET /projects/:id/releases/:tag_name/assets/links
AttributeTypeRequiredDescription
idinteger/stringyesThe ID or URL-encoded path of the project.
tag_namestringyesThe tag associated with the Release.

Example request:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/24/releases/v0.1/assets/links"

Example response:

[
   {
      "id":2,
      "name":"awesome-v0.2.msi",
      "url":"http://192.168.10.15:3000/msi",
      "link_type":"other"
   },
   {
      "id":1,
      "name":"awesome-v0.2.dmg",
      "url":"http://192.168.10.15:3000",
      "link_type":"other"
   }
]

The external field in Release Links was deprecated in GitLab 15.9 and removed in 16.0.

Get an asset as a link from a release.

GET /projects/:id/releases/:tag_name/assets/links/:link_id
AttributeTypeRequiredDescription
idinteger/stringyesThe ID or URL-encoded path of the project.
tag_namestringyesThe tag associated with the Release.
link_idintegeryesThe ID of the link.

Example request:

curl --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/24/releases/v0.1/assets/links/1"

Example response:

{
   "id":1,
   "name":"awesome-v0.2.dmg",
   "url":"http://192.168.10.15:3000",
   "link_type":"other"
}

The external field in Release Links was deprecated in GitLab 15.9 and removed in 16.0.

Creates an asset as a link from a release.

POST /projects/:id/releases/:tag_name/assets/links
AttributeTypeRequiredDescription
idinteger/stringyesThe ID or URL-encoded path of the project.
tag_namestringyesThe tag associated with the Release.
namestringyesThe name of the link. Link names must be unique in the release.
urlstringyesThe URL of the link. Link URLs must be unique in the release.
filepathstringnoDeprecated: Use direct_asset_path instead.
direct_asset_pathstringnoOptional path for a direct asset link.
link_typestringnoThe type of the link: other, runbook, image, package. Defaults to other.

Example request:

curl --request POST \
    --header "PRIVATE-TOKEN: <your_access_token>" \
    --data name="hellodarwin-amd64" \
    --data url="https://gitlab.example.com/mynamespace/hello/-/jobs/688/artifacts/raw/bin/hello-darwin-amd64" \
    --data direct_asset_path="/bin/hellodarwin-amd64" \
    "https://gitlab.example.com/api/v4/projects/20/releases/v1.7.0/assets/links"

Example response:

{
   "id":2,
   "name":"hellodarwin-amd64",
   "url":"https://gitlab.example.com/mynamespace/hello/-/jobs/688/artifacts/raw/bin/hello-darwin-amd64",
   "direct_asset_url":"https://gitlab.example.com/mynamespace/hello/-/releases/v1.7.0/downloads/bin/hellodarwin-amd64",
   "link_type":"other"
}

The external field in Release Links was deprecated in GitLab 15.9 and removed in 16.0.

Updates an asset as a link from a release.

PUT /projects/:id/releases/:tag_name/assets/links/:link_id
AttributeTypeRequiredDescription
idinteger/stringyesThe ID or URL-encoded path of the project.
tag_namestringyesThe tag associated with the Release.
link_idintegeryesThe ID of the link.
namestringnoThe name of the link.
urlstringnoThe URL of the link.
filepathstringnoDeprecated: Use direct_asset_path instead.
direct_asset_pathstringnoOptional path for a direct asset link.
link_typestringnoThe type of the link: other, runbook, image, package. Defaults to other.
note
You have to specify at least one of name or url

Example request:

curl --request PUT --data name="new name" --data link_type="runbook" \
     --header "PRIVATE-TOKEN: <your_access_token>" \
     "https://gitlab.example.com/api/v4/projects/24/releases/v0.1/assets/links/1"

Example response:

{
   "id":1,
   "name":"new name",
   "url":"http://192.168.10.15:3000",
   "link_type":"runbook"
}

The external field in Release Links was deprecated in GitLab 15.9 and removed in 16.0.

Deletes an asset as a link from a release.

DELETE /projects/:id/releases/:tag_name/assets/links/:link_id
AttributeTypeRequiredDescription
idinteger/stringyesThe ID or URL-encoded path of the project.
tag_namestringyesThe tag associated with the Release.
link_idintegeryesThe ID of the link.

Example request:

curl --request DELETE --header "PRIVATE-TOKEN: <your_access_token>" "https://gitlab.example.com/api/v4/projects/24/releases/v0.1/assets/links/1"

Example response:

{
   "id":1,
   "name":"new name",
   "url":"http://192.168.10.15:3000",
   "link_type":"other"
}