VC
vipcloud.ai 2.0
Sign in →
API reference · v1

Build with vipcloud

An OpenAI-compatible gateway for every Chinese frontier model. If you've used the OpenAI Python or Node SDK, you already know the API — just change the base URL.

Quickstart

Three lines. Same OpenAI SDK, new base URL, new key.

Python

from openai import OpenAI

client = OpenAI(
    base_url="https://api.vipcloud.ai/v1",
    api_key="vc-sk-...",
)

resp = client.chat.completions.create(
    model="deepseek-v4-pro",
    messages=[{"role": "user", "content": "Hello!"}],
)
print(resp.choices[0].message.content)

Node / TypeScript

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.vipcloud.ai/v1",
  apiKey:  "vc-sk-...",
});

const resp = await client.chat.completions.create({
  model: "deepseek-v4-pro",
  messages: [{ role: "user", content: "Hello!" }],
});
console.log(resp.choices[0].message.content);

curl

curl https://api.vipcloud.ai/v1/chat/completions \
  -H "Authorization: Bearer vc-sk-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "deepseek-v4-pro",
    "messages": [{"role":"user","content":"Hello!"}]
  }'

Authentication

All authenticated endpoints accept a Bearer token in the Authorization header. Generate keys from your account page.

Authorization: Bearer vc-sk-XXXXXXXXXXXXXXXXXXXXXXXX

Keys are scoped per project. Revoke at any time. We never log full keys — only the first 8 characters appear in usage logs.

Base URL

https://api.vipcloud.ai/v1

The gateway is OpenAI-compatible — the path layout, request/response shapes, and streaming format match api.openai.com/v1 wherever possible. If your code already targets OpenAI, swap the URL and key, and you're live.

Chat completions

POST /v1/chat/completions

Identical to OpenAI's chat completions API. messages, temperature, max_tokens, tools, response_format, stream all behave the same.

ParamTypeNotes
modelstringRequired. See model reference.
messagesarrayRequired. {role, content} objects.
temperaturenumber0–2, default 1.
max_tokensintegerOutput cap. Provider default if omitted.
streambooleanServer-sent events streaming.
toolsarrayFunction calling — passed through to providers that support it.
response_formatobject{"type":"json_object"} for JSON mode.

Response

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "model": "deepseek-v4-pro",
  "choices": [{
    "index": 0,
    "message": { "role": "assistant", "content": "Hello!" },
    "finish_reason": "stop"
  }],
  "usage": { "prompt_tokens": 8, "completion_tokens": 2, "total_tokens": 10 }
}

Streaming

Set "stream": true. The response is text/event-stream with data: chunks containing partial deltas, terminated by data: [DONE].

data: {"choices":[{"delta":{"content":"Hel"}}]}
data: {"choices":[{"delta":{"content":"lo"}}]}
data: {"choices":[{"delta":{"content":"!"}}]}
data: [DONE]

List models

GET /v1/models — authenticated. Mirrors OpenAI shape.

GET /v1/models?detail=1 — adds display metadata (label, org, ctx, pricing, tags).

Public catalog

GET /v1/catalogno auth required. Useful for showing your users a model picker. CORS-permissive, cached for 60s.

curl https://api.vipcloud.ai/v1/catalog

Image generation

POST /v1/images/generations — OpenAI-compatible image API.

Currently in private preview. Email [email protected] with your account ID for access.

Models: wan-2.7, seedream-4.5 (legacy alias seedream-3 still resolves), hunyuan-image.

client.images.generate(
    model="wan-2.7",
    prompt="a snow leopard in a Tang dynasty courtyard, 4K",
    size="1024x1024",
    n=1,
)

Video generation

POST /v1/videos/generations

Asynchronous job model — request returns a job_id, poll /v1/videos/jobs/{id} for status. Currently in private preview.

Models: seedance-2, hailuo-02, kling-3, vidu-q3, hunyuan-video-1.5 (soon).

client.videos.generate(
    model="seedance-2",
    prompt="a samurai cat surfing a giant wave, cinematic",
    duration=10,
    resolution="1080p",
)
# returns: { id, status: "queued", poll_url }

Voice / TTS

POST /v1/audio/speech

Models: minimax-speech-02 (HD, 35 langs, voice clone), doubao-tts (CN/EN, 100+ presets), glm-4-voice (soon).

client.audio.speech.create(
    model="minimax-speech-02",
    voice="warm-female-en",
    input="Welcome to vipcloud.",
    response_format="mp3",
)

Music generation

POST /v1/music/generations

Mureka O1 — China's frontier-grade music model with vocals + lyrics in 30+ languages. Asynchronous job model.

client.music.generate(
    model="mureka-o1",
    prompt="upbeat synthwave with female vocals",
    lyrics="on the edge of the cloud...",
    duration=90,
)

Errors

OpenAI-compatible error envelope:

{
  "error": {
    "message": "Unknown model 'gpt-4'.",
    "type":    "model_not_found",
    "code":    "unknown_model"
  }
}
StatusTypeWhen
400invalid_request_errorMissing fields, malformed body
401invalid_api_keyMissing or invalid API key
402insufficient_creditBalance below threshold (returned once per-key billing ships)
404model_not_foundUnknown model alias
429rate_limitedFree demo limit, or upstream throttle
503model_unavailablePreview / soon model — request access
504upstream_timeoutUpstream did not respond within 60s

Rate limits

SDKs

Use any OpenAI-compatible SDK by changing the base URL.

Model reference

Live data — pulled from the /v1/catalog endpoint. Updated whenever the registry changes.

Loading…

Need something not covered here? Email [email protected] — we read everything.