گیسو علاوه بر قالب OpenAI، Messages API شرکت Anthropic را هم میپذیرد. پس Claude Code و SDK رسمی Anthropic بدون هیچ تغییری در کد، فقط با عوض کردن نشانی پایه و کلید، به گیسو وصل میشوند. درخواستها از همان مسیر گفتوگو عبور میکنند: همان مدلها، همان محدودیتها و همان صورتحساب.
SDKهای Anthropic و Claude Code خودشان /v1/messages را به نشانی اضافه میکنند؛ پس نشانی پایه را https://gisoo.pro/api بگذارید، بدون /v1.
Claude Code
Claude Code ابزار کدنویسی Anthropic است و با همین endpoint کار میکند. کوتاهترین تنظیم، سه متغیر پیش از اجرای claude است.
تنظیم دائمی در settings.json، همهٔ متغیرها، نام مدلها، هزینه و رفع خطا در راهنمای کامل Claude Code آمده است.
برای سرورها و کاربران داخل ایران، در این نمونه نشانی gisoo.pro را با ir.gisoo.pro جایگزین کنید؛ مسیر و کلید هماناند.
# Claude Code → Gisoo (Linux / macOS)
export ANTHROPIC_BASE_URL="https://gisoo.pro/api"
export ANTHROPIC_AUTH_TOKEN="sk-gisoo-v1-..."
export ANTHROPIC_MODEL="claude-sonnet-4-5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-haiku-4-5"
export CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC=1 # no telemetry / update checks to other servers
claude
SDK رسمی Anthropic
برای سرورها و کاربران داخل ایران، در این نمونه نشانی gisoo.pro را با ir.gisoo.pro جایگزین کنید؛ مسیر و کلید هماناند.
# pip install anthropic
import os
import anthropic
client = anthropic.Anthropic(
base_url="https://gisoo.pro/api", # not .../v1 — the SDK adds /v1/messages
api_key=os.environ["GISOO_API_KEY"],
)
message = client.messages.create(
model="claude-sonnet-4-5",
max_tokens=1024,
system="Answer in Persian.",
messages=[{"role": "user", "content": "Explain Big-O notation in three lines."}],
)
print(message.content[0].text)
print(message.usage)
// npm install @anthropic-ai/sdk
import Anthropic from "@anthropic-ai/sdk";
const client = new Anthropic({ baseURL: "https://gisoo.pro/api", apiKey: process.env.GISOO_API_KEY });
const stream = client.messages.stream({
model: "claude-sonnet-4-5",
max_tokens: 1024,
messages: [{ role: "user", content: "Write a short commit message for a typo fix." }],
});
stream.on("text", (text) => process.stdout.write(text));
await stream.finalMessage();
curl https://gisoo.pro/api/v1/messages \
-H "x-api-key: $GISOO_API_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-sonnet-4-5",
"max_tokens": 512,
"messages": [{"role": "user", "content": "Hello, Claude"}]
}'
{
"id": "msg_4b1f0c9a7e2d8f3a6c5b0e1d",
"type": "message",
"role": "assistant",
"model": "claude-sonnet-4-5",
"content": [{ "type": "text", "text": "…" }],
"stop_reason": "end_turn",
"stop_sequence": null,
"usage": { "input_tokens": 12, "output_tokens": 48, "cache_creation_input_tokens": 0, "cache_read_input_tokens": 0 }
}
نام مدلها
- نامهای Anthropic، با تاریخ یا بدون تاریخ، به مدل Claude همان نسخه در کاتالوگ گیسو میرسند:
claude-sonnet-4-5وclaude-sonnet-4-5-20250929هر دوopenrouter/anthropic/claude-sonnet-4.5را صدا میزنند. - شناسهٔ کامل کاتالوگ هم کار میکند:
openrouter/anthropic/claude-sonnet-4.5. - هر مدل متنی دیگر گیسو را هم میتوانید با همین قالب بخواهید؛ مثلاً
gpt-4.1یاgemini-3.6-flash. پاسخ همان قالب Anthropic را دارد. - فیلد
modelدر پاسخ همان نامی است که فرستادهاید.
چه چیزهایی کار میکند
| قابلیت | وضعیت |
|---|---|
متن، system (رشته یا آرایهٔ بلوکها)، stop_sequences، temperature، top_p | پشتیبانی میشود. |
پاسخ جریانی (stream: true) | همان رویدادهای Anthropic: message_start، content_block_*، message_delta، message_stop و ping. |
ابزارها (tools، tool_use، tool_result، tool_choice) | پشتیبانی میشود؛ ابزارهایی که input_schema دارند. |
| تصویر (base64 یا نشانی) | برای مدلهایی که تصویر میخوانند. |
کش پرامپت (cache_control) | برای Claude حفظ میشود و توکنهای کششده ارزانتر حساب میشوند؛ برای مدلهای سازندههای دیگر نادیده گرفته میشود. |
POST /messages/count_tokens | برآورد تعداد توکن ورودی، بدون هزینه. عدد برآوردی است، نه شمارش دقیق سازنده. |
فکر کردن طولانی (thinking) | نادیده گرفته میشود و پاسخ بدون آن میآید. |
| ابزارهای سمت سرور Anthropic (جستوجوی وب، اجرای کد) و MCP سمت سرور | کنار گذاشته میشوند. |
| Message Batches و Files API | در گیسو نیستند. |
خطاها
خطاها در قالب Anthropic برمیگردند تا SDK و Claude Code آنها را بشناسند. کد دقیق گیسو هم در error.code میآید (فهرست در خطاها):
{
"type": "error",
"error": { "type": "billing_error", "message": "اعتبار کافی نیست. …", "code": "insufficient_credit" }
}
| وضعیت | error.type |
|---|---|
| ۴۰۰ | invalid_request_error |
| ۴۰۱ | authentication_error |
| ۴۰۲ | billing_error |
| ۴۰۳ | permission_error |
| ۴۰۴ | not_found_error |
| ۴۱۳ | request_too_large |
| ۴۲۹ | rate_limit_error |
| ۵۰۲ | api_error |
| ۵۰۳ | overloaded_error |
شناسهٔ هر درخواست در هدر request-id (و X-Request-Id) میآید و با GET /requests/{id} هزینهاش را میدهد.
هزینه و محدودیت
هر درخواست به /messages دقیقاً مثل یک درخواست گفتوگو حساب میشود: قیمت مدل در GET /models، مصرف واقعی گزارششده و همان محدودیتهای کلید
(۶۰ درخواست در دقیقه و ۸ درخواست همزمان بهطور پیشفرض). اگر Claude Code چند کار را موازی اجرا کند و به rate_limit_error خورد،
با تیکت سقف بیشتری بخواهید.
پاسخ پرسشتان را پیدا نکردید؟
شناسهٔ درخواست (هدر X-Request-Id) را با پرسشتان در تیکت بفرستید تا دقیق بررسی کنیم.