PyPI API

This is the API documentation for PyPI Packages.

cautionThis API is used by the PyPI package manager client and is generally not meant for manual consumption.

For instructions on how to upload and install PyPI packages from the GitLab package registry, see the PyPI package registry documentation.

noteThese endpoints do not adhere to the standard API authentication methods. See the PyPI package registry documentation for details on which headers and token types are supported.

Download a package file

Introduced in GitLab 12.10.

Download a PyPI package file. The simple API normally supplies this URL.

GET projects/:id/packages/pypi/files/:sha256/:file_identifier
Attribute Type Required Description
id string yes The ID or full path of the project.
sha256 string yes PyPI package file sha256 check sum.
file_identifier string yes The PyPI package file name.
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1.tar.gz"

To write the output to a file:

curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1.tar.gz" >> my.pypi.package-0.0.1.tar.gz

This writes the downloaded file to my.pypi.package-0.0.1.tar.gz in the current directory.

Simple API entry point

Introduced in GitLab 12.10.

Returns the package descriptor as an HTML file:

GET projects/:id/packages/pypi/simple/:package_name
Attribute Type Required Description
id string yes The ID or full path of the project.
package_name string yes The name of the package.
curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple/my.pypi.package"

Example response:

<!DOCTYPE html>
<html>
  <head>
    <title>Links for my.pypi.package</title>
  </head>
  <body>
    <h1>Links for my.pypi.package</h1>
    <a href="https://gitlab.example.com/api/v4/projects/1/packages/pypi/files/5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff/my.pypi.package-0.0.1-py3-none-any.whl#sha256=5y57017232013c8ac80647f4ca153k3726f6cba62d055cd747844ed95b3c65ff" data-requires-python="&gt;=3.6">my.pypi.package-0.0.1-py3-none-any.whl</a><br><a href="https://gitlab.example.com/api/v4/projects/1/packages/pypi/files/9s9w01b0bcd52b709ec052084e33a5517ffca96f7728ddd9f8866a30cdf76f2/my.pypi.package-0.0.1.tar.gz#sha256=9s9w011b0bcd52b709ec052084e33a5517ffca96f7728ddd9f8866a30cdf76f2" data-requires-python="&gt;=3.6">my.pypi.package-0.0.1.tar.gz</a><br>
  </body>
</html>

To write the output to a file:

curl --user <username>:<personal_access_token> "https://gitlab.example.com/api/v4/projects/1/packages/pypi/simple/my.pypi.package" >> simple.html

This writes the downloaded file to simple.html in the current directory.

Upload a package

Introduced in GitLab 11.3.

Upload a PyPI package:

PUT projects/:id/packages/pypi
Attribute Type Required Description
id string yes The ID or full path of the project.
curl --request PUT \
     --upload-file path/to/my.pypi.package-0.0.1.tar.gz \
     --user <username>:<personal_access_token> \
     "https://gitlab.example.com/api/v4/projects/1/packages/pypi"