Referencia de la API

Documentación de la API de Aitubo

Descripción general

Este documento describe cómo usar el código para lograr los mismos resultados que en la web. Después del documento solo dará la dirección relativa de la API, necesita juntarlo con el nombre de dominio principal: https://api.aitubo.ai.

Por ejemplo, si desea crear un trabajo, debe llamar a https://api.aitubo.ai/api/job/create

El documento se divide en dos secciones, la primera para ejemplos y la segunda para la API específica.

Ejemplos

Esta sección describe cómo crear un trabajo y obtener un trabajo. Nuestra API para crear trabajos proporciona tres funciones principales: Text2Image, Image2Image, and ControlNet(ControlNet es una estructura de red neuronal para controlar los modelos de difusión agregando condiciones adicionales).

Independientemente de cuál de las tres funciones use, primero debe obtener una lista de los modelos que admitimos, y luego, cuando cree el trabajo, debe pasar el id campo de la información del modelo

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

El resultado es algo como esto:

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

Luego, obtendrá una respuesta como esta:

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

Puede verificar el estado de la creación de la tarea mediante el sondeo. Cada foto tarda unos 2 segundos en completarse, así que controle la frecuencia de sus consultas. Finalmente, obtendrá algo como esto:

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

Para usar Image2Image, puede llamar a nuestro Subir imagen API para obtener la dirección relativa de OSS de una imagen, o puede dar una imagen con una dirección absoluta.

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

Puede verificar el estado de la creación de la tarea mediante el sondeo al igual que Text2Image.

3. ControlNet

Antes de usar la función ControlNet, primero debe llamar a la API /job/model/list para obtener las categorías de ControlNet correspondientes:

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

Luego llame a la 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"
}'

