STEYG Code · Docs3 mục tài liệu

STEYG Code Docs

Hướng dẫn cấu hình, snippet, endpoint và quy ước tích hợp công khai cho người dùng và coding agents.

Tìm hiểu STEYG Code

Hướng dẫn cấu hình

3 bước thiết lập

Ba bước để nối công cụ lập trình với STEYG. Chọn đúng công cụ bên dưới, copy đoạn cấu hình rồi dán vào.

Kiểm tra model
  1. Tạo API key

    Cần làm

    Tạo một khóa ở mục Khóa của bạn phía trên.

  2. Cấu hình công cụ

    Cần làm

    Dán địa chỉ STEYG và khóa của bạn vào Cursor, Cline hoặc Claude Code.

  3. Gửi request đầu tiên

    Cần làm

    Chạy thử và xem nó xuất hiện trong nhật ký request.

Chọn công cụ của bạn

Mở đúng công cụ bạn đang dùng, copy toàn bộ đoạn cấu hình rồi dán vào phần cài đặt của công cụ đó.

Cursor / OpenAI-compatibleOverride OpenAI Base URL
Provider:  OpenAI Compatible
Base URL:  https://steyg.one/api/v1
API Key:   sk-steyg-...
Model:     steyg/claude-opus-5-5

# Dùng tiền tố steyg/ để Cursor không nhầm với model built-in cùng tên.
# Các model khác: steyg/gpt-6.1-sol, steyg/gpt-6-luna, steyg/glm-5.3
Cline (VS Code)OpenAI Compatible provider
API Provider: OpenAI Compatible
Base URL:     https://steyg.one/api/v1
API Key:      sk-steyg-...
Model ID:     claude-opus-5-5
Claude Code (Anthropic native)Shell env
export ANTHROPIC_BASE_URL="https://steyg.one/api"
export ANTHROPIC_AUTH_TOKEN="sk-steyg-..."
export ANTHROPIC_MODEL="claude-opus-5-5"
export ANTHROPIC_DEFAULT_OPUS_MODEL="claude-opus-5-5"
export ANTHROPIC_DEFAULT_SONNET_MODEL="claude-opus-5-5"
export ANTHROPIC_DEFAULT_HAIKU_MODEL="claude-opus-5-5"

# Gateway chỉ nhận model ID STEYG Code đang bán, không tự suy từ tên model mặc định của Claude Code.
# Claude Code tự gọi model theo alias: opus/sonnet (lệnh /model, subagent), haiku (tác vụ nền,
# thay ANTHROPIC_SMALL_FAST_MODEL đã deprecated). Thiếu biến nào thì alias đó gọi model STEYG
# không bán và request bị lỗi model không hợp lệ. STEYG không bán Sonnet nên sonnet trỏ về Opus.
Codex CLI / desktop~/.codex/config.toml
model = "gpt-6.1-sol"
model_provider = "steyg"

[model_providers.steyg]
name = "STEYG One"
base_url = "https://steyg.one/api/v1"
experimental_bearer_token = "sk-steyg-..."
wire_api = "responses"

# Không dùng field api_key: Codex bỏ qua field đó và request sẽ bị 401.
# Codex desktop: Cmd+Q rồi mở lại để nạp config mới.
OpenAI SDK (TypeScript)chat.completions
import OpenAI from "openai";

const client = new OpenAI({
  apiKey: process.env.STEYG_CODE_API_KEY,
  baseURL: "https://steyg.one/api/v1",
});

const response = await client.chat.completions.create(
  {
    model: "claude-opus-5-5",
    messages: [{ role: "user", content: "Say hi from STEYG Code." }],
    max_tokens: 256,
  },
  {
    headers: {
      "Idempotency-Key": "deploy-check-001",
    },
  },
);

console.log(response.choices[0]?.message?.content);
OpenAI SDK (Python)chat.completions
import os

from openai import OpenAI

client = OpenAI(
    api_key=os.environ["STEYG_CODE_API_KEY"],
    base_url="https://steyg.one/api/v1",
)

response = client.chat.completions.create(
    model="claude-opus-5-5",
    messages=[{"role": "user", "content": "Say hi from STEYG Code."}],
    max_tokens=256,
    extra_headers={
        "Idempotency-Key": "deploy-check-001",
    },
)

print(response.choices[0].message.content)
curlSmoke test
curl https://steyg.one/api/v1/chat/completions \
  -H "Authorization: Bearer sk-steyg-..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: deploy-check-001" \
  -d '{"model":"claude-opus-5-5","max_tokens":256,"messages":[{"role":"user","content":"hi"}]}'
Danh sách modelModel discovery
curl https://steyg.one/api/v1/models \
  -H "Authorization: Bearer sk-steyg-..."
Kiểm tra quota / số dưSelf-service usage
curl https://steyg.one/api/v1/usage \
  -H "Authorization: Bearer sk-steyg-..."
