Spaces:
Paused
Paused
| title: Web2API | |
| emoji: 🧩 | |
| colorFrom: blue | |
| colorTo: indigo | |
| sdk: docker | |
| app_port: 9000 | |
| pinned: false | |
| # Web2API | |
| Bridge Claude Web sessions to OpenAI / Anthropic compatible APIs. Runs as a Docker Space on Hugging Face. | |
| ## Endpoints | |
| | Path | Protocol | Description | | |
| |------|----------|-------------| | |
| | `/claude/v1/models` | OpenAI | List available models | | |
| | `/claude/v1/chat/completions` | OpenAI | Chat completions | | |
| | `/claude/v1/messages` | Anthropic | Messages API | | |
| | `/config` | — | Admin dashboard | | |
| ## Supported models | |
| | Model ID | Upstream | Tier | Notes | | |
| |----------|----------|------|-------| | |
| | `claude-sonnet-4.6` | claude-sonnet-4-6 | Free | Sonnet 4.6 (default) | | |
| | `claude-sonnet-4-5` | claude-sonnet-4-5 | Free | Sonnet 4.5 | | |
| | `claude-sonnet-4-6-thinking` | claude-sonnet-4-6 | Free | Sonnet 4.6 extended thinking | | |
| | `claude-sonnet-4-5-thinking` | claude-sonnet-4-5 | Free | Sonnet 4.5 extended thinking | | |
| | `claude-haiku-4-5` | claude-haiku-4-5 | Pro | Haiku 4.5 (fastest) | | |
| | `claude-haiku-4-5-thinking` | claude-haiku-4-5 | Pro | Haiku 4.5 extended thinking | | |
| | `claude-opus-4-6` | claude-opus-4-6 | Pro | Opus 4.6 (most capable) | | |
| | `claude-opus-4-6-thinking` | claude-opus-4-6 | Pro | Opus 4.6 extended thinking | | |
| Pro models require a Claude Pro subscription and must be enabled in the config page. | |
| ## Quick start | |
| 1. Set required secrets in Space settings | |
| 2. Open `/login` → `/config` | |
| 3. Add a proxy group and a Claude account with `auth.sessionKey` | |
| 4. (Optional) Enable Pro models toggle if your account has a Pro subscription | |
| 5. Call the API: | |
| ```bash | |
| # OpenAI format (streaming) | |
| curl $SPACE_URL/claude/v1/chat/completions \ | |
| -H "Authorization: Bearer $API_KEY" \ | |
| -H "Content-Type: application/json" \ | |
| -d '{"model":"claude-sonnet-4.6","stream":true,"messages":[{"role":"user","content":"Hello"}]}' | |
| # Anthropic format (streaming) | |
| curl $SPACE_URL/claude/v1/messages \ | |
| -H "Authorization: Bearer $API_KEY" \ | |
| -H "Content-Type: application/json" \ | |
| -d '{"model":"claude-sonnet-4.6","stream":true,"max_tokens":1024,"messages":[{"role":"user","content":"Hello"}]}' | |
| # Extended thinking | |
| curl $SPACE_URL/claude/v1/chat/completions \ | |
| -H "Authorization: Bearer $API_KEY" \ | |
| -H "Content-Type: application/json" \ | |
| -d '{"model":"claude-sonnet-4-6-thinking","stream":true,"messages":[{"role":"user","content":"Solve this step by step: what is 23 * 47?"}]}' | |
| ``` | |
| ## Required secrets | |
| | Secret | Purpose | | |
| |--------|---------| | |
| | `WEB2API_AUTH_API_KEY` | API auth key for `/claude/v1/*` | | |
| | `WEB2API_AUTH_CONFIG_SECRET` | Password for `/login` and `/config` | | |
| | `WEB2API_DATABASE_URL` | PostgreSQL URL for persistent config (optional) | | |
| ## Recommended environment variables | |
| For a small CPU Space: | |
| ``` | |
| WEB2API_BROWSER_NO_SANDBOX=true | |
| WEB2API_BROWSER_DISABLE_GPU=true | |
| WEB2API_BROWSER_DISABLE_GPU_SANDBOX=true | |
| WEB2API_SCHEDULER_RESIDENT_BROWSER_COUNT=0 | |
| WEB2API_SCHEDULER_TAB_MAX_CONCURRENT=5 | |
| WEB2API_BROWSER_CDP_PORT_COUNT=6 | |
| ``` | |