Référence API

Documentation API d'Aitubo

Aperçu

Ce document décrit comment utiliser le code pour obtenir les mêmes résultats que sur le web. Après le document ne donnera que l'adresse relative de l'API, vous devez vous regrouper au nom de domaine principal : https://api.aitubo.ai.

Par exemple, si vous souhaitez créer un travail, vous devez appeler https://api.aitubo.ai/api/job/create

Le document est divisé en deux sections, la première pour les exemples et la seconde pour l'API spécifique.

Exemples

Cette section décrit comment créer un travail et en obtenir un. Notre API de création de travaux propose trois fonctions principales : Text2Image, Image2Image, and ControlNet(ControlNet est une structure de réseau neuronal permettant de contrôler les modèles de diffusion en ajoutant des conditions supplémentaires).

Quelle que soit la fonctionnalité que vous utilisez, vous devez d'abord obtenir une liste des modèles que nous prenons en charge, puis, lorsque vous créez le travail, vous devez transmettre le id champ des informations du modèle

curl --request GET \
  --url 'https://api.aitubo.ai/api/model/list?type=platform' \
  --header 'Authorization: Bearer ced695cfd83811eda5e286850d1dc848'

Le résultat ressemble à ceci :

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

Ensuite, vous obtiendrez une réponse comme celle-ci :

{
  "code": 0,
  "data": {
    "consumedCredit": 40,
    "credit": 120,
    "id": "64351e4d567bcd86773dc841"
  }
}

Vous pouvez vérifier l'état de la création de la tâche par sondage. Chaque photo prend environ 2 secondes, veuillez donc contrôler la fréquence de vos requêtes. Enfin, vous obtiendrez quelque chose comme ceci :

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

Pour utiliser Image2Image, vous pouvez appeler notre Télécharger une image API pour obtenir l'adresse relative OSS d'une image, ou vous pouvez donner une image avec une adresse absolue.

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

Vous pouvez vérifier l'état de la création de la tâche par sondage, comme pour Text2Image.

3. ControlNet

Avant d'utiliser la fonction ControlNet, vous devez d'abord appeler l'API /job/model/list pour obtenir les catégories ControlNet correspondantes :

{
    "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"
            },
            ...
    }
}

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

Vous pouvez également passer modelId champ(Assurez-vous que le modèle prend en charge 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"
}'

APIS

1. Télécharger une image

Informations de base

Chemin : /api/job/upload-image

Méthode : POST

Paramètres de la requête

En-têtes

NomValeurObligatoireExemple
Content-Typemultipart/form-dataoui
AuthorizationBearer {YOUR KEY}ouiBearer 37f333a2d5f811edb248acde48001122

Corps

NomValeurObligatoire
imagefichieroui

Données de réponse

NomTypeObligatoirePar défautRemarqueAutres
codeintegerouicode=0 -> succès
infostringnoninformations d'erreur
dataobjectnon
├─pathstringnonchemin de l'image d'AliYun OSS

2. Créer un travail

Informations de base

Chemin : /api/job/create

Méthode : POST

Paramètres de la requête

En-têtes

NomValeurObligatoireExemple
Content-Typeapplication/jsonoui
AuthorizationBearer {YOUR KEY}ouiBearer 37f333a2d5f811edb248acde48001122

Corps

NomTypeObligatoirePar défautRemarqueAutres
imagePathstringnonchemin de l'image téléchargée (url/oss)
maskImagestringnonAI Editor doit passer ce champ
modelIdstringnonsi controlModel est nul, ce champ doit être rempli
promptstringouiinvite
negativePromptstringnoninvite négative
controlModelstringnoncanny / scribble / openpose / mlsd / hed / seg / depth / normal
controlStrengthnumbernon1[0, 2]
controlFilterstringnonpreprecessor de l'image de contrôle, par exemple : openpose / openpose_full / openpose_hand / openpose_face / openpose_faceonly
strengthnumbernon0.8[0.1, 1]
widthintegernon512
heightintegernon512
stepsintegernon3010 <= value <= 50
guidanceScaleintegernon7.50 < value <= 20
countintegernon4nombre d'images générées

Données de réponse

NomTypeObligatoirePar défautRemarqueAutres
codenumberoui0 -> succès ;1000 -> pas assez de crédit
infostringnoninformations d'erreur
dataobjectoui
├─idstringouiID du travail
├─creditintegerouicrédit total de l'utilisateur
├─consumedCreditintegerouicrédit consommé du travail

