Multi-Provider API Gateway

Exocore AI Gateway

Unified REST API for Gemini, Claude, DeepSeek, Qwen, and Meta AI — all behind a single server powered by @exocore/multi.

Base URL
Google Gemini

Gemini API

Cookie-based proxy to Google Gemini — multi-turn chat, file uploads, and session management.

Status
last checked
Cookies
validity
Client
initialized
cURL
curl "/api/gemini/health"
cURL
curl "/api/gemini/cookies"

Replace the cookie jar with a fresh raw cookie string. The server parses, saves, and re-initializes the Gemini client.

FieldTypeRequiredDescription
body string Required Raw cookie string SID=x; HSID=y; ...
cURL
curl -X POST "/api/gemini/cookies" \
  -H "Content-Type: text/plain" \
  --data-raw "SID=abc; HSID=xyz; ..."
cURL
curl -X DELETE "/api/gemini/cookies"

Sends a text prompt to Gemini. Supports multi-turn with cid, rid, rcid params.

ParamTypeReqDescription
askstringRequired*Text prompt
uploadstringOptFile URLs to attach
cidstringOptConversation ID
ridstringOptResponse ID
rcidstringOptCandidate ID
modelstringOptfast, thinking, or pro (default: fast)
tokensboolOptStream tokens as SSE (true)
deleteboolOptAuto-delete conversation after reply
cURL
curl "/api/gemini/chat?ask=What+is+the+capital+of+France"
Multi-turn IDs (optional)

Truly temporary Gemini chat — no cookies, no auth required. Sessions are ephemeral.

cURL
curl "/api/gemini/temp/chat?ask=Hello"

Conversations

cURL
curl "/api/gemini/conversations"
cURL
curl -X DELETE "/api/gemini/conversations"
cURL
curl -X DELETE "/api/gemini/conversations/<id>"
DeepSeek

DeepSeek API

Token-based client for DeepSeek chat. Configure via deepseek.json with userToken and hifLeim fields.

Status
configured
cURL
curl "/api/deepseek/health"

Sends a message to DeepSeek via GET query. Auto-creates session if sessionId omitted.

ParamTypeReqDescription
promptstringReqYour message
sessionIdstringOptResume existing session
thinkingEnabledboolOptEnable reasoning
searchEnabledboolOptEnable web search
deleteboolOptAuto-delete session after reply
tokensboolOptStream tokens as SSE (true)
cURL
curl "/api/deepseek/chat?prompt=Hello"

Same as GET but with JSON body.

cURL
curl -X POST "/api/deepseek/chat" \
  -H "Content-Type: application/json" \
  --data '{"prompt":"Hello"}'

Sessions

cURL
curl "/api/deepseek/sessions?limit=20"
cURL
curl -X POST "/api/deepseek/sessions"
cURL
curl -X DELETE "/api/deepseek/sessions"
cURL
curl -X DELETE "/api/deepseek/sessions/<id>"
cURL
curl "/api/deepseek/sessions/<id>/messages"

Send a message to an existing session.

cURL
curl -X POST "/api/deepseek/sessions/<id>/chat" \
  -H "Content-Type: application/json" \
  --data '{"prompt":"Hello again"}'

Regenerate an assistant response for a given message.

cURL
curl -X POST "/api/deepseek/sessions/<id>/regenerate/<msgId>"

Edit a user message and re-generate the response.

cURL
curl -X POST "/api/deepseek/sessions/<id>/edit/<msgId>" \
  -H "Content-Type: application/json" \
  --data '{"prompt":"edited text"}'

Continue generating from a partial assistant response.

cURL
curl -X POST "/api/deepseek/sessions/<id>/continue/<msgId>"

Stop an in-progress streaming response.

cURL
curl -X POST "/api/deepseek/sessions/<id>/stop/<msgId>"
cURL
curl -X PUT "/api/deepseek/sessions/<id>/title" \
  -H "Content-Type: application/json" \
  --data '{"title":"My Chat"}'
cURL
curl -X PUT "/api/deepseek/sessions/<id>/pinned" \
  -H "Content-Type: application/json" \
  --data '{"pinned":true}'

User & PoW

cURL
curl "/api/deepseek/user"

Request a PoW challenge for a target endpoint.

ParamTypeReqDescription
targetstringOptDefault /api/v0/chat/completion
cURL
curl "/api/deepseek/pow-challenge"

Solve a PoW challenge and get the answer.

cURL
curl -X POST "/api/deepseek/pow-solve" \
  -H "Content-Type: application/json" \
  --data '{"challenge":"...","difficulty":...}'

