
프로젝트 소개 및 사용 시 주의사항
ChatGPT2API는 ChatGPT 공식 웹사이트 관련 기능을 역방향으로 분석하고 정리하여 패키징한 프로젝트로, 이미지 생성, 이미지 편집 및 여러 이미지 조합 편집 시나리오를 위한 OpenAI 호환 API와 프록시를 제공합니다. 또한 온라인 이미지 작업대, 계정 풀 관리, 다양한 계정 가져오기 방식 및 Docker 자체 호스팅 배포 기능을 통합합니다.
중요 안내: 프로젝트 README에는 개인 학습, 기술 연구 및 비상업적 기술 교류 용도로만 사용하도록 명시되어 있습니다. 상업적 용도, 대량 작업, 자동화된 악용, 대규모 호출 또는 OpenAI 서비스 약관과 현지 법률 및 규정을 위반하는 어떠한 행위에도 사용하지 마세요. 테스트 시에도 중요한 계정, 주로 사용하는 계정 또는 가치가 높은 계정을 사용해서는 안 됩니다.
이 프로젝트는 공식 웹사이트 인터페이스에 대한 역방향 연구를 포함하므로, 사용 중 계정 제한, 일시 정지 또는 영구 정지 위험이 있을 수 있습니다. 사용하기 전에 관련 위험을 이해하고 수용하는지 확인하세요.

주요 기능
OpenAI 호환 인터페이스
POST /v1/images/generations이미지 생성 인터페이스를 지원합니다.POST /v1/images/edits이미지 편집 인터페이스를 지원합니다.- 이미지 시나리오를 위한
POST /v1/chat/completions및POST /v1/responses호환 인터페이스를 제공합니다. GET /v1/models를 통해 이미지 및 관련 모델 목록을 제공합니다.n매개변수를 사용하여 여러 생성 결과를 반환할 수 있으며, 현재 백엔드 제한은 1~4장입니다.- 편집 가능한 PPT 및 PSD 파일 생성을 지원합니다.
온라인 이미지 생성 및 편집
내장 작업대는 텍스트로 이미지 생성, 참조 이미지 편집 및 여러 이미지 조합 편집을 지원하며, gpt-image-2, codex-gpt-image-2, auto 및 README에 나열된 GPT 모델 별칭을 선택할 수 있습니다. 프런트엔드는 이미지 세션 기록, 로컬 저장, 삭제 및 전체 삭제, 서버 이미지 URL 캐시, 생성 진행률 추적, 지연 로딩 및 스크롤 위치 기억 기능도 제공합니다.
계정 풀 관리
계정 풀은 계정 이메일, 유형, 할당량 및 복구 시간을 비동기적으로 새로 고칠 수 있으며, 사용 가능한 계정을 순환하면서 이미지 생성 및 편집을 실행합니다. Token 만료 유형의 오류가 발생하면 시스템이 유효하지 않은 Token을 자동으로 제거할 수 있습니다. 또한 제한된 계정에 대해서는 정기 점검, 비밀번호 재로그인 및 자동 복구를 지원합니다.
프로젝트는 HTTP, HTTPS, SOCKS5, SOCKS5H 프록시와 WARP, Privoxy 및 FlareSolverr로 구성된 안정적인 프록시 런타임을 지원합니다. 계정 가져오기 방식에는 로컬 CPA JSON, 원격 CPA 서버, sub2api 서버 및 access_token이 포함됩니다.


Docker로 빠르게 배포하기
1. 프로젝트 가져오기 및 서비스 시작
먼저 Docker Compose로 전체 서비스를 시작하는 것을 권장합니다. 다음 명령을 실행하여 프로젝트를 복제하고 백그라운드에서 실행하세요.
git clone https://github.com/iamdurant/chatgpt2api-personal.git chatgpt2api
cd chatgpt2api
docker compose pull
docker compose up -d시작하기 전에 config.json에서 auth-key를 설정해야 합니다. 또한 docker-compose.yml에서 환경 변수 CHATGPT2API_AUTH_KEY를 사용하여 이 설정을 덮어쓸 수 있습니다.
기본적으로 Web 패널 주소는 http://localhost:3000, API 기본 주소는 http://localhost:3000/v1이며, 데이터는 프로젝트 디렉터리의 ./data에 저장됩니다. README의 일부 curl 예시는 localhost:8000을 사용하므로 실제 호출 시에는 Compose 포트 매핑에 맞게 포트를 수정하세요.
2. Web 패널 접속
서비스가 시작되면 브라우저에서 http://localhost:3000을 여세요. 처음 사용할 때는 먼저 인증 키, 계정 및 프록시 등 필요한 설정을 완료한 다음 작업대에서 이미지 생성 또는 편집 기능을 테스트해야 합니다.
3. 서비스 업데이트
이후 이미지를 업데이트하려면 다음을 실행하세요.
docker compose pull
docker compose up -dWARP 및 FlareSolverr 안정 프록시 활성화

