Skip to content

多语言调用示例

示例统一使用环境变量:

bash
export BASE_URL="https://api.ruikon.com"
export API_KEY="sk-替换为你的密钥"

MODELIMAGE_MODELSEEDANCE_MODEL 换成当前分组实际支持的模型。

文本请求

bash
curl "$BASE_URL/v1/chat/completions" -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" -d '{"model":"MODEL","messages":[{"role":"user","content":"介绍一下这个服务"}]}'
javascript
const res = await fetch(`${BASE_URL}/v1/chat/completions`, { method: 'POST', headers: { Authorization: `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'MODEL', messages: [{ role: 'user', content: '介绍一下这个服务' }] }) })
console.log(await res.json())
javascript
import OpenAI from 'openai'
const client = new OpenAI({ apiKey: process.env.API_KEY, baseURL: `${process.env.BASE_URL}/v1` })
console.log(await client.chat.completions.create({ model: 'MODEL', messages: [{ role: 'user', content: '介绍一下这个服务' }] }))
java
var json = "{\"model\":\"MODEL\",\"messages\":[{\"role\":\"user\",\"content\":\"介绍一下这个服务\"}]}";
var request = java.net.http.HttpRequest.newBuilder(java.net.URI.create(System.getenv("BASE_URL") + "/v1/chat/completions"))
    .header("Authorization", "Bearer " + System.getenv("API_KEY"))
    .header("Content-Type", "application/json")
    .POST(java.net.http.HttpRequest.BodyPublishers.ofString(json)).build();
var response = java.net.http.HttpClient.newHttpClient().send(request, java.net.http.HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
go
package main
import ("io"; "log"; "net/http"; "os"; "strings")
func main() { req, _ := http.NewRequest("POST", os.Getenv("BASE_URL")+"/v1/chat/completions", strings.NewReader(`{"model":"MODEL","messages":[{"role":"user","content":"介绍一下这个服务"}]}`)); req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY")); req.Header.Set("Content-Type", "application/json"); r, err := http.DefaultClient.Do(req); if err != nil { log.Fatal(err) }; defer r.Body.Close(); io.Copy(os.Stdout, r.Body) }
python
import os, requests
r = requests.post(os.environ['BASE_URL'] + '/v1/chat/completions', headers={'Authorization': 'Bearer ' + os.environ['API_KEY']}, json={'model': 'MODEL', 'messages': [{'role': 'user', 'content': '介绍一下这个服务'}]}, timeout=120)
r.raise_for_status(); print(r.json())

OpenAI 生图

bash
curl "$BASE_URL/v1/images/generations" -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" -d '{"model":"IMAGE_MODEL","prompt":"一只在雨中奔跑的狗,电影感","size":"1024x1024"}'
javascript
const res = await fetch(`${BASE_URL}/v1/images/generations`, { method: 'POST', headers: { Authorization: `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'IMAGE_MODEL', prompt: '一只在雨中奔跑的狗,电影感', size: '1024x1024' }) })
console.log(await res.json())
javascript
import OpenAI from 'openai'
const client = new OpenAI({ apiKey: process.env.API_KEY, baseURL: `${process.env.BASE_URL}/v1` })
const result = await client.images.generate({ model: 'IMAGE_MODEL', prompt: '一只在雨中奔跑的狗,电影感', size: '1024x1024' })
console.log(result.data)
java
var json = "{\"model\":\"IMAGE_MODEL\",\"prompt\":\"一只在雨中奔跑的狗,电影感\",\"size\":\"1024x1024\"}";
var req = java.net.http.HttpRequest.newBuilder(java.net.URI.create(System.getenv("BASE_URL") + "/v1/images/generations")).header("Authorization", "Bearer " + System.getenv("API_KEY")).header("Content-Type", "application/json").POST(java.net.http.HttpRequest.BodyPublishers.ofString(json)).build();
System.out.println(java.net.http.HttpClient.newHttpClient().send(req, java.net.http.HttpResponse.BodyHandlers.ofString()).body());
go
req, _ := http.NewRequest("POST", os.Getenv("BASE_URL")+"/v1/images/generations", strings.NewReader(`{"model":"IMAGE_MODEL","prompt":"一只在雨中奔跑的狗,电影感","size":"1024x1024"}`)); req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY")); req.Header.Set("Content-Type", "application/json"); resp, _ := http.DefaultClient.Do(req); defer resp.Body.Close(); io.Copy(os.Stdout, resp.Body)
python
import os, requests
r = requests.post(os.environ['BASE_URL'] + '/v1/images/generations', headers={'Authorization': 'Bearer ' + os.environ['API_KEY']}, json={'model': 'IMAGE_MODEL', 'prompt': '一只在雨中奔跑的狗,电影感', 'size': '1024x1024'}, timeout=180)
r.raise_for_status(); print(r.json())

Anthropic Messages