Shares

cURL
curl "/api/deepseek/shares"
cURL
curl -X POST "/api/deepseek/shares" \
  -H "Content-Type: application/json" \
  --data '{"sessionId":"...","messageIds":["..."]}'

Fork a shared conversation into a new session.

cURL
curl -X POST "/api/deepseek/shares/fork" \
  -H "Content-Type: application/json" \
  --data '{"shareId":"..."}'
cURL
curl -X DELETE "/api/deepseek/shares/<id>"
Qwen

Qwen API

Token-based client for Qwen AI chat. Configure via qwen.json cookies file with a token entry.

Status
configured
cURL
curl "/api/qwen"
cURL
curl "/api/qwen/health"

Send a prompt to Qwen via GET. Supports modes: normal, thinking, fast. Use chat_type for features: slides, travel, learn, deep_research, web_dev, search, artifacts.

ParamTypeReqDescription
promptstringReqYour message
modestringOptnormal, thinking, or fast
image_urlstringOptURL for vision queries
chat_typestringOptFeature: slides, travel, deep_research, etc.
modelstringOptOverride model name
deleteboolOptAuto-delete all conversations after reply
tokensboolOptStream tokens as SSE (true)
cURL
curl "/api/qwen/ask?prompt=Hello&mode=fast"

POST version with JSON body. Supports file attachments via file_path.

cURL
curl -X POST "/api/qwen/ask" \
  -H "Content-Type: application/json" \
  --data '{"prompt":"Hello","mode":"fast","chat_type":"slides"}'

Features

cURL
curl "/api/qwen/ask?prompt=3+slides+about+AI&chat_type=slides"
cURL
curl "/api/qwen/ask?prompt=Tokyo+itinerary&chat_type=travel"
cURL
curl "/api/qwen/ask?prompt=explain+quantum&chat_type=learn"
cURL
curl "/api/qwen/ask?prompt=climate+change+effects&chat_type=deep_research"
cURL
curl "/api/qwen/ask?prompt=React+component&chat_type=web_dev"
cURL
curl "/api/qwen/ask?prompt=latest+tech+news&chat_type=search"
cURL
curl "/api/qwen/ask?prompt=draw+an+SVG+logo&chat_type=artifacts"
cURL
curl "/api/qwen/ask?prompt=calculator+tool&chat_type=tools"
cURL
curl "/api/qwen/ask?prompt=Python+fibonacci&chat_type=code"
cURL
curl "/api/qwen/ask?prompt=design+a+UI+sketch&chat_type=drawing"
cURL
curl "/api/qwen/ask?prompt=you+are+a+detective&chat_type=roleplay"

Files & Conversations

Upload a file as base64 content.

cURL
curl -X POST "/api/qwen/upload" \
  -H "Content-Type: application/json" \
  --data '{"content":"aGVsbG8=","filename":"hello.txt"}'

Retrieve an uploaded file by filename.

cURL
curl "/api/qwen/uploads/<filename>"
cURL
curl "/api/qwen/conversations"
cURL
curl -X DELETE "/api/qwen/conversations"
cURL
curl -X DELETE "/api/qwen/conversations/<id>"
Kimi

Kimi API

Token-based client for Kimi AI chat. Configure via kimi.json cookies file with a kimi-auth cookie entry (JWT token).

Status
configured
cURL
curl "/api/kimi/health"
cURL
curl "/api/kimi/user"
cURL
curl "/api/kimi/models"

Chat

Params: prompt (req), sessionId, thinking, delete (Auto-delete session after reply).

cURL
curl "/api/kimi/chat?prompt=Hello"

Send message via POST with JSON body.

cURL
curl -X POST "/api/kimi/chat" \
  -H "Content-Type: application/json" \
  --data '{"prompt":"Hello"}'

Sessions

cURL
curl "/api/kimi/sessions"
cURL
curl -X POST "/api/kimi/sessions" \
  -H "Content-Type: application/json" \
  --data '{"name":"My Chat"}'
cURL
curl "/api/kimi/sessions/<id>"
cURL
curl "/api/kimi/sessions/<id>/messages"

Send message to an existing session.

cURL
curl -X POST "/api/kimi/chat/<id>" \
  -H "Content-Type: application/json" \
  --data '{"prompt":"Hello"}'
cURL
curl -X PUT "/api/kimi/sessions/<id>" \
  -H "Content-Type: application/json" \
  --data '{"chat":{"name":"New Name"}}'
cURL
curl -X DELETE "/api/kimi/sessions/<id>"
cURL
curl -X DELETE "/api/kimi/sessions"

