An open API service indexing awesome lists of open source software.

https://github.com/mrshibly/phantomapi

๐Ÿ‘ป PhantomAPI โ€” Turn ChatGPT's free web interface into an OpenAI-compatible API. Built with FastAPI + Playwright. Drop-in replacement for n8n, AI Agents, and any OpenAI client. Zero API costs.
https://github.com/mrshibly/phantomapi

ai-agent automation chatgpt chatgpt-proxy fastapi free-api n8n openai-api openai-compatible phantomapi playwright proxy python self-hosted

Last synced: about 2 months ago
JSON representation

๐Ÿ‘ป PhantomAPI โ€” Turn ChatGPT's free web interface into an OpenAI-compatible API. Built with FastAPI + Playwright. Drop-in replacement for n8n, AI Agents, and any OpenAI client. Zero API costs.

Awesome Lists containing this project

README

          

# ๐Ÿ‘ป PhantomAPI

### Turn ChatGPT into a FREE OpenAI-Compatible API

[![FastAPI](https://img.shields.io/badge/FastAPI-005571?style=for-the-badge&logo=fastapi)](https://fastapi.tiangolo.com/)
[![Playwright](https://img.shields.io/badge/Playwright-2EAD33?style=for-the-badge&logo=playwright&logoColor=white)](https://playwright.dev/)
[![Docker](https://img.shields.io/badge/Docker-2CA5E0?style=for-the-badge&logo=docker&logoColor=white)](https://docker.com/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg?style=for-the-badge)](LICENSE)

**The invisible proxy that bridges ChatGPT's free web interface with your AI automation workflows.**

[Quick Start](#-quick-start) ยท [n8n Integration](#-connecting-to-n8n) ยท [Architecture](#-architecture) ยท [Docker](#-docker-deployment)



---

## ๐ŸŒŸ What is PhantomAPI?

**PhantomAPI** is a high-performance proxy server that makes ChatGPT's free web interface behave like the official OpenAI API. It's designed as a **drop-in replacement** for any tool that speaks the OpenAI protocol โ€” especially **n8n**.

### โœจ Key Features

| Feature | Description |
|:---|:---|
| ๐Ÿ’ธ **Zero API Costs** | Uses ChatGPT's free web interface via headless browser automation |
| โšก **Async Architecture** | Built on FastAPI with a dedicated browser thread for non-blocking requests |
| ๐Ÿค– **AI Agent Support** | Full tool-calling / function-calling support for n8n Agent nodes |
| ๐Ÿ”’ **API Key Auth** | Protected with Bearer token authentication |
| ๐Ÿณ **Docker Ready** | Deploy in seconds with `docker-compose up` |
| ๐ŸŽจ **Built-in GUI** | A sleek dark-mode chat interface for quick testing |
| ๐Ÿ“ **Clean Architecture** | Proper FastAPI structure โ€” routers, schemas, services, utils |

---

## โš™๏ธ How It Works

```
โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” HTTP/JSON โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ” Playwright โ”Œโ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”
โ”‚ n8n โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถ โ”‚ PhantomAPI โ”‚ โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ–ถ โ”‚ ChatGPT โ”‚
โ”‚ (or any โ”‚ โ—€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ (FastAPI) โ”‚ โ—€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€ โ”‚ (Web UI) โ”‚
โ”‚ client) โ”‚ OpenAI Schema โ”‚ โ”‚ Scrape Response โ”‚ โ”‚
โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜ โ””โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”€โ”˜
```

1. **You send** a standard OpenAI API request to PhantomAPI
2. **PhantomAPI** formats your messages into a prompt and types it into ChatGPT's web interface using a stealth browser
3. **ChatGPT responds** on the web page โ€” PhantomAPI scrapes the text
4. **The response** is formatted back into the official OpenAI JSON schema and returned to you

---

## ๐Ÿ› ๏ธ Quick Start

### Prerequisites
- **Python 3.10+**
- **Google Chrome** installed on your system

### 1. Clone & Install

```bash
git clone https://github.com/mrshibly/phantom-api.git
cd phantom-api
pip install -r requirements.txt
python -m playwright install chromium
```

### 2. Configure

```bash
cp .env.example .env
# Edit .env and set your API_SECRET_KEY
```

### 3. Run

```bash
python run.py
```

The server will start on `http://localhost:7777`.

| Endpoint | Description |
|:---|:---|
| `http://localhost:7777/` | Health check |
| `http://localhost:7777/docs` | Swagger UI (interactive API docs) |
| `http://localhost:7777/gui` | Chat GUI for quick testing |

---

## ๐Ÿ”Œ Connecting to n8n


n8n Workflow Example

### Method 1: OpenAI Node (Recommended)

1. In n8n, go to **Credentials โ†’ New โ†’ OpenAI API**
2. Set **Base URL** to: `http://127.0.0.1:7777/v1`
3. Set **API Key** to your `API_SECRET_KEY` from `.env`
4. Use this credential in any **OpenAI** or **AI Agent** node

> **Docker Tip:** If n8n runs in Docker, use `http://host.docker.internal:7777/v1`

### Method 2: HTTP Request Node

1. Add an **HTTP Request** node
2. **Method:** `POST`
3. **URL:** `http://127.0.0.1:7777/v1/chat/completions`
4. **Authentication:** Header Auth โ†’ `Authorization: Bearer YOUR_KEY`
5. **Body (JSON):**

```json
{
"model": "gpt-4o-mini",
"messages": [
{ "role": "user", "content": "Hello, PhantomAPI!" }
]
}
```

---

## ๐Ÿ“ Architecture

```
phantom-api/
โ”œโ”€โ”€ app/
โ”‚ โ”œโ”€โ”€ main.py # App factory, CORS, lifespan
โ”‚ โ”œโ”€โ”€ config.py # Environment-driven settings
โ”‚ โ”œโ”€โ”€ dependencies.py # Auth dependency injection
โ”‚ โ”œโ”€โ”€ api/v1/
โ”‚ โ”‚ โ”œโ”€โ”€ router.py # Route aggregator
โ”‚ โ”‚ โ”œโ”€โ”€ chat.py # POST /v1/chat/completions
โ”‚ โ”‚ โ”œโ”€โ”€ responses.py # POST /v1/responses
โ”‚ โ”‚ โ””โ”€โ”€ models.py # GET /v1/models
โ”‚ โ”œโ”€โ”€ schemas/
โ”‚ โ”‚ โ”œโ”€โ”€ chat.py # Request/Response models
โ”‚ โ”‚ โ””โ”€โ”€ responses.py # Responses API models
โ”‚ โ”œโ”€โ”€ services/
โ”‚ โ”‚ โ””โ”€โ”€ browser.py # Playwright browser engine
โ”‚ โ””โ”€โ”€ utils/
โ”‚ โ”œโ”€โ”€ prompt.py # Smart prompt builder
โ”‚ โ””โ”€โ”€ parser.py # Tool-call JSON parser
โ”œโ”€โ”€ static/
โ”‚ โ””โ”€โ”€ index.html # Chat GUI
โ”œโ”€โ”€ tests/
โ”‚ โ””โ”€โ”€ test_health.py # Endpoint tests
โ”œโ”€โ”€ Dockerfile
โ”œโ”€โ”€ docker-compose.yml
โ”œโ”€โ”€ requirements.txt
โ”œโ”€โ”€ .env.example
โ””โ”€โ”€ run.py # Entry point
```

---

## ๐Ÿณ Docker Deployment

```bash
# Build and run
docker-compose up --build -d

# The server is now running on http://localhost:7777
```

---

## ๐Ÿ”ง API Reference

### `POST /v1/chat/completions`

Standard OpenAI Chat Completions endpoint. Supports messages, tools, and function calling.

### `POST /v1/responses`

Modern Responses API for newer n8n versions. Accepts `input` (string or messages) and optional `instructions`.

### `GET /v1/models`

Returns available model identifiers (used by n8n's model dropdown).

### `GET /`

Health check โ€” returns server status and version.

---

## ๐Ÿ“„ License

This project is open-sourced under the [MIT License](LICENSE).

---

**Built with โค๏ธ by [mrshibly](https://github.com/mrshibly)**