También puedes pasar modelId campo(Asegúrese de que el modelo sea compatible con 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. Subir imagen

Información básica

Ruta: /api/job/upload-image

Método: POST

Parámetros de solicitud

Encabezados

NombreValorRequeridoEjemplo
Content-Typemultipart/form-datasí
AuthorizationBearer {YOUR KEY}síBearer 37f333a2d5f811edb248acde48001122

Cuerpo

NombreValorRequerido
imagearchivosí

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codeintegersícode=0 -> éxito
infostringnoinformación de error
dataobjectno
├─pathstringnoruta de la imagen de AliYun OSS

2. Crear trabajo

Información básica

Ruta: /api/job/create

Método: POST

Parámetros de solicitud

Encabezados

NombreValorRequeridoEjemplo
Content-Typeapplication/jsonsí
AuthorizationBearer {YOUR KEY}síBearer 37f333a2d5f811edb248acde48001122

Cuerpo

NombreTipoRequeridoPredeterminadoNotaOtros
imagePathstringnoruta de la imagen cargada (url/oss ambos)
maskImagestringnoAI Editor debe pasar este campo
modelIdstringnosi controlModel es nulo, este campo debe estar lleno
promptstringsíindicación
negativePromptstringnoindicación negativa
controlModelstringnocanny / scribble / openpose / mlsd / hed / seg / depth / normal
controlStrengthnumberno1[0, 2]
controlFilterstringnopreprecessor de la imagen de control, por ejemplo: openpose / openpose_full / openpose_hand / openpose_face / openpose_faceonly
strengthnumberno0.8[0.1, 1]
widthintegerno512
heightintegerno512
stepsintegerno3010 <= value <= 50
guidanceScaleintegerno7.50 < value <= 20
countintegerno4recuento de imágenes generadas

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codenumbersí0 -> éxito;1000 -> no hay suficiente crédito
infostringnoinformación de error
dataobjectsí
├─idstringsíID del trabajo
├─creditintegersícrédito total del usuario
├─consumedCreditintegersícrédito consumido del trabajo

3. Obtener trabajo

Información básica

Ruta: /api/job/get

Método: GET

Parámetros de solicitud

Consulta

NombreRequeridoEjemploNota
idsí642ba091592245d79a645b39ID del trabajo

Response Data

NombreTypeRequeridoDefaultNotaOthers
codeintegersí0 -> éxito
infostringnoinformación de error
dataobjectsí
├─idstringsíID del trabajo
├─createAtstringsíhora de creación del trabajo
├─statusintegersíestado del trabajo. 0 -> no listo; 1 -> procesando; 2 -> éxito; 3 -> fallo
├─resultobjectno
├─├─infostringno
├─├─dataobjectno
├─├─├─imagesstring []noLa ruta relativa resultante de la imagen (necesita ser concatenada con el campo de dominio)item Type:string
├─├─├─artIdsstring []noPicture corresponding artIDitem Type:string
├─├─├─domainstringnooss url, necesita concatenar la ruta relativa de la imagen
├─argsobjectno
├─├─promptstringno
├─├─negativePromptstringno
├─├─modelstringno
├─├─strengthintegerno
├─├─widthintegerno
├─├─heightintegerno

4. Listar modelo ControlNet

Información básica

Ruta: /api/job/models

Método: GET

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codeintegersí0 -> éxito
infostringnoinformación de error
dataobjectsí
├domainstringsínombre de dominio oss de la imagen, necesita concatenar el campo de icono a continuación
├modelsobject []síitem Type:object
idstringsíid del modelo, el valor del parámetro controlModel es este ID al crear un trabajo
namestringsíNombre en inglés
cnamestringsíNombre en chino
iconstringsíimagen de muestra. ruta relativa de oss, necesita concatenar dominios

5. Listar trabajo de historial

Información básica

Ruta: /api/job/list

Método: GET

Parámetros de solicitud

Encabezados

NombreValorRequeridoEjemploNota
Content-Typeapplication/jsonsí
AuthorizationBearer {YOUR KEY}síBearer 37f333a2d5f811edb248acde48001122

Query

NombreRequeridoEjemploNota
pageIndexsícomenzar desde 1
pageSizesí

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codeintegersí0 -> éxito
infostringnoinformación de error
dataobjectsí
├─jobsobject []símatriz de trabajositem Type:object
├─├─idstringsíID del trabajo
├─├─createdAtstringsí
├─├─argsobjectsí
├─├─├─promptstringsí
├─├─├─negativePromptstringsí
├─├─├─strengthintegersí
├─├─├─widthintegersí
├─├─├─heightintegersí
├─├─├─countintegersí
├─├─├─stepsintegersí
├─├─artsobject []síla matriz generada de imágenesitem Type:object
├─├─├─idstringsíel id de la imagen generada
├─├─├─imagesobject []símatriz de imágenes variadasitem Type:object
├─├─├─├─specstringsítipo de variante. o -> origen; 2x/3x/4x -> imagen de escala 2/3/4
├─├─├─├─pathstringsíruta de la imagen. dominio a concatenar
├─├─├─├─sizeintegersítamaño de la imagen. unidad: Byte
├─domainstringsídominio de la imagen oss

6. Listar modelo

Información básica

Ruta: /api/model/list

Método: GET

Parámetros de solicitud

Encabezados

NombreValorRequeridoEjemploNota
AuthorizationBearer {YOUR KEY}síBearer 37f333a2d5f811edb248acde48001122

Consulta

NombreRequeridoEjemploNota
pageIndexsícomenzar desde 1
pageSizesí
typenoplatform/community

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codeintegersí0 -> éxito
infostringnoinformación de error
dataobjectsí
├─domainstringsídominio oss
├─totalintegersíel número total de modelos filtrados para la paginación
├─modelsobject []síitem Type:object
├─├─idstringsíID del modelo
├─├─namestringsínombre del modelo
├─├─usernamestringsímodel’s author name
├─├─descstringsídescripción del modelo
├─├─coverstringsíportada del modelo
├─├─isFavouritebooleansí¿el usuario prefiere el modelo?
├─├─controlNetbooleansí¿el modelo es compatible con ControlNet?

7. Super Resolución

Información básica

Ruta: /api/job/upscale

Método: POST

Parámetros de solicitud

Encabezados

NombreValorRequeridoEjemploNota
Content-Typeapplication/jsonsí
AuthorizationBearer {YOUR KEY}síBearer 37f333a2d5f811edb248acde48001122

Cuerpo

NombreTipoRequeridoPredeterminadoNotaOtros
modelstringnonombre del modelo de ampliación
RealESRGAN _x4plus / RealESRGAN_x4plus_anime_6B
imagePathstringsíruta de la imagen. dominio a concatenar
upscaleFactorintegersí2 <= factor <= 4
beautybooleanno¿habilitar la mejora facial?
artIdstringsíNecesita un artID de imagen de súper punto

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codenumbersí0 -> éxito;1000 -> no hay suficiente crédito
infostringnoinformación de error
dataobjectsí
├─idstringnoid del trabajo de ampliación
├─creditintegersícrédito total del usuario
├─consumedCreditintegersícrédito consumido del trabajo

8. Segmentación de imagen

Información básica

Ruta: /api/art/segment

Método: POST

Parámetros de solicitud

Encabezados

NombreValorRequeridoEjemploNota
Content-Typeapplication/jsonsí
AuthorizationBearer {YOUR KEY}síBearer 37f333a2d5f811edb248acde48001122

Cuerpo

NombreTipoRequeridoPredeterminadoNotaOtros
imagestringsíruta de la imagen. ruta absoluta/relativa

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codenumbersí0 -> éxito
infostringnoinformación de error
dataobjectsí
├─imagestringsíURL de la imagen después de la segmentación

9. Obtener información del usuario

Información básica

Ruta: /api/user/profile

Método: GET

Parámetros de solicitud

Encabezados

NombreValorRequeridoEjemploNota
Content-Typeapplication/jsonsí
AuthorizationBearer {YOUR KEY}síBearer 37f333a2d5f811edb248acde48001122

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codenumbersí0 -> éxito
infostringnoinformación de error
dataobjectsí
├─namestringsí
├─emailstringsí
├─avatarstringsí
├─phonestringsí
├─creditintegersícrédito total del usuario
├─displayNSFWbooleansí
├─discordbooleansí

10. Crear foto de perfil

10.1 Listar plantillas

Información básica

Ruta: api/transform/list

Método: GET

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codenumbersí0 -> éxito
infostringnoinformación de error
dataobjectsí
├─domainstringsínombre de dominio oss de la imagen, necesita concatenar el campo de icono a continuación
├─tagsstring[]síetiqueta de plantilla
├─transformobjectsí
├─├─tagobject[]sí
├─├─├─idstringsí
├─├─├─namestringsí
├─├─├─imagestringsíimagen original
├─├─├─artstringsíimagen de resultado
├─├─├─costnumbersíconsumo de crédito
├─├─├─probooleansí¿es pro?
├─├─├─tagstringsíetiqueta

10.2 Crear foto de perfil

Información básica

Ruta: api/transform/create-headshot

Método: POST

Encabezados

NombreValorRequeridoEjemploNota
Content-Typeapplication/jsonsí
AuthorizationBearer {YOUR KEY}síBearer 37f333a2d5f811edb248acde48001122

Cuerpo

NombreTipoRequeridoPredeterminadoNotaOtros
imagePathstringsíruta de la imagen devuelta cuando se llama api de carga de imágenes
transformIdstringsí
widthintegerno
heightintegerno
keepHairbooleannofalse
keepPosebooleannotrue

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codenumbersí0 -> éxito;1000 -> no hay suficiente crédito
infostringnoinformación de error
dataobjectsí
├─idstringsíID del trabajo
├─creditintegersícrédito total del usuario
├─consumedCreditintegersícrédito consumido del trabajo

Servicio comercial-toB/API

[email protected]