跳到主要内容

API 文档

为了方便用户灵活调用 GPU 资源,平台提供通过API调用方式使用实例相关功能,目前仅对企业用户开放。

API概览

平台对外提供的API如下:

API说明
获取平台GPU类型查询平台当前可用显卡类型
获取镜像查询当前账户可用的镜像,包括平台官方镜像和自定义镜像
创建实例创建实例,根据平台推荐规则选择符合条件的最优机器执行创建计划。
查询操作结果查询实例操作结果
查询实例查询结果返回未释放实例
实例操作OpenAPI支持实例开机、关机、重启、释放和设置自定义端口,更多复杂操作请到网页端执行。

如何调用API

1. 申请企业资质

API当前只针对企业用户开放,未开通企业资质请前往账户中心提交企业认证申请。

2. 创建API密钥

API调用需要先创建API 密钥,可以在"账户中心 - OpenAPI 密钥"页面创建密钥,点击添加后即下载密钥到本地,后续无法再重复下载,请妥善保管,切勿泄露。 open_api_001.png

3. 终端节点

终端节点即调用API的请求地址目前平台提供的服务器调用地址如下:

请求地址协议类型
https://api-ai.capitalonline.netHTTPS

4. 认证鉴权

所有API接口须要通过在header中携带平台的 API 密钥来进行身份认证。 在 Header 中携带 API 密钥的消息头域格式如下:

{
"gz-api-token":"test123abcxxxxxxxxx"
}

其中 **gm-api-token **是平台自定义header key。

5. 返回结果

API 请求返回统一使用 JSON (对应请求/响应header为Content-Type: application/json) 格式,通用结构如下:

{
"code": 0,
"message": "success",
"traceid": "",
"data": {}
}

返回结果参数说明:

消息元素名描述
code请求响应码,请求成功时为 0,失败时为相应的错误码,具体错误码请参考附录错误码说明。
message请求成功为 success, 请求失败为具体的业务错误信息
data返回的业务数据

API详情

1. 获取平台GPU类型

接口说明

  • 请求URI:/api/v1/openapi/gpu/list
  • 请求方法:GET

请求参数返回结果

参数名称类型描述
gpusArray<string>显卡类型数组 ,显卡类型一致

返回值示例

{
"code": 0,
"message": "success",
"traceid": "",
"data": {
"gpus": [
"G40-24G",
"G30-24G",
"A100-PCIE-40G"
]
}
}

2. 获取可用数据中心ID

接口说明

  • 请求URI:/api/v1/openapi/datacenter/list
  • 请求方法:GET

请求参数返回结果

参数名称类型描述
datacentersArray<Datacenter>数据中心数组

Datacenter

参数名称类型描述
nameString数据中心名称
dcIdString数据中心ID

返回值示例

{
"code": 0,
"message": "success",
"traceid": "57cbd46995d11318814a78746318bc32",
"data": {
"datacenters": [
{
"name": "宿迁B区",
"dcId": "suqian-b"
},
{
"name": "庆阳A区",
"dcId": "qingyang-a"
},
{
"name": "美国-达拉斯N区",
"dcId": "dallas-n"
}
]
}
}

2. 获取镜像

接口说明

  • 请求URI:/api/v1/openapi/image/list
  • 请求方法:GET

请求参数返回参数 Image参数描述

参数名称类型描述
typeString镜像类型,user / official, user:备份镜像,official: 官方镜像
imageIdString镜像Id,创建实例使用
nameString镜像名称

返回示例

{
"code": 0,
"message": "success",
"traceid": "90223a7f6632b1176c74fa17445cfe0e",
"data": {
"images": [
{
"type": "official",
"name": "torch2.1.1-cuda12.1.0-py3.10",
"imageId": "torch2.1.1-cuda12.1.0-py3.10"
},
{
"type": "user",
"name": "testimage",
"imageId": "123abc"
},
]
}
}

3. 创建实例

