免费 AI Token 导航 Free Token Navigation

讯飞星火免费API申请教程:Spark Lite 不限调用量与实名要点

Spark
长期 / 永久免费 生效中

免费额度

Spark Lite 永久免费 API,不限调用量;新用户另赠约 500 万 tokens(约 3 个月)

🔎 官网核验 2026-10-27:额度仍在 · 页面标注多款模型限时免费或免费并可免费领取,但未提及 Spark Lite 永久免费 API

注意事项

注意接口协议:星火走 WebSocket,非 OpenAI 兼容格式,需要接官方 SDK。合规性好,政企场景常用。

教程

讯飞星火的额度领取流程分为注册、实名认证、创建应用、领取或开通额度几个环节,全部在讯飞开放平台控制台完成,不需要绑定银行卡。

申请步骤

  1. 打开星火开放平台页面 https://xinghuo.xfyun.cn/sparkapi,点击页面上的「免费试用」或「立即接入」,会跳转到讯飞开放平台的登录/注册页面。
  2. 用手机号加短信验证码注册,或用已有讯飞开放平台账号直接登录。企业用户可以先用个人身份登录,之后再补充企业主体信息。
  3. 完成实名认证。个人认证需要身份证信息与本人核验,企业认证需要营业执照等材料。未完成实名通常无法创建应用,也无法调用接口,这一步是硬性门槛。
  4. 进入控制台点击「创建新应用」,填写应用名称与使用场景后提交。创建成功后进入应用详情页,找到 Spark Lite 的免费服务入口,按提示开通或领取额度。
  5. 在应用详情页记录 APPID、APIKey、APISecret 三个凭证,后续调用签名必须三者齐全。新用户赠送的约 500 万 tokens 一般在开通后自动发放,实际数量与到账位置以控制台实际显示为准。
  6. 在控制台的服务管理或资源包页面确认免费额度的剩余量与有效期。赠送 tokens 一般有约 3 个月的使用期限,到期未用完的部分不结转,后续政策以页面说明为准。

常见坑:

  • 只复制了 APIKey 而漏掉 APISecret,签名一定失败,三个凭证要一起保存。
  • 星火主接口走 WebSocket 协议,不是 OpenAI 兼容的 HTTP 格式,直接拿现成的 OpenAI SDK 改地址是调不通的,需要接官方 SDK 或自己实现签名。
  • 创建应用或开通服务时不要顺手勾选后付费或付费套餐,先确认自己在免费服务范围内再开始调用。
  • 实名信息的主体要与账号使用方一致,个人认证不要填企业信息,否则审核会被退回。

星火的主流调用方式是 WebSocket 长连接,请求体是一个 JSON,包含 header、parameter、payload 三段;鉴权信息拼在连接地址的 query 参数里,需要自己用 APISecret 做 HMAC-SHA256 签名。

接口地址与模型名

WebSocket 地址形如 wss://spark-api.xf-yun.com/v1.1/chat,对应 Lite 版本;其他版本路径不同,如 v3.1、v3.5、v4.0,具体以控制台已开通的服务和官方文档为准。模型通过请求体里的 domain 字段指定,Lite 对应 general,其余如 generalv3、generalv3.5、4.0Ultra 等需与已开通版本匹配。

如果控制台同时开通了 HTTP 兼容服务,也可以使用 OpenAI 风格地址 https://spark-api-open.xf-yun.com/v1,此时 model 填 lite、generalv3.5 这类名称,鉴权把 APIKey 与 APISecret 用冒号拼接后作为 Bearer 令牌。是否可用以控制台实际开通情况为准。

先看 HTTP 兼容方式的请求形态:

curl https://spark-api-open.xf-yun.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer 你的APIKey:你的APISecret" \
  -d '{"model":"lite","messages":[{"role":"user","content":"你好"}],"temperature":0.5,"max_tokens":1024,"stream":false}'

WebSocket 方式的完整签名与一次对话调用如下,运行前先安装依赖:

pip install websocket-client
import base64
import hashlib
import hmac
import json
from datetime import datetime
from urllib.parse import urlencode, urlparse

import websocket

