概览
本平台地址:https://api.vizen.cc。业务 API 统一使用请求头:
Authorization: Bearer 你的_API_Key
Content-Type: application/jsonPOST 请求体使用 JSON;GET 查询无需请求体。创建接口支持可选的 Idempotency-Key 请求头,建议始终设置,规则见幂等与重试。
密钥保存在服务端环境变量中,不要放进网页前端代码、公开仓库或通知地址。任务查询和取消应使用创建该任务的同一把 Key。示例中的素材域名和任务 ID 均为占位内容。
模型与分辨率是请求参数,先在我的 API 服务确认可用规格。下面字段表的取值是接口允许的范围,不代表每个账户都已开通。
查询可用规格(可选)
GET /v1/products 用于在程序中读取当前 Key 的可用 API 和规格,无请求参数或请求体,使用相同的 Bearer 鉴权,成功返回 HTTP 200。
Bash / macOS / Linux;Windows 可使用 Git Bash。
# 先按“鉴权与通用约定”设置环境变量
: "${MASS_API_KEY:?请先设置 MASS_API_KEY}"
MASS_BASE_URL="${MASS_BASE_URL:-https://api.vizen.cc}"
curl --silent --show-error --fail-with-body --max-time 120 \
-X GET "${MASS_BASE_URL%/}/v1/products" \
-H "Authorization: Bearer $MASS_API_KEY"Python 3.10+,仅使用标准库。保存为 example.py,运行 python example.py。
import json
import os
import urllib.error
import urllib.parse
import urllib.request
base_url = os.environ.get("MASS_BASE_URL", "https://api.vizen.cc").rstrip("/")
api_key = os.environ["MASS_API_KEY"]
path = "/v1/products"
headers = {"Authorization": "Bearer " + api_key}
body = None
request = urllib.request.Request(
base_url + path, data=body, headers=headers, method="GET"
)
try:
with urllib.request.urlopen(request, timeout=120) as response:
result = json.load(response)
print(json.dumps(result, ensure_ascii=False, indent=2))
except urllib.error.HTTPError as error:
print("HTTP", error.code, error.read().decode("utf-8"))
raise SystemExit(1)
except urllib.error.URLError as error:
# 创建请求出现网络异常时,保留原幂等键;不要生成新键后盲目重试。
print("请求未能确认:", error.reason)
raise SystemExit(1)JDK 17+,仅使用标准库。保存为 UTF-8 的 Example.java;执行 javac -encoding UTF-8 Example.java,再执行 java Example。
import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.nio.charset.StandardCharsets;
import java.time.Duration;
public class Example {
static String requireEnv(String name) {
String value = System.getenv(name);
if (value == null || value.isBlank()) {
throw new IllegalArgumentException("请设置环境变量 " + name);
}
return value;
}
public static void main(String[] args) throws Exception {
String base = System.getenv().getOrDefault("MASS_BASE_URL", "https://api.vizen.cc");
base = base.replaceAll("/+$", "");
String path = "/v1/products";
HttpRequest request = HttpRequest.newBuilder(URI.create(base + path))
.timeout(Duration.ofSeconds(120))
.header("Authorization", "Bearer " + requireEnv("MASS_API_KEY"))
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpClient client = HttpClient.newBuilder().connectTimeout(Duration.ofSeconds(20)).build();
// 网络异常会抛出异常;重试创建请求时保留相同幂等键和参数。
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString(StandardCharsets.UTF_8));
System.out.println(response.body());
if (response.statusCode() >= 400) {
throw new IllegalStateException("HTTP " + response.statusCode());
}
}
}Go 1.20+,仅使用标准库。保存为 main.go,运行 go run main.go。
package main
import (
"fmt"
"io"
"net/http"
"os"
"strings"
"time"
)
func requireEnv(name string) string {
value := os.Getenv(name)
if value == "" { panic("请设置环境变量 " + name) }
return value
}
func main() {
base := os.Getenv("MASS_BASE_URL")
if base == "" { base = "https://api.vizen.cc" }
base = strings.TrimRight(base, "/")
path := "/v1/products"
req, err := http.NewRequest("GET", base + path, nil)
if err != nil { panic(err) }
req.Header.Set("Authorization", "Bearer " + requireEnv("MASS_API_KEY"))
client := &http.Client{Timeout: 120 * time.Second}
resp, err := client.Do(req)
// 网络异常不代表创建失败;重试时保留原幂等键和参数。
if err != nil { panic(err) }
defer resp.Body.Close()
data, err := io.ReadAll(resp.Body)
if err != nil { panic(err) }
fmt.Println(string(data))
if resp.StatusCode >= 400 { panic(fmt.Sprintf("HTTP %d", resp.StatusCode)) }
}响应包含 apis(API 分类数组)和 data(规格数组)。选择对应 API 下 available: true 的规格;规格为空或不可用时联系管理员开通。
| apis 数组项字段 | 类型 / 说明 |
|---|---|
code | string;video_generation、wan_video_generation 或 video_upscale。 |
label / description | string;API 名称和说明。 |
endpoint / family | string;创建接口路径和能力分类。 |
specifications | array<object>;该 API 的规格,结构与 data 数组项相同。 |
prices | array<object>;该 API 的公开计价说明,元素结构同 price。 |
available | boolean;是否至少有一个可用规格。 |
unavailable_reasons | array<string>;不可用原因列表。 |
| data / specifications 数组项字段 | 类型 / 说明 |
|---|---|
product | string;格式为 API:模型:分辨率,例如 video_generation:seedance-2.5:720p;超分的模型段固定为 upscale。product 是授权规格标识;请求 model 使用下方 model 字段的值,resolution 使用规格的分辨率,不传整个 product。 |
model | string | null;请求使用的模型 ID,Seedance 为官方完整模型 ID;超分为 null。 |
available / unavailable_reason | boolean / string | null;该规格是否可用及不可用原因。 |
billing_enabled | boolean;是否启用账户计费。 |
delivery | string;结果保存说明。 |
price | object | null;计价说明。按用量计价时包含 mode(usage)、currency(CNY)、reservation(预估金额字符串)、dynamic_estimate(boolean)和 description(string);固定计价时可包含 unit(task/token/second)、unit_price、max_charge(金额字符串)和 currency。具体请求的金额请使用估价接口。 |
配置环境变量
所有调用示例从环境变量读取密钥。MASS_BASE_URL 为平台地址,不带 /v1;MASS_IDEMPOTENCY_KEY 是一次业务请求的唯一标识,重试保持相同,新业务更换。查询和取消另需 MASS_TASK_ID。
Bash / macOS / Linux / Git Bash
export MASS_BASE_URL='https://api.vizen.cc'
export MASS_API_KEY='替换为你的 API Key'
export MASS_IDEMPOTENCY_KEY='your-order-20260921-001'
export MASS_TASK_ID='替换为创建响应的 id'Windows PowerShell
$env:MASS_BASE_URL = 'https://api.vizen.cc'
$env:MASS_API_KEY = '替换为你的 API Key'
$env:MASS_IDEMPOTENCY_KEY = 'your-order-20260921-001'
$env:MASS_TASK_ID = '替换为创建响应的 id'Python、Java 和 Go 示例可在 PowerShell 中运行;cURL Tab 使用 Bash 的续行与输入语法,Windows 请使用 Git Bash。cURL 需 7.76+(支持 --fail-with-body)。