3. Obtenir le travail

Informations de base

Chemin : /api/job/get

Méthode : GET

Paramètres de la requête

Requête

NomObligatoireExempleRemarque
idoui642ba091592245d79a645b39ID du travail

Response Data

NomTypeObligatoireDefaultRemarqueOthers
codeintegeroui0 -> succès
infostringnoninformations d'erreur
dataobjectoui
├─idstringouiID du travail
├─createAtstringouiheure de création du travail
├─statusintegerouistatut du travail. 0 -> non prêt ; 1 -> traitement ; 2 -> succès ; 3 -> échec
├─resultobjectnon
├─├─infostringnon
├─├─dataobjectnon
├─├─├─imagesstring []nonLe chemin relatif résultant de l'image (doit être concaténé avec le champ de domaine)item Type:string
├─├─├─artIdsstring []nonPicture corresponding artIDitem Type:string
├─├─├─domainstringnonoss url, vous devez concaténer le chemin relatif de l'image
├─argsobjectnon
├─├─promptstringnon
├─├─negativePromptstringnon
├─├─modelstringnon
├─├─strengthintegernon
├─├─widthintegernon
├─├─heightintegernon

4. Lister le modèle ControlNet

Informations de base

Chemin : /api/job/models

Méthode : GET

Données de réponse

NomTypeObligatoirePar défautRemarqueAutres
codeintegeroui0 -> succès
infostringnoninformations d'erreur
dataobjectoui
├domainstringouinom de domaine oss de l'image, doit concaténer le champ d'icône ci-dessous
├modelsobject []ouiitem Type:object
idstringouiID du modèle, la valeur du paramètre controlModel est cet ID lors de la création d'un travail
namestringouiNom anglais
cnamestringouiNom chinois
iconstringouiimage d'exemple. chemin relatif oss, vous devez concaténer les domaines

5. Lister le travail d'historique

Informations de base

Chemin : /api/job/list

Méthode : GET

Paramètres de la requête

En-têtes

NomValeurObligatoireExempleRemarque
Content-Typeapplication/jsonoui
AuthorizationBearer {YOUR KEY}ouiBearer 37f333a2d5f811edb248acde48001122

Query

NomObligatoireExempleRemarque
pageIndexouicommencer à partir de 1
pageSizeoui

Données de réponse

NomTypeObligatoirePar défautRemarqueAutres
codeintegeroui0 -> succès
infostringnoninformations d'erreur
dataobjectoui
├─jobsobject []ouitableau de travauxitem Type:object
├─├─idstringouiID du travail
├─├─createdAtstringoui
├─├─argsobjectoui
├─├─├─promptstringoui
├─├─├─negativePromptstringoui
├─├─├─strengthintegeroui
├─├─├─widthintegeroui
├─├─├─heightintegeroui
├─├─├─countintegeroui
├─├─├─stepsintegeroui
├─├─artsobject []ouile tableau d'images généréesitem Type:object
├─├─├─idstringouil'identifiant de l'image générée
├─├─├─imagesobject []ouitableau d'images variéesitem Type:object
├─├─├─├─specstringouitype de variante. o -> origine ; 2x/3x/4x -> image à l'échelle 2/3/4
├─├─├─├─pathstringouichemin de l'image. domaine à concaténer
├─├─├─├─sizeintegerouitaille de l'image. unité : octet
├─domainstringouidomaine de l'image oss

6. Lister le modèle

Informations de base

Chemin : /api/model/list

Méthode : GET

Paramètres de la requête

En-têtes

NomValeurObligatoireExempleRemarque
AuthorizationBearer {YOUR KEY}ouiBearer 37f333a2d5f811edb248acde48001122

Requête

NomObligatoireExempleRemarque
pageIndexouicommencer à partir de 1
pageSizeoui
typenonplatform/community

Données de réponse

NomTypeObligatoirePar défautRemarqueAutres
codeintegeroui0 -> succès
infostringnoninformations d'erreur
dataobjectoui
├─domainstringouidomaine oss
├─totalintegerouile nombre total de modèles filtrés pour la pagination
├─modelsobject []ouiitem Type:object
├─├─idstringouiID du modèle
├─├─namestringouinom du modèle
├─├─usernamestringouimodel’s author name
├─├─descstringouidescription du modèle
├─├─coverstringouicouverture du modèle
├─├─isFavouritebooleanouisi l'utilisateur favorise le modèle
├─├─controlNetbooleanouisi le modèle prend en charge ControlNet