接口说明

  • 请求URI:/api/v1/openapi/instance/create
  • 请求方法:POST

请求参数 Body

参数名称类型必填描述
typeIntegertype类型值,当前仅支持type=2
gpuNameString显卡类型,可通过获取显卡列表接口查询,或者从官网查询
skuNameString支付方式, 取值范围: 按量付费(payg),竞价(bidding),包天(daily),包周(weekly),包月(monthly)
gpuNumInteger租用显卡数量
cpuNumInteger单卡分配cpu核心数
memoryInteger单卡分配的内存
diskTypeString磁盘类型(SSD/NVME)
tagsArray<String>查询符合某些标签的机器
imageIdString创建实例使用的镜像ID,可通过查询可用镜像列表获取
autoRenewBoolean是否设置到期自动续费,按量付费默认为自动续费,其他预付费支付方式默认为false
durationInteger预付费实例租用周期,默认为 1
nameString实例名称
servicePortArray<Integer>自定义服务端口,最多设置3个服务端口
cmdString启动命令
envString环境变量
dryRunBoole空跑,为 true 时只做机器筛选和价格检查
dcIdString数据中心ID

返回参数 Data

参数名称类型描述
instanceIdInt64实例ID, dryRun=true时为0
operationIdInt64当前操作ID, dryRun=true时为 0
specObject<Spec>实例规格

Spec

参数名称类型描述
gpuNameString显卡名称
vramString单卡显存大小,单位:G
skuNameString支付类型,取值范围:按量付费(payg),竞价(bidding),包天(daily),包周(weekly),包月(monthly)
priceString单价
cpuNameStringcpu 型号
cpuCoreNumintcpu 核心数,根据租用卡数按比例分配
memorySizeint内存大小,根据租用卡数按比例分配
payByVoucherint是否支持代金券支付, 支持:1, 不支持:0
regionNameString所在区域
dcIdString所在数据中心

返回示例

{
"code": 0,
"message": "success",
"traceid": "905b8753fb3db11760f67138872918cb",
"data": {
"InstanceId": 512300905672709,
"operationId": 512303116840965,
"spec": {
"gpuName": "G30-24G",
"vram": "10G",
"skuName": "payg",
"price": "10",
"cpuCoreNum": 16,
"cpuName": "Intel Xeon Processor (Skylake, IBRS)",
"memorySize": 17179869184,
"payByVoucher": 1,
"regionName": "华东",
"dcId": "suqian-b"
}
}
}

4. 查询操作状态

接口说明

  • 请求URI:/api/v1/openapi/instance/op/result
  • 请求方法:POST

请求参数 Body

参数名称类型必填描述
idsArray<int>操作ID列表

返回参数 Operation

参数名称类型描述
instanceIdInt64实例ID
statusint操作完成状态 进行中:1,成功:2,失败:3
actionString当前进行中的操作
operationIdString当前操作ID
isCompletedint操作是否已完成, 已完成:1, 未完成: 0
startTimeString开始时间
completeTimeString完成时间

返回示例

{
"code": 0,
"message": "success",
"traceid": "287bfb0b8e3fb11797f57d7a4f92b05b",
"data": {
"operations": [
{
"instanceId": 512300905672709,
"operationId": 512303116840965,
"action": "stop",
"status": 2,
"isCompleted": 1,
"startTime": "2024-02-06 17:06:45",
"completeTime": "2024-02-06 17:06:47"
}
]
}
}

5. 查询实例列表

接口说明

  • 请求URI:/api/v1/openapi/instance/query
  • 请求方法:GET

请求参数 Query

参数名称类型必填描述
statusString实例状态, 可选枚举值: stopd, running, creating
instanceIdInt查询单个实例
pnInteger分页页码
psInteger每页大小,默认为20

返回参数

参数名称类型描述
instancesArray<Instance>实例数组
totalInteger总数

Instance