bash
curl "$BASE_URL/v1/messages" -H "x-api-key: $API_KEY" -H "anthropic-version: 2023-06-01" -H "Content-Type: application/json" -d '{"model":"CLAUDE_MODEL","max_tokens":512,"messages":[{"role":"user","content":"你好"}]}'
javascript
const res = await fetch(`${BASE_URL}/v1/messages`, { method: 'POST', headers: { 'x-api-key': API_KEY, 'anthropic-version': '2023-06-01', 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'CLAUDE_MODEL', max_tokens: 512, messages: [{ role: 'user', content: '你好' }] }) })
console.log(await res.json())
javascript
import Anthropic from '@anthropic-ai/sdk'
const client = new Anthropic({ apiKey: process.env.API_KEY, baseURL: process.env.BASE_URL })
console.log(await client.messages.create({ model: 'CLAUDE_MODEL', max_tokens: 512, messages: [{ role: 'user', content: '你好' }] }))
java
var json = "{\"model\":\"CLAUDE_MODEL\",\"max_tokens\":512,\"messages\":[{\"role\":\"user\",\"content\":\"你好\"}]}";
var req = java.net.http.HttpRequest.newBuilder(java.net.URI.create(System.getenv("BASE_URL") + "/v1/messages")).header("x-api-key", System.getenv("API_KEY")).header("anthropic-version", "2023-06-01").header("Content-Type", "application/json").POST(java.net.http.HttpRequest.BodyPublishers.ofString(json)).build();
System.out.println(java.net.http.HttpClient.newHttpClient().send(req, java.net.http.HttpResponse.BodyHandlers.ofString()).body());
go
req, _ := http.NewRequest("POST", os.Getenv("BASE_URL")+"/v1/messages", strings.NewReader(`{"model":"CLAUDE_MODEL","max_tokens":512,"messages":[{"role":"user","content":"你好"}]}`)); req.Header.Set("x-api-key", os.Getenv("API_KEY")); req.Header.Set("anthropic-version", "2023-06-01"); req.Header.Set("Content-Type", "application/json"); resp, _ := http.DefaultClient.Do(req); defer resp.Body.Close(); io.Copy(os.Stdout, resp.Body)
python
import os, requests
r = requests.post(os.environ['BASE_URL'] + '/v1/messages', headers={'x-api-key': os.environ['API_KEY'], 'anthropic-version': '2023-06-01'}, json={'model': 'CLAUDE_MODEL', 'max_tokens': 512, 'messages': [{'role': 'user', 'content': '你好'}]}, timeout=120)
r.raise_for_status(); print(r.json())

Gemini 原生生成

bash
curl "$BASE_URL/v1beta/models/GEMINI_MODEL:generateContent" -H "x-goog-api-key: $API_KEY" -H "Content-Type: application/json" -d '{"contents":[{"parts":[{"text":"你好"}]}]}'
javascript
const res = await fetch(`${BASE_URL}/v1beta/models/GEMINI_MODEL:generateContent`, { method: 'POST', headers: { 'x-goog-api-key': API_KEY, 'Content-Type': 'application/json' }, body: JSON.stringify({ contents: [{ parts: [{ text: '你好' }] }] }) })
console.log(await res.json())
javascript
const res = await fetch(`${process.env.BASE_URL}/v1beta/models/GEMINI_MODEL:generateContent`, { method: 'POST', headers: { 'x-goog-api-key': process.env.API_KEY, 'Content-Type': 'application/json' }, body: JSON.stringify({ contents: [{ parts: [{ text: '你好' }] }] }) })
console.log(await res.json())
java
var json = "{\"contents\":[{\"parts\":[{\"text\":\"你好\"}]}]}";
var req = java.net.http.HttpRequest.newBuilder(java.net.URI.create(System.getenv("BASE_URL") + "/v1beta/models/GEMINI_MODEL:generateContent")).header("x-goog-api-key", System.getenv("API_KEY")).header("Content-Type", "application/json").POST(java.net.http.HttpRequest.BodyPublishers.ofString(json)).build();
System.out.println(java.net.http.HttpClient.newHttpClient().send(req, java.net.http.HttpResponse.BodyHandlers.ofString()).body());
go
req, _ := http.NewRequest("POST", os.Getenv("BASE_URL")+"/v1beta/models/GEMINI_MODEL:generateContent", strings.NewReader(`{"contents":[{"parts":[{"text":"你好"}]}]}`)); req.Header.Set("x-goog-api-key", os.Getenv("API_KEY")); req.Header.Set("Content-Type", "application/json"); resp, _ := http.DefaultClient.Do(req); defer resp.Body.Close(); io.Copy(os.Stdout, resp.Body)
python
import os, requests
r = requests.post(os.environ['BASE_URL'] + '/v1beta/models/GEMINI_MODEL:generateContent', headers={'x-goog-api-key': os.environ['API_KEY']}, json={'contents': [{'parts': [{'text': '你好'}]}]}, timeout=120)
r.raise_for_status(); print(r.json())

Grok 语音和视频

Grok 生文和生图分别复用上面的“文本请求”和“OpenAI 生图”选项卡,只需换成 Grok 分组支持的模型。TTS 的服务端示例:

