GV

GeezerVison

The World Wide Web, restored to 800 pixels of glory.

Home|About|Gaming cabinet|Archives|How it works|Starter sites

On this site

  • PyPI.org
  • PyPI blog
  • User documentation
  • Developer documentation
  • GitHub
  • PyPI Basics
  • Finding and Installing Packages
  • Introduction
  • Assessing Source Code Security
  • Checking Provenance (package origin)
  • Verifying Package Integrity
  • Common Security Attacks
  • Reporting Security Issues
  • Troubleshooting

This view

  • Original page
  • New address

GeezerVison is showing docs.pypi.org — Index API - PyPI User Documentation

Index API¶

This page documents PyPI's implementation of the PEP 503 (HTML) and PEP 691 (JSON) index API.

See the Simple Repository API for the official living specification of this API.

Note

The index API is sometimes called the "legacy API," since it provides feature parity with PyPI's legacy codebase.

Note

This API is available as both HTML and JSON.

It is recommended that new integrations use the JSON version.

Routes¶

List all projects¶

Route: GET /simple/

Returns all of the projects that have been registered.

Response headers:

  • X-PyPI-Last-Serial - The most recent serial ID number for any project.

Status codes:

  • 200 OK - no error

HTML¶

Example HTML request (default if no Accept header is passed):

GET /simple/ HTTP/1.1
Host: pypi.org
Accept: application/vnd.pypi.simple.v1+html
Example HTML response
HTTP/1.0 200 OK
Content-Type: application/vnd.pypi.simple.v1+html
X-PyPI-Last-Serial: 24888689

<html>
  <head>
    <meta name="pypi:repository-version" content="1.4">
    <title>Simple index</title>
  </head>
  <body>
    <a href="/simple/0/">0</a>
    <a href="/simple/0-0/">0-._.-._.-._.-._.-._.-._.-0</a>
    <!-- More projects... -->
  </body>
</html>

JSON¶

Example JSON request:

GET /simple/ HTTP/1.1
Host: pypi.org
Accept: application/vnd.pypi.simple.v1+json
Example JSON response
HTTP/1.1 200 OK
Content-Type: application/vnd.pypi.simple.v1+json
X-PyPI-Last-Serial: 24888689

{
  "meta": {
    "_last-serial": 24888689,
    "api-version": "1.4"
  },
  "projects": [
    {
      "_last-serial": 3075854,
      "name": "0"
    },
    {
      "_last-serial": 1448421,
      "name": "0-._.-._.-._.-._.-._.-._.-0"
    },
    "More projects..."
  ]
}

Get distributions for project¶

Route: GET /simple/<project>/

Get all of the distribution download URLs for the project's available releases (wheels and source distributions). The project is matched case-insensitively with the _, - and . characters considered equal. The links may optionally include a hash using the URL fragment. This fragment is in the form of #<hashname>=<hexdigest>. If present the downloaded file MUST be verified against that hash value. Valid hash values are md5, sha1, sha224, sha256, sha384, and sha512.

If a PGP/GPG signature for a distribution file exists in PyPI, it is available at the same URL as the file with .asc appended, but a link to that signature is not provided in this list of URLs. Therefore, once you have a wheel or sdist filename such as https://file.pythonhosted.org/.../foo-1.0.tar.gz, you can check for the existence of https://file.pythonhosted.org/.../foo-1.0.tar.gz.asc with a separate GET request.

Response headers:

  • X-PyPI-Last-Serial - The most recent serial ID number for the project.

Status codes:

  • 200 OK - no error

HTML¶

Example HTML request (default if no Accept header is passed):

GET /simple/beautifulsoup4/ HTTP/1.1
Host: pypi.org
Accept: application/vnd.pypi.simple.v1+html
Example HTML response
HTTP/2 200 OK
Content-Type: application/vnd.pypi.simple.v1+html
Etag: "q4SqZutq1tfRDqhh3zQ4gQ"
X-PyPI-Last-Serial: 2857110

