欢迎使用通用 API
通用 API 提供用于管理您的 kie.ai 账户和处理生成内容的基础实用服务。这些 API 能帮助您监控积分使用情况并高效地访问已生成的文件。
身份验证
所有 API 请求都需要使用 Bearer 令牌进行身份验证。请从 API 密钥管理页面 获取您的 API 密钥。
请妥善保管您的 API 密钥,切勿公开分享。如果您怀疑密钥已泄露,请立即重置。
API 基础 URL (Base URL)
Authorization: Bearer YOUR_API_KEY
快速入门指南
第一步:检查积分余额
监控您的账户积分,以确保有足够的余额持续使用服务:
curl -X GET "https://api.kie.ai/api/v1/chat/credit" \
-H "Authorization: Bearer YOUR_API_KEY"
const response = await fetch('https://api.kie.ai/api/v1/chat/credit', {
method: 'GET',
headers: {
'Authorization': 'Bearer YOUR_API_KEY'
}
});
const result = await response.json();
console.log('Current credits:', result.data);
import requests
url = "https://api.kie.ai/api/v1/chat/credit"
headers = {
"Authorization": "Bearer YOUR_API_KEY"
}
response = requests.get(url, headers=headers)
result = response.json()
print(f"Current credits: {result['data']}")
响应示例:
{
"code": 200,
"msg": "success",
"data": 100
}
第二步:获取生成文件的下载链接
将生成文件的 URL 转换为临时的可下载链接:
curl -X POST "https://api.kie.ai/api/v1/common/download-url" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"url": "https://tempfile.1f6cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbd98"
}'
const response = await fetch('https://api.kie.ai/api/v1/common/download-url', {
method: 'POST',
headers: {
'Authorization': 'Bearer YOUR_API_KEY',
'Content-Type': 'application/json'
},
body: JSON.stringify({
url: 'https://tempfile.1f6cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbd98'
})
});
const result = await response.json();
console.log('Download URL:', result.data);
import requests
url = "https://api.kie.ai/api/v1/common/download-url"
headers = {
"Authorization": "Bearer YOUR_API_KEY",
"Content-Type": "application/json"
}
payload = {
"url": "https://tempfile.1f6cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbd98"
}
response = requests.post(url, json=payload, headers=headers)
result = response.json()
print(f"Download URL: {result['data']}")
响应示例:
{
"code": 200,
"msg": "success",
"data": "https://tempfile.1f6cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbd98"
}
下载链接有效期仅为 20 分钟。请确保在此时间内下载或缓存内容。
API 概览
查询账户积分
GET /api/v1/chat/credit
用途:监控您的账户积分余额特性:
- 实时获取积分余额
- 无需任何参数
- 即时响应
- 监控使用情况必不可少
使用场景:
- 在开始生成任务前检查积分
- 监控积分消耗模式
- 规划积分充值
- 实现积分阈值预警
获取下载链接
POST /api/v1/common/download-url
用途:为已生成的文件生成临时下载链接特性:
- 支持所有 kie.ai 生成的文件类型(图像、视频、音频等)
- 20 分钟有效期
- 安全的认证访问
- 仅适用于 kie.ai 生成的 URL
使用场景:
- 下载生成内容到本地存储
- 与团队成员分享临时链接
- 集成到外部系统
- 构建自定义下载工作流
实战示例
积分监控系统
实现一个自动化的积分监控系统:
class KieAIClient {
constructor(apiKey) {
this.apiKey = apiKey;
this.baseUrl = 'https://api.kie.ai';
}
async getCredits() {
const response = await fetch(`${this.baseUrl}/api/v1/chat/credit`, {
method: 'GET',
headers: {
'Authorization': `Bearer ${this.apiKey}`
}
});
if (!response.ok) {
throw new Error(`Failed to get credits: ${response.statusText}`);
}
const result = await response.json();
return result.data;
}
async getDownloadUrl(fileUrl) {
const response = await fetch(`${this.baseUrl}/api/v1/common/download-url`, {
method: 'POST',
headers: {
'Authorization': `Bearer ${this.apiKey}`,
'Content-Type': 'application/json'
},
body: JSON.stringify({ url: fileUrl })
});
if (!response.ok) {
throw new Error(`Failed to get download URL: ${response.statusText}`);
}
const result = await response.json();
return result.data;
}
async downloadFile(fileUrl, outputPath) {
// 获取下载链接
const downloadUrl = await this.getDownloadUrl(fileUrl);
// 下载文件
const response = await fetch(downloadUrl);
const buffer = await response.arrayBuffer();
// 保存到文件 (Node.js)
const fs = require('fs');
fs.writeFileSync(outputPath, Buffer.from(buffer));
console.log(`File downloaded to: ${outputPath}`);
}
async checkCreditsAndWarn(threshold = 10) {
const credits = await this.getCredits();
if (credits < threshold) {
console.warn(`⚠️ Low credits warning: ${credits} credits remaining`);
return false;
}
console.log(`✓ Credits available: ${credits}`);
return true;
}
}
// 使用示例
const client = new KieAIClient('YOUR_API_KEY');
// 操作前监控积分
async function runWithCreditCheck() {
const hasEnoughCredits = await client.checkCreditsAndWarn(20);
if (!hasEnoughCredits) {
console.error('Insufficient credits. Please recharge your account.');
return;
}
// 积分验证通过,继续执行操作
console.log('Credits verified. Proceeding with operations...');
}
// 下载生成的文件
async function downloadGeneratedFiles(fileUrls) {
for (let i = 0; i < fileUrls.length; i++) {
try {
await client.downloadFile(
fileUrls[i],
`./downloads/file-${i + 1}.mp4`
);
console.log(`✓ Downloaded file ${i + 1}/${fileUrls.length}`);
} catch (error) {
console.error(`✗ Failed to download file ${i + 1}:`, error.message);
}
}
}
// 定期积分监控
async function monitorCredits(intervalMinutes = 60) {
setInterval(async () => {
try {
const credits = await client.getCredits();
console.log(`[${new Date().toISOString()}] Current credits: ${credits}`);
if (credits < 50) {
// 发送警报 (邮件, webhook 等)
console.warn('ALERT: Credits below 50!');
}
} catch (error) {
console.error('Credit check failed:', error.message);
}
}, intervalMinutes * 60 * 1000);
}
import requests
import time
import os
from datetime import datetime
from typing import Optional
class KieAIClient:
def __init__(self, api_key: str):
self.api_key = api_key
self.base_url = 'https://api.kie.ai'
self.headers = {
'Authorization': f'Bearer {api_key}'
}
def get_credits(self) -> int:
"""获取当前账户积分"""
response = requests.get(
f'{self.base_url}/api/v1/chat/credit',
headers=self.headers
)
if not response.ok:
raise Exception(f'Failed to get credits: {response.text}')
result = response.json()
return result['data']
def get_download_url(self, file_url: str) -> str:
"""获取生成文件的临时下载链接"""
response = requests.post(
f'{self.base_url}/api/v1/common/download-url',
headers={**self.headers, 'Content-Type': 'application/json'},
json={'url': file_url}
)
if not response.ok:
raise Exception(f'Failed to get download URL: {response.text}')
result = response.json()
return result['data']
def download_file(self, file_url: str, output_path: str) -> None:
"""从 kie.ai URL 下载文件"""
# 获取下载链接
download_url = self.get_download_url(file_url)
# 下载文件
response = requests.get(download_url)
if not response.ok:
raise Exception(f'Failed to download file: {response.text}')
# 保存到文件
os.makedirs(os.path.dirname(output_path), exist_ok=True)
with open(output_path, 'wb') as f:
f.write(response.content)
print(f'File downloaded to: {output_path}')
def check_credits_and_warn(self, threshold: int = 10) -> bool:
"""检查积分,如果低于阈值则发出警告"""
credits = self.get_credits()
if credits < threshold:
print(f'⚠️ Low credits warning: {credits} credits remaining')
return False
print(f'✓ Credits available: {credits}')
return True
# 使用示例
def main():
client = KieAIClient('YOUR_API_KEY')
# 操作前监控积分
def run_with_credit_check():
has_enough_credits = client.check_credits_and_warn(threshold=20)
if not has_enough_credits:
print('Insufficient credits. Please recharge your account.')
return
print('Credits verified. Proceeding with operations...')
# 下载生成的文件
def download_generated_files(file_urls: list):
for i, file_url in enumerate(file_urls):
try:
client.download_file(
file_url,
f'./downloads/file-{i + 1}.mp4'
)
print(f'✓ Downloaded file {i + 1}/{len(file_urls)}')
except Exception as e:
print(f'✗ Failed to download file {i + 1}: {e}')
# 定期积分监控
def monitor_credits(interval_minutes: int = 60):
while True:
try:
credits = client.get_credits()
timestamp = datetime.now().isoformat()
print(f'[{timestamp}] Current credits: {credits}')
if credits < 50:
# 发送警报 (邮件, webhook 等)
print('ALERT: Credits below 50!')
except Exception as e:
print(f'Credit check failed: {e}')
time.sleep(interval_minutes * 60)
# 示例执行
print('Checking credits...')
run_with_credit_check()
print('\nDownloading files...')
file_urls = [
'https://tempfile.1f6cxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxbd98',
'https://tempfile.2f7dxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxcd99'
]
download_generated_files(file_urls)
if __name__ == '__main__':
main()
错误处理
常见错误及处理方法:
// 检查 API 密钥是否正确
if (response.status === 401) {
console.error('Invalid API key, please check Authorization header');
// 重新获取或更新 API 密钥
}
422 Validation Error (验证错误 - 下载链接)
// 仅支持 kie.ai 生成的 URL
if (response.status === 422) {
const error = await response.json();
console.error('Invalid URL:', error.msg);
// 确保您使用的是 kie.ai 生成的文件 URL
// 不支持外部 URL
}
402 Insufficient Credits (积分不足)
// 积分耗尽,需要充值
if (response.status === 402) {
console.error('Insufficient credits. Please recharge your account.');
// 重定向到积分购买页面
// 或向管理员发送通知
}
// 实现重试机制
async function apiCallWithRetry(apiFunction, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
return await apiFunction();
} catch (error) {
if (i === maxRetries - 1) throw error;
// 指数退避 (Exponential backoff)
const delay = Math.pow(2, i) * 1000;
await new Promise(resolve => setTimeout(resolve, delay));
}
}
}
最佳实践
- 定期监控:在开始大批量操作前检查积分
- 设置预警:当积分低于阈值时,实施自动化报警
- 预算规划:追踪积分消耗模式以便更好地进行规划
- 优雅降级:适当处理积分不足的情况
- 时效性:下载链接在 20 分钟后过期
- 适当缓存:获取下载链接后立即保存文件
- 批量下载:在时限内高效处理多个文件
- 错误处理:为失败的下载实施重试逻辑
- 并行处理:并发下载多个文件(需遵守速率限制)
- 连接池:复用 HTTP 连接进行多次请求
- 超时设置:为下载操作设置合理的超时时间
- 进度追踪:为长时间运行的操作实现进度指示
- API 密钥保护:切勿在客户端代码中暴露 API 密钥
- 仅限 HTTPS:始终使用 HTTPS 进行 API 请求
- 密钥轮换:定期轮换 API 密钥以确保安全
- 访问日志:保留 API 使用日志以供审计
重要提示
下载链接过期:临时下载链接有效期仅为 20 分钟。请确保:
- 获取 URL 后立即下载文件
- 实现过期 URL 的错误处理
- 缓存下载内容以供将来使用
积分余额:当积分耗尽时,服务访问将受限。请务必:
- 定期监控积分余额
- 设置低积分预警
- 提前规划积分充值
- 在积分较低时实现优雅降级
支持的 URL:下载链接端点仅支持由 kie.ai 服务生成的文件。外部文件 URL 将导致 422 验证错误。
状态码
下一步
集成示例
技术支持
准备好开始了吗?获取您的 API 密钥 并立即开始使用通用 API 服务!