bash
curl "$BASE_URL/v1/tts" -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" -d '{"model":"grok-voice-latest","input":"你好","voice":"default"}' --output speech.mp3
javascript
const res = await fetch(`${BASE_URL}/v1/tts`, { method: 'POST', headers: { Authorization: `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'grok-voice-latest', input: '你好', voice: 'default' }) })
const audioUrl = URL.createObjectURL(await res.blob()); document.querySelector('audio').src = audioUrl
javascript
import { writeFile } from 'node:fs/promises'
const res = await fetch(`${process.env.BASE_URL}/v1/tts`, { method: 'POST', headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'grok-voice-latest', input: '你好', voice: 'default' }) })
await writeFile('speech.mp3', Buffer.from(await res.arrayBuffer()))
java
var req = java.net.http.HttpRequest.newBuilder(java.net.URI.create(System.getenv("BASE_URL") + "/v1/tts")).header("Authorization", "Bearer " + System.getenv("API_KEY")).header("Content-Type", "application/json").POST(java.net.http.HttpRequest.BodyPublishers.ofString("{\"model\":\"grok-voice-latest\",\"input\":\"你好\",\"voice\":\"default\"}")).build();
var bytes = java.net.http.HttpClient.newHttpClient().send(req, java.net.http.HttpResponse.BodyHandlers.ofByteArray()).body(); java.nio.file.Files.write(java.nio.file.Path.of("speech.mp3"), bytes);
go
req, _ := http.NewRequest("POST", os.Getenv("BASE_URL")+"/v1/tts", strings.NewReader(`{"model":"grok-voice-latest","input":"你好","voice":"default"}`)); req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY")); req.Header.Set("Content-Type", "application/json"); resp, _ := http.DefaultClient.Do(req); defer resp.Body.Close(); out, _ := os.Create("speech.mp3"); defer out.Close(); io.Copy(out, resp.Body)
python
import os, requests
r = requests.post(os.environ['BASE_URL'] + '/v1/tts', headers={'Authorization': 'Bearer ' + os.environ['API_KEY']}, json={'model': 'grok-voice-latest', 'input': '你好', 'voice': 'default'}, timeout=180)
r.raise_for_status(); open('speech.mp3', 'wb').write(r.content)

Grok 视频创建使用 /v1/videos,请求体和下面的 Seedance 相似,但任务查询路径是 /v1/videos/{id}

Seedance 视频任务

视频是异步任务,六种语言都遵循“创建 -> 保存 task.id -> 轮询”的流程:

bash
curl "$BASE_URL/v1/video/generate" -H "Authorization: Bearer $API_KEY" -H "Content-Type: application/json" -d '{"model":"SEEDANCE_MODEL","prompt":"城市上空的云层快速移动","duration":4,"resolution":"720p"}'
javascript
const res = await fetch(`${BASE_URL}/v1/video/generate`, { method: 'POST', headers: { Authorization: `Bearer ${API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'SEEDANCE_MODEL', prompt: '城市上空的云层快速移动', duration: 4, resolution: '720p' }) })
console.log((await res.json()).task)
javascript
const res = await fetch(`${process.env.BASE_URL}/v1/video/generate`, { method: 'POST', headers: { Authorization: `Bearer ${process.env.API_KEY}`, 'Content-Type': 'application/json' }, body: JSON.stringify({ model: 'SEEDANCE_MODEL', prompt: '城市上空的云层快速移动', duration: 4, resolution: '720p' }) })
console.log((await res.json()).task)
java
var json = "{\"model\":\"SEEDANCE_MODEL\",\"prompt\":\"城市上空的云层快速移动\",\"duration\":4,\"resolution\":\"720p\"}";
var req = java.net.http.HttpRequest.newBuilder(java.net.URI.create(System.getenv("BASE_URL") + "/v1/video/generate")).header("Authorization", "Bearer " + System.getenv("API_KEY")).header("Content-Type", "application/json").POST(java.net.http.HttpRequest.BodyPublishers.ofString(json)).build();
System.out.println(java.net.http.HttpClient.newHttpClient().send(req, java.net.http.HttpResponse.BodyHandlers.ofString()).body());
go
req, _ := http.NewRequest("POST", os.Getenv("BASE_URL")+"/v1/video/generate", strings.NewReader(`{"model":"SEEDANCE_MODEL","prompt":"城市上空的云层快速移动","duration":4,"resolution":"720p"}`)); req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY")); req.Header.Set("Content-Type", "application/json"); resp, _ := http.DefaultClient.Do(req); defer resp.Body.Close(); io.Copy(os.Stdout, resp.Body)
python
import os, requests
r = requests.post(os.environ['BASE_URL'] + '/v1/video/generate', headers={'Authorization': 'Bearer ' + os.environ['API_KEY']}, json={'model': 'SEEDANCE_MODEL', 'prompt': '城市上空的云层快速移动', 'duration': 4, 'resolution': '720p'}, timeout=180)
r.raise_for_status(); print(r.json()['task'])

查询任务:GET /v1/video/tasks/TASK_ID

对于视频创建和轮询,建议使用服务端程序,并将 HTTP 超时设置为至少 180 秒;不要在浏览器源码中暴露长期 API Key。

更多协议字段见 Anthropic MessagesGemini 原生接口Seedance 视频

瑞科 API 文档