ConceptViz
API 文档
ConceptViz
API 文档
首页概述API 参考

API 参考

通过 REST API 将 ConceptViz 图表生成集成到您的应用中

认证

所有 API 请求需要通过 Authorization 请求头传入 API 密钥。

Authorization: Bearer cvk_your_api_key_here

购买 API credits 后,您可以在 设置 > API 密钥 页面创建和管理 API 密钥。

API 密钥拥有您账户积分的完整访问权限,请妥善保管,切勿在客户端代码中暴露。

基础 URL

https://conceptviz.app/api/v1

生成图表

图表生成是异步的。您提交请求后会收到一个任务 ID,然后轮询获取结果。

第一步:提交生成请求

POST /api/v1/generate

请求参数

参数类型必填说明
promptstring是*描述图表的文本提示词
promptsstring[]是*批量生成的提示词数组(最多 4 个)
modelstring否公开模型系列:"cv-2"(默认)或 "cv-1"
modestring否CV-2 生成模式:"standard"(默认)或 "max"
qualitystring否图片分辨率:"2k"(默认)或 "4k"。CV-2 max 默认使用 "4k"
aspectRatiostring否宽高比(如 "16:9"、"1:1"、"4:3"、"9:16"、"a4-portrait")

prompt(单个)和 prompts(批量)二选一。如果同时提供,prompts 优先。

响应格式

{
  "taskId": "vaW29_MJ1wbnyFU4bl_pd",
  "status": "pending",
  "model": "cv-2",
  "mode": "standard",
  "quality": "2k",
  "aspect_ratio": "16:9",
  "credits_used": 1,
  "credits_remaining": 80,
  "poll_url": "/api/v1/task/vaW29_MJ1wbnyFU4bl_pd"
}

第二步:轮询获取结果

GET /api/v1/task/{taskId}

每 3–5 秒轮询一次,直到 status 为 completed 或 failed。通常需要 30–90 秒完成生成。

响应(成功)

{
  "status": "completed",
  "images": [
    {
      "url": "https://conceptviz.app/images/abc123.png",
      "prompt": "water cycle diagram"
    }
  ]
}

响应(失败)

{
  "status": "failed",
  "error": "Image generation failed. Please try again later.",
  "code": "GENERATION_FAILED",
  "credits_refunded": true
}

响应(进行中)

{
  "status": "processing"
}

编辑图片

图片编辑同样是异步任务。提交一张或多张输入图片和编辑提示词后,继续使用同一个任务查询接口轮询结果。

POST /api/v1/edit

JSON 请求参数

当输入图片已经有公开 URL,或需要传 data:image/...;base64,... 时使用此格式。

参数类型必填说明
promptstring是图片编辑指令
imagesstring[]是输入图片 URL 或 data:image/...;base64,...(最多 4 张)
modelstring否公开模型系列:"cv-2"(默认)或 "cv-1"
modestring否CV-2 生成模式:"standard"(默认)或 "max"
qualitystring否图片分辨率:"2k"(默认)或 "4k"。CV-2 max 默认使用 "4k"
aspectRatiostring否输出宽高比(如 "16:9"、"1:1"、"4:3"、"9:16")

输入图片会先经过安全审核。上传图片单张最大 20MB,每次编辑最多 4 张输入图片。

curl -X POST https://conceptviz.app/api/v1/edit \
  -H "Authorization: Bearer cvk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "Replace the annotations with a clean professional architecture diagram",
    "images": ["https://example.com/marked-up-diagram.png"],
    "model": "cv-2",
    "mode": "standard"
  }'

Multipart 上传

当需要直接上传本地图片文件时使用此格式。

curl -X POST https://conceptviz.app/api/v1/edit \
  -H "Authorization: Bearer cvk_your_api_key_here" \
  -F "prompt=Convert this sketch into a polished system diagram" \
  -F "image=@./sketch.png" \
  -F "model=cv-2"

如需提供多张输入图片,重复传入 image 表单字段即可。

curl -X POST https://conceptviz.app/api/v1/edit \
  -H "Authorization: Bearer cvk_your_api_key_here" \
  -F "prompt=Combine these references into one clean diagram" \
  -F "image=@./reference-1.png" \
  -F "image=@./reference-2.png"

响应格式

{
  "taskId": "vaW29_MJ1wbnyFU4bl_pd",
  "status": "pending",
  "model": "cv-2",
  "mode": "standard",
  "quality": "2k",
  "aspect_ratio": "16:9",
  "credits_used": 1,
  "credits_remaining": 80,
  "poll_url": "/api/v1/task/vaW29_MJ1wbnyFU4bl_pd"
}

积分消耗

API 访问基于 API credits。API credits 永不过期,不需要持续订阅。

模型模式分辨率每张图片消耗积分
cv-2standard2k1
cv-2standard4k2
cv-2max2k2
cv-2max4k4
cv-1—2k1
cv-1—4k2

积分在提交任务时扣除。如果生成失败,积分会自动退还。

示例

cURL

# 第一步:提交
RESPONSE=$(curl -s -X POST https://conceptviz.app/api/v1/generate \
  -H "Authorization: Bearer cvk_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "prompt": "water cycle diagram showing evaporation, condensation, and precipitation",
    "model": "cv-2",
    "mode": "standard",
    "quality": "2k"
  }')

