Home

Awesome

Status

Currently chatgpt-api is not working, since OpenAI started to use Cloudflare. Also, it changes almost every day. See https://github.com/mbroton/chatgpt-api/issues/18

<h1 align="center">💻 ChatGPT API</h1> <p align="center">Unofficial API client and CLI for ChatGPT.</p> <p align="center"> <img alt="PyPI" src="https://img.shields.io/pypi/v/chatgpt-api"> <img alt="License" src="https://img.shields.io/github/license/mbroton/chatgpt-api"> <img alt="Coverage" src="https://img.shields.io/badge/coverage-96%25-green"> </p> <br>

Short Demo GIF

<br>

This project is based on httpx (uses only HTTP) and uses Typer (with Rich) for CLI, so responses are looking good (markdown is supported). Also, It has almost 100% code coverage unlike other ChatGPT packages.

Long Demo GIF

Installation

From Pypi

pip install chatgpt-api

Source code

pip install -r requirements.txt && pip install .

Usage

As a Command Line Interface

Setup

Required to authenticate. In this step you have to provide a path to the file containing the session key. A simple txt file with the key only is enough.

chatgpt setup

Tip: Use a file named .session_key in chatgpt-api top directory. It will be ignored by git - see .gitignore.

The key will be saved to

Path.home() / ".chatgpt_api" / "key.txt"

Session messages are logged to

Path.home() / ".chatgpt_api" / "logs"

Start chatting

chatgpt start

As an API

ChatGPT class inherits from httpx.Client

Recommended usage:

from chatgpt.api import ChatGPT

with ChatGPT(session_token="your-session-token") as chat:
    response = chat.send_message("Hello!")
    print(response.content)

Without context manager you have to explicitly authenticate:

from chatgpt.api import ChatGPT

chat = ChatGPT(session_token="your-session-token")
chat.authenticate()
response = chat.send_message("Hello!")
print(response.content)
chat.close()

How to acquire session key?

After you log in to ChatGPT in your browser, get value of __Secure-next-auth.session-token cookie. In this project, this is named as a "session key".

Chrome instruction

  1. Open ChromeDevTools (F12).
  2. Click on "Application" tab.
  3. Click on "Cookies", on the left bar.
  4. Copy the value of __Secure-next-auth.session-token:

Cookie value example

Now, you can use it in CLI or directly from Python code.

License

Distributed under the MIT License. See LICENSE for more information.

Disclaimer

This is a personal project, not affiliated in any way with OpenAI. If you have any objections, contact @mbroton.