Python 示例
本页只使用 Python 标准库。
提交、轮询、下载
python
import json
import time
import urllib.request
BASE_URL = "https://api.llmapi.site"
API_KEY = "YOUR_TASK_API_KEY"
def request_json(method, path, payload=None, extra_headers=None):
data = None
headers = {
"Authorization": f"Bearer {API_KEY}",
"Accept": "application/json",
}
if payload is not None:
data = json.dumps(payload).encode("utf-8")
headers["Content-Type"] = "application/json"
if extra_headers:
headers.update(extra_headers)
req = urllib.request.Request(BASE_URL + path, data=data, headers=headers, method=method)
with urllib.request.urlopen(req, timeout=60) as resp:
return json.loads(resp.read().decode("utf-8"))
task = request_json("POST", "/v1/tasks", {
"model": "gpt-image-2",
"modality": "image",
"params": {
"model": "gpt-image-2",
"prompt": "a clean studio product photo of a matte black water bottle",
"n": 1,
"image_size": "2K",
"aspect_ratio": "1:1",
},
"metadata": {"source": "python-example"},
}, {"Idempotency-Key": "python-image-order-001"})
task_id = task["id"]
while True:
detail = request_json("GET", f"/v1/tasks/{task_id}")
if detail["status"] in {"succeeded", "failed", "timeout", "canceled"}:
break
time.sleep(3)
if detail["status"] != "succeeded":
raise RuntimeError(detail.get("error") or detail["status"])
asset_url = detail["assets"][0]["url"]
with urllib.request.urlopen(asset_url, timeout=60) as resp:
image_bytes = resp.read()
with open("result.png", "wb") as f:
f.write(image_bytes)最小视频提交
先使用 GET /v1/tasks/models 确认当前 Key 已开放目标模型。视频同样使用上面的轮询流程:
python
video_task = request_json("POST", "/v1/tasks", {
"model": "seedance-2-0-fast",
"modality": "video",
"params": {
"prompt": "A paper airplane glides across a quiet studio, static camera",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"generate_audio": False,
},
"metadata": {"source": "python-video-example"},
}, {"Idempotency-Key": "python-video-order-001"})
video_task_id = video_task["id"]参考图 Data URL
python
import base64
def data_url(path, content_type="image/png"):
with open(path, "rb") as f:
encoded = base64.b64encode(f.read()).decode("ascii")
return f"data:{content_type};base64,{encoded}"OpenAI 风格重绘请求体
python
payload = {
"model": "gpt-image-2",
"modality": "image",
"params": {
"model": "gpt-image-2",
"prompt": "Replace the background with a premium studio scene.",
"images": [{"image_url": data_url("input.png")}],
"n": 1,
"image_size": "2K",
"aspect_ratio": "1:1",
"extra_body": {
"input_fidelity": "high",
},
},
}Gemini 扩展参数
python
payload = {
"model": "gemini-3.1-flash-image",
"modality": "image",
"params": {
"model": "gemini-3.1-flash-image",
"prompt": "Create a product image using this object.",
"images": [{"image_url": data_url("input.png")}],
"n": 1,
"image_size": "2K",
"aspect_ratio": "16:9",
"extra_body": {
"generationConfig": {
"temperature": 0.7,
},
},
},
}