Spaces:
Sleeping
Sleeping
metadata
title: Haiku API
emoji: 🤖
colorFrom: blue
colorTo: purple
sdk: docker
app_port: 7860
Haiku API
OpenAI-compatible API proxy for Claude Haiku 4.5 via chatgpt.org.
Supports tool/function calling, auto-continue for the 1K token limit, rotating proxy, and SSE keep-alive.
Features
- Tool/Function Calling: Full OpenAI-compatible tool calling support. Converts
toolsdefinitions to system prompts, parses Claude's output for<tool_call_>blocks, and returns properly formattedtool_callsresponses. - Auto-Continue: When the upstream 1K token limit is hit, automatically continues the response with "Continue" messages.
- SSE Keep-Alive: Sends keep-alive comments during continuation gaps to prevent socket timeouts.
- Rotating Proxy: Supports unstable rotating proxies with automatic retries on connection failures.
- Message Normalization: Handles Orchids.app's content array format and converts it to plain text.
Environment Variables
| Variable | Description | Default |
|---|---|---|
PROXY_URL |
Rotating proxy URL (e.g. http://user:pass@proxy.op.wtf:32424) |
"" (direct) |
Set these in HF Spaces > Settings > Variables and Secrets.
Usage
Chat Completions (non-streaming)
curl https://YOUR_SPACE.hf.space/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-haiku-4-5",
"messages": [{"role": "user", "content": "Hello!"}]
}'
Chat Completions (streaming)
curl https://YOUR_SPACE.hf.space/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-haiku-4-5",
"messages": [{"role": "user", "content": "Hello!"}],
"stream": true
}'
With Tool Calling
curl https://YOUR_SPACE.hf.space/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-haiku-4-5",
"messages": [{"role": "user", "content": "Create a file called hello.txt with hello world"}],
"tools": [{
"type": "function",
"function": {
"name": "Write",
"description": "Write content to a file",
"parameters": {
"type": "object",
"properties": {
"file_path": {"type": "string", "description": "Path to the file"},
"content": {"type": "string", "description": "Content to write"}
},
"required": ["file_path", "content"]
}
}
}]
}'
With OpenAI Python SDK
from openai import OpenAI
client = OpenAI(
base_url="https://YOUR_SPACE.hf.space/v1",
api_key="not-needed",
)
response = client.chat.completions.create(
model="anthropic/claude-haiku-4-5",
messages=[{"role": "user", "content": "Hello!"}],
)
print(response.choices[0].message.content)
List Models
curl https://YOUR_SPACE.hf.space/v1/models
Endpoints
| Endpoint | Description |
|---|---|
POST /v1/chat/completions |
OpenAI-compatible chat completions (with tool calling) |
POST /chat/completions |
Same, without /v1 prefix |
GET /v1/models |
List available models |
GET /health |
Health check |
GET /debug/session |
Session debug info |
GET /debug/refresh |
Force session refresh |