이미지 요청이 Cloudflare에 의해 자주 차단되는 경우, 프로젝트에 포함된 WARP, Privoxy 및 FlareSolverr 배포 방식을 사용할 수 있습니다.
cp .env.example .env
docker compose -f docker-compose.warp.yml pull
docker compose -f docker-compose.warp.yml up -d이 Compose 설정은 다음 서비스를 시작합니다.
warp-proxy: WARP SOCKS5 출구를 제공합니다.privoxy: WARP SOCKS5를 HTTP 프록시로 변환합니다.flaresolverr: Cloudflare clearance를 갱신합니다.init-config:proxy_runtime기본 설정을 멱등적으로 기록합니다.app: ChatGPT2API 주 서비스를 실행합니다.
기본적으로 업스트림 OpenAI 또는 ChatGPT 요청만 안정 프록시를 사용하며, 계정 이메일, CPA 등의 보조 연결은 강제로 인계되지 않습니다. 프록시 우선순위는 계정 자체에 설정된 프록시, 안정 프록시 런타임, 명시적 프록시, 이전 버전 전역 프록시 순입니다. .env에서 포트와 런타임 매개변수를 조정할 수 있으며, 백그라운드 설정 페이지에서 프록시와 clearance를 테스트할 수도 있습니다.
로컬 개발 환경
백엔드 시작
프로젝트 README는 uv로 Python 의존성을 관리합니다. 다음 명령을 실행하여 백엔드를 시작하세요.
git clone https://github.com/iamdurant/chatgpt2api-personal.git chatgpt2api
cd chatgpt2api
uv sync
uv run main.py프런트엔드 시작
Web 디렉터리로 이동한 후 Bun으로 의존성을 설치하고 개발 서버를 시작하세요.
cd chatgpt2api/web
bun install
bun run dev
구성 저장소 백엔드
프로젝트는 환경 변수 STORAGE_BACKEND를 통해 저장 방식을 선택합니다.
json: 로컬 JSON 파일, 기본 방식입니다.sqlite: 로컬 SQLite 데이터베이스입니다.postgres: 외부 PostgreSQL이며,DATABASE_URL을 설정해야 합니다.git: Git 비공개 저장소이며,GIT_REPO_URL및GIT_TOKEN을 설정해야 합니다.
예를 들어 PostgreSQL을 사용하는 경우 Compose 환경 변수에 다음을 추가할 수 있습니다.
environment:
- STORAGE_BACKEND=postgres
- DATABASE_URL=postgresql://user:password@host:5432/dbname이미지 생성 API 호출
모든 AI 인터페이스에는 다음 인증 요청 헤더를 포함해야 합니다.
Authorization: Bearer <auth-key>먼저 모델 목록 인터페이스를 호출하면 현재 제공되는 모델을 확인할 수 있습니다.
curl http://localhost:8000/v1/models \
-H "Authorization: Bearer <auth-key>"텍스트로 이미지 생성은 POST /v1/images/generations를 사용합니다. 다음 예시는 우주에 떠 있는 고양이 한 마리를 생성합니다.
curl http://localhost:8000/v1/images/generations \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <auth-key>" \
-d '{
"model": "gpt-image-2",
"prompt": "우주에 떠 있는 고양이 한 마리",
"n": 1,
"response_format": "b64_json"
}'
model은 /v1/models에서 반환되는 사용 가능한 값을 사용해야 하며, README에서는 이미지 생성에 gpt-image-2를 사용할 것을 권장합니다. n으로 생성 수량을 설정할 수 있지만, 현재 백엔드 제한은 1~4장입니다. response_format 예시는 b64_json을 사용합니다.
이미지 편집 API 호출
multipart로 로컬 이미지 업로드
이미지 편집 인터페이스는 로컬 파일 업로드를 지원하며, 프롬프트로 수정 내용을 설명할 수 있습니다.
curl http://localhost:8000/v1/images/edits \
-H "Authorization: Bearer <auth-key>" \
-F "model=gpt-image-2" \
-F "prompt=이 이미지를 사이버펑크 야경 스타일로 변경" \
-F "n=1" \
-F "image=@./input.png"이미지 URL로 편집
JSON 형식으로 이미지 URL을 전달할 수도 있습니다.
curl http://localhost:8000/v1/images/edits \
-H "Authorization: Bearer <auth-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "이 이미지를 사이버펑크 야경 스타일로 변경",
"images": [
{"image_url": "https://example.com/input.png"}
]
}'댓글 앵커로 특정 영역 편집
comments 배열을 사용하면 웹 버전의 이미지 댓글 방식 편집을 시뮬레이션할 수 있습니다. x와 y는 0~1의 정규화된 값, 백분율 문자열 또는 0~100의 숫자를 지원합니다.
curl http://localhost:8000/v1/images/edits \
-H "Authorization: Bearer <auth-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "나머지 부분은 그대로 유지",
"images": [
{"image_url": "https://example.com/input.png"}
],
"comments": [
{"x": "27.5%", "y": "70%", "text": "청자 찻주전자를 금색 테두리의 백자 찻주전자로 교체"},
{"x": 0.36, "y": 0.315, "text": "머리 땋은 부분에 금색 비녀를 하나 더 꽂기"}
]
}'요청에 comments가 포함된 경우 prompt는 생략할 수 있습니다. 각 댓글은 image_index를 사용해 해당 입력 이미지를 지정할 수도 있으며, 기본값은 0입니다.

