ChatGPT API Server
This is a simple API server wrapper for ChatGPT. It supports multiple OpenAI accounts, setting proxies for each account, and load-balancing requests between accounts.
Getting Started
Prerequisites
- Node.js
- npm
- An account with ChatGPT
- A valid NopeCHA API key
xvfb
(for headless Chrome)
Installation
You can install the package using
npm i -g @waylaidwanderer/chatgpt-api
then run it using
chatgpt-api
(or xvfb-run chatgpt-api
for headless servers).
This takes an optional --settings=<path_to_settings.js>
parameter, or looks for settings.js
in the current directory if not set, with the following contents:
module.exports = {
accounts: [
{
email: 'account1@example.com',
password: 'password1',
},
{
email: 'account2@example.com',
password: 'password2',
proxy: 'user:pass@ip:port',
},
{
email: 'account3@example.com',
password: 'password3',
proxy: 'ip:port',
},
],
port: 3000,
nopechaKey: 'nopechaKey',
};
Alternatively, you can install the package locally and run it using node index.js
:
- Clone this repository
- Install dependencies with
npm install
- Rename
settings.example.js
to settings.js
in the root directory and change the settings where required. - Start the server using
xvfb-run node index.js
(for headless servers) or node index.js
Usage
To start a conversation with ChatGPT, send a POST request to the server's /conversation
endpoint with a JSON body in the following format:
{
"message": "Hello, how are you today?",
"conversationId": "your-conversation-id (optional)",
"parentMessageId": "your-parent-message-id (optional)"
}
The server will return a JSON object containing ChatGPT's response:
{
"response": "I'm doing well, thank you! How are you?",
"conversationId": "your-conversation-id",
"messageId": "your-message-id"
}
If the request is unsuccessful, the server will return a JSON object with an error message and a status code of 503.
If no sessions have finished initializing yet:
{
"error": "No sessions available."
}
If there was an error sending the message to ChatGPT:
{
"error": "There was an error communicating with ChatGPT."
}
Contributing
If you'd like to contribute to this project, please create a pull request with a detailed description of your changes.
Acknowledgments
This API server is powered by @transitive-bullshit's chatgpt-api (chatgpt on npm).
License
This project is licensed under the MIT License.