<!DOCTYPE html>
<html>
  <head>
    <meta name="pypi:repository-version" content="1.4">
    <meta name="pypi:project-status" content="active">
    <title>Links for beautifulsoup4</title>
  </head>
  <body>
    <h1>Links for beautifulsoup4</h1>
    <a href="https://files.pythonhosted.org/packages/6f/be/99dcf74d947cc1e7abef5d0c4572abcb479c33ef791d94453a8fd7987d8f/beautifulsoup4-4.0.1.tar.gz#sha256=dc6bc8e8851a1c590c8cc8f25915180fdcce116e268d1f37fa991d2686ea38de" >beautifulsoup4-4.0.1.tar.gz</a><br />
    <a href="https://files.pythonhosted.org/packages/a0/75/db36172ea767dd2f0c9817a99e24f7e9b79c2ce63eb2f8b867284cc60daf/beautifulsoup4-4.0.2.tar.gz#sha256=353792f8246a9551b232949fb14dce21d9b6ced9207bf9f4a69a4c4eb46c8127" >beautifulsoup4-4.0.2.tar.gz</a><br />
    <!-- ...More files... -->
    <a href="https://files.pythonhosted.org/packages/14/7e/e4313dad823c3a0751c99b9bc0182b1dd19aea164ce7445e9a70429b9e92/beautifulsoup4-4.13.0b2-py3-none-any.whl#sha256=7e05ad0b6c26108d9990e2235e8a9b4e2c03ead6f391ceb60347f8ebea6b80ba" data-requires-python="&gt;=3.6.0" data-dist-info-metadata="sha256=d0aa787c2b55e5b0b3aff66f137cf33341c5e781cb87b4dc184cbb25c7ac0ab5" data-core-metadata="sha256=d0aa787c2b55e5b0b3aff66f137cf33341c5e781cb87b4dc184cbb25c7ac0ab5">beautifulsoup4-4.13.0b2-py3-none-any.whl</a><br />
    <a href="https://files.pythonhosted.org/packages/81/bd/c97d94e2b96f03d1c50bc9de04130e014eda89322ba604923e0c251eb02e/beautifulsoup4-4.13.0b2.tar.gz#sha256=c684ddec071aa120819889aa9e8940f85c3f3cdaa08e23b9fa26510387897bd5" data-requires-python="&gt;=3.6.0" >beautifulsoup4-4.13.0b2.tar.gz</a><br />
  </body>
</html>
<!--SERIAL 22406780-->

JSON¶

Example JSON request:

GET /simple/beautifulsoup4/ HTTP/1.1
Host: pypi.org
Accept: application/vnd.pypi.simple.v1+json
Example JSON response
HTTP/2 200 OK
Content-Type: application/vnd.pypi.simple.v1+json
Etag: "hVGQAYl/eoNrx2H5FmPuXw"
X-PyPI-Last-Serial: 22406780