APP_ID = "你的APPID"
API_KEY = "你的APIKey"
API_SECRET = "你的APISecret"

BASE_URL = "wss://spark-api.xf-yun.com/v1.1/chat"
parsed = urlparse(BASE_URL)
host = parsed.hostname
path = parsed.path

date = datetime.utcnow().strftime("%a, %d %b %Y %H:%M:%S GMT")
sign_origin = "host: " + host + "\ndate: " + date + "\nGET " + path + " HTTP/1.1"
digest = hmac.new(API_SECRET.encode("utf-8"), sign_origin.encode("utf-8"), hashlib.sha256).digest()
signature = base64.b64encode(digest).decode("utf-8")

auth_origin = 'api_key="' + API_KEY + '", algorithm="hmac-sha256", headers="host date request-line", signature="' + signature + '"'
authorization = base64.b64encode(auth_origin.encode("utf-8")).decode("utf-8")

url = BASE_URL + "?" + urlencode({"authorization": authorization, "date": date, "host": host})

body = {
    "header": {"app_id": APP_ID, "uid": "demo_user"},
    "parameter": {"chat": {"domain": "general", "temperature": 0.5, "max_tokens": 1024}},
    "payload": {"message": {"text": [{"role": "user", "content": "用一句话介绍你自己"}]}},
}

ws = websocket.create_connection(url)
ws.send(json.dumps(body))

answer = ""
while True:
    resp = json.loads(ws.recv())
    if resp["header"]["code"] != 0:
        print("请求失败:", resp["header"]["code"], resp["header"].get("message"))
        break
    choices = resp["payload"]["choices"]
    answer = answer + choices["text"][0]["content"]
    if choices["status"] == 2:
        break

ws.close()
print(answer)

注意 header.uid 只是用户标识,填任意字符串即可;payload.message.text 是消息数组,多轮对话要把历史消息按先后顺序放进去。

关键参数说明

  • header.app_id:控制台里的 APPID,不是 APIKey。
  • parameter.chat.domain:模型版本标识,Lite 用 general,与已开通服务不一致会直接报错。
  • parameter.chat.temperature:随机性,取值 0 到 1,问答类场景建议 0.1 到 0.5。
  • parameter.chat.max_tokens:单次回复的最大生成长度,设得太小会出现回答被截断。
  • payload.message.text:消息数组,每项含 role(user 或 assistant)与 content。
  • 流式返回时按 payload.choices.status 判断是否结束,等于 2 表示本次生成完毕。

额度耗尽与限流的典型表现

连接建立后服务端会在 header.code 返回非 0 值并附带 message,提示通常集中在鉴权失败、额度不足或有效期已过、请求频率超限这几类;HTTP 兼容方式则表现为 401、403 或 429 状态码。排查按下面顺序走,能覆盖绝大多数情况。

  1. 核对三个凭证:APPID、APIKey、APISecret 是否与当前应用一致,是否误用了其他应用的密钥。
  2. 核对签名串:date 必须是 GMT 格式且与本机时间偏差不大,签名原文里 host、date、request-line 三段的顺序不能改。
  3. 核对地址与 domain:连接路径里的版本号要和已开通服务对应,domain 不能填成未开通的模型。
  4. 登录控制台查看免费额度剩余量与有效期,赠送 tokens 过期后调用会直接失败,需要重新领取或改用其他服务。
  5. 若提示频率或并发超限,降低调用速率、减少并发连接后重试,免费档的并发通常较低。
  6. 最后检查消息长度与 max_tokens 是否超过该模型的上下文上限,以及本机网络、代理是否拦截了 WebSocket 连接。

这个还能用吗?点一下告诉我们

只能从下方固定选项中选择,无法自由输入,避免垃圾信息与安全隐患。

标签

需实名WebSocket

官方入口

控制台 ↗

留言区 0

真实访客可自由留言,提交后先经内容安全审核(本地 + 可选远程 API)再展示;违规内容会被拦截,不会出现在此处。示例留言均带「示例」标识,不冒充真实用户。

  • 还没有留言,来抢沙发~(示例留言已标注「示例」字样,非真实用户)
录入:2026-10-26 · 最近更新:2026-10-26 · 分类:国内 API · 国内直连