Riferimento API

Documentazione API di Aitubo

Panoramica

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.

Esempi

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
            },
            ...
        ]
    }
}

1. Text2Image

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"
  }
}

2. Image2Image

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.

3. ControlNet

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"
}'

API

1. Carica immagine

Informazioni di base

Percorso: /api/job/upload-image

Metodo: POST

Parametri della richiesta

Intestazioni

NomeValoreObbligatorioEsempio
Content-Typemultipart/form-data
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Corpo

NomeValoreObbligatorio
imagefile

Dati di risposta

NomeTipoObbligatorioPredefinitoNotaAltri
codeintegercode=0 -> successo
infostringnoinformazioni sull'errore
dataobjectno
├─pathstringnopercorso dell'immagine di AliYun OSS

2. Crea lavoro

Informazioni di base

Percorso: /api/job/create

Metodo: POST

Parametri della richiesta

Intestazioni

NomeValoreObbligatorioEsempio
Content-Typeapplication/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Corpo

NomeTipoObbligatorioPredefinitoNotaAltri
imagePathstringnopercorso dell'immagine caricata (url/oss entrambi)
maskImagestringnoAI Editor dovrebbe passare questo campo
modelIdstringnose controlModel è nullo, questo campo dovrebbe essere compilato
promptstringprompt
negativePromptstringnoprompt negativo
controlModelstringnocanny / scribble / openpose / mlsd / hed / seg / depth / normal
controlStrengthnumberno1[0, 2]
controlFilterstringnopreprecessor dell'immagine di controllo, ad esempio: openpose / openpose_full / openpose_hand / openpose_face / openpose_faceonly
strengthnumberno0.8[0.1, 1]
widthintegerno512
heightintegerno512
stepsintegerno3010 <= value <= 50
guidanceScaleintegerno7.50 < value <= 20
countintegerno4conteggio immagini generate

Dati di risposta

NomeTipoObbligatorioPredefinitoNotaAltri
codenumber0 -> successo;1000 -> credito insufficiente
infostringnoinformazioni sull'errore
dataobject
├─idstringID lavoro
├─creditintegercredito totale dell'utente
├─consumedCreditintegercredito consumato del lavoro

3. Ottieni lavoro

Informazioni di base

Percorso: /api/job/get

Metodo: GET

Parametri della richiesta

Query

NomeObbligatorioEsempioNota
id642ba091592245d79a645b39ID lavoro

Response Data

NomeTypeObbligatorioDefaultNotaOthers
codeinteger0 -> successo
infostringnoinformazioni sull'errore
dataobject
├─idstringID lavoro
├─createAtstringora di creazione del lavoro
├─statusintegerstato del lavoro. 0 -> non pronto; 1 -> elaborazione; 2 -> successo; 3 -> fallimento
├─resultobjectno
├─├─infostringno
├─├─dataobjectno
├─├─├─imagesstring []noIl percorso relativo risultante dell'immagine (deve essere concatenato con il campo dominio)item Type:string
├─├─├─artIdsstring []noPicture corresponding artIDitem Type:string
├─├─├─domainstringnooss url, è necessario concatenare il percorso relativo dell'immagine
├─argsobjectno
├─├─promptstringno
├─├─negativePromptstringno
├─├─modelstringno
├─├─strengthintegerno
├─├─widthintegerno
├─├─heightintegerno

4. Elenca modello ControlNet

Informazioni di base

Percorso: /api/job/models

Metodo: GET

Dati di risposta

NomeTipoObbligatorioPredefinitoNotaAltri
codeinteger0 -> successo
infostringnoinformazioni sull'errore
dataobject
├domainstringnome di dominio oss dell'immagine, è necessario concatenare il campo icona sottostante
├modelsobject []item Type:object
idstringID modello, il valore del parametro controlModel è questo ID quando si crea un lavoro
namestringNome inglese
cnamestringNome cinese
iconstringimmagine di esempio. percorso relativo oss, è necessario concatenare i domini

5. Elenca lavoro cronologico

Informazioni di base

Percorso: /api/job/list

Metodo: GET

Parametri della richiesta

Intestazioni

NomeValoreObbligatorioEsempioNota
Content-Typeapplication/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Query

NomeObbligatorioEsempioNota
pageIndexinizia da 1
pageSize

Dati di risposta

NomeTipoObbligatorioPredefinitoNotaAltri
codeinteger0 -> successo
infostringnoinformazioni sull'errore
dataobject
├─jobsobject []array di lavoriitem Type:object
├─├─idstringID lavoro
├─├─createdAtstring
├─├─argsobject
├─├─├─promptstring
├─├─├─negativePromptstring
├─├─├─strengthinteger
├─├─├─widthinteger
├─├─├─heightinteger
├─├─├─countinteger
├─├─├─stepsinteger
├─├─artsobject []l'array di immagini generateitem Type:object
├─├─├─idstringl'id dell'immagine generata
├─├─├─imagesobject []array di immagini varieitem Type:object
├─├─├─├─specstringtipo di variante. o -> origine; 2x/3x/4x -> immagine in scala 2/3/4
├─├─├─├─pathstringpercorso dell'immagine. dominio da concatenare
├─├─├─├─sizeintegerdimensione dell'immagine. unità: Byte
├─domainstringdominio dell'immagine oss

