Baike.dev
All toolsOnline toolsAI codingTrendingOpen sourceNewsSubmit
Log in
< Back to tools
C

ChatGPT-API-server

> 编程语言
Open source

API server for ChatGPT

768 stars0 likes1 views
WebsiteGitHub

About

API server for ChatGPT

Official API released by OpenAI. Please use that instead. The model name is text-chat-davinci-002-20230126

ChatGPT API Server

Quickstart

Setup

  1. Install Go
  2. go install github.com/acheong08/ChatGPT-API-server@latest

If the latest commit fails, try using one of the release binaries

Build

  1. git clone https://github.com/acheong08/ChatGPT-API-server/
  2. cd ChatGPT-API-server
  3. go install .

Usage

ChatGPT-API-server

The admin key can be anything you want. It's just for authenticating yourself.

Connect agents

Take note of your IP address or domain name. This could be localhost or a remote IP address. The default port is 8080

Check out our firefox agent. More versions in the works.

There is also a Python based client by @ahmetkca (WIP)

Usage

Quickstart

(After connecting agents)

bash
 $ curl "http://localhost:8080/api/ask" -X POST --header 'Authorization: ' -d '{"content": "Hello world", "conversation_id": "", "parent_id": ""}'

Note: if you want to use conversation_id, you also need to use parent_id!

Routes

go
	router.GET("/client/register", handlers.Client_register) // Used by agent
	router.POST("/api/ask", handlers.API_ask) // For making ChatGPT requests
	router.GET("/api/connections", handlers.API_getConnections) // For debugging
	router.POST("/admin/users/add", handlers.Admin_userAdd) // Adds an API token
	router.POST("/admin/users/delete", handlers.Admin_userDel) // Invalidates a token (based on user_id)
	router.GET("/admin/users", handlers.Admin_usersGet) // Get all users

Parameters for each route

/client/register (GET)

N/A. Used for websocket

/api/ask (POST)

Headers: Authorization:

The user token can be set by the admin via /admin/users/add. You can also use the api key as the token. Both work by default

Data:

json
{
  "content": "Hello world",
  "conversation_id": "",
  "parent_id": ""
}

Do not enter conversation or parent id if not available. If you want to use either of these, you need to specify both! i.e. request.parent_id=response.response_id and request.conversation_id=response.conversation_id

Response:

json
{
  "id": "",
  "response_id": "",
  "conversation_id": "",
  "content": "",
  "error": ""
}

/api/connections (GET)

Headers: None

Data: None

Response:

json
{
  "connections": [
    {
      "Ws": {},
      "Id": "",
      "Heartbeat": "",
      "LastMessageTime": ""
    }
  ]
}

/admin/users/add (POST)

Headers: None

Data:

json
{
  "admin_key": ""
}

Response:

json
{
  "user_id": "",
  "token": ""
}

/admin/users/delete (POST)

Headers: None

Data:

json
{
  "admin_key": "",
  "user_id": ""
}

Response:

json
{ "message": "User deleted" }

/admin/users (GET)

Parameters: ?admin_key=

Example usage: curl "http://localhost:8080/admin/users?admin_key=some_random_key"

Response:

json
{
  "users": [
    {
      "user_id": "",
      "token": ""
    },
    {
      "user_id": "",
      "token": ""
    },
    {
      "user_id": "",
      "token": ""
    },
    {
      "user_id": "",
      "token": ""
    },
    ...
  ]
}

Docker

open docker-compose.yml and add your own custom api-key in `` section

yaml
version: "3"

services:
  chatgpt-api-server:
    build: .
    ports:
      - "8080:8080"
    command: ["ChatGPT-API-server", "8080", "", "-listen", "0.0.0.0"]

then run:

docker-compose up or docker-compose up -d (if you want a persistent instance)

Issues· 0 open

View all issuesOpen on GitHub

No open issues yet, or sync has not completed.

> Tags

Go

No comments yet. Be the first to share.

> Details

PublishedAug 1, 2026
UpdatedSep 17, 2026
Category编程语言
PricingOpen source

> Related tools

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言