Appearance
SDK 示例
MoonApiX API 可以直接使用 HTTP 调用。OpenAI-compatible 接口也可以使用兼容 OpenAI SDK 的方式接入。
cURL
bash
curl https://moonapix.com/v1/chat/completions \
-H "Authorization: Bearer <MOONAPIX_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "moonapix-chat",
"messages": [
{
"role": "user",
"content": "写一句简短的产品宣传语"
}
]
}'JavaScript 基础请求
js
const MOONAPIX_API_KEY = process.env.MOONAPIX_API_KEY
const MOONAPIX_BASE_URL = 'https://moonapix.com'
async function moonapix(path, options = {}) {
const response = await fetch(`${MOONAPIX_BASE_URL}${path}`, {
...options,
headers: {
Authorization: `Bearer ${MOONAPIX_API_KEY}`,
'Content-Type': 'application/json',
...options.headers
}
})
const data = await response.json().catch(() => null)
if (!response.ok) {
const message = data?.error?.message || `MoonApiX request failed: ${response.status}`
throw new Error(message)
}
return data
}
const result = await moonapix('/v1/chat/completions', {
method: 'POST',
body: JSON.stringify({
model: 'moonapix-chat',
messages: [
{
role: 'user',
content: '写一句简短的产品宣传语'
}
]
})
})
console.log(result)JavaScript 等待任务
js
async function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms))
}
async function waitTask(taskId, { timeoutMs = 10 * 60 * 1000 } = {}) {
const startedAt = Date.now()
while (Date.now() - startedAt < timeoutMs) {
const task = await moonapix(`/v1/tasks/${taskId}`)
if (task.status === 'succeeded') return task
if (task.status === 'failed' || task.status === 'canceled') {
throw new Error(task.error?.message || `Task ended with status: ${task.status}`)
}
await sleep(5000)
}
throw new Error(`Task timeout: ${taskId}`)
}
const task = await moonapix('/v1/videos', {
method: 'POST',
body: JSON.stringify({
model: 'seedance-2.0-kz-fast',
prompt: 'A cinematic product shot with slow camera movement.',
duration: 5,
aspect_ratio: '16:9'
})
})
const completed = await waitTask(task.id)
console.log(completed.output)Python 基础请求
python
import os
import requests
MOONAPIX_API_KEY = os.environ["MOONAPIX_API_KEY"]
MOONAPIX_BASE_URL = "https://moonapix.com"
def moonapix(path, method="GET", **kwargs):
headers = kwargs.pop("headers", {})
headers["Authorization"] = f"Bearer {MOONAPIX_API_KEY}"
response = requests.request(
method,
f"{MOONAPIX_BASE_URL}{path}",
headers=headers,
timeout=60,
**kwargs,
)
try:
data = response.json()
except ValueError:
data = None
if response.status_code >= 400:
message = (data or {}).get("error", {}).get("message") or response.text
raise RuntimeError(message)
return data
result = moonapix(
"/v1/chat/completions",
method="POST",
json={
"model": "moonapix-chat",
"messages": [
{
"role": "user",
"content": "写一句简短的产品宣传语",
}
],
},
)
print(result)Python 等待任务
python
import time
def wait_task(task_id, timeout_seconds=600):
started_at = time.time()
while time.time() - started_at < timeout_seconds:
task = moonapix(f"/v1/tasks/{task_id}")
status = task.get("status")
if status == "succeeded":
return task
if status in {"failed", "canceled"}:
error = task.get("error") or {}
raise RuntimeError(error.get("message") or f"Task ended with status: {status}")
time.sleep(5)
raise TimeoutError(f"Task timeout: {task_id}")
task = moonapix(
"/v1/videos",
method="POST",
json={
"model": "seedance-2.0-kz-fast",
"prompt": "A cinematic product shot with slow camera movement.",
"duration": 5,
"aspect_ratio": "16:9",
},
)
completed = wait_task(task["id"])
print(completed.get("output"))素材上传
python
with open("product.png", "rb") as file:
response = requests.post(
"https://moonapix.com/v1/assets/uploads",
headers={"Authorization": f"Bearer {MOONAPIX_API_KEY}"},
files={"file": file},
data={
"type": "image",
"purpose": "video_reference",
},
timeout=60,
)
response.raise_for_status()
print(response.json())音乐任务
bash
curl https://moonapix.com/v1/tasks \
-H "Authorization: Bearer <MOONAPIX_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"model": "suno-music-v5.5",
"prompt": "A bright electronic pop track for a product launch.",
"style": "Electronic, Pop, Bright",
"title": "Launch Day",
"customMode": true
}'OpenAI-compatible SDK
如果使用兼容 OpenAI SDK 的客户端,请把 baseURL 或 base_url 设置为 MoonApiX API 域名,并使用 MoonApiX API Key。
text
base_url = https://moonapix.com/v1
api_key = <MOONAPIX_API_KEY>不同 SDK 的参数名称可能不同,请以对应 SDK 文档为准。