API referencehttps://steyg.one/api/v1

Endpoint catalog

Các endpoint khách hàng cần để chạy coding agent, xử lý batch, discover model và tự kiểm tra quota.

Authorization: BearerIdempotency-Key
POST/api/v1/chat/completions

Chat completions

OpenAI-compatible chat completions for coding agents and custom clients.

Supports native streaming, idempotent retries, required output caps, and metered usage.

streamidempotentmetered
curl https://steyg.one/api/v1/chat/completions \
  -H "Authorization: Bearer sk-steyg-..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: deploy-check-001" \
  -d '{"model":"claude-opus-5-5","max_tokens":256,"messages":[{"role":"user","content":"Review this diff."}]}'
POST/api/v1/batches

Batch jobs

Queue many OpenAI-compatible requests for asynchronous execution.

Create with POST, then poll the same endpoint with the returned batch identifier.

asyncchatbulk
curl https://steyg.one/api/v1/batches \
  -H "Authorization: Bearer sk-steyg-..." \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: batch-run-001" \
  -d '{"endpoint":"/api/v1/chat/completions","requests":[{"custom_id":"job-1","body":{"model":"claude-opus-5-5","max_tokens":256,"messages":[{"role":"user","content":"Summarize this file."}]}}]}'

GET /api/v1/batches?id=batch_id
GET/api/v1/models

Models

Discover the models available on STEYG Code.

Every active key sees the same full public catalog — there is no per-key model allow-list.

catalog
curl https://steyg.one/api/v1/models \
  -H "Authorization: Bearer sk-steyg-..."
GET/api/v1/usage

Usage

Check quota, balance, request count, tokens, and spend for the active key.

Optional date and model filters keep self-service billing checks scoped and quick. Money fields are in VND (budget_vnd, spent_vnd, remaining_vnd, cost_vnd).

quotabillingself-service
curl "https://steyg.one/api/v1/usage?start=2026-07-01&end=2026-07-07" \
  -H "Authorization: Bearer sk-steyg-..."
Kiểm chứng model & receipt

Kiểm chứng strict-routing bằng receipt chữ ký

Khi bật receipt signing, request Chat Completions thành công có thể trả về header X-Steyg-Receipt: bản ghi Ed25519 do STEYG ký về model ID bạn chọn và cam kết không fallback. Khoá công khai bên dưới cho phép kiểm tra receipt do STEYG phát hành và chưa bị sửa đổi.

Lấy khoá công khai

curl -s https://steyg.one/api/v1/receipts/public-key

Gọi một completion và đọc header receipt

curl -s -D - -o /dev/null \
  https://steyg.one/api/v1/chat/completions \
  -H "Authorization: Bearer sk-steyg-..." \
  -H "Content-Type: application/json" \
  -d '{"model":"claude-opus-5-5","messages":[{"role":"user","content":"ping"}],"max_tokens":1}'

Kiểm tra chữ ký và model bằng Node.js

node -e '
(async () => {
  const receipt = JSON.parse(process.argv[1]);
  const publicKeyDer = Buffer.from(process.argv[2], "base64");
  const expectedModel = process.argv[3];
  const { signature, signedAt, kid, ...payload } = receipt;
  const fields = { ...payload, signedAt, kid };
  const body = JSON.stringify(
    Object.fromEntries(Object.entries(fields).sort(([a], [b]) => a.localeCompare(b))),
  );
  const publicKey = await globalThis.crypto.subtle.importKey(
    "spki",
    publicKeyDer,
    { name: "Ed25519" },
    false,
    ["verify"],
  );
  const signatureValid = await globalThis.crypto.subtle.verify(
    { name: "Ed25519" },
    publicKey,
    Buffer.from(signature, "base64"),
    Buffer.from(body),
  );
  const routeValid = receipt.model === expectedModel && receipt.fallbackUsed === false;
  console.log({ signatureValid, routeValid, model: receipt.model, fallbackUsed: receipt.fallbackUsed });
  process.exitCode = signatureValid && routeValid ? 0 : 1;
})().catch((error) => {
  console.error(error);
  process.exitCode = 1;
});
' "<PASTE_X_STEYG_RECEIPT>" "<PASTE_PUBLIC_KEY_BASE64>" "claude-opus-5-5"

Thay hai placeholder bằng toàn bộ giá trị X-Steyg-Receipt và trường publicKeyBase64 từ bước đầu. Đổi argument cuối nếu request dùng model khác. Lệnh trả exit code 0 chỉ khi chữ ký hợp lệ, model khớp và fallbackUsed là false.

Receipt xác nhận nội dung do STEYG ký và chưa bị sửa đổi. Đây là cam kết có chữ ký của STEYG, không phải chứng thực độc lập về model vật lý phía nhà cung cấp upstream.