Referência da API

Documentação da API da Aitubo

Visão geral

Este documento descreve como usar o código para obter os mesmos resultados que na web. Após o documento, fornecerá apenas o endereço relativo da API, você precisa juntar ao nome de domínio principal: https://api.aitubo.ai.

Por exemplo, se você deseja criar um trabalho, precisa chamar https://api.aitubo.ai/api/job/create

O documento é dividido em duas seções, a primeira para exemplos e a segunda para API específica.

Exemplos

Esta seção descreve como criar um trabalho e obter um trabalho. Nossa API para criar trabalhos fornece três funções principais: Text2Image, Image2Image, and ControlNet(ControlNet é uma estrutura de rede neural para controlar modelos de difusão adicionando condições extras).

Independentemente de qual dos três recursos você usar, primeiro você precisa obter uma lista dos modelos que suportamos e, em seguida, ao criar o trabalho, você precisa passar o id campo da informação do modelo

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

O resultado é algo assim:

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

Então, você receberá uma resposta assim:

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

Você pode verificar o status da criação da tarefa por meio de sondagem. Cada foto leva cerca de 2 segundos para ser concluída, portanto, controle a frequência de suas consultas. Finalmente, você obterá assim:

{
  "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, você pode chamar nosso Carregar imagem API para obter o endereço relativo OSS de uma imagem, ou você pode fornecer uma imagem com um endereço absoluto.

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

Você pode verificar o status da criação da tarefa por meio de sondagem, assim como o Text2Image.

3. ControlNet

Antes de usar a função ControlNet, você deve primeiro chamar a API /job/model/list para obter as categorias ControlNet correspondentes:

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

Em seguida, chame a 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"
}'