Kimi+

cURL
curl "/api/kimi/kimiplus"
cURL
curl "/api/kimi/kimiplus/<id>"

Other

cURL
curl -X POST "/api/kimi/cancel/<chatId>/<messageId>"
cURL
curl -X POST "/api/kimi/vote/<chatId>/<messageId>" \
  -H "Content-Type: application/json" \
  --data '{"voteType":"upvote"}'
Anthropic Claude

Claude API

Free Claude access via Puter's driver API. Configure an auth_token in data/claude.json.

Status
configured
cURL
curl "/api/claude/health"
cURL
curl "/api/claude/models"

Chat

Query params: ask (required), model (optional, default: claude-sonnet-4-6).

cURL
curl "/api/claude/chat?ask=Hello"

Send messages array with optional streaming. Body: { messages, model?, stream?, max_tokens? }.

cURL
curl -X POST "/api/claude/chat" \
  -H "Content-Type: application/json" \
  --data '{"messages":[{"role":"user","content":"Hello"}],"model":"claude-sonnet-4-6"}'

Available Models

claude-sonnet-4-6
claude-opus-4-7
claude-haiku-4-5
claude-opus-4-6
claude-3-sonnet
claude-3-haiku
claude-3-opus

V1 / Anthropic-compatible

Claude also supports the /v1/messages endpoint with Anthropic-style model names — the gateway maps them to Puter driver models automatically.

Anthropic Message API format. Model names like claude-sonnet-4-20250514, claude-opus-4-7 are mapped automatically.

cURL
curl -X POST "/v1/messages" \
  -H "Content-Type: application/json" \
  --data '{"model":"claude-sonnet-4-20250514","messages":[{"role":"user","content":"Hello"}],"max_tokens":1024}'
OpenAI

GPT API

Free GPT access via Puter's driver API. Configure an auth_token in data/gpt.json (can reuse data/claude.json token).

Status
configured
cURL
curl "/api/gpt/health"
cURL
curl "/api/gpt/models"

Chat

Query params: ask (required), model (optional, default: gpt-4o).

cURL
curl "/api/gpt/chat?ask=Hello"

Send messages array with optional streaming. Body: { messages, model?, stream?, max_tokens? }.

cURL
curl -X POST "/api/gpt/chat" \
  -H "Content-Type: application/json" \
  --data '{"messages":[{"role":"user","content":"Hello"}],"model":"gpt-4o"}'

Available Models

gpt-4o
gpt-4o-mini
gpt-4.1
gpt-4.1-mini
gpt-4.1-nano
gpt-4.5-preview
gpt-5-chat-latest
gpt-5.1
gpt-5.1-chat-latest
gpt-5.2-chat-latest
gpt-5.4
gpt-5.4-nano
gpt-5.5
o1
o1-mini
o3-mini
o4-mini
xAI

Grok API

Free Grok access via Puter's driver API. Configure an auth_token in data/grok.json (can reuse data/claude.json token).

Status
configured
cURL
curl "/api/grok/health"
cURL
curl "/api/grok/models"

Chat

Query params: ask (required), model (optional, default: grok-3).

cURL
curl "/api/grok/chat?ask=Hello"

Send messages array with optional streaming. Body: { messages, model?, stream?, max_tokens? }.

cURL
curl -X POST "/api/grok/chat" \
  -H "Content-Type: application/json" \
  --data '{"messages":[{"role":"user","content":"Hello"}],"model":"grok-3"}'

Available Models

grok-3
grok-3-fast
grok-3-mini
grok-3-mini-fast
grok-4
grok-4-fast
grok-4-1-fast
grok-4.3
grok-beta
grok-2-vision
Meta

Meta AI API

Cookie-based proxy to Meta AI (Llama). Requires ecto_1_sess and datr cookies in data/meta.json.

Status
configured
cURL
curl "/api/meta/health"
cURL
curl "/api/meta/models"

Chat

Query params: ask (required). Optionally delete=true to auto-delete conversation.

cURL
curl "/api/meta/chat?ask=Hello"

Send messages array. Body: { messages, model? }.

cURL
curl -X POST "/api/meta/chat" \
  -H "Content-Type: application/json" \
  --data '{"messages":[{"role":"user","content":"Hello"}]}'

Image Generation

Query params: prompt (required), orientation (optional: VERTICAL, HORIZONTAL, SQUARE).

cURL
curl "/api/meta/image?prompt=a+cat&orientation=SQUARE"

Video Generation

Query params: prompt (required). Video generation is async — returns a processing status.

