เรียก Claude API ผ่าน Base URL เดียว
เรียก Claude API ผ่าน RelaySwitch โดยเปลี่ยนเพียงสองค่าในโค้ด: Base URL เป็น https://api.relayswitch.io/v1 และ key เป็น key ที่ขึ้นต้นด้วย sk-relay- ส่วน Anthropic SDK และ OpenAI SDK ใช้ได้ตามเดิม
01สิ่งที่เปลี่ยนในโค้ดมีสองค่า
การใช้ Claude API โดยตรงต้องเปิดบัญชีใน Console ของ Anthropic เติมเงินที่นั่น แล้วใช้ key ของ Anthropic เมื่อเรียกผ่าน RelaySwitch ส่วนนี้เปลี่ยนไป: เติมเงินและรับ key ที่ RelaySwitch แล้วส่ง request มาที่ gateway ซึ่งส่งต่อไปยังโมเดล สำหรับโค้ดมีเพียง Base URL และ key ที่ต่างไป ส่วน request body, model id, streaming และ tool call ยังเหมือนเดิม
gateway รับสอง format ด้วย key เดียวกันและยอดเงินเดียวกัน: /messages ซึ่งเป็น format ของ Claude เอง และ /chat/completions สำหรับโค้ดที่เขียนด้วย OpenAI SDK อยู่แล้ว ราคาเท่ากันทั้งสองทาง
02ทดสอบด้วย curl ก่อน
เริ่มจาก curl เพื่อยืนยันว่า key และที่อยู่ถูกต้อง ก่อนย้ายไปใส่ใน SDK ตัวเลือก -i พิมพ์ header ออกมาด้วย ซึ่งมี request id ของการเรียกครั้งนั้น
key ใส่ได้ทั้งใน header x-api-key และ Authorization: Bearer แต่หนึ่ง request ต้องมี key เพียงค่าเดียว
curl -i https://api.relayswitch.io/v1/messages \ -H "Authorization: Bearer sk-relay-..." \ -H "anthropic-version: 2023-06-01" \ -H "content-type: application/json" \ -d '{"model": "claude-fable-5.1", "max_tokens": 16, "messages": [{"role": "user", "content": "Reply with ok"}]}'03Anthropic SDK สำหรับ Python
ส่ง base_url และ api_key ตอนสร้าง client ส่วนที่เหลือของโค้ดไม่ต้องแก้ Anthropic SDK ต่อ /v1/messages ท้าย Base URL เอง และ gateway รองรับกรณี /v1 ซ้ำ ตัวอย่างจึงใช้ https://api.relayswitch.io/v1 เหมือนกันทุกที่ SDK สำหรับ Node ใช้หลักเดียวกัน โดยส่ง baseURL และ apiKey
ค่า usage ใน response ระบุ input token และ output token ซึ่งตรงกับใบเสร็จของ request นั้น
import anthropic client = anthropic.Anthropic(base_url="https://api.relayswitch.io/v1", api_key="sk-relay-...")reply = client.messages.create( model="claude-fable-5.1", max_tokens=300, messages=[{"role": "user", "content": "Reply with ok"}],)print(reply.content[0].text)print(reply.usage)04OpenAI SDK กับโมเดล Claude
โค้ดที่เขียนตาม OpenAI format อยู่แล้ว หรือโค้ดชุดเดียวที่ต้องเรียกโมเดลของหลายค่าย ให้ใช้ /chat/completions แล้วเปลี่ยนค่า model เป็น id ของ Claude โครงสร้างโค้ดไม่ต้องเปลี่ยน
from openai import OpenAI client = OpenAI(base_url="https://api.relayswitch.io/v1", api_key="sk-relay-...")reply = client.chat.completions.create( model="claude-fable-5.1", messages=[{"role": "user", "content": "Reply with ok"}],)print(reply.choices[0].message.content)05ควรใช้ format ไหน
การเปิด streaming ทำเหมือนกันทั้งสอง format คือตั้ง stream เป็น true แล้ว response จะมาเป็น server-sent events
| โปรแกรมใหม่ หรือต้องใช้ความสามารถเฉพาะของ Claude | Anthropic SDK ผ่าน /messages: field system โครงสร้าง tool call แบบ native และเครื่องหมาย prompt cache |
| โค้ดเดิมเป็น OpenAI format หรือเรียกหลายค่ายในโค้ดชุดเดียว | OpenAI SDK ผ่าน /chat/completions เปลี่ยนเฉพาะค่า model |
| Claude Code และเครื่องมือเขียนโค้ดอื่น | แต่ละเครื่องมือใช้ format ตายตัว ดูหน้า Claude Code หรือคู่มือรายเครื่องมือ (ภาษาอังกฤษ) |
06รหัส error ที่เจอบ่อย
เนื้อหาของ error ใช้โครงสร้างเดียวกับ format ที่ผู้เรียกใช้ รหัส 401 ถึง 404 ตอบกลับก่อนที่ request จะไปถึงโมเดล ส่วน 429, 502 และ 503 ไม่มีเนื้อหาจากโมเดลตอบกลับ ทั้งหมดนี้จึงไม่คิดเงิน
401 invalid_api_key | ไม่ได้ส่ง key มา key ไม่ถูกต้อง หรือถูกเพิกถอนแล้ว |
402 insufficient_balance | ยอดเงินไม่พอ ส่วนกรณีที่งบหรือเพดานของ key หมด จะเป็นรหัสอื่นในกลุ่ม 402 |
403 scope_denied | id นี้ไม่อยู่ใน allow-list ของ key |
404 model_not_found | model id ไม่อยู่ในแคตตาล็อก ส่วนใหญ่เกิดจากการสะกดผิด |
429 rate_limited | key ถึงขีดจำกัดอัตราการเรียก header retry-after บอกจำนวนวินาทีที่ต้องรอ |
502 upstream_error และ 503 upstream_unavailable | route มีปัญหา หรือยังไม่มี route ใดตอบในขณะนั้น |
07ราคา Claude ทุกรุ่นต่อหนึ่งล้าน token
ตารางนี้คือราคาที่ถูกหักจริง อ่านจากแคตตาล็อกตอนสร้างหน้า โมเดลที่รองรับ cache มีราคา cached input แยกอีกหนึ่งค่า ใช้กับ token ที่ตรงกับ prompt cache เช่น system prompt ยาว เอกสารที่ส่งซ้ำ และประวัติของบทสนทนาหลาย turn ใบเสร็จของแต่ละ request แยก input, cached input และ output ให้ตรวจได้ทีละรายการ
| โมเดล | ผู้พัฒนา | Input | Output | Context |
|---|---|---|---|---|
| Claude Fable 5.1claude-fable-5.1 | Anthropic | $6.00 | $30.00 | 1,000,000 |
| Claude Fable 5.2claude-fable-5.2 | Anthropic | $4.00 | $20.00 | 1,000,000 |
| Claude Fable 5claude-fable-5 | Anthropic | $3.00 | $15.00 | 1,000,000 |
| Claude Opus 5.5claude-opus-5-5 | Anthropic | $2.716 | $9.70 | 1,000,000 |
| Claude Sonnet 4.6claude-sonnet-4-6 | Anthropic | $1.80 | $9.00 | 1,000,000 |
| Claude Opus 4.6claude-opus-4-6 | Anthropic | $1.80 | $7.50 | 1,000,000 |
| Claude Opus 4.7claude-opus-4-7 | Anthropic | $1.80 | $7.50 | 1,000,000 |
| Claude Opus 4.8claude-opus-4-8 | Anthropic | $1.80 | $7.50 | 1,000,000 |
| Claude Opus 5claude-opus-5 | Anthropic | $1.80 | $7.50 | 1,000,000 |
| Claude Haiku 4.5claude-haiku-4-5 | Anthropic | $0.60 | $3.00 | 200,000 |
| Claude Sonnet 5claude-sonnet-5 | Anthropic | $1.20 | $3.00 | 1,000,000 |
| Claude Sonnet 5.5claude-sonnet-5-5 | Anthropic | $1.20 | $3.00 | 1,000,000 |
| Claude Haiku 5.5claude-haiku-5-5 | Anthropic | $0.0582 | $0.1455 | 1,000,000 |
USD ต่อหนึ่งล้าน token
08ก่อนขึ้น production
เอกสาร API ฉบับเต็มอยู่ที่ relayswitch.io/docs เป็นภาษาอังกฤษ
- สร้าง key แยกสำหรับ production แล้วตั้งงบ เพดานรายวัน allow-list ของโมเดล และ allow-list ของ IP ตามที่ต้องใช้
- เมื่อ request ล้มเหลว ให้อ่าน header
retry-afterเพื่อกำหนดเวลารอก่อนลองใหม่ - บันทึก request id ที่มากับ error ไว้ใน log เพราะใช้ค้นการเรียกครั้งนั้นได้ตอนตรวจปัญหา
- หนึ่ง id มีหลาย route เมื่อ route หนึ่งตอบ 5xx หรือ 429 request จะย้ายไป route ถัดไปของโมเดลเดียวกันในราคาเดิม ส่วนโมเดลที่มี route เดียวจะตอบ 503
คำถามที่พบบ่อย
- วิธีใช้ Claude API ต้องเริ่มจากอะไร
- เปิดบัญชีด้วยอีเมลในคอนโซล เติมเงินขั้นต่ำ $10 ด้วยบัตรหรือคริปโต สร้าง key แล้วรัน curl ตัวอย่างในหน้านี้ ถ้าได้ 200 ก็ย้าย Base URL และ key ไปใส่ใน SDK ได้
- Base URL ของ Claude API ต้องมี /v1 ไหม
- ต้องมี ให้ใส่ https://api.relayswitch.io/v1 แล้ว SDK จะต่อ /messages หรือ /chat/completions ให้เอง
- รองรับ streaming ไหม
- รองรับ ตั้ง stream เป็น true ใน request แล้ว response จะเป็น server-sent events ทุกโมเดลรองรับ streaming
- ยืนยันได้อย่างไรว่าที่ตอบคือ Claude จริง ไม่ใช่โมเดลอื่น
- มีสองทางที่ไม่ต้องเชื่อคำในหน้านี้ ทางแรก ทุกโมเดลได้รับ prompt ทดสอบชุดเดียวกันทุกวัน คำตอบถูกเทียบกับรอบก่อนหน้า และผลเปิดเผยที่ https://api.relayswitch.io/v1/proof ทางที่สอง ทุก request มีใบเสร็จลงลายเซ็น Ed25519 ที่ GET https://api.relayswitch.io/v1/requests/:id/receipt ระบุ model id, token ที่คิดเงิน และค่าใช้จ่าย ตรวจด้วย public key แบบ offline ได้
- ใช้ key เดียวกันกับทั้ง Anthropic SDK และ OpenAI SDK ได้ไหม
- ได้ key เดียวและ Base URL เดียวคือ https://api.relayswitch.io/v1 Anthropic SDK เรียก /messages ส่วน OpenAI SDK เรียก /chat/completions และเขียน id ของ Claude แบบเดียวกันทั้งสองทาง
- request ที่ล้มเหลวถูกคิดเงินไหม
- request ที่ล้มเหลวก่อนถึงโมเดล หรือที่โมเดลไม่ตอบ จะไม่ถูกคิดเงิน รหัส 401 ถึง 404 รวมถึง 429, 502 และ 503 จึงไม่มีค่าใช้จ่าย
เปลี่ยน base_url บรรทัดเดียว
Base URL คือ https://api.relayswitch.io/v1 Claude ทุกรุ่นคิดตามราคาสดในแคตตาล็อก และมีการตรวจโมเดลแบบเปิดเผยทุกวัน