6. Elenca modello

Informazioni di base

Percorso: /api/model/list

Metodo: GET

Parametri della richiesta

Intestazioni

NomeValoreObbligatorioEsempioNota
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Query

NomeObbligatorioEsempioNota
pageIndexinizia da 1
pageSize
typenoplatform/community

Dati di risposta

NomeTipoObbligatorioPredefinitoNotaAltri
codeinteger0 -> successo
infostringnoinformazioni sull'errore
dataobject
├─domainstringdominio oss
├─totalintegeril numero totale di modelli filtrati per l'impaginazione
├─modelsobject []item Type:object
├─├─idstringID modello
├─├─namestringnome del modello
├─├─usernamestringmodel’s author name
├─├─descstringdescrizione del modello
├─├─coverstringcopertina del modello
├─├─isFavouritebooleanse l'utente preferisce il modello
├─├─controlNetbooleanse il modello supporta ControlNet

7. Super Risoluzione

Informazioni di base

Percorso: /api/job/upscale

Metodo: POST

Parametri della richiesta

Intestazioni

NomeValoreObbligatorioEsempioNota
Content-Typeapplication/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Corpo

NomeTipoObbligatorioPredefinitoNotaAltri
modelstringnonome del modello upscale
RealESRGAN _x4plus / RealESRGAN_x4plus_anime_6B
imagePathstringpercorso dell'immagine. dominio da concatenare
upscaleFactorinteger2 <= fattore <= 4
beautybooleannose abilitare il miglioramento del volto
artIdstringNecessita di un artID di immagine super point

Dati di risposta

NomeTipoObbligatorioPredefinitoNotaAltri
codenumber0 -> successo;1000 -> credito insufficiente
infostringnoinformazioni sull'errore
dataobject
├─idstringnoupscale job id
├─creditintegercredito totale dell'utente
├─consumedCreditintegercredito consumato del lavoro

8. Segmentazione dell'immagine

Informazioni di base

Percorso: /api/art/segment

Metodo: POST

Parametri della richiesta

Intestazioni

NomeValoreObbligatorioEsempioNota
Content-Typeapplication/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Corpo

NomeTipoObbligatorioPredefinitoNotaAltri
imagestringpercorso dell'immagine. percorso assoluto/relativo

Dati di risposta

NomeTipoObbligatorioPredefinitoNotaAltri
codenumber0 -> successo
infostringnoinformazioni sull'errore
dataobject
├─imagestringURL dell'immagine dopo la segmentazione

9. GetUserInfo

Informazioni di base

Percorso: /api/user/profile

Metodo: GET

Parametri della richiesta

Intestazioni

NomeValoreObbligatorioEsempioNota
Content-Typeapplication/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Dati di risposta

NomeTipoObbligatorioPredefinitoNotaAltri
codenumber0 -> successo
infostringnoinformazioni sull'errore
dataobject
├─namestring
├─emailstring
├─avatarstring
├─phonestring
├─creditintegercredito totale dell'utente
├─displayNSFWboolean
├─discordboolean

10. Crea Headshot

10.1 Elenca modelli

Informazioni di base

Percorso: api/transform/list

Metodo: GET

Dati di risposta

NomeTipoObbligatorioPredefinitoNotaAltri
codenumber0 -> successo
infostringnoinformazioni sull'errore
dataobject
├─domainstringnome di dominio oss dell'immagine, è necessario concatenare il campo icona sottostante
├─tagsstring[]tag del modello
├─transformobject
├─├─tagobject[]
├─├─├─idstring
├─├─├─namestring
├─├─├─imagestringimmagine originale
├─├─├─artstringimmagine risultante
├─├─├─costnumberconsumo di credito
├─├─├─probooleanè pro
├─├─├─tagstringtag

10.2 Crea Headshot

Informazioni di base

Percorso: api/transform/create-headshot

Metodo: POST

Intestazioni

NomeValoreObbligatorioEsempioNota
Content-Typeapplication/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Corpo

NomeTipoObbligatorioPredefinitoNotaAltri
imagePathstringpercorso dell'immagine restituito quando chiamato upload-image api
transformIdstring
widthintegerno
heightintegerno
keepHairbooleannofalse
keepPosebooleannotrue

Dati di risposta

NomeTipoObbligatorioPredefinitoNotaAltri
codenumber0 -> successo;1000 -> credito insufficiente
infostringnoinformazioni sull'errore
dataobject
├─idstringID lavoro
├─creditintegercredito totale dell'utente
├─consumedCreditintegercredito consumato del lavoro

Servizio commerciale-toB/API

[email protected]