Questo documento descrive come utilizzare il codice per ottenere gli stessi risultati del web. Dopo il documento fornirà solo l'API dell'indirizzo relativo, è necessario assemblare il nome di dominio principale: https://api.aitubo.ai.
Ad esempio, se vuoi creare un lavoro, devi chiamare https://api.aitubo.ai/api/job/create
Il documento è diviso in due sezioni, la prima per esempi e la seconda per API specifiche.
Questa sezione descrive come creare un lavoro e ottenerne uno. La nostra API per la creazione di lavori fornisce tre funzioni principali: Text2Image, Image2Image, and ControlNet(ControlNet è una struttura di rete neurale per controllare i modelli di diffusione aggiungendo condizioni extra).
Indipendentemente da quale delle tre funzionalità utilizzi, devi prima ottenere un elenco dei modelli che supportiamo, e poi quando crei il lavoro, devi passare il id campo delle informazioni sul modello
curl --request GET \
--url 'https://api.aitubo.ai/api/model/list?type=platform' \
--header 'Authorization: Bearer ced695cfd83811eda5e286850d1dc848'
Il risultato è qualcosa di simile a questo:
{
"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"
}
Quindi, otterrai una risposta come questa:
{
"code": 0,
"data": {
"consumedCredit": 40,
"credit": 120,
"id": "64351e4d567bcd86773dc841"
}
}
Puoi controllare lo stato della creazione del task tramite polling. Ogni foto impiega circa 2 secondi per essere completata, quindi controlla la frequenza delle tue query. Infine, otterrai qualcosa di simile a questo:
{
"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"
}
}
Per utilizzare Image2Image, puoi chiamare il nostro Carica immagine API per ottenere l'indirizzo relativo OSS di un'immagine, oppure puoi fornire un'immagine con un indirizzo assoluto.
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
}'
Puoi controllare lo stato della creazione del task tramite polling proprio come Text2Image.
Prima di utilizzare la funzione ControlNet, devi prima chiamare l'API /job/model/list per ottenere le corrispondenti categorie 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"
},
...
}
}
Quindi chiama l'API /job/create:
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"
}'
Puoi anche passare modelId campo(Assicurati che il modello supporti 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"
}'
Percorso: /api/job/upload-image
Metodo: POST
Intestazioni
Nome | Valore | Obbligatorio | Esempio |
---|---|---|---|
Content-Type | multipart/form-data | sì | |
Authorization | Bearer {YOUR KEY} | sì | Bearer 37f333a2d5f811edb248acde48001122 |
Corpo
Nome | Valore | Obbligatorio |
---|---|---|
image | file | sì |
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
code | integer | sì | code=0 -> successo | ||
info | string | no | informazioni sull'errore | ||
data | object | no | |||
├─path | string | no | percorso dell'immagine di AliYun OSS |
Percorso: /api/job/create
Metodo: POST
Intestazioni
Nome | Valore | Obbligatorio | Esempio |
---|---|---|---|
Content-Type | application/json | sì | |
Authorization | Bearer {YOUR KEY} | sì | Bearer 37f333a2d5f811edb248acde48001122 |
Corpo
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
imagePath | string | no | percorso dell'immagine caricata (url/oss entrambi) | ||
maskImage | string | no | AI Editor dovrebbe passare questo campo | ||
modelId | string | no | se controlModel è nullo, questo campo dovrebbe essere compilato | ||
prompt | string | sì | prompt | ||
negativePrompt | string | no | prompt negativo | ||
controlModel | string | no | canny / scribble / openpose / mlsd / hed / seg / depth / normal | ||
controlStrength | number | no | 1 | [0, 2] | |
controlFilter | string | no | preprecessor dell'immagine di controllo, ad esempio: openpose / openpose_full / openpose_hand / openpose_face / openpose_faceonly | ||
strength | number | no | 0.8 | [0.1, 1] | |
width | integer | no | 512 | ||
height | integer | no | 512 | ||
steps | integer | no | 30 | 10 <= value <= 50 | |
guidanceScale | integer | no | 7.5 | 0 < value <= 20 | |
count | integer | no | 4 | conteggio immagini generate |
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
code | number | sì | 0 -> successo;1000 -> credito insufficiente | ||
info | string | no | informazioni sull'errore | ||
data | object | sì | |||
├─id | string | sì | ID lavoro | ||
├─credit | integer | sì | credito totale dell'utente | ||
├─consumedCredit | integer | sì | credito consumato del lavoro |
Percorso: /api/job/get
Metodo: GET
Query
Nome | Obbligatorio | Esempio | Nota |
---|---|---|---|
id | sì | 642ba091592245d79a645b39 | ID lavoro |
Nome | Type | Obbligatorio | Default | Nota | Others |
---|---|---|---|---|---|
code | integer | sì | 0 -> successo | ||
info | string | no | informazioni sull'errore | ||
data | object | sì | |||
├─id | string | sì | ID lavoro | ||
├─createAt | string | sì | ora di creazione del lavoro | ||
├─status | integer | sì | stato del lavoro. 0 -> non pronto; 1 -> elaborazione; 2 -> successo; 3 -> fallimento | ||
├─result | object | no | |||
├─├─info | string | no | |||
├─├─data | object | no | |||
├─├─├─images | string [] | no | Il percorso relativo risultante dell'immagine (deve essere concatenato con il campo dominio) | item Type:string | |
├─├─├─artIds | string [] | no | Picture corresponding artID | item Type:string | |
├─├─├─domain | string | no | oss url, è necessario concatenare il percorso relativo dell'immagine | ||
├─args | object | no | |||
├─├─prompt | string | no | |||
├─├─negativePrompt | string | no | |||
├─├─model | string | no | |||
├─├─strength | integer | no | |||
├─├─width | integer | no | |||
├─├─height | integer | no |
Percorso: /api/job/models
Metodo: GET
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
code | integer | sì | 0 -> successo | ||
info | string | no | informazioni sull'errore | ||
data | object | sì | |||
├domain | string | sì | nome di dominio oss dell'immagine, è necessario concatenare il campo icona sottostante | ||
├models | object [] | sì | item Type:object | ||
id | string | sì | ID modello, il valore del parametro controlModel è questo ID quando si crea un lavoro | ||
name | string | sì | Nome inglese | ||
cname | string | sì | Nome cinese | ||
icon | string | sì | immagine di esempio. percorso relativo oss, è necessario concatenare i domini |
Percorso: /api/job/list
Metodo: GET
Intestazioni
Nome | Valore | Obbligatorio | Esempio | Nota |
---|---|---|---|---|
Content-Type | application/json | sì | ||
Authorization | Bearer {YOUR KEY} | sì | Bearer 37f333a2d5f811edb248acde48001122 |
Query
Nome | Obbligatorio | Esempio | Nota |
---|---|---|---|
pageIndex | sì | inizia da 1 | |
pageSize | sì |
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
code | integer | sì | 0 -> successo | ||
info | string | no | informazioni sull'errore | ||
data | object | sì | |||
├─jobs | object [] | sì | array di lavori | item Type:object | |
├─├─id | string | sì | ID lavoro | ||
├─├─createdAt | string | sì | |||
├─├─args | object | sì | |||
├─├─├─prompt | string | sì | |||
├─├─├─negativePrompt | string | sì | |||
├─├─├─strength | integer | sì | |||
├─├─├─width | integer | sì | |||
├─├─├─height | integer | sì | |||
├─├─├─count | integer | sì | |||
├─├─├─steps | integer | sì | |||
├─├─arts | object [] | sì | l'array di immagini generate | item Type:object | |
├─├─├─id | string | sì | l'id dell'immagine generata | ||
├─├─├─images | object [] | sì | array di immagini varie | item Type:object | |
├─├─├─├─spec | string | sì | tipo di variante. o -> origine; 2x/3x/4x -> immagine in scala 2/3/4 | ||
├─├─├─├─path | string | sì | percorso dell'immagine. dominio da concatenare | ||
├─├─├─├─size | integer | sì | dimensione dell'immagine. unità: Byte | ||
├─domain | string | sì | dominio dell'immagine oss |
Percorso: /api/model/list
Metodo: GET
Intestazioni
Nome | Valore | Obbligatorio | Esempio | Nota |
---|---|---|---|---|
Authorization | Bearer {YOUR KEY} | sì | Bearer 37f333a2d5f811edb248acde48001122 |
Query
Nome | Obbligatorio | Esempio | Nota |
---|---|---|---|
pageIndex | sì | inizia da 1 | |
pageSize | sì | ||
type | no | platform/community |
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
code | integer | sì | 0 -> successo | ||
info | string | no | informazioni sull'errore | ||
data | object | sì | |||
├─domain | string | sì | dominio oss | ||
├─total | integer | sì | il numero totale di modelli filtrati per l'impaginazione | ||
├─models | object [] | sì | item Type:object | ||
├─├─id | string | sì | ID modello | ||
├─├─name | string | sì | nome del modello | ||
├─├─username | string | sì | model’s author name | ||
├─├─desc | string | sì | descrizione del modello | ||
├─├─cover | string | sì | copertina del modello | ||
├─├─isFavourite | boolean | sì | se l'utente preferisce il modello | ||
├─├─controlNet | boolean | sì | se il modello supporta ControlNet |
Percorso: /api/job/upscale
Metodo: POST
Intestazioni
Nome | Valore | Obbligatorio | Esempio | Nota |
---|---|---|---|---|
Content-Type | application/json | sì | ||
Authorization | Bearer {YOUR KEY} | sì | Bearer 37f333a2d5f811edb248acde48001122 |
Corpo
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
model | string | no | nome del modello upscale | ||
RealESRGAN _x4plus / RealESRGAN_x4plus_anime_6B | |||||
imagePath | string | sì | percorso dell'immagine. dominio da concatenare | ||
upscaleFactor | integer | sì | 2 <= fattore <= 4 | ||
beauty | boolean | no | se abilitare il miglioramento del volto | ||
artId | string | sì | Necessita di un artID di immagine super point |
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
code | number | sì | 0 -> successo;1000 -> credito insufficiente | ||
info | string | no | informazioni sull'errore | ||
data | object | sì | |||
├─id | string | no | upscale job id | ||
├─credit | integer | sì | credito totale dell'utente | ||
├─consumedCredit | integer | sì | credito consumato del lavoro |
Percorso: /api/art/segment
Metodo: POST
Intestazioni
Nome | Valore | Obbligatorio | Esempio | Nota |
---|---|---|---|---|
Content-Type | application/json | sì | ||
Authorization | Bearer {YOUR KEY} | sì | Bearer 37f333a2d5f811edb248acde48001122 |
Corpo
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
image | string | sì | percorso dell'immagine. percorso assoluto/relativo |
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
code | number | sì | 0 -> successo | ||
info | string | no | informazioni sull'errore | ||
data | object | sì | |||
├─image | string | sì | URL dell'immagine dopo la segmentazione |
Percorso: /api/user/profile
Metodo: GET
Intestazioni
Nome | Valore | Obbligatorio | Esempio | Nota |
---|---|---|---|---|
Content-Type | application/json | sì | ||
Authorization | Bearer {YOUR KEY} | sì | Bearer 37f333a2d5f811edb248acde48001122 |
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
code | number | sì | 0 -> successo | ||
info | string | no | informazioni sull'errore | ||
data | object | sì | |||
├─name | string | sì | |||
string | sì | ||||
├─avatar | string | sì | |||
├─phone | string | sì | |||
├─credit | integer | sì | credito totale dell'utente | ||
├─displayNSFW | boolean | sì | |||
├─discord | boolean | sì |
Percorso: api/transform/list
Metodo: GET
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
code | number | sì | 0 -> successo | ||
info | string | no | informazioni sull'errore | ||
data | object | sì | |||
├─domain | string | sì | nome di dominio oss dell'immagine, è necessario concatenare il campo icona sottostante | ||
├─tags | string[] | sì | tag del modello | ||
├─transform | object | sì | |||
├─├─tag | object[] | sì | |||
├─├─├─id | string | sì | |||
├─├─├─name | string | sì | |||
├─├─├─image | string | sì | immagine originale | ||
├─├─├─art | string | sì | immagine risultante | ||
├─├─├─cost | number | sì | consumo di credito | ||
├─├─├─pro | boolean | sì | è pro | ||
├─├─├─tag | string | sì | tag |
Percorso: api/transform/create-headshot
Metodo: POST
Intestazioni
Nome | Valore | Obbligatorio | Esempio | Nota |
---|---|---|---|---|
Content-Type | application/json | sì | ||
Authorization | Bearer {YOUR KEY} | sì | Bearer 37f333a2d5f811edb248acde48001122 |
Corpo
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
imagePath | string | sì | percorso dell'immagine restituito quando chiamato upload-image api | ||
transformId | string | sì | |||
width | integer | no | |||
height | integer | no | |||
keepHair | boolean | no | false | ||
keepPose | boolean | no | true |
Nome | Tipo | Obbligatorio | Predefinito | Nota | Altri |
---|---|---|---|---|---|
code | number | sì | 0 -> successo;1000 -> credito insufficiente | ||
info | string | no | informazioni sull'errore | ||
data | object | sì | |||
├─id | string | sì | ID lavoro | ||
├─credit | integer | sì | credito totale dell'utente | ||
├─consumedCredit | integer | sì | credito consumato del lavoro |