sage/wwwroot/API.md
2026-05-06 10:45:02 +08:00

444 lines
7.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 元境API
## 手机注册和登录
手机登录,如果账号不存在先注册后登陆
### 生成短信验证码
* path /rbac/gen_sms_code.dspy
* method 'GET'
* parameters
cellphone: 手机号
* 返回
```
{
"status": "ok",
"data": {
"key": # 密钥,需要在登录时带回
}
}
```
or
```
{
"status": "error",
"data": {
"message":
"key": key # 登陆需带上的key
}
}
```
### 登录接口
* path /rbac/phone_login.dspy
* method 'POST'
* data
```
{
"cellphone":
"key": # 登陆需带上的key
"sms_code":
"selected_id": # 只有在手机号对应多账号,用户选择某个账号后需要
# 用户id 当用户选择了多手机号之一的账户需要,
}
```
* 返回
```
{
"status": "ok",
"data": {
"user": {
"id": # 用户id
"username": # 用户名
"orgid": # 机构id
"nick_name" # 显示名不存在时显示username
... #其他用户信息
}
}
}
```
or 当手机号有多个账号
```
{
"status": "choose", # 指示前端多账户,需用户选择
"data": {
"key": # 登陆需带上的key
"users": recs # 可选账户现实username用户选择后将id返回后台
}
}
```
```
{
"status": "error",
"data": {
"message": # 错误信息
}
}
```
## 充值
目前支持支付宝在线充值
### 发起支付宝充值
* path /unipay/user_recharge.dspy
* method "POST"
* data
```
{
"provider": "alipay", # 充值渠道
"amount": # 充值金额
"currency": "CNY" # 币种
}
```
* 返回
```
{
"status": "ok",
"data": {
"redirct": url # 充值url
}
}
重要由于此URL来自支付宝需要在新的页签或新window中打开才不会出现跨域错误
```
or
```
{
"status": "error",
"data": {
"message": 出错信息
}
}
```
## 下游APIkey
### 获得apikey list
* path /dapi/downapps.dspy
* method GET
* return
```
{
"status": "ok",
"data": {
"apikeys": [
{
"id": # 应用id
"appname": # 应用名
}
]
}
}
or
{
"status": "error",
"data": {
"message": # 出错信息
}
}
```
### 申请APIkey
* path /dapi/apply_apikey.dspy
* method POST
* headers
```
{
"Content-Type": "application/json"
}
```
* data
```
{
"appname": # 必须
"description": # 可选
}
```
* return
```
{
"status": "ok"
}
or
{
"status": "error",
"data": {
"message": 出错信息
}
}
```
### 查看AKIKEY
* path /dapi/get_apikey.dspy
* method GET
* params
```
{
"id": # "获得apikey list" 返回到id
}
```
* return
```
{
"status": "ok",
"data": {
"appname": # app名称
"aapikey": # apikey
"secretkey": # 加密key
}
}
or
{
"status": "error",
"data": {
"message": # 出错信息
}
}
```
## 账户管理
### 查询账户余额
* path /accounting/mybalance.dspy
* method 'GET'
* params 无
* 返回
```
{
"status": "ok",
"data": [
{
"account": # 账号名称
"balance": # 余额
}
]
}
```
or
```
{
"status": "error",
"data": {
"message": 错误信息
}
}
```
## 交易管理
### 查询产品价格
* path /platformbiz/product_query_price.dspy
* method "POST"
* data
```
{
"product_type": "llm" # llm大模型
"product_id": # 大模型id
“config_data # 不同的模型的配置数据不一样
}
```
* 返回
```
{
"status": "ok",
"data": {
"list_price": # 原价
"price": # 客户价格
"config_data" # 与请求相同
}
}
```
### 查询交易明细
* path /platformbiz/query_orders.dspy
* method "GET"
* params
```
{
"page": # 当前页,缺省第一页
"pagerows": # 每页记录数缺省80
}
```
* 返回
```
{
"status": "ok",
"data": data
}
data={
"total": # 总记录数
"rows": list of d # 当前页数据数组
}
d = {
"llmid": # 模型id
"name": # 模型名称
"model": # 模型识别名(可能会不同)
"use_date": # 使用日期
"use_time: # 使用时间
"usage": # 模型用量
"amount": # 交易金额
"userid", # 用户id
"userorgid" # 机构id
"status": # 交易状态
"accounting_status": # 记账状态
}
```
## 文生视频
* path /llmage/vidu_inference.dspy
* method "POST"
* data
```
{
"llmid": # vidu的llmid
"prompt": # 提示词
"duration": # 1 - 15
"audio": # 逻辑值,
"ratio" # "data":[{"value":"16:9"},{"value":"9:16"},{"value":"4:3"},{"value":"3:4"},{"value":"1:1"}]
"resolution": # 分辨率:"data":[{"value":"540p","text":"540p"},{"value":"720p","text":"720p"},{"value":"1080p","text":"1080p"}]
}
* 返回
流式数据, 每行一个jsonjson结构
```
{
"status": # FAILED, SUCCEEDED, 其他
# FAILED失败 error属性中说明失败原因
# SUCCEEDED成功video中保存生成视频url
“error": # 失败时有效,出错原因
“video” # 生成的视频,成功时有效
"usage": # 模型计费信息, 成功时有效
“type” # 类型?看看值是什么
}
```
## 图生视频
* path /llmage/vidu_inference.dspy
* method "POST"
* data
```
{
"llmid": # vidu的llmid
"prompt": # 提示词
"duration": # 1 - 15
"audio": # 逻辑值,
"ratio" # "data":[{"value":"16:9"},{"value":"9:16"},{"value":"4:3"},{"value":"3:4"},{"value":"1:1"}]
"resolution": # 分辨率:"data":[{"value":"540p","text":"540p"},{"value":"720p","text":"720p"},{"value":"1080p","text":"1080p"}]
}
```
* 返回
流式数据, 每行一个jsonjson结构
```
{
"status": # FAILED, SUCCEEDED, 其他
# FAILED失败 error属性中说明失败原因
# SUCCEEDED成功video中保存生成视频url
“error": # 失败时有效,出错原因
“video” # 生成的视频,成功时有效
"usage": # 模型计费信息, 成功时有效
“type” # 类型?看看值是什么
}
```
## 获得同类型所有可用模型
* path /llmage/get_type_llms.dspy
* method 'GET'
* params
```
{
'type': # 模型类型: 可选
# 文生视频
# 图生视频
# 参考生视频
}
```
* response
```
{
'status': 'ok',
'data': [ # 返回数组
{
id: # 模型id
name # 模型名字
model # 模型识别名
description # 模型名字
input_fields: # 输入数据描述
}
]
}
```
```
{
"status": "error",
"data": {
"message": # 出错信息
}
}
## 获得当天所有任务列表
* path /llmage/get_my_asynctasks.dspy
* method 'GET'
* params 无
*
* return
{
“status": "ok",
"data": [{
"tasks": {
"taskid",
"ioinfo", # 从这里获得最后一个返回数据如果成功有video的url
# 如果失败, 有错误信息可以显示
"status": # SUCCEEDED成功FAILED失败 其他处理中
...
}
}]
}
## 获得任务状态
* path /llmage/get_asynctask_status.dspy
* method 'GET'
* params
```
{
'taskid': # 任务id
}
* return
```
{
"status": "ok",
"data": {
"response": # 后台返回信息有状态错误信息或videod url
}
}
## 测试定价项目
* path /pricing/test_pricing_program.dspy
* method POST
* params
* data
```
{
"ppid": #定价项目id
"data": # 模型返回的usage的字典数据
}
return
计价成功
```
{
"status": "ok",
"data": {
"ppid": ppid,
"data": data,
"result": x
}
}
```
```
{
"status": "error",
"data": {
"message": # 错误信息
}
}
```