--- title: PhantomAPI emoji: ๐Ÿ‘ป colorFrom: purple colorTo: indigo sdk: docker pinned: false ---
# ๐Ÿ‘ป 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 ``` --- ## ๐Ÿค— Hugging Face Spaces Deployment You can deploy PhantomAPI directly to Hugging Face Spaces for free. 1. **Create a New Space**: Go to [huggingface.co/new-space](https://huggingface.co/new-space) 2. **Select SDK**: Choose **Docker** 3. **Choose Template**: Select **Blank** (The existing `Dockerfile` will be used automatically) 4. **Configure Secrets**: - Go to **Settings โ†’ Variables and secrets** in your Space - Add a new **Secret** named `API_SECRET_KEY` with your desired token 5. **Push Code**: ```bash git remote add hf https://huggingface.co/spaces/YOUR_USERNAME/YOUR_SPACE_NAME git push -u hf main ``` PhantomAPI will automatically start on port `7860`. --- ## ๐Ÿ”ง 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)**
Hugging Face Secrets Set Karein: Hugging Face Space ke Settings -> Variables and secrets mein jayein aur ye add karein: CHATGPT_SESSION_TOKEN: Isme apna ChatGPT session token dalein (Chrome DevTools -> Application -> Cookies -> __Secure-next-auth.session-token). PROXY_URL: (Optional) Agar IP block ho rahi hai, toh apna proxy URL dalein (e.g., http://username:password@ip:port). Logs Check Karein: Push karne ke baad agar fir bhi fail hota hai, toh mujhe naye logs dikhaiye. Ab logs mein humein saaf dikhega ki browser login page par hai ya Cloudflare par.