cURL 示例
所有 kukuai.fyi API 都可以直接用 cURL 调用,方便快速验证、写 shell 脚本或在 CI 里做健康检查。
所有 kukuai.fyi API 都可以直接用 cURL 调用,方便快速验证、写 shell 脚本或在 CI 里做健康检查。
把环境准备好,确认 API Key 与网络都没问题:
将下方脚本里的 sk-xxx 替换为你在 https://kukuai.fyi 控制台创建的 API Key。
check.shbash
# 1. 准备 API Key
export KUKUAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx
# 2. 检查 API 是否可达(鉴权 + 网络)
curl -s -o /dev/null -w "%{http_code}\n" \
https://www.kukuai.fyi/api-proxy/china/v1/models \
-H "Authorization: Bearer $KUKUAI_API_KEY"
# 期望输出:200列模型
组合 jq 提取 ID,便于在脚本中按需挑选:
bash
curl https://www.kukuai.fyi/api-proxy/china/v1/models \
-H "Authorization: Bearer $KUKUAI_API_KEY" | jq '.data[].id'调用 chat/completions
bash
curl https://www.kukuai.fyi/api-proxy/china/v1/chat/completions \
-H "Authorization: Bearer $KUKUAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-4-7",
"messages": [
{"role": "system", "content": "You are a concise assistant."},
{"role": "user", "content": "用 30 字介绍一下 kukuai.fyi"}
]
}'响应字段与 OpenAI 一致;完整字段定义见 POST /v1/chat/completions。
流式响应
bash
# -N 关闭输出缓冲,按行实时打印 SSE
curl -N https://www.kukuai.fyi/api-proxy/china/v1/chat/completions \
-H "Authorization: Bearer $KUKUAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "claude-opus-4-7",
"stream": true,
"messages": [{"role": "user", "content": "讲一个关于 API 网关的冷笑话"}]
}'退避重试脚本
生产场景中务必处理 429 / 5xx。下面是一个最小可运行的 bash 重试模板,方便嵌入 CI 或排障会话:
call.shbash
#!/usr/bin/env bash
# 简单的 429/5xx 退避重试示例
set -euo pipefail
call() {
curl -sS -w "\n%{http_code}" \
https://www.kukuai.fyi/api-proxy/china/v1/chat/completions \
-H "Authorization: Bearer $KUKUAI_API_KEY" \
-H "Content-Type: application/json" \
-d "$1"
}
PAYLOAD='{"model":"claude-opus-4-7","messages":[{"role":"user","content":"hi"}]}'
for i in 1 2 3; do
RESP=$(call "$PAYLOAD")
CODE=$(echo "$RESP" | tail -n1)
BODY=$(echo "$RESP" | sed '$d')
if [ "$CODE" -lt 400 ]; then
echo "$BODY"
exit 0
fi
# 仅对可重试错误做退避
case "$CODE" in
408|429|500|502|503|504)
sleep $((2 ** (i - 1)))
;;
*)
echo "Non-retryable error $CODE: $BODY" >&2
exit 1
;;
esac
done
echo "Exhausted retries" >&2
exit 1关于错误码与各自的处理建议,请参阅 错误码 页。