{
  "files": [
    {
      "core-metadata": false,
      "data-dist-info-metadata": false,
      "filename": "beautifulsoup4-4.0.1.tar.gz",
      "hashes": {
        "sha256": "dc6bc8e8851a1c590c8cc8f25915180fdcce116e268d1f37fa991d2686ea38de"
      },
      "requires-python": null,
      "size": 51024,
      "upload-time": "2014-01-21T05:35:05.558877Z",
      "url": "https://files.pythonhosted.org/packages/6f/be/99dcf74d947cc1e7abef5d0c4572abcb479c33ef791d94453a8fd7987d8f/beautifulsoup4-4.0.1.tar.gz",
      "yanked": false
    },
    {
      "core-metadata": false,
      "data-dist-info-metadata": false,
      "filename": "beautifulsoup4-4.0.2.tar.gz",
      "hashes": {
        "sha256": "353792f8246a9551b232949fb14dce21d9b6ced9207bf9f4a69a4c4eb46c8127"
      },
      "requires-python": null,
      "size": 51240,
      "upload-time": "2014-01-21T05:35:09.581933Z",
      "url": "https://files.pythonhosted.org/packages/a0/75/db36172ea767dd2f0c9817a99e24f7e9b79c2ce63eb2f8b867284cc60daf/beautifulsoup4-4.0.2.tar.gz",
      "yanked": false
    },
    "...More files...",
    {
      "core-metadata": {
        "sha256": "524392d64a088e56a4232f50d6edb208dc03105394652acb72c6d5fa64c89f3e"
      },
      "data-dist-info-metadata": {
        "sha256": "524392d64a088e56a4232f50d6edb208dc03105394652acb72c6d5fa64c89f3e"
      },
      "filename": "beautifulsoup4-4.12.3-py3-none-any.whl",
      "hashes": {
        "sha256": "b80878c9f40111313e55da8ba20bdba06d8fa3969fc68304167741bbf9e082ed"
      },
      "requires-python": ">=3.6.0",
      "size": 147925,
      "upload-time": "2024-01-17T16:53:12.779164Z",
      "url": "https://files.pythonhosted.org/packages/b1/fe/e8c672695b37eecc5cbf43e1d0638d88d66ba3a44c4d321c796f4e59167f/beautifulsoup4-4.12.3-py3-none-any.whl",
      "yanked": false
    },
    {
      "core-metadata": false,
      "data-dist-info-metadata": false,
      "filename": "beautifulsoup4-4.12.3.tar.gz",
      "hashes": {
        "sha256": "74e3d1928edc070d21748185c46e3fb33490f22f52a3addee9aee0f4f7781051"
      },
      "requires-python": ">=3.6.0",
      "size": 581181,
      "upload-time": "2024-01-17T16:53:17.902970Z",
      "url": "https://files.pythonhosted.org/packages/b3/ca/824b1195773ce6166d388573fc106ce56d4a805bd7427b624e063596ec58/beautifulsoup4-4.12.3.tar.gz",
      "yanked": false
    },
    {
      "core-metadata": {
        "sha256": "d0aa787c2b55e5b0b3aff66f137cf33341c5e781cb87b4dc184cbb25c7ac0ab5"
      },
      "data-dist-info-metadata": {
        "sha256": "d0aa787c2b55e5b0b3aff66f137cf33341c5e781cb87b4dc184cbb25c7ac0ab5"
      },
      "filename": "beautifulsoup4-4.13.0b2-py3-none-any.whl",
      "hashes": {
        "sha256": "7e05ad0b6c26108d9990e2235e8a9b4e2c03ead6f391ceb60347f8ebea6b80ba"
      },
      "requires-python": ">=3.6.0",
      "size": 179607,
      "upload-time": "2024-03-20T13:00:33.355932Z",
      "url": "https://files.pythonhosted.org/packages/14/7e/e4313dad823c3a0751c99b9bc0182b1dd19aea164ce7445e9a70429b9e92/beautifulsoup4-4.13.0b2-py3-none-any.whl",
      "yanked": false
    },
    {
      "core-metadata": false,
      "data-dist-info-metadata": false,
      "filename": "beautifulsoup4-4.13.0b2.tar.gz",
      "hashes": {
        "sha256": "c684ddec071aa120819889aa9e8940f85c3f3cdaa08e23b9fa26510387897bd5"
      },
      "requires-python": ">=3.6.0",
      "size": 550258,
      "upload-time": "2024-03-20T13:00:31.245327Z",
      "url": "https://files.pythonhosted.org/packages/81/bd/c97d94e2b96f03d1c50bc9de04130e014eda89322ba604923e0c251eb02e/beautifulsoup4-4.13.0b2.tar.gz",
      "yanked": false
    }
  ],
  "meta": {
    "_last-serial": 22406780,
    "api-version": "1.4"
  },
  "name": "beautifulsoup4",
  "project-status": {
    "status": "active"
  }
  "versions": [
    "4.0.1",
    "4.0.2",
    "...More versions...",
    "4.12.3",
    "4.13.0b2"
  ]
}
You are visitor 01402503 — GeezerVison does not store the pages you look up.
Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required.