参数名称类型描述
instanceIdint64实例ID
nameString自定义实例名称
imageIdString镜像ID
statusString实例状态
isPendingInt是否操作执行中, 1 为操作中
gpuNameString显卡名称
gpuNumInteger显卡数量
availableGpuNumInt实例所在物理机可用显卡数
skuNameString租用方式: payg(按量付费), daily(包天), weekly(包周), monthly(包月),card_less(无卡启动)
createdAtString创建时间
cpuCoreNumIntcpu核心数
memorySizeInt64内存大小,单位 Byte
systemDiskSizeInt64系统盘分配空间(根目录/),单位byte
systemDiskUsedSizeInt64系统盘已用空间(根目录/), 单位byte
dataDiskSizeInt64数据盘分配空间(/gz-data),单位byte
dataDiskUsedSizeInt64数据盘已用空间(/gz-data), 单位 byte
sshCmdStringssh 登录命令
sshPwdStringssh 登录密码
notebookUrlStringJupyterLab Notebook 访问地址
tensorboardUrlStringTensorboard 访问地址
customServicesArray<String>自定义端口访问地址(数组,每个元素为一个端口的对应访问地址)
operationIdInt64实例最近一次操作id
dcIdString数据中心ID
isStartableBoolean是否可以直接启动,根据所在物理机状态及剩余显卡数是否满足实例要求确定

返回示例

{
"code": 0,
"message": "success",
"traceid": "3082737a3085b5177f74d5555f57a69f",
"data": {
"instances": [
{
"instanceId": 504838617333765,
"name": "testname",
"status": "stopd",
"imageId": "stable-diffusion-webui_v1.7.0",
"isPending": 0,
"gpuName": "G40-24G",
"gpuNum": 0,
"skuName": "payg",
"operationId": 511642810499077,
"cpuCoreNum": 1,
"memorySize": 2147483648,
"systemDiskSize": 32212254720,
"systemDiskUsedSize": 4311059,
"dataDiskSize": 53687091200,
"dataDiskUsedSize": 0,
"sshCmd": "ssh -p 59064 root@xxxxx",
"sshPwd": "Q3rDHh7QEwgYsuPxYSdVbE9zzKQQW45e",
"notebookUrl": "http://xxxxx:42757/lab?token=f4jzygqwno3fecinx9arnetu",
"tensorboardUrl": "http://xxxxx:44634",
"customServices": [
"http://xxxxx:48548"
],
"createdAt": "2024-01-16 14:53:38",
"dcId": "qingyang-a",
"availableGpuNum": 8,
"isStartable": true
}
],
"total": 1
}
}

6. 实例操作

接口说明

  • 请求URI:/api/v1/openapi/instance/action
  • 请求方法:POST

请求参数 Body

参数名称类型必填描述
instanceIdInt64实例ID
actionString实例操作名称,仅支持stop(实例关机), start(开机), restart(重启), release(释放), set_port(设置自定义端口)
portsArray<Int>否(action=set_port时必填)内部端口号数组,最多同时开启3个,需要先完成实名认证或企业认证

返回参数

参数名称类型描述
operationIdInt64操作ID

返回示例

{
"code": 0,
"message": "success",
"traceid": "3082737a3085b5177f74d5555f57a69f",
"data": {
"operationId": 511642810499077
}
}

附录

1. 请求返回的通用结构

{
"code": 0,
"message": "success",
"traceid": "180114fedf26b1177b44121fa5c1e5d9",
"data": {}
}

2. HTTP状态码

状态码含义描述
404Not Found请求URI不存在
403Forbidden请求未授权
200OK请求成功
500Internal Server Error服务器错误

3. 常用错误码

错误码错误信息描述
10001服务器内部错误未定义的服务器内部错误, 可提供单反馈协助解决
10002未登录或者登录已过期一般是请求header 中缺少gz-api-token
10005参数错误参数校验错误
10135实例操作错误实例操作错误,错误信息在 message 中