TASK_ID=$(echo $RESPONSE | jq -r '.taskId')
echo "Task ID: $TASK_ID"

# 第二步:轮询直到完成
while true; do
  RESULT=$(curl -s https://conceptviz.app/api/v1/task/$TASK_ID \
    -H "Authorization: Bearer cvk_your_api_key_here")
  STATUS=$(echo $RESULT | jq -r '.status')
  echo "Status: $STATUS"
  if [ "$STATUS" = "completed" ] || [ "$STATUS" = "failed" ]; then
    echo $RESULT | jq .
    break
  fi
  sleep 5
done

Python

import requests
import time

API_KEY = "cvk_your_api_key_here"
BASE_URL = "https://conceptviz.app/api/v1"
HEADERS = {
    "Authorization": f"Bearer {API_KEY}",
    "Content-Type": "application/json",
}

# 第一步:提交
response = requests.post(
    f"{BASE_URL}/generate",
    headers=HEADERS,
    json={
        "prompt": "photosynthesis process diagram",
        "model": "cv-2",
        "mode": "standard",
        "quality": "2k",
    },
)

data = response.json()
task_id = data["taskId"]
print(f"任务已提交:{task_id}")
print(f"消耗积分:{data['credits_used']},剩余:{data['credits_remaining']}")

# 第二步:轮询获取结果
while True:
    result = requests.get(f"{BASE_URL}/task/{task_id}", headers=HEADERS).json()
    print(f"状态:{result['status']}")

    if result["status"] == "completed":
        for image in result["images"]:
            print(f"图片 URL:{image['url']}")
        break
    elif result["status"] == "failed":
        print(f"错误:{result['error']}")
        print(f"积分已退还:{result.get('credits_refunded', False)}")
        break

    time.sleep(5)

JavaScript / TypeScript

const API_KEY = "cvk_your_api_key_here";
const BASE_URL = "https://conceptviz.app/api/v1";

// 第一步:提交
const submitResponse = await fetch(`${BASE_URL}/generate`, {
  method: "POST",
  headers: {
    Authorization: `Bearer ${API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    prompts: [
      "cell division mitosis diagram",
      "DNA double helix structure",
    ],
    model: "cv-2",
    mode: "standard",
    quality: "2k",
  }),
});

const { taskId, credits_used, credits_remaining } = await submitResponse.json();
console.log(`任务:${taskId},消耗积分:${credits_used}`);

// 第二步:轮询获取结果
while (true) {
  const pollResponse = await fetch(`${BASE_URL}/task/${taskId}`, {
    headers: { Authorization: `Bearer ${API_KEY}` },
  });
  const result = await pollResponse.json();
  console.log(`状态:${result.status}`);

  if (result.status === "completed") {
    console.log("图片:", result.images);
    break;
  } else if (result.status === "failed") {
    console.error("失败:", result.error);
    break;
  }

  await new Promise((r) => setTimeout(r, 5000));
}

错误处理

API 返回标准 HTTP 状态码和 JSON 错误信息:

{
  "error": "错误描述信息",
  "code": "ERROR_CODE"
}

错误码

HTTP 状态码错误码说明
400INVALID_BODY请求体不是有效的 JSON
400IMAGE_REQUIRED编辑请求没有提供输入图片
400INVALID_IMAGE输入图片数据、URL 或文件类型无效
400PROMPT_REQUIRED未提供 prompt 或 prompts
400TOO_MANY_IMAGES单次编辑请求超过 4 张图片
400TOO_MANY_PROMPTS一次请求超过 4 个提示词
400UNSUPPORTED_MODEL模型必须是 cv-2 或 cv-1;CV-2 模式必须是 standard 或 max
401UNAUTHORIZED缺少或无效的 Authorization 请求头
401INVALID_API_KEYAPI 密钥无效或已禁用
402INSUFFICIENT_CREDITS积分不足(响应中包含 credits_remaining)
404TASK_NOT_FOUND任务 ID 不存在或不属于您的账户
429MODERATION_RATE_LIMITED短时间内安全审核请求过多
400INPUT_MODERATION_BLOCKED提示词或输入图片未通过安全审核
500CREDIT_CONSUMPTION_FAILED积分扣除失败
500GENERATION_FAILED图片生成失败(积分自动退还)

示例:错误处理

response = requests.post(f"{BASE_URL}/generate", headers=headers, json=payload)

if response.status_code == 402:
    data = response.json()
    print(f"积分不足,剩余:{data.get('credits_remaining', 0)}")
elif response.status_code != 200:
    print(f"错误:{response.json()['error']}")
else:
    data = response.json()
    task_id = data["taskId"]
    # 开始轮询...

限制

约束值
每次请求最多图片数4
每个账户最多 API 密钥数5
生成耗时通常 30–90 秒
推荐轮询间隔3–5 秒
可用模型cv-2(默认)、cv-1
可用 CV-2 模式standard(默认)、max
可用分辨率2k、4k

概述

ConceptViz API 文档 — 通过编程方式生成教育图表

目录

认证
基础 URL
生成图表
第一步:提交生成请求
请求参数
响应格式
第二步:轮询获取结果
响应(成功)
响应(失败)
响应(进行中)
编辑图片
JSON 请求参数
Multipart 上传
响应格式
积分消耗
示例
cURL
Python
JavaScript / TypeScript
错误处理
错误码
示例:错误处理
限制