cURL
curl "/api/meta/video?prompt=a+cat+playing"

Available Models

meta-ai
OpenAI-Compatible

V1 API

Unified OpenAI-compatible /v1/chat/completions endpoint that routes to any provider. All models are mapped automatically — just set the model field in your request body.

Endpoint
POST /v1/chat/completions
OpenAI-compatible

Available Models

gemini
gemini-fast
gemini-flash
gemini-thinking
gemini-pro
deepseek
deepseek-default
deepseek-instant
deepseek-thinking
deepseek-expert
deepseek-search
deepseek-vision
qwen
qwen-normal
qwen-fast
qwen-thinking
qwen3.7-max
qwen3.7-max-fast
qwen3.7-max-thinking
qwen3.6-plus
qwen3.6-plus-fast
qwen3.6-plus-thinking
qwen3.5-flash
qwen3.5-flash-normal
qwen3.5-flash-thinking
meta
meta-ai
meta-fast
meta-thinking
kimi
kimi-default
kimi-thinking
claude
claude-sonnet
claude-opus
claude-haiku
claude-sonnet-4-6
claude-opus-4-7
claude-haiku-4-5
gpt-4o
gpt-4o-mini
gpt-4.1
gpt-4.1-mini
gpt-5-chat-latest
gpt-5.1
gpt-5.1-chat-latest
gpt-5.2-chat-latest
gpt-5.4
gpt-5.5
o1
o1-mini
o3-mini
o4-mini
grok-3
grok-3-fast
grok-3-mini
grok-4
grok-4-fast
grok-4.3
meta
meta-ai

Pass any model ID from the list above in the model field. The gateway routes to the correct provider automatically.

cURL
curl -X POST "/v1/chat/completions" \
  -H "Content-Type: application/json" \
  --data '{"model":"claude-sonnet-4-6","messages":[{"role":"user","content":"Hello"}]}'

Model prefix shorthand: pass the model name as a URL path segment before /v1/messages (e.g. /claude-sonnet/v1/messages).

cURL
curl "/v1/models"

Usage Examples

Gemini

cURL
curl -X POST "/v1/chat/completions" \
  -H "Content-Type: application/json" \
  --data '{"model":"gemini-thinking","messages":[{"role":"user","content":"What is 2+2?"}]}'

DeepSeek

cURL
curl -X POST "/v1/chat/completions" \
  -H "Content-Type: application/json" \
  --data '{"model":"deepseek-thinking","messages":[{"role":"user","content":"Explain quantum computing"}]}'

Qwen

cURL
curl -X POST "/v1/chat/completions" \
  -H "Content-Type: application/json" \
  --data '{"model":"qwen-thinking","messages":[{"role":"user","content":"Write a poem"}]}'

Kimi

cURL
curl -X POST "/v1/chat/completions" \
  -H "Content-Type: application/json" \
  --data '{"model":"kimi-thinking","messages":[{"role":"user","content":"Hello"}]}'

Claude

cURL
curl -X POST "/v1/chat/completions" \
  -H "Content-Type: application/json" \
  --data '{"model":"claude-opus-4-7","messages":[{"role":"user","content":"Explain relativity"}]}'

Meta AI

cURL
curl -X POST "/v1/chat/completions" \
  -H "Content-Type: application/json" \
  --data '{"model":"meta","messages":[{"role":"user","content":"Hello"}]}'

GPT (OpenAI)

cURL
curl -X POST "/v1/chat/completions" \
  -H "Content-Type: application/json" \
  --data '{"model":"gpt-4o","messages":[{"role":"user","content":"Hello"}]}'

Grok (xAI)

cURL
curl -X POST "/v1/chat/completions" \
  -H "Content-Type: application/json" \
  --data '{"model":"grok-4","messages":[{"role":"user","content":"Hello"}]}'

Anthropic-compatible

The gateway also supports Anthropic's /v1/messages format with model override via URL path prefix.

Anthropic-style message format. Maps model names like claude-sonnet-4-20250514, claude-opus-4-7 etc. automatically.

cURL
curl -X POST "/v1/messages" \
  -H "Content-Type: application/json" \
  --data '{"model":"claude-sonnet-4-20250514","messages":[{"role":"user","content":"Hello"}],"max_tokens":1024}'

Override the model by prefixing the URL path. Works with any V1 model ID.

cURL
curl -X POST "/claude-sonnet/v1/messages" \
  -H "Content-Type: application/json" \
  --data '{"messages":[{"role":"user","content":"Hello"}],"max_tokens":1024}'