7. Super résolution

Informations de base

Chemin : /api/job/upscale

Méthode : POST

Paramètres de la requête

En-têtes

NomValeurObligatoireExempleRemarque
Content-Typeapplication/jsonoui
AuthorizationBearer {YOUR KEY}ouiBearer 37f333a2d5f811edb248acde48001122

Corps

NomTypeObligatoirePar défautRemarqueAutres
modelstringnonnom du modèle de mise à l'échelle
RealESRGAN _x4plus / RealESRGAN_x4plus_anime_6B
imagePathstringouichemin de l'image. domaine à concaténer
upscaleFactorintegeroui2 <= facteur <= 4
beautybooleannonsi l'amélioration du visage doit être activée
artIdstringouiBesoin d'un artID d'image super point

Données de réponse

NomTypeObligatoirePar défautRemarqueAutres
codenumberoui0 -> succès ;1000 -> pas assez de crédit
infostringnoninformations d'erreur
dataobjectoui
├─idstringnonID du travail de mise à l'échelle
├─creditintegerouicrédit total de l'utilisateur
├─consumedCreditintegerouicrédit consommé du travail

8. Segmentation d'image

Informations de base

Chemin : /api/art/segment

Méthode : POST

Paramètres de la requête

En-têtes

NomValeurObligatoireExempleRemarque
Content-Typeapplication/jsonoui
AuthorizationBearer {YOUR KEY}ouiBearer 37f333a2d5f811edb248acde48001122

Corps

NomTypeObligatoirePar défautRemarqueAutres
imagestringouichemin de l'image. chemin absolu/relatif

Données de réponse

NomTypeObligatoirePar défautRemarqueAutres
codenumberoui0 -> succès
infostringnoninformations d'erreur
dataobjectoui
├─imagestringouiURL de l'image après segmentation

9. GetUserInfo

Informations de base

Chemin : /api/user/profile

Méthode : GET

Paramètres de la requête

En-têtes

NomValeurObligatoireExempleRemarque
Content-Typeapplication/jsonoui
AuthorizationBearer {YOUR KEY}ouiBearer 37f333a2d5f811edb248acde48001122

Données de réponse

NomTypeObligatoirePar défautRemarqueAutres
codenumberoui0 -> succès
infostringnoninformations d'erreur
dataobjectoui
├─namestringoui
├─emailstringoui
├─avatarstringoui
├─phonestringoui
├─creditintegerouicrédit total de l'utilisateur
├─displayNSFWbooleanoui
├─discordbooleanoui

10. Créer un plan rapproché

10.1 Lister les modèles

Informations de base

Chemin : api/transform/list

Méthode : GET

Données de réponse

NomTypeObligatoirePar défautRemarqueAutres
codenumberoui0 -> succès
infostringnoninformations d'erreur
dataobjectoui
├─domainstringouinom de domaine oss de l'image, doit concaténer le champ d'icône ci-dessous
├─tagsstring[]ouibalise de modèle
├─transformobjectoui
├─├─tagobject[]oui
├─├─├─idstringoui
├─├─├─namestringoui
├─├─├─imagestringouiimage d'origine
├─├─├─artstringouiimage résultante
├─├─├─costnumberouiconsommation de crédit
├─├─├─probooleanouiest pro
├─├─├─tagstringouibalise

10.2 Créer un plan rapproché

Informations de base

Chemin : api/transform/create-headshot

Méthode : POST

En-têtes

NomValeurObligatoireExempleRemarque
Content-Typeapplication/jsonoui
AuthorizationBearer {YOUR KEY}ouiBearer 37f333a2d5f811edb248acde48001122

Corps

NomTypeObligatoirePar défautRemarqueAutres
imagePathstringouichemin de l'image renvoyé lors de l'appel upload-image api
transformIdstringoui
widthintegernon
heightintegernon
keepHairbooleannonfalse
keepPosebooleannontrue

Données de réponse

NomTypeObligatoirePar défautRemarqueAutres
codenumberoui0 -> succès ;1000 -> pas assez de crédit
infostringnoninformations d'erreur
dataobjectoui
├─idstringouiID du travail
├─creditintegerouicrédit total de l'utilisateur
├─consumedCreditintegerouicrédit consommé du travail

Service commercial-toB/API

[email protected]