跳到文档内容
十方十方MAAS开发者文档进入控制台 →

开发者文档 / 接入指南

鉴权与通用约定

配置请求地址、密钥与环境变量。

概览

本平台地址:https://api.vizen.cc。业务 API 统一使用请求头:

Authorization: Bearer 你的_API_Key
Content-Type: application/json

POST 请求体使用 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 数组项字段类型 / 说明
codestring;video_generation、wan_video_generation 或 video_upscale。
label / descriptionstring;API 名称和说明。
endpoint / familystring;创建接口路径和能力分类。
specificationsarray<object>;该 API 的规格,结构与 data 数组项相同。
pricesarray<object>;该 API 的公开计价说明,元素结构同 price。
availableboolean;是否至少有一个可用规格。
unavailable_reasonsarray<string>;不可用原因列表。
data / specifications 数组项字段类型 / 说明
productstring;格式为 API:模型:分辨率,例如 video_generation:seedance-2.5:720p;超分的模型段固定为 upscale。product 是授权规格标识;请求 model 使用下方 model 字段的值,resolution 使用规格的分辨率,不传整个 product。
modelstring | null;请求使用的模型 ID,Seedance 为官方完整模型 ID;超分为 null。
available / unavailable_reasonboolean / string | null;该规格是否可用及不可用原因。
billing_enabledboolean;是否启用账户计费。
deliverystring;结果保存说明。
priceobject | 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)。

搜索文档

↑ ↓ 选择 · Enter 跳转

输入关键词,搜索正文、参数和代码示例。