Dieses Dokument beschreibt, wie Sie den Code verwenden, um die gleichen Ergebnisse wie im Web zu erzielen. Nach dem Dokument werden nur relative Adressen der API angegeben, die Sie mit dem Hauptdomänennamen zusammensetzen müssen: https://api.aitubo.ai.
Wenn Sie beispielsweise einen Job erstellen möchten, müssen Sie aufrufen https://api.aitubo.ai/api/job/create
Das Dokument ist in zwei Abschnitte unterteilt, der erste für Beispiele und der zweite für spezifische APIs.
Dieser Abschnitt beschreibt, wie Sie einen Job erstellen und einen Job erhalten. Unsere API zum Erstellen von Jobs bietet drei Kernfunktionen: Text2Image, Image2Image, and ControlNet(ControlNet ist eine neuronale Netzwerkstruktur zur Steuerung von Diffusionsmodellen durch Hinzufügen zusätzlicher Bedingungen).
Unabhängig davon, welche der drei Funktionen Sie verwenden, müssen Sie zuerst eine Liste der von uns unterstützten Modelle abrufen. Wenn Sie dann den Job erstellen, müssen Sie Folgendes übergeben: id Feld der Modellinformationen
curl --request GET \
--url 'https://api.aitubo.ai/api/model/list?type=platform' \
--header 'Authorization: Bearer ced695cfd83811eda5e286850d1dc848'
Das Ergebnis ist in etwa so:
{
"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"
}
Dann erhalten Sie eine Antwort wie diese:
{
"code": 0,
"data": {
"consumedCredit": 40,
"credit": 120,
"id": "64351e4d567bcd86773dc841"
}
}
Sie können den Status der Job-Erstellung durch Abfragen überprüfen. Jedes Foto dauert etwa 2 Sekunden, bis es fertig ist. Bitte kontrollieren Sie daher Ihre Abfragehäufigkeit. Schließlich erhalten Sie Folgendes:
{
"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"
}
}
Um Image2Image zu verwenden, können Sie unsere Bild hochladen API aufrufen, um die relative OSS-Adresse eines Bildes zu erhalten, oder Sie können ein Bild mit einer absoluten Adresse angeben.
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
}'
Sie können den Status der Job-Erstellung durch Abfragen überprüfen, genau wie bei Text2Image.
Bevor Sie die ControlNet-Funktion verwenden, müssen Sie zuerst die API /job/model/list aufrufen, um die entsprechenden ControlNet-Kategorien abzurufen:
{
"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"
},
...
}
}
Rufen Sie dann die API /job/create auf:
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"
}'
Sie können auch übergeben modelId Feld(Stellen Sie sicher, dass das Modell ControlNet unterstützt):
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"
}'
Pfad: /api/job/upload-image
Methode: POST
Header
Name | Wert | Erforderlich | Beispiel |
---|---|---|---|
Content-Type | multipart/form-data | ja | |
Authorization | Bearer {YOUR KEY} | ja | Bearer 37f333a2d5f811edb248acde48001122 |
Körper
Name | Wert | Erforderlich |
---|---|---|
image | Datei | ja |
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
code | integer | ja | code=0 -> Erfolg | ||
info | string | nein | Fehlerinformationen | ||
data | object | nein | |||
├─path | string | nein | Bildpfad von AliYun OSS |
Pfad: /api/job/create
Methode: POST
Header
Name | Wert | Erforderlich | Beispiel |
---|---|---|---|
Content-Type | application/json | ja | |
Authorization | Bearer {YOUR KEY} | ja | Bearer 37f333a2d5f811edb248acde48001122 |
Körper
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
imagePath | string | nein | Pfad des hochgeladenen Bildes (URL/OSS) | ||
maskImage | string | nein | AI-Editor sollte dieses Feld übergeben | ||
modelId | string | nein | Wenn controlModel null ist, sollte dieses Feld ausgefüllt werden | ||
prompt | string | ja | Eingabeaufforderung | ||
negativePrompt | string | nein | Negativer Prompt | ||
controlModel | string | nein | canny / scribble / openpose / mlsd / hed / seg / depth / normal | ||
controlStrength | number | nein | 1 | [0, 2] | |
controlFilter | string | nein | Vorverarbeiter des Steuerbilds, z. B.: openpose / openpose_full / openpose_hand / openpose_face / openpose_faceonly | ||
strength | number | nein | 0.8 | [0.1, 1] | |
width | integer | nein | 512 | ||
height | integer | nein | 512 | ||
steps | integer | nein | 30 | 10 <= Wert <= 50 | |
guidanceScale | integer | nein | 7.5 | 0 < Wert <= 20 | |
count | integer | nein | 4 | Anzahl der generierten Bilder |
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
code | number | ja | 0 -> Erfolg;1000 -> nicht genügend Guthaben | ||
info | string | nein | Fehlerinformationen | ||
data | object | ja | |||
├─id | string | ja | Job-ID | ||
├─credit | integer | ja | Gesamtguthaben des Benutzers | ||
├─consumedCredit | integer | ja | Verbrauchtes Guthaben des Jobs |
Pfad: /api/job/get
Methode: GET
Abfrage
Name | Erforderlich | Beispiel | Hinweis |
---|---|---|---|
id | ja | 642ba091592245d79a645b39 | Job-ID |
Name | Type | Erforderlich | Default | Hinweis | Others |
---|---|---|---|---|---|
code | integer | ja | 0 -> Erfolg | ||
info | string | nein | Fehlerinformationen | ||
data | object | ja | |||
├─id | string | ja | Job-ID | ||
├─createAt | string | ja | Erstellungszeit des Jobs | ||
├─status | integer | ja | Status des Jobs. 0 -> nicht bereit; 1 -> Verarbeitung; 2 -> Erfolg; 3 -> Fehler | ||
├─result | object | nein | |||
├─├─info | string | nein | |||
├─├─data | object | nein | |||
├─├─├─images | string [] | nein | Der resultierende relative Pfad des Bildes (muss mit dem Domänenfeld verkettet werden) | item Type:string | |
├─├─├─artIds | string [] | nein | Bild entsprechende ArtID | item Type:string | |
├─├─├─domain | string | nein | oss-URL, Sie müssen den relativen Pfad des Bildes verketten | ||
├─args | object | nein | |||
├─├─prompt | string | nein | |||
├─├─negativePrompt | string | nein | |||
├─├─model | string | nein | |||
├─├─strength | integer | nein | |||
├─├─width | integer | nein | |||
├─├─height | integer | nein |
Pfad: /api/job/models
Methode: GET
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
code | integer | ja | 0 -> Erfolg | ||
info | string | nein | Fehlerinformationen | ||
data | object | ja | |||
├domain | string | ja | Image-OSS-Domänenname, muss mit dem unten stehenden Icon-Feld verkettet werden | ||
├models | object [] | ja | item Type:object | ||
id | string | ja | Modell-ID, der controlModel-Parameterwert ist diese ID beim Erstellen eines Jobs | ||
name | string | ja | Englischer Name | ||
cname | string | ja | Chinesischer Name | ||
icon | string | ja | Beispielbild. Relativer OSS-Pfad, Sie müssen Domänen verketten |
Pfad: /api/job/list
Methode: GET
Header
Name | Wert | Erforderlich | Beispiel | Hinweis |
---|---|---|---|---|
Content-Type | application/json | ja | ||
Authorization | Bearer {YOUR KEY} | ja | Bearer 37f333a2d5f811edb248acde48001122 |
Query
Name | Erforderlich | Beispiel | Hinweis |
---|---|---|---|
pageIndex | ja | Beginnend bei 1 | |
pageSize | ja |
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
code | integer | ja | 0 -> Erfolg | ||
info | string | nein | Fehlerinformationen | ||
data | object | ja | |||
├─jobs | object [] | ja | Job-Array | item Type:object | |
├─├─id | string | ja | Job-ID | ||
├─├─createdAt | string | ja | |||
├─├─args | object | ja | |||
├─├─├─prompt | string | ja | |||
├─├─├─negativePrompt | string | ja | |||
├─├─├─strength | integer | ja | |||
├─├─├─width | integer | ja | |||
├─├─├─height | integer | ja | |||
├─├─├─count | integer | ja | |||
├─├─├─steps | integer | ja | |||
├─├─arts | object [] | ja | Das generierte Array von Bildern | item Type:object | |
├─├─├─id | string | ja | Die ID des generierten Bildes | ||
├─├─├─images | object [] | ja | Vielfalt der Bilder | item Type:object | |
├─├─├─├─spec | string | ja | Varianten-Typ. o -> Ursprung; 2x/3x/4x -> 2/3/4 Skalierungsbild | ||
├─├─├─├─path | string | ja | Bildpfad. Domäne, die verkettet werden soll | ||
├─├─├─├─size | integer | ja | Bildgröße. Einheit: Byte | ||
├─domain | string | ja | OSS-Image-Domäne |
Pfad: /api/model/list
Methode: GET
Header
Name | Wert | Erforderlich | Beispiel | Hinweis |
---|---|---|---|---|
Authorization | Bearer {YOUR KEY} | ja | Bearer 37f333a2d5f811edb248acde48001122 |
Abfrage
Name | Erforderlich | Beispiel | Hinweis |
---|---|---|---|
pageIndex | ja | Beginnend bei 1 | |
pageSize | ja | ||
type | nein | platform/community |
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
code | integer | ja | 0 -> Erfolg | ||
info | string | nein | Fehlerinformationen | ||
data | object | ja | |||
├─domain | string | ja | OSS-Domäne | ||
├─total | integer | ja | Die Gesamtzahl der für die Paginierung gefilterten Modelle | ||
├─models | object [] | ja | item Type:object | ||
├─├─id | string | ja | Modell-ID | ||
├─├─name | string | ja | Modellname | ||
├─├─username | string | ja | model’s author name | ||
├─├─desc | string | ja | Modellbeschreibung | ||
├─├─cover | string | ja | Modell-Cover | ||
├─├─isFavourite | boolean | ja | Ob der Benutzer das Modell favorisiert | ||
├─├─controlNet | boolean | ja | Ob das Modell ControlNet unterstützt |
Pfad: /api/job/upscale
Methode: POST
Header
Name | Wert | Erforderlich | Beispiel | Hinweis |
---|---|---|---|---|
Content-Type | application/json | ja | ||
Authorization | Bearer {YOUR KEY} | ja | Bearer 37f333a2d5f811edb248acde48001122 |
Körper
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
model | string | nein | Upscale-Modellname | ||
RealESRGAN _x4plus / RealESRGAN_x4plus_anime_6B | |||||
imagePath | string | ja | Bildpfad. Domäne, die verkettet werden soll | ||
upscaleFactor | integer | ja | 2 <= Faktor <= 4 | ||
beauty | boolean | nein | Ob die Gesichtserkennung aktiviert werden soll | ||
artId | string | ja | Benötigen Sie eine Super-Punkt-Bild-ArtID |
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
code | number | ja | 0 -> Erfolg;1000 -> nicht genügend Guthaben | ||
info | string | nein | Fehlerinformationen | ||
data | object | ja | |||
├─id | string | nein | Upscale-Job-ID | ||
├─credit | integer | ja | Gesamtguthaben des Benutzers | ||
├─consumedCredit | integer | ja | Verbrauchtes Guthaben des Jobs |
Pfad: /api/art/segment
Methode: POST
Header
Name | Wert | Erforderlich | Beispiel | Hinweis |
---|---|---|---|---|
Content-Type | application/json | ja | ||
Authorization | Bearer {YOUR KEY} | ja | Bearer 37f333a2d5f811edb248acde48001122 |
Körper
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
image | string | ja | Bildpfad. Absoluter/relativer Pfad |
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
code | number | ja | 0 -> Erfolg | ||
info | string | nein | Fehlerinformationen | ||
data | object | ja | |||
├─image | string | ja | URL des Bildes nach der Segmentierung |
Pfad: /api/user/profile
Methode: GET
Header
Name | Wert | Erforderlich | Beispiel | Hinweis |
---|---|---|---|---|
Content-Type | application/json | ja | ||
Authorization | Bearer {YOUR KEY} | ja | Bearer 37f333a2d5f811edb248acde48001122 |
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
code | number | ja | 0 -> Erfolg | ||
info | string | nein | Fehlerinformationen | ||
data | object | ja | |||
├─name | string | ja | |||
string | ja | ||||
├─avatar | string | ja | |||
├─phone | string | ja | |||
├─credit | integer | ja | Gesamtguthaben des Benutzers | ||
├─displayNSFW | boolean | ja | |||
├─discord | boolean | ja |
Pfad: api/transform/list
Methode: GET
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
code | number | ja | 0 -> Erfolg | ||
info | string | nein | Fehlerinformationen | ||
data | object | ja | |||
├─domain | string | ja | Image-OSS-Domänenname, muss mit dem unten stehenden Icon-Feld verkettet werden | ||
├─tags | string[] | ja | Vorlagen-Tag | ||
├─transform | object | ja | |||
├─├─tag | object[] | ja | |||
├─├─├─id | string | ja | |||
├─├─├─name | string | ja | |||
├─├─├─image | string | ja | Ursprungsbild | ||
├─├─├─art | string | ja | Ergebnisbild | ||
├─├─├─cost | number | ja | Guthaben verbrauchen | ||
├─├─├─pro | boolean | ja | ist Pro | ||
├─├─├─tag | string | ja | Tag |
Pfad: api/transform/create-headshot
Methode: POST
Header
Name | Wert | Erforderlich | Beispiel | Hinweis |
---|---|---|---|---|
Content-Type | application/json | ja | ||
Authorization | Bearer {YOUR KEY} | ja | Bearer 37f333a2d5f811edb248acde48001122 |
Körper
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
imagePath | string | ja | Bildpfad, der bei Aufruf zurückgegeben wird Upload-Image-API | ||
transformId | string | ja | |||
width | integer | nein | |||
height | integer | nein | |||
keepHair | boolean | nein | false | ||
keepPose | boolean | nein | true |
Name | Typ | Erforderlich | Standard | Hinweis | Andere |
---|---|---|---|---|---|
code | number | ja | 0 -> Erfolg;1000 -> nicht genügend Guthaben | ||
info | string | nein | Fehlerinformationen | ||
data | object | ja | |||
├─id | string | ja | Job-ID | ||
├─credit | integer | ja | Gesamtguthaben des Benutzers | ||
├─consumedCredit | integer | ja | Verbrauchtes Guthaben des Jobs |