此文件描述如何使用程式碼來達到與網頁相同的結果。 之後的文件只會提供相對位址 API,您需要將其拼湊到主網域名稱: https://api.aitubo.ai.
例如,如果您想建立一個工作,您需要呼叫 https://api.aitubo.ai/api/job/create
該文件分為兩個部分,第一部分為範例,第二部分為特定 API。
本節描述如何建立工作並取得工作。 我們用於建立工作的 API 提供了三個核心功能: Text2Image, Image2Image, and ControlNet(ControlNet 是一個神經網路結構,透過新增額外條件來控制擴散模型)。
無論您使用哪三個功能,首先您必須取得我們支援的模型清單,然後在您建立工作時,您需要傳入 id 模型資訊的欄位
curl --request GET \
--url 'https://api.aitubo.ai/api/model/list?type=platform' \
--header 'Authorization: Bearer ced695cfd83811eda5e286850d1dc848'
結果類似這樣:
{
"code": 0,
"data": {
"domain": "https://file.aitubo.ai/",
"total": 10,
"models": [
{
"id": "6426f9c60ca4651b98b91a6d",
"name": "ConceptCanvas",
"username": "Aitubo",
"desc": "A model that creates concept scenes with a European thick paint or CG style.",
"cover": "assets/model/6426f9c60ca4651b98b91a6d/cover.jpg",
"isFavourite": false,
"controlNet": false
},
{
"id": "642b977d2f2842537c09fe41",
"name": "DreamShaper",
"username": "Aitubo",
"desc": "A model that can generate multiple styles of scenes, characters, and game assets.",
"cover": "assets/model/642b977d2f2842537c09fe41/cover.jpg",
"isFavourite": false,
"controlNet": true
},
...
]
}
}
curl --request POST \
--url https://api.aitubo.ai/api/job/create \
--header 'Authorization: Bearer ced695cfd83811eda5e286850d1dc848' \
--header 'content-type: application/json' \
--data '{
"prompt": "A cat sleeps on the plane",
"modelId": "642b977d2f2842537c09fe41"
}
然後,您將收到類似這樣的回應:
{
"code": 0,
"data": {
"consumedCredit": 40,
"credit": 120,
"id": "64351e4d567bcd86773dc841"
}
}
您可以透過輪詢來檢查任務建立的狀態。 每張照片大約需要 2 秒才能完成,因此請控制您的查詢頻率。 最後,您會得到這樣:
{
"code": 0,
"data": {
"id": "64351e4d567bcd86773dc841",
"args": {
"prompt": "A cat sleeps on the plane",
"negativePrompt": "lowres, bad anatomy, cropped, worst quality, low quality",
"strength": 0.8,
"width": 512,
"height": 512,
"count": 4,
"steps": 30,
"modelId": "642b977d2f2842537c09fe41"
},
"result": {
"info": "Warning: some images may contain NSFW content",
"data": {
"images": [
"images/art/640076a4661aa1c0f81ba2d7/cgqhsljj5mf00080001g.png",
"images/art/640076a4661aa1c0f81ba2d7/cgqhsljj5mf000800020.png",
"images/art/640076a4661aa1c0f81ba2d7/cgqhsljj5mf00080002g.png",
"images/art/640076a4661aa1c0f81ba2d7/cgqhsljj5mf000800030.png"
],
"artIds": [
"64351e56567bcd86773dc842",
"64351e56567bcd86773dc843",
"64351e56567bcd86773dc844",
"64351e56567bcd86773dc845"
],
"domain": "https://file.aitubo.ai/"
}
},
"status": 2,
"createAt": "2023-04-11T08:46:05.55Z"
}
}
若要使用 Image2Image,您可以呼叫我們的 上傳圖片 API 以取得圖片的 OSS 相對位址,或者您可以提供具有絕對位址的圖片。
curl --request POST \
--url https://api.aitubo.ai/api/job/create \
--header 'Authorization: Bearer ced695cfd83811eda5e286850d1dc848' \
--header 'content-type: application/json' \
--data '{
"imagePath": "images/tmp/cgqi1jntuq4000800040.png",
"modelId": "642b977d2f2842537c09fe41",
"prompt": "scene",
"guidanceScale": 0.7
}'
您可以像 Text2Image 一樣透過輪詢來檢查任務建立的狀態。
在使用 ControlNet 功能之前,您必須先呼叫 /job/model/list API 以取得相應的 ControlNet 類別:
{
"code": 0,
"data": {
"domain": "https://file.aitubo.ai/",
"models": [
{
"id": "canny",
"name": "canny",
"icon": "assets/template/control_canny.jpg"
},
{
"id": "scribble",
"name": "scribble",
"icon": "assets/template/control_scribble.jpg"
},
...
}
}
然後呼叫 /job/create API:
curl --request POST \
--url https://api.aitubo.ai/api/job/create \
--header 'Authorization: Bearer ced695cfd83811eda5e286850d1dc848' \
--header 'content-type: application/json' \
--data '{ "imagePath": "https://ichef.bbci.co.uk/news/976/cpsprodpb/17638/production/_124800859_gettyimages-817514614.jpg.webp",
"controlModel": "canny",
"prompt": "a little dog"
}'
您也可以傳遞 modelId 欄位(確保模型支援 ControlNet):
curl --request POST \
--url https://api.aitubo.ai/api/job/create \
--header 'Authorization: Bearer ced695cfd83811eda5e286850d1dc848' \
--header 'content-type: application/json' \
--data '{
"imagePath": "https://ichef.bbci.co.uk/news/976/cpsprodpb/17638/production/_124800859_gettyimages-817514614.jpg.webp",
"controlModel": "canny",
"prompt": "a little dog",
"modelId": "642b977d2f2842537c09fe41"
}'
路徑: /api/job/upload-image
方法: POST
標頭
名稱 | 值 | 必填 | 範例 |
---|---|---|---|
Content-Type | multipart/form-data | 是 | |
Authorization | Bearer {YOUR KEY} | 是 | Bearer 37f333a2d5f811edb248acde48001122 |
主體
名稱 | 值 | 必填 |
---|---|---|
image | 檔案 | 是 |
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
code | integer | 是 | code=0 -> 成功 | ||
info | string | 否 | 錯誤資訊 | ||
data | object | 否 | |||
├─path | string | 否 | AliYun OSS 的圖片路徑 |
路徑: /api/job/create
方法: POST
標頭
名稱 | 值 | 必填 | 範例 |
---|---|---|---|
Content-Type | application/json | 是 | |
Authorization | Bearer {YOUR KEY} | 是 | Bearer 37f333a2d5f811edb248acde48001122 |
主體
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
imagePath | string | 否 | 已上傳影像的路徑(url/oss 均可) | ||
maskImage | string | 否 | AI 編輯器應傳遞此欄位 | ||
modelId | string | 否 | 如果 controlModel 為 null,則應填寫此欄位 | ||
prompt | string | 是 | 提示 | ||
negativePrompt | string | 否 | 負面提示 | ||
controlModel | string | 否 | canny / scribble / openpose / mlsd / hed / seg / depth / normal | ||
controlStrength | number | 否 | 1 | [0, 2] | |
controlFilter | string | 否 | control 影像的預處理器,例如:openpose / openpose_full / openpose_hand / openpose_face / openpose_faceonly | ||
strength | number | 否 | 0.8 | [0.1, 1] | |
width | integer | 否 | 512 | ||
height | integer | 否 | 512 | ||
steps | integer | 否 | 30 | 10 <= value <= 50 | |
guidanceScale | integer | 否 | 7.5 | 0 < value <= 20 | |
count | integer | 否 | 4 | 產生的圖片數量 |
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
code | number | 是 | 0 -> 成功;1000 -> 信用額度不足 | ||
info | string | 否 | 錯誤資訊 | ||
data | object | 是 | |||
├─id | string | 是 | 工作 ID | ||
├─credit | integer | 是 | 使用者的總信用額度 | ||
├─consumedCredit | integer | 是 | 工作的已用信用額度 |
路徑: /api/job/get
方法: GET
查詢
名稱 | 必填 | 範例 | 備註 |
---|---|---|---|
id | 是 | 642ba091592245d79a645b39 | 工作 ID |
名稱 | Type | 必填 | Default | 備註 | Others |
---|---|---|---|---|---|
code | integer | 是 | 0 -> 成功 | ||
info | string | 否 | 錯誤資訊 | ||
data | object | 是 | |||
├─id | string | 是 | 工作 ID | ||
├─createAt | string | 是 | 工作的建立時間 | ||
├─status | integer | 是 | 工作的狀態。 0 -> 尚未準備好; 1 -> 處理中; 2 -> 成功; 3 -> 失敗 | ||
├─result | object | 否 | |||
├─├─info | string | 否 | |||
├─├─data | object | 否 | |||
├─├─├─images | string [] | 否 | 影像的結果相對路徑(需要與網域欄位串接) | item Type:string | |
├─├─├─artIds | string [] | 否 | 圖片對應的 artID | item Type:string | |
├─├─├─domain | string | 否 | oss url,您需要串接圖片的相對路徑 | ||
├─args | object | 否 | |||
├─├─prompt | string | 否 | |||
├─├─negativePrompt | string | 否 | |||
├─├─model | string | 否 | |||
├─├─strength | integer | 否 | |||
├─├─width | integer | 否 | |||
├─├─height | integer | 否 |
路徑: /api/job/models
方法: GET
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
code | integer | 是 | 0 -> 成功 | ||
info | string | 否 | 錯誤資訊 | ||
data | object | 是 | |||
├domain | string | 是 | 影像 oss 網域名稱,需要串接下面的圖示欄位 | ||
├models | object [] | 是 | item Type:object | ||
id | string | 是 | 模型 ID,建立工作時,controlModel 參數值為此 ID | ||
name | string | 是 | 英文名稱 | ||
cname | string | 是 | 中文名稱 | ||
icon | string | 是 | 範例圖片。 oss 相對路徑,您需要串接網域 |
路徑: /api/job/list
方法: GET
標頭
名稱 | 值 | 必填 | 範例 | 備註 |
---|---|---|---|---|
Content-Type | application/json | 是 | ||
Authorization | Bearer {YOUR KEY} | 是 | Bearer 37f333a2d5f811edb248acde48001122 |
Query
名稱 | 必填 | 範例 | 備註 |
---|---|---|---|
pageIndex | 是 | 從 1 開始 | |
pageSize | 是 |
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
code | integer | 是 | 0 -> 成功 | ||
info | string | 否 | 錯誤資訊 | ||
data | object | 是 | |||
├─jobs | object [] | 是 | 工作陣列 | item Type:object | |
├─├─id | string | 是 | 工作 ID | ||
├─├─createdAt | string | 是 | |||
├─├─args | object | 是 | |||
├─├─├─prompt | string | 是 | |||
├─├─├─negativePrompt | string | 是 | |||
├─├─├─strength | integer | 是 | |||
├─├─├─width | integer | 是 | |||
├─├─├─height | integer | 是 | |||
├─├─├─count | integer | 是 | |||
├─├─├─steps | integer | 是 | |||
├─├─arts | object [] | 是 | 產生的影像陣列 | item Type:object | |
├─├─├─id | string | 是 | 產生的影像的 ID | ||
├─├─├─images | object [] | 是 | 多樣化圖片陣列 | item Type:object | |
├─├─├─├─spec | string | 是 | 變體類型。 o -> 原始; 2x/3x/4x -> 2/3/4 比例影像 | ||
├─├─├─├─path | string | 是 | 影像路徑。 要串接的網域 | ||
├─├─├─├─size | integer | 是 | 影像大小。 單位:位元組 | ||
├─domain | string | 是 | oss 影像網域 |
路徑: /api/model/list
方法: GET
標頭
名稱 | 值 | 必填 | 範例 | 備註 |
---|---|---|---|---|
Authorization | Bearer {YOUR KEY} | 是 | Bearer 37f333a2d5f811edb248acde48001122 |
查詢
名稱 | 必填 | 範例 | 備註 |
---|---|---|---|
pageIndex | 是 | 從 1 開始 | |
pageSize | 是 | ||
type | 否 | platform/community |
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
code | integer | 是 | 0 -> 成功 | ||
info | string | 否 | 錯誤資訊 | ||
data | object | 是 | |||
├─domain | string | 是 | oss 網域 | ||
├─total | integer | 是 | 分頁篩選的模型總數 | ||
├─models | object [] | 是 | item Type:object | ||
├─├─id | string | 是 | 模型 ID | ||
├─├─name | string | 是 | 模型名稱 | ||
├─├─username | string | 是 | model’s author name | ||
├─├─desc | string | 是 | 模型描述 | ||
├─├─cover | string | 是 | 模型封面 | ||
├─├─isFavourite | boolean | 是 | 使用者是否收藏該模型 | ||
├─├─controlNet | boolean | 是 | 模型是否支援 ControlNet |
路徑: /api/job/upscale
方法: POST
標頭
名稱 | 值 | 必填 | 範例 | 備註 |
---|---|---|---|---|
Content-Type | application/json | 是 | ||
Authorization | Bearer {YOUR KEY} | 是 | Bearer 37f333a2d5f811edb248acde48001122 |
主體
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
model | string | 否 | 放大模型名稱 | ||
RealESRGAN _x4plus / RealESRGAN_x4plus_anime_6B | |||||
imagePath | string | 是 | 影像路徑。 要串接的網域 | ||
upscaleFactor | integer | 是 | 2 <= 因子 <= 4 | ||
beauty | boolean | 否 | 是否啟用臉部增強 | ||
artId | string | 是 | 需要超點圖片 artID |
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
code | number | 是 | 0 -> 成功;1000 -> 信用額度不足 | ||
info | string | 否 | 錯誤資訊 | ||
data | object | 是 | |||
├─id | string | 否 | 放大工作 ID | ||
├─credit | integer | 是 | 使用者的總信用額度 | ||
├─consumedCredit | integer | 是 | 工作的已用信用額度 |
路徑: /api/art/segment
方法: POST
標頭
名稱 | 值 | 必填 | 範例 | 備註 |
---|---|---|---|---|
Content-Type | application/json | 是 | ||
Authorization | Bearer {YOUR KEY} | 是 | Bearer 37f333a2d5f811edb248acde48001122 |
主體
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
image | string | 是 | 影像路徑。 絕對/相對路徑 |
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
code | number | 是 | 0 -> 成功 | ||
info | string | 否 | 錯誤資訊 | ||
data | object | 是 | |||
├─image | string | 是 | 分割後影像的 URL |
路徑: /api/user/profile
方法: GET
標頭
名稱 | 值 | 必填 | 範例 | 備註 |
---|---|---|---|---|
Content-Type | application/json | 是 | ||
Authorization | Bearer {YOUR KEY} | 是 | Bearer 37f333a2d5f811edb248acde48001122 |
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
code | number | 是 | 0 -> 成功 | ||
info | string | 否 | 錯誤資訊 | ||
data | object | 是 | |||
├─name | string | 是 | |||
string | 是 | ||||
├─avatar | string | 是 | |||
├─phone | string | 是 | |||
├─credit | integer | 是 | 使用者的總信用額度 | ||
├─displayNSFW | boolean | 是 | |||
├─discord | boolean | 是 |
路徑: api/transform/list
方法: GET
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
code | number | 是 | 0 -> 成功 | ||
info | string | 否 | 錯誤資訊 | ||
data | object | 是 | |||
├─domain | string | 是 | 影像 oss 網域名稱,需要串接下面的圖示欄位 | ||
├─tags | string[] | 是 | 範本標籤 | ||
├─transform | object | 是 | |||
├─├─tag | object[] | 是 | |||
├─├─├─id | string | 是 | |||
├─├─├─name | string | 是 | |||
├─├─├─image | string | 是 | 原始影像 | ||
├─├─├─art | string | 是 | 結果影像 | ||
├─├─├─cost | number | 是 | 信用額度消耗 | ||
├─├─├─pro | boolean | 是 | 是否為專業版 | ||
├─├─├─tag | string | 是 | 標籤 |
路徑: api/transform/create-headshot
方法: POST
標頭
名稱 | 值 | 必填 | 範例 | 備註 |
---|---|---|---|---|
Content-Type | application/json | 是 | ||
Authorization | Bearer {YOUR KEY} | 是 | Bearer 37f333a2d5f811edb248acde48001122 |
主體
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
imagePath | string | 是 | 呼叫時傳回的影像路徑 上傳影像 api | ||
transformId | string | 是 | |||
width | integer | 否 | |||
height | integer | 否 | |||
keepHair | boolean | 否 | false | ||
keepPose | boolean | 否 | true |
名稱 | 類型 | 必填 | 預設 | 備註 | 其他 |
---|---|---|---|---|---|
code | number | 是 | 0 -> 成功;1000 -> 信用額度不足 | ||
info | string | 否 | 錯誤資訊 | ||
data | object | 是 | |||
├─id | string | 是 | 工作 ID | ||
├─credit | integer | 是 | 使用者的總信用額度 | ||
├─consumedCredit | integer | 是 | 工作的已用信用額度 |