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-data
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Cuerpo

NombreValorRequerido
imagearchivo

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codeintegercode=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/json
AuthorizationBearer {YOUR KEY}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
promptstringindicació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
codenumber0 -> éxito;1000 -> no hay suficiente crédito
infostringnoinformación de error
dataobject
├─idstringID del trabajo
├─creditintegercrédito total del usuario
├─consumedCreditintegercrédito consumido del trabajo

3. Obtener trabajo

Información básica

Ruta: /api/job/get

Método: GET

Parámetros de solicitud

Consulta

NombreRequeridoEjemploNota
id642ba091592245d79a645b39ID del trabajo

Response Data

NombreTypeRequeridoDefaultNotaOthers
codeinteger0 -> éxito
infostringnoinformación de error
dataobject
├─idstringID del trabajo
├─createAtstringhora de creación del trabajo
├─statusintegerestado 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
codeinteger0 -> éxito
infostringnoinformación de error
dataobject
├domainstringnombre de dominio oss de la imagen, necesita concatenar el campo de icono a continuación
├modelsobject []item Type:object
idstringid del modelo, el valor del parámetro controlModel es este ID al crear un trabajo
namestringNombre en inglés
cnamestringNombre en chino
iconstringimagen 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/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Query

NombreRequeridoEjemploNota
pageIndexcomenzar desde 1
pageSize

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codeinteger0 -> éxito
infostringnoinformación de error
dataobject
├─jobsobject []matriz de trabajositem Type:object
├─├─idstringID del trabajo
├─├─createdAtstring
├─├─argsobject
├─├─├─promptstring
├─├─├─negativePromptstring
├─├─├─strengthinteger
├─├─├─widthinteger
├─├─├─heightinteger
├─├─├─countinteger
├─├─├─stepsinteger
├─├─artsobject []la matriz generada de imágenesitem Type:object
├─├─├─idstringel id de la imagen generada
├─├─├─imagesobject []matriz de imágenes variadasitem Type:object
├─├─├─├─specstringtipo de variante. o -> origen; 2x/3x/4x -> imagen de escala 2/3/4
├─├─├─├─pathstringruta de la imagen. dominio a concatenar
├─├─├─├─sizeintegertamaño de la imagen. unidad: Byte
├─domainstringdominio 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}Bearer 37f333a2d5f811edb248acde48001122

Consulta

NombreRequeridoEjemploNota
pageIndexcomenzar desde 1
pageSize
typenoplatform/community

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codeinteger0 -> éxito
infostringnoinformación de error
dataobject
├─domainstringdominio oss
├─totalintegerel número total de modelos filtrados para la paginación
├─modelsobject []item Type:object
├─├─idstringID del modelo
├─├─namestringnombre del modelo
├─├─usernamestringmodel’s author name
├─├─descstringdescripción del modelo
├─├─coverstringportada del modelo
├─├─isFavouriteboolean¿el usuario prefiere el modelo?
├─├─controlNetboolean¿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/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Cuerpo

NombreTipoRequeridoPredeterminadoNotaOtros
modelstringnonombre del modelo de ampliación
RealESRGAN _x4plus / RealESRGAN_x4plus_anime_6B
imagePathstringruta de la imagen. dominio a concatenar
upscaleFactorinteger2 <= factor <= 4
beautybooleanno¿habilitar la mejora facial?
artIdstringNecesita un artID de imagen de súper punto

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codenumber0 -> éxito;1000 -> no hay suficiente crédito
infostringnoinformación de error
dataobject
├─idstringnoid del trabajo de ampliación
├─creditintegercrédito total del usuario
├─consumedCreditintegercré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/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Cuerpo

NombreTipoRequeridoPredeterminadoNotaOtros
imagestringruta de la imagen. ruta absoluta/relativa

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codenumber0 -> éxito
infostringnoinformación de error
dataobject
├─imagestringURL 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/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codenumber0 -> éxito
infostringnoinformación de error
dataobject
├─namestring
├─emailstring
├─avatarstring
├─phonestring
├─creditintegercrédito total del usuario
├─displayNSFWboolean
├─discordboolean

10. Crear foto de perfil

10.1 Listar plantillas

Información básica

Ruta: api/transform/list

Método: GET

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codenumber0 -> éxito
infostringnoinformación de error
dataobject
├─domainstringnombre de dominio oss de la imagen, necesita concatenar el campo de icono a continuación
├─tagsstring[]etiqueta de plantilla
├─transformobject
├─├─tagobject[]
├─├─├─idstring
├─├─├─namestring
├─├─├─imagestringimagen original
├─├─├─artstringimagen de resultado
├─├─├─costnumberconsumo de crédito
├─├─├─proboolean¿es pro?
├─├─├─tagstringetiqueta

10.2 Crear foto de perfil

Información básica

Ruta: api/transform/create-headshot

Método: POST

Encabezados

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

Cuerpo

NombreTipoRequeridoPredeterminadoNotaOtros
imagePathstringruta de la imagen devuelta cuando se llama api de carga de imágenes
transformIdstring
widthintegerno
heightintegerno
keepHairbooleannofalse
keepPosebooleannotrue

Datos de respuesta

NombreTipoRequeridoPredeterminadoNotaOtros
codenumber0 -> éxito;1000 -> no hay suficiente crédito
infostringnoinformación de error
dataobject
├─idstringID del trabajo
├─creditintegercrédito total del usuario
├─consumedCreditintegercrédito consumido del trabajo

Servicio comercial-toB/API

[email protected]