API 文档
为了方便用户灵活调用 GPU 资源,平台提供通过API调用方式使用实例相关功能,目前仅对企业用户开放。
API概览
平台对外提供的API如下:
| API | 说明 |
|---|---|
| 获取平台GPU类型 | 查询平台当前可用显卡类型 |
| 获取镜像 | 查询当前账户可用的镜像,包括平台官方镜像和自定义镜像 |
| 创建实例 | 创建实例,根据平台推荐规则选择符合条件的最优机器执行创建计划。 |
| 查询操作结果 | 查询实例操作结果 |
| 查询实例 | 查询结果返回未释放实例 |
| 实例操作 | OpenAPI支持实例开机、关机、重启、释放和设置自定义端口,更多复杂操作请到网页端执行。 |
如何调用API
1. 申请企业资质
API当前只针对企业用户开放,未开通企业资质请前往账户中心提交企业认证申请。
2. 创建API密钥
API调用需要先创建API 密钥,可以在"账户中心 - OpenAPI 密钥"页面创建密钥,点击添加后即下载密钥到本地,后续无法再重复下载,请妥善保管,切勿泄露。

3. 终端节点
终端节点即调用API的请求地址目前平台提供的服务器调用地址如下:
| 请求地址 | 协议类型 |
|---|---|
https://api-cloud.gpugeek.com | HTTPS |
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
请求参数 无 返回结果
| 参数名称 | 类型 | 描述 |
|---|---|---|
| gpus | Array<string> | 显卡类型数组 ,显卡类型一致 |
返回值示例
{
"code": 0,
"message": "success",
"traceid": "",
"data": {
"gpus": [
"G40-24G",
"G30-24G",
"A100-PCIE-40G"
]
}
}
2. 获取可用数据中心ID
接口说明
- 请求URI:/api/v1/openapi/datacenter/list
- 请求方法:GET
请求参数 无 返回结果
| 参数名称 | 类型 | 描述 |
|---|---|---|
| datacenters | Array<Datacenter> | 数据中心数组 |
Datacenter
| 参数名称 | 类型 | 描述 |
|---|---|---|
| name | String | 数据中心名称 |
| dcId | String | 数据中心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参数描述
| 参数名称 | 类型 | 描述 |
|---|---|---|
| type | String | 镜像类型,user / official, user:备份镜像,official: 官方镜像 |
| imageId | String | 镜像Id,创建实例使用 |
| name | String | 镜像名称 |
返回示例
{
"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
| 参数名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| type | Integer | 是 | type类型值,当前仅支持type=2 |
| gpuName | String | 是 | 显卡类型,可通过获取显卡列表接口查询,或者从官网查询 |
| skuName | String | 是 | 支付方式, 取值范围: 按量付费(payg),竞价(bidding),包天(daily),包周(weekly),包月(monthly) |
| gpuNum | Integer | 是 | 租用显卡数量 |
| cpuNum | Integer | 否 | 单卡分配cpu核心数 |
| memory | Integer | 否 | 单卡分配的内存 |
| diskType | String | 否 | 磁盘类型(SSD/NVME) |
| tags | Array<String> | 否 | 查询符合某些标签的机器 |
| imageId | String | 是 | 创建实例使用的镜像ID,可通过查询可用镜像列表获取 |
| autoRenew | Boolean | 否 | 是否设置到期自动续费,按量付费默认为自动续费,其他预付费支付方式默认为false |
| duration | Integer | 否 | 预付费实例租用周期,默认为 1 |
| name | String | 否 | 实例名称 |
| servicePort | Array<Integer> | 否 | 自定义TCP服务端口,最多设置3个自定义(TCP+HTTP)服务端口 |
| httpServicePort | Array<Integer> | 否 | 自定义HTTP服务端口,最多设置3个自定义(TCP+HTTP)服务端口 |
| cmd | String | 否 | 启动命令 |
| env | String | 否 | 环境变量 |
| dryRun | Boolean | 否 | 空跑,为 true 时只做机器筛选和价格检查 |
| dcId | String | 否 | 数据中心ID |
| systemDiskSize | Integer | 否 | 系统盘大小,(单位GB,默认为30GB) |
| dataDiskSize | Integer | 否 | 数据盘大小,(单位GB,默认为20GB) |
| biddingMatching | Boolean | 否 | 是否在价格发生变化时候自动跟价 |
| maxMatchingLimit | Float | 否 | 设置最大跟可接受的价格(设置自动跟价格时必选) |
返回参数 Data
| 参数名称 | 类型 | 描述 |
|---|---|---|
| instanceId | Int64 | 实例ID, dryRun=true时为0 |
| operationId | Int64 | 当前操作ID, dryRun=true时为 0 |
| spec | Object<Spec> | 实例规格 |
Spec
| 参数名称 | 类型 | 描述 |
|---|---|---|
| gpuName | String | 显卡名称 |
| vram | String | 单卡显存大小,单位:G |
| skuName | String | 支付类型,取值范围:按量付费(payg),竞价(bidding),包天(daily),包周(weekly),包月(monthly) |
| price | String | 单价 |
| cpuName | String | cpu 型号 |
| cpuCoreNum | int | cpu 核心数,根据租用卡数按比例分配 |
| memorySize | int | 内存大小,根据租用卡数按比例分配 |
| payByVoucher | int | 是否支持代金券支付, 支持:1, 不支持:0 |
| regionName | String | 所在区域 |
| dcId | String | 所在数据中心 |
返回示例
{
"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
| 参数名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| ids | Array<int> | 是 | 操作ID列表 |
返回参数 Operation
| 参数名称 | 类型 | 描述 |
|---|---|---|
| instanceId | Int64 | 实例ID |
| status | int | 操作完成状态 进行中:1,成功:2,失败:3 |
| action | String | 当前进行中的操作 |
| operationId | String | 当前操作ID |
| isCompleted | int | 操作是否已完成, 已完成:1, 未完成: 0 |
| startTime | String | 开始时间 |
| completeTime | String | 完成时间 |
返回示例
{
"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
| 参数名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| status | String | 否 | 实例状态, 可选枚举值: stopd, running, creating |
| instanceId | Int | 否 | 查询单个实例 |
| pn | Integer | 否 | 分页页码 |
| ps | Integer | 否 | 每页大小,默认为20 |
返回参数
| 参数名称 | 类型 | 描述 |
|---|---|---|
| instances | Array<Instance> | 实例数组 |
| total | Integer | 总数 |
Instance
| 参数名称 | 类型 | 描述 |
|---|---|---|
| instanceId | int64 | 实例ID |
| name | String | 自定义实例名称 |
| imageId | String | 镜像ID |
| status | String | 实例状态 |
| isPending | Int | 是否操作执行中, 1 为操作中 |
| gpuName | String | 显卡名称 |
| gpuNum | Integer | 显卡数量 |
| availableGpuNum | Int | 实例所在物理机可用显卡数 |
| skuName | String | 租用方式: payg(按量付费), daily(包天), weekly(包周), monthly(包月),card_less(无卡启动) |
| createdAt | String | 创建时间 |
| cpuCoreNum | Int | cpu核心数 |
| memorySize | Int64 | 内存大小,单位 Byte |
| systemDiskSize | Int64 | 系统盘分配空间(根目录/),单位Byte |
| systemDiskUsedSize | Int64 | 系统盘已用空间(根目录/), 单位Byte |
| dataDiskSize | Int64 | 数据盘分配空间(/gz-data),单位byte |
| dataDiskUsedSize | Int64 | 数据盘已用空间(/gz-data), 单位Byte |
| sshCmd | String | ssh 登录命令 |
| sshPwd | String | ssh 登录密码 |
| notebookUrl | String | JupyterLab Notebook 访问地址 |
| tensorboardUrl | String | Tensorboard 访问地址 |
| customServices | Array<String> | 自定义TCP端口访问地址(数组,每个元素为一个端口的对应访问地址) |
| httpServices | Array<String> | 自定义HTTP端口访问地址(数组,每个元素为一个端口的对应访问地址) |
| operationId | Int64 | 实例最近一次操作id |
| dcId | String | 数据中心ID |
| isStartable | Boolean | 是否可以直接启动,根据所在物理机状态及剩余显卡数是否满足实例要求确定 |
| terminationScheduled | Boolean | 当SKU为竞价实例有效,true表示被标记为进入待删除缓冲期,false表示没有被标记 |
| terminationScheduledAt | Int64 | 当SKU为竞价实例且terminationScheduled为true时有效,表示在该时间戳时删除实例 |
返回示例
{
"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"
],
"httpServices": [
"https://504838617333765-http-8099.northwest1.gpugeek.com:8443"
],
"createdAt": "2024-01-16 14:53:38",
"dcId": "qingyang-a",
"availableGpuNum": 8,
"isStartable": true,
"terminationScheduled": false,
"terminationScheduledAt": 0
}
],
"total": 1
}
}
6. 实例操作
接口说明
- 请求URI:/api/v1/openapi/instance/action
- 请求方法:POST
请求参数 Body
| 参数名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| instanceId | Int64 | 是 | 实例ID |
| action | String | 是 | 实例操作名称,仅支持stop(实例关机), start(开机), restart(重启), release(释放), set_port(设置自定义端口) |
| ports | Array<Int> | 否(action=set_port时必填) | 内部端口号数组(TCP),最多同时开启3个(TCP+HTTP),此操作是重置操作,替换原有的TCP端口映射,为空是删除端口映射 |
| httpPorts | Array<Int> | 否(action=set_port时必填) | 内部端口号数组(HTTP),最多同时开启3个(TCP+HTTP), 此操作是重置操作,替换原有的HTTP端口映射,为空是删除端口映射 |
返回参数
| 参数名称 | 类型 | 描述 |
|---|---|---|
| operationId | Int64 | 操作ID |
返回示例
{
"code": 0,
"message": "success",
"traceid": "3082737a3085b5177f74d5555f57a69f",
"data": {
"operationId": 511642810499077
}
}
7. 修改实例名称接口
接口说明
- 请求URI:/api/v1/openapi/instance/rename
- 请求方法:POST
请求参数 Body
| 参数名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| instanceId | Int64 | 是 | 实例ID |
| name | String | 是 | 名称,长度限制:1~64字符 |
返回参数
| 参数名称 | 类型 | 描述 |
|---|---|---|
| status | Int | 执行状态,0=不成功 1=成功 |
返回示例
{
"code": 0,
"message": "success",
"traceid": "2ddb1f90d7b28718794b89001bdd2eb4",
"data": {
"status": 1
}
}
8. 批量创建实例
接口说明
- 请求URI:/api/v1/openapi/instance/bulk-create
- 请求方法:POST
请求参数 Body
| 参数名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| type | Integer | 是 | type类型值,当前仅支持type=2 |
| gpuName | String | 是 | 显卡类型,可通过获取显卡列表接口查询,或者从官网查询 |
| skuName | String | 是 | 支付方式, 取值范围: 按量付费(payg),竞价(bidding),包天(daily),包周(weekly),包月(monthly) |
| gpuNum | Integer | 是 | 租用显卡数量 |
| count | Integer | 是 | 创建实例数量(最大不超过50,批量创建最多的卡数不应超过100) |
| cpuNum | Integer | 否 | 单卡分配cpu核心数 |
| memory | Integer | 否 | 单卡分配的内存 |
| diskType | String | 否 | 磁盘类型(SSD/NVME) |
| tags | Array<String> | 否 | 查询符合某些标签的机器 |
| imageId | String | 是 | 创建实例使用的镜像ID,可通过查询可用镜像列表获取 |
| autoRenew | Boolean | 否 | 是否设置到期自动续费,按量付费默认为自动续费,其他预付费支付方式默认为false |
| duration | Integer | 否 | 预付费实例租用周期,默认为 1 |
| namePrefix | String | 否 | 实例名称前缀,按数量自动排序 |
| servicePort | Array<Integer> | 否 | 自定义TCP服务端口,最多设置3个自定义(TCP+HTTP)服务端口 |
| httpServicePort | Array<Integer> | 否 | 自定义HTTP服务端口,最多设置3个自定义(TCP+HTTP)服务端口 |
| cmd | String | 否 | 启动命令 |
| env | String | 否 | 环境变量 |
| dryRun | Boole | 否 | 空跑,为 true 时只做机器筛选和价格检查 |
| dcId | String | 否 | 数据中心ID |
| systemDiskSize | Integer | 否 | 系统盘大小,(单位GB,默认为30GB) |
| dataDiskSize | Integer | 否 | 数据盘大小,(单位GB,默认为20GB) |
| biddingMatching | Boolean | 否 | 是否在价格发生变化时候自动跟价 |
| maxMatchingLimit | Float | 否 | 设置最大跟可接受的价格(设置自动跟价格时必选) |
返回参数 Data
| 参数名称 | 类型 | 描述 |
|---|---|---|
| List | Array<ListItem> | 实例规格 |
ListItem
| 参数名称 | 类型 | 描述 |
|---|---|---|
| instanceId | Int64 | 实例ID, dryRun=true时为0 |
| operationId | Int64 | 当前操作ID,dryRun=true时为 0 |
| spec | Object<Spec> | 实例规格 |
Spec
| 参数名称 | 类型 | 描述 |
|---|---|---|
| gpuName | String | 显卡名称 |
| vram | String | 单卡显存大小,单位:G |
| skuName | String | 支付类型,取值范围:按量付费(payg),竞价(bidding),包天(daily),包周(weekly),包月(monthly) |
| price | String | 单价 |
| cpuName | String | cpu 型号 |
| cpuCoreNum | int | cpu 核心数,根据租用卡数按比例分配 |
| memorySize | int | 内存大小,根据租用卡数按比例分配 |
| payByVoucher | int | 是否支持代金券支付, 支持:1, 不支持:0 |
| regionName | String | 所在区域 |
| dcId | String | 所在数据中心 |
返回示例
{
"code": 0,
"message": "success",
"traceid": "c4297fdef9018c18723ec960824f82d4",
"data": {
"list": [
{
"instanceId": 764536974440069,
"operationId": 764536974440070,
"spec": {
"gpuName": "RTX A5000",
"vram": "24G",
"skuName": "payg",
"price": "0.9",
"cpuCoreNum": 8,
"cpuName": "Intel Xeon Processor (Icelake)",
"memorySize": 30064771072,
"payByVoucher": 1,
"regionName": "西北地区",
"dcId": "suqian-b"
}
},
{
"instanceId": 764537000519301,
"operationId": 764537000519302,
"spec": {
"gpuName": "RTX A5000",
"vram": "24G",
"skuName": "payg",
"price": "0.9",
"cpuCoreNum": 12,
"cpuName": "Intel Xeon Processor (Icelake)",
"memorySize": 15032385536,
"payByVoucher": 1,
"regionName": "西北地区",
"dcId": "suqian-b"
}
}
]
}
}
9. 查询实例订单接口
接口说明
- 请求URI:/api/v1/openapi/instance/order-list
- 请求方法:GET
请求参数 Param
| 参数名称 | 类型 | 必填 | 描述 |
|---|---|---|---|
| startTime | Datetime | 是 | 2015-01-01 00:00:00 |
| endTime | Datetime | 是 | 2015-01-06 00:00:00 |
| ps | int | 否 | 分页大小,默认10 |
| pn | int | 否 | 分页序号,默认1 |
返回参数 Data
| 参数名称 | 类型 | 描述 |
|---|---|---|
| order | Array<OrderItem> | 实例规格 |
OrderItem
| 参数名称 | 类型 | 描述 |
|---|---|---|
| orderId | Int64 | 订单编码 |
| userId | Int64 | 用户编码 |
| instanceId | Int64 | 实例编码 |
| gpuNum | int | GPU卡数 |
| gpuName | String | GPU卡型号 |
| name | String | 实例名称 |
| imageId | String | 镜像编码 |
| imageName | String | 镜像名称 |
| orderType | String | 订单类型 instance=实例分类 |
| subject | String | 订单详细类型 |
| payType | Int64 | 支付类型 1=后付费 2=预付费 |
| payStatus | Int64 | 支付状态 1=支付中 2=支付成功 3=支付失败 |
| duration | Int64 | 订单周期(秒) |
| price | Decimal | 单价 |
| discount | Decimal | 折扣 |
| ignoreDecimals | Decimal | 抹零 |
| originAmount | Decimal | 原 价 |
| payAmount | Decimal | 应付价格 |
| balanceAmount | Decimal | 余额支付 |
| couponAmount | Decimal | 优惠券支付 |
| voucherAmount | Decimal | 代金券支付 |
| payTime | Datetime | 支付时间 |
| startTime | Datetime | 开始时间 |
| endTime | Datetime | 结束时间 |
返回示例
{
"code": 0,
"message": "success",
"traceid": "cc96ca6ce9ff8b1828bc9c3f25e8f7a1",
"data": {
"order": [
{
"orderId": 763465120926085,
"userId": 9811682781,
"instanceId": 763465124514181,
"gpuNum": 1,
"gpuName": "RTX A5000",
"name": "infra1",
"imageId": "torch2.4.0-cuda11.8.0-py3.10",
"imageName": "pytorch-final",
"orderType": "instance",
"subject": "实例创建",
"payType": 1,
"payStatus": 2,
"duration": 91,
"price": "0.9",
"discount": "0",
"ignoreDecimals": "0.002651",
"originAmount": "0.022651",
"payAmount": "0.02",
"balanceAmount": "0.02",
"couponAmount": "0",
"voucherAmount": "0",
"payTime": "2026-01-16 10:09:17",
"startTime": "2026-01-16 10:07:46",
"endTime": "2026-01-16 10:09:17"
},
{
"orderId": 763465078249861,
"userId": 9811682781,
"instanceId": 763465080396165,
"gpuNum": 1,
"gpuName": "RTX A5000",
"name": "train1",
"imageId": "torch2.4.0-cuda11.8.0-py3.10",
"imageName": "pytorch-final",
"orderType": "instance",
"subject": "实例创建",
"payType": 1,
"payStatus": 2,
"duration": 99,
"price": "0.9",
"discount": "0",
"ignoreDecimals": "0.004821",
"originAmount": "0.024821",
"payAmount": "0.02",
"balanceAmount": "0.02",
"couponAmount": "0",
"voucherAmount": "0",
"payTime": "2026-01-16 10:09:16",
"startTime": "2026-01-16 10:07:37",
"endTime": "2026-01-16 10:09:16"
}
],
"pn": 1,
"ps": 2,
"total": 306
}
}
10. 查询用户余额
接口说明
- 请求URI:/api/v1/openapi/user/account
- 请求方法:GET
返回参数 Data
| 参数名称 | 类型 | 描述 |
|---|---|---|
| userId | Int64 | 用户编码 |
| balance | Decimal | 余额 |
| creditBalance | Decimal | 信用额度 |
返回示例
{
"code": 0,
"message": "success",
"traceid": "70821973d1008c18e4f2ef686ebafece",
"data": {
"userId": 9811682781,
"balance": "28883.75",
"creditBalance": "0"
}
}
附录
1. 请求返回的通用结构
{
"code": 0,
"message": "success",
"traceid": "180114fedf26b1177b44121fa5c1e5d9",
"data": {}
}
2. HTTP状态码
| 状态码 | 含义 | 描述 |
|---|---|---|
| 404 | Not Found | 请求URI不存在 |
| 403 | Forbidden | 请求未授权 |
| 200 | OK | 请求成功 |
| 500 | Internal Server Error | 服务器错误 |
3. 常用错误码
| 错误码 | 错误信息 | 描述 |
|---|---|---|
| 10001 | 服务器内部错误 | 未定义的服务器内部错误, 可提供 单反馈协助解决 |
| 10002 | 未登录或者登录已过期 | 一般是请求header 中缺少gz-api-token |
| 10005 | 参数错误 | 参数校验错误 |
| 10135 | 实例操作错误 | 实例操作错误,错误信息在 message 中 |