주석 획을 사용한 편집
프로젝트는 웹 버전의 주석 브러시도 지원합니다. markup_strokes를 사용할 때 points는 정규화된 좌표 폴리라인이며, color의 기본값은 #FF3B30이고 width는 이미지 짧은 변에 대한 선 너비 비율입니다.
curl http://localhost:8000/v1/images/edits \
-H "Authorization: Bearer <auth-key>" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "원 안의 네온 간판을 녹색으로 교체",
"images": [
{"image_url": "https://example.com/input.png"}
],
"markup_strokes": [
{
"points": [[0.62, 0.18], [0.78, 0.22], [0.75, 0.42], [0.6, 0.38], [0.62, 0.18]],
"color": "#FF3B30",
"width": 0.01
}
]
}'원본 이미지와 동일한 비율의 투명 획 PNG가 이미 있다면 multipart 방식으로 markup 파일을 업로드할 수도 있습니다. 프로젝트는 획을 입력 이미지에 맞춰 정렬하고 합성한 후 편집을 실행합니다.
Chat Completions 및 Responses 호환 인터페이스 사용
Chat Completions
POST /v1/chat/completions는 텍스트, 웹 검색 및 이미지 시나리오에 호환 기능을 제공하지만, README에서는 완전한 범용 채팅 에이전트가 아니라고 명시합니다. 이미지 생성 예시:
curl http://localhost:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <auth-key>" \
-d '{
"model": "gpt-image-2",
"messages": [
{
"role": "user",
"content": "비 내리는 밤 도쿄 거리의 사이버펑크 고양이 이미지를 생성해줘"
}
],
"n": 1
}'이 인터페이스의 messages에는 텍스트, 검색 및 이미지 요청 내용을 담을 수 있습니다. tools는 README에 나열된 웹 검색 도구를 지원하며, stream은 텍스트, 검색 및 이미지 시나리오에서 아직 테스트 중입니다.
Responses API
POST /v1/responses는 이미지 생성 도구 호출과 웹 검색 호환 로직을 지원하지만, 마찬가지로 완전한 범용 Responses API 프록시는 아닙니다.
curl http://localhost:8000/v1/responses \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <auth-key>" \
-d '{
"model": "gpt-5",
"input": "미래적인 도시 스카이라인 이미지를 생성해줘",
"tools": [
{
"type": "image_generation"
}
]
}'여기서 tools는 image_generation, web_search, web_search_preview 및 web_search_preview_2025_03_11을 지원합니다. 스트리밍 응답은 구현되어 있지만 아직 테스트 중입니다.
고급 사용 권장 사항
- 먼저 인증과 모델 목록을 확인하세요: 배포 후 먼저
/v1/models를 호출하여auth-key와 포트 설정이 올바른지 확인한 다음 이미지 요청을 수행하세요. - 스토리지 백엔드를 적절히 선택하세요: 개인 테스트에는 기본 JSON 또는 SQLite를 사용할 수 있습니다. 외부 데이터베이스가 필요할 때 PostgreSQL을 구성하고 연결 문자열을 안전하게 보호하세요.
- Cloudflare 차단에 대응하세요: 업스트림 요청의 안정성이 낮을 때는 프로젝트에서 제공하는 WARP Compose 방식에 따라 안정적인 프록시를 우선 구성하고, 백엔드에서 프록시와 clearance를 테스트하세요.
- 계정 풀 위험을 관리하세요: 정기적으로 만료된 Token을 정리하고 검색, 필터 및 일괄 새로 고침 기능을 사용해 계정 상태를 관리하세요. 계정에 대해 README에서 금지한 일괄 작업이나 남용 작업을 수행하지 마세요.
- 모델 별칭을 구분하세요:
codex-gpt-image-2는 Codex 이미지 생성 시나리오에 사용되며 Plus, Team, Pro 구독에서만 이용할 수 있습니다. 실제 사용 가능한 모델은/v1/models의 반환 결과를 기준으로 해야 합니다. - 인터페이스의 범위를 유의하세요: Chat Completions와 Responses는 주로 README에 설명된 텍스트, 검색 및 이미지 시나리오를 대상으로 하며, 완전한 범용 프록시로 사용해서는 안 됩니다.
요약
ChatGPT2API는 ChatGPT 웹 버전의 이미지 관련 기능을 OpenAI 스타일 인터페이스로 래핑하고, 온라인 워크벤치, 이미지 편집 강화 기능, 계정 풀, 프록시 런타임 및 다양한 배포 방식을 제공합니다. 먼저 Docker로 기본 배포를 완료한 뒤 필요에 따라 스토리지 백엔드, 안정적인 프록시 및 계정 가져오기를 구성하고, 마지막으로 /v1/images/generations 및 /v1/images/edits를 통해 이미지 생성 및 편집 흐름을 연동할 수 있습니다. 사용 시 프로젝트 면책 조항, 업스트림 서비스 약관 및 현지 법률과 규정을 반드시 준수하세요.