Você também pode passar modelId campo(Certifique-se de que o modelo suporta 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. Carregar imagem

Informações básicas

Caminho: /api/job/upload-image

Método: POST

Parâmetros da solicitação

Cabeçalhos

NomeValorObrigatórioExemplo
Content-Typemultipart/form-datasim
AuthorizationBearer {YOUR KEY}simBearer 37f333a2d5f811edb248acde48001122

Corpo

NomeValorObrigatório
imagearquivosim

Dados de resposta

NomeTipoObrigatórioPadrãoObservaçãoOutros
codeintegersimcode=0 -> sucesso
infostringnãoinformações de erro
dataobjectnão
├─pathstringnãocaminho da imagem do AliYun OSS

2. Criar trabalho

Informações básicas

Caminho: /api/job/create

Método: POST

Parâmetros da solicitação

Cabeçalhos

NomeValorObrigatórioExemplo
Content-Typeapplication/jsonsim
AuthorizationBearer {YOUR KEY}simBearer 37f333a2d5f811edb248acde48001122

Corpo

NomeTipoObrigatórioPadrãoObservaçãoOutros
imagePathstringnãocaminho da imagem carregada (url/oss ambos)
maskImagestringnãoO Editor de IA deve passar este campo
modelIdstringnãose controlModel for nulo, este campo deve ser preenchido
promptstringsimprompt
negativePromptstringnãoprompt negativo
controlModelstringnãocanny / scribble / openpose / mlsd / hed / seg / depth / normal
controlStrengthnumbernão1[0, 2]
controlFilterstringnãopreprecessor of control image, for example: openpose / openpose_full / openpose_hand / openpose_face / openpose_faceonly
strengthnumbernão0.8[0.1, 1]
widthintegernão512
heightintegernão512
stepsintegernão3010 <= value <= 50
guidanceScaleintegernão7.50 < value <= 20
countintegernão4contagem de imagens geradas

Dados de resposta

NomeTipoObrigatórioPadrãoObservaçãoOutros
codenumbersim0 -> sucesso;1000 -> crédito insuficiente
infostringnãoinformações de erro
dataobjectsim
├─idstringsimID do trabalho
├─creditintegersimcrédito total do usuário
├─consumedCreditintegersimcrédito consumido do trabalho

3. Obter trabalho

Informações básicas

Caminho: /api/job/get

Método: GET

Parâmetros da solicitação

Consulta

NomeObrigatórioExemploObservação
idsim642ba091592245d79a645b39ID do trabalho

Response Data

NomeTypeObrigatórioDefaultObservaçãoOthers
codeintegersim0 -> sucesso
infostringnãoinformações de erro
dataobjectsim
├─idstringsimID do trabalho
├─createAtstringsimtempo de criação do trabalho
├─statusintegersimstatus do trabalho. 0 -> não pronto; 1 -> processando; 2 -> sucesso; 3 -> falha
├─resultobjectnão
├─├─infostringnão
├─├─dataobjectnão
├─├─├─imagesstring []nãoO caminho relativo resultante da imagem (precisa ser concatenado com o campo de domínio)item Type:string
├─├─├─artIdsstring []nãoPicture corresponding artIDitem Type:string
├─├─├─domainstringnãooss url, you need to concatenate the relative path of the picture
├─argsobjectnão
├─├─promptstringnão
├─├─negativePromptstringnão
├─├─modelstringnão
├─├─strengthintegernão
├─├─widthintegernão
├─├─heightintegernão

4. Listar modelo ControlNet

Informações básicas

Caminho: /api/job/models

Método: GET

Dados de resposta

NomeTipoObrigatórioPadrãoObservaçãoOutros
codeintegersim0 -> sucesso
infostringnãoinformações de erro
dataobjectsim
├domainstringsimnome de domínio oss da imagem, precisa concatenar o campo de ícone abaixo
├modelsobject []simitem Type:object
idstringsimID do modelo, o valor do parâmetro controlModel é este ID ao criar um trabalho
namestringsimNome em inglês
cnamestringsimNome em chinês
iconstringsimimagem de amostra. caminho relativo oss, você precisa concatenar domínios

5. Listar trabalho do Histórico

Informações básicas

Caminho: /api/job/list

Método: GET

Parâmetros da solicitação

Cabeçalhos

NomeValorObrigatórioExemploObservação
Content-Typeapplication/jsonsim
AuthorizationBearer {YOUR KEY}simBearer 37f333a2d5f811edb248acde48001122

Query

NomeObrigatórioExemploObservação
pageIndexsimcomeçar de 1
pageSizesim

Dados de resposta

NomeTipoObrigatórioPadrãoObservaçãoOutros
codeintegersim0 -> sucesso
infostringnãoinformações de erro
dataobjectsim
├─jobsobject []simmatriz de trabalhoitem Type:object
├─├─idstringsimID do trabalho
├─├─createdAtstringsim
├─├─argsobjectsim
├─├─├─promptstringsim
├─├─├─negativePromptstringsim
├─├─├─strengthintegersim
├─├─├─widthintegersim
├─├─├─heightintegersim
├─├─├─countintegersim
├─├─├─stepsintegersim
├─├─artsobject []sima matriz de imagens geradasitem Type:object
├─├─├─idstringsimo id da imagem gerada
├─├─├─imagesobject []simmatriz de imagens variadasitem Type:object
├─├─├─├─specstringsimtipo de variante. o -> origem; 2x/3x/4x -> imagem de escala 2/3/4
├─├─├─├─pathstringsimcaminho da imagem. domínio a ser concatenado
├─├─├─├─sizeintegersimtamanho da imagem. unidade: Byte
├─domainstringsimdomínio da imagem oss

6. Listar modelo

Informações básicas

Caminho: /api/model/list

Método: GET

Parâmetros da solicitação

Cabeçalhos

NomeValorObrigatórioExemploObservação
AuthorizationBearer {YOUR KEY}simBearer 37f333a2d5f811edb248acde48001122

Consulta

NomeObrigatórioExemploObservação
pageIndexsimcomeçar de 1
pageSizesim
typenãoplatform/community

Dados de resposta

NomeTipoObrigatórioPadrãoObservaçãoOutros
codeintegersim0 -> sucesso
infostringnãoinformações de erro
dataobjectsim
├─domainstringsimdomínio oss
├─totalintegersimo número total de modelos filtrados para paginação
├─modelsobject []simitem Type:object
├─├─idstringsimID do modelo
├─├─namestringsimnome do modelo
├─├─usernamestringsimmodel’s author name
├─├─descstringsimdescrição do modelo
├─├─coverstringsimcapa do modelo
├─├─isFavouritebooleansimse o usuário favorita o modelo
├─├─controlNetbooleansimse o modelo suporta ControlNet

7. Super Resolução

Informações básicas

Caminho: /api/job/upscale

Método: POST

Parâmetros da solicitação

Cabeçalhos

NomeValorObrigatórioExemploObservação
Content-Typeapplication/jsonsim
AuthorizationBearer {YOUR KEY}simBearer 37f333a2d5f811edb248acde48001122

Corpo

NomeTipoObrigatórioPadrãoObservaçãoOutros
modelstringnãonome do modelo de upscale
RealESRGAN _x4plus / RealESRGAN_x4plus_anime_6B
imagePathstringsimcaminho da imagem. domínio a ser concatenado
upscaleFactorintegersim2 <= fator <= 4
beautybooleannãose deve ativar o aprimoramento facial
artIdstringsimPrecisa de um artID de imagem de super ponto

Dados de resposta

NomeTipoObrigatórioPadrãoObservaçãoOutros
codenumbersim0 -> sucesso;1000 -> crédito insuficiente
infostringnãoinformações de erro
dataobjectsim
├─idstringnãoID do trabalho de upscale
├─creditintegersimcrédito total do usuário
├─consumedCreditintegersimcrédito consumido do trabalho

8. Segmentação de imagem

Informações básicas

Caminho: /api/art/segment

Método: POST

Parâmetros da solicitação

Cabeçalhos

NomeValorObrigatórioExemploObservação
Content-Typeapplication/jsonsim
AuthorizationBearer {YOUR KEY}simBearer 37f333a2d5f811edb248acde48001122

Corpo

NomeTipoObrigatórioPadrãoObservaçãoOutros
imagestringsimcaminho da imagem. caminho absoluto/relativo

Dados de resposta

NomeTipoObrigatórioPadrãoObservaçãoOutros
codenumbersim0 -> sucesso
infostringnãoinformações de erro
dataobjectsim
├─imagestringsimURL da imagem após a segmentação

9. Obter informações do usuário

Informações básicas

Caminho: /api/user/profile

Método: GET

Parâmetros da solicitação

Cabeçalhos

NomeValorObrigatórioExemploObservação
Content-Typeapplication/jsonsim
AuthorizationBearer {YOUR KEY}simBearer 37f333a2d5f811edb248acde48001122

Dados de resposta

NomeTipoObrigatórioPadrãoObservaçãoOutros
codenumbersim0 -> sucesso
infostringnãoinformações de erro
dataobjectsim
├─namestringsim
├─emailstringsim
├─avatarstringsim
├─phonestringsim
├─creditintegersimcrédito total do usuário
├─displayNSFWbooleansim
├─discordbooleansim

10. Criar foto de perfil

10.1 Listar modelos

Informações básicas

Caminho: api/transform/list

Método: GET

Dados de resposta

NomeTipoObrigatórioPadrãoObservaçãoOutros
codenumbersim0 -> sucesso
infostringnãoinformações de erro
dataobjectsim
├─domainstringsimnome de domínio oss da imagem, precisa concatenar o campo de ícone abaixo
├─tagsstring[]simtag do modelo
├─transformobjectsim
├─├─tagobject[]sim
├─├─├─idstringsim
├─├─├─namestringsim
├─├─├─imagestringsimimagem original
├─├─├─artstringsimimagem resultante
├─├─├─costnumbersimconsumo de crédito
├─├─├─probooleansimé pro
├─├─├─tagstringsimtag

10.2 Criar foto de perfil

Informações básicas

Caminho: api/transform/create-headshot

Método: POST

Cabeçalhos

NomeValorObrigatórioExemploObservação
Content-Typeapplication/jsonsim
AuthorizationBearer {YOUR KEY}simBearer 37f333a2d5f811edb248acde48001122

Corpo

NomeTipoObrigatórioPadrãoObservaçãoOutros
imagePathstringsimcaminho da imagem retornado quando chamado api de upload de imagem
transformIdstringsim
widthintegernão
heightintegernão
keepHairbooleannãofalse
keepPosebooleannãotrue

Dados de resposta

NomeTipoObrigatórioPadrãoObservaçãoOutros
codenumbersim0 -> sucesso;1000 -> crédito insuficiente
infostringnãoinformações de erro
dataobjectsim
├─idstringsimID do trabalho
├─creditintegersimcrédito total do usuário
├─consumedCreditintegersimcrédito consumido do trabalho

Serviço Comercial-toB/API

[email protected]