Справочник API

Документация API Aitubo

Обзор

В этом документе описывается, как использовать код для достижения тех же результатов, что и в Интернете. После документа будет указан только относительный адрес API, вам нужно будет объединить его с основным доменным именем: https://api.aitubo.ai.

Например, если вы хотите создать задание, вам нужно вызвать https://api.aitubo.ai/api/job/create

Документ разделен на два раздела: первый — для примеров, а второй — для конкретного API.

Примеры

В этом разделе описывается, как создать задание и получить его. Наш API для создания заданий предоставляет три основные функции: Text2Image, Image2Image, and ControlNet(ControlNet — это структура нейронной сети для управления моделями диффузии путем добавления дополнительных условий).

Независимо от того, какую из трех функций вы используете, сначала вам нужно получить список поддерживаемых нами моделей, а затем, когда вы создадите задание, вам нужно будет передать id поле информации о модели

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

Результат выглядит примерно так:

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

Затем вы получите ответ, подобный этому:

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

Вы можете проверить статус создания задачи путем опроса. Каждое фото занимает около 2 секунд, поэтому, пожалуйста, контролируйте частоту запросов. Наконец, вы получите что-то вроде этого:

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

Чтобы использовать Image2Image, вы можете вызвать наш Загрузить изображение API, чтобы получить относительный адрес изображения в OSS, или вы можете предоставить изображение с абсолютным адресом.

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

Вы можете проверить статус создания задачи путем опроса, как и в Text2Image.

3. ControlNet

Перед использованием функции ControlNet необходимо сначала вызвать API /job/model/list, чтобы получить соответствующие категории 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"
            },
            ...
    }
}

Затем вызовите 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"
}'

Вы также можете передать modelId поле(Убедитесь, что модель поддерживает 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. Загрузить изображение

Основная информация

Путь: /api/job/upload-image

Метод: POST

Параметры запроса

Заголовки

ИмяЗначениеОбязательноПример
Content-Typemultipart/form-dataда
AuthorizationBearer {YOUR KEY}даBearer 37f333a2d5f811edb248acde48001122

Тело

ИмяЗначениеОбязательно
imageфайлда

Данные ответа

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
codeintegerдаcode=0 -> успешно
infostringнетинформация об ошибке
dataobjectнет
├─pathstringнетпуть к изображению AliYun OSS

2. Создать задание

Основная информация

Путь: /api/job/create

Метод: POST

Параметры запроса

Заголовки

ИмяЗначениеОбязательноПример
Content-Typeapplication/jsonда
AuthorizationBearer {YOUR KEY}даBearer 37f333a2d5f811edb248acde48001122

Тело

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
imagePathstringнетpath of the uploaded image(url/oss both)
maskImagestringнетAI Editor should pass this field
modelIdstringнетif controlModel is null, this field should be filled
promptstringдаподсказка
negativePromptstringнетотрицательная подсказка
controlModelstringнетcanny / scribble / openpose / mlsd / hed / seg / depth / normal
controlStrengthnumberнет1[0, 2]
controlFilterstringнетpreprecessor of control image, for example: openpose / openpose_full / openpose_hand / openpose_face / openpose_faceonly
strengthnumberнет0.8[0.1, 1]
widthintegerнет512
heightintegerнет512
stepsintegerнет3010 <= value <= 50
guidanceScaleintegerнет7.50 < value <= 20
countintegerнет4generated image count

Данные ответа

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
codenumberда0 -> success;1000 -> no enough credit
infostringнетинформация об ошибке
dataobjectда
├─idstringдаjob ID
├─creditintegerдаобщий кредит пользователя
├─consumedCreditintegerдаconsumed credit of the job

3. Получить задание

Основная информация

Путь: /api/job/get

Метод: GET

Параметры запроса

Запрос

ИмяОбязательноПримерПримечание
idда642ba091592245d79a645b39job ID

Response Data

ИмяTypeОбязательноDefaultПримечаниеOthers
codeintegerда0 -> успешно
infostringнетинформация об ошибке
dataobjectда
├─idstringдаjob ID
├─createAtstringдавремя создания задания
├─statusintegerдастатус задания. 0 -> не готово; 1 -> обработка; 2 -> успех; 3 -> сбой
├─resultobjectнет
├─├─infostringнет
├─├─dataobjectнет
├─├─├─imagesstring []нетРезультирующий относительный путь к изображению (необходимо объединить с полем домена)item Type:string
├─├─├─artIdsstring []нетPicture corresponding artIDitem Type:string
├─├─├─domainstringнетoss url, you need to concatenate the relative path of the picture
├─argsobjectнет
├─├─promptstringнет
├─├─negativePromptstringнет
├─├─modelstringнет
├─├─strengthintegerнет
├─├─widthintegerнет
├─├─heightintegerнет

4. List ControlNet Model

Основная информация

Путь: /api/job/models

Метод: GET

Данные ответа

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
codeintegerда0 -> успешно
infostringнетинформация об ошибке
dataobjectда
├domainstringдаimage oss domain name, need to concatenate the icon field below
├modelsobject []даitem Type:object
idstringдаmodel id, The controlModel parameter value is this ID when creating a job
namestringдаEnglish name
cnamestringдаChinese name
iconstringдаsample picture. oss relative path, you need to concatenate domains

5. List Histroy Job

Основная информация

Путь: /api/job/list

Метод: GET

Параметры запроса

Заголовки

ИмяЗначениеОбязательноПримерПримечание
Content-Typeapplication/jsonда
AuthorizationBearer {YOUR KEY}даBearer 37f333a2d5f811edb248acde48001122

Query

ИмяОбязательноПримерПримечание
pageIndexдаstart from 1
pageSizeда

Данные ответа

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
codeintegerда0 -> успешно
infostringнетинформация об ошибке
dataobjectда
├─jobsobject []даjob arrayitem Type:object
├─├─idstringдаjob ID
├─├─createdAtstringда
├─├─argsobjectда
├─├─├─promptstringда
├─├─├─negativePromptstringда
├─├─├─strengthintegerда
├─├─├─widthintegerда
├─├─├─heightintegerда
├─├─├─countintegerда
├─├─├─stepsintegerда
├─├─artsobject []дасгенерированный массив изображенийitem Type:object
├─├─├─idstringдаid сгенерированного изображения
├─├─├─imagesobject []дамассив разнообразных изображенийitem Type:object
├─├─├─├─specstringдаvariant type. o -> origin; 2x/3x/4x -> 2/3/4 scale image
├─├─├─├─pathstringдаimage path. domain to be concatenated
├─├─├─├─sizeintegerдаimage size. unit: Byte
├─domainstringдаoss image domain

6. List Model

Основная информация

Путь: /api/model/list

Метод: GET

Параметры запроса

Заголовки

ИмяЗначениеОбязательноПримерПримечание
AuthorizationBearer {YOUR KEY}даBearer 37f333a2d5f811edb248acde48001122

Запрос

ИмяОбязательноПримерПримечание
pageIndexдаstart from 1
pageSizeда
typeнетplatform/community

Данные ответа

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
codeintegerда0 -> успешно
infostringнетинформация об ошибке
dataobjectда
├─domainstringдаoss domain
├─totalintegerдаthe total number of models filtered for paging
├─modelsobject []даitem Type:object
├─├─idstringдаmodel ID
├─├─namestringдаmodel name
├─├─usernamestringдаmodel’s author name
├─├─descstringдаописание модели
├─├─coverstringдаобложка модели
├─├─isFavouritebooleanдапредпочитает ли пользователь модель
├─├─controlNetbooleanдаwhether the model supports ControlNet

7. Super Resolution

Основная информация

Путь: /api/job/upscale

Метод: POST

Параметры запроса

Заголовки

ИмяЗначениеОбязательноПримерПримечание
Content-Typeapplication/jsonда
AuthorizationBearer {YOUR KEY}даBearer 37f333a2d5f811edb248acde48001122

Тело

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
modelstringнетupscale model name
RealESRGAN _x4plus / RealESRGAN_x4plus_anime_6B
imagePathstringдаimage path. domain to be concatenated
upscaleFactorintegerда2 <= factor <= 4
beautybooleanнетwhether to enable face enhancement
artIdstringдаNeed a super point picture artID

Данные ответа

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
codenumberда0 -> success;1000 -> no enough credit
infostringнетинформация об ошибке
dataobjectда
├─idstringнетupscale job id
├─creditintegerдаобщий кредит пользователя
├─consumedCreditintegerдаconsumed credit of the job

8. Image Segmentation

Основная информация

Путь: /api/art/segment

Метод: POST

Параметры запроса

Заголовки

ИмяЗначениеОбязательноПримерПримечание
Content-Typeapplication/jsonда
AuthorizationBearer {YOUR KEY}даBearer 37f333a2d5f811edb248acde48001122

Тело

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
imagestringдаimage path. absolute/relative path

Данные ответа

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
codenumberда0 -> успешно
infostringнетинформация об ошибке
dataobjectда
├─imagestringдаURL of the image after segmentating

9. GetUserInfo

Основная информация

Путь: /api/user/profile

Метод: GET

Параметры запроса

Заголовки

ИмяЗначениеОбязательноПримерПримечание
Content-Typeapplication/jsonда
AuthorizationBearer {YOUR KEY}даBearer 37f333a2d5f811edb248acde48001122

Данные ответа

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
codenumberда0 -> успешно
infostringнетинформация об ошибке
dataobjectда
├─namestringда
├─emailstringда
├─avatarstringда
├─phonestringда
├─creditintegerдаобщий кредит пользователя
├─displayNSFWbooleanда
├─discordbooleanда

10. Create Headshot

10.1 List Templates

Основная информация

Путь: api/transform/list

Метод: GET

Данные ответа

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
codenumberда0 -> успешно
infostringнетинформация об ошибке
dataobjectда
├─domainstringдаimage oss domain name, need to concatenate the icon field below
├─tagsstring[]даtemplate tag
├─transformobjectда
├─├─tagobject[]да
├─├─├─idstringда
├─├─├─namestringда
├─├─├─imagestringдаorigin image
├─├─├─artstringдаresult image
├─├─├─costnumberдаcredit consume
├─├─├─probooleanдаis pro
├─├─├─tagstringдаtag

10.2 Create Headshot

Основная информация

Путь: api/transform/create-headshot

Метод: POST

Заголовки

ИмяЗначениеОбязательноПримерПримечание
Content-Typeapplication/jsonда
AuthorizationBearer {YOUR KEY}даBearer 37f333a2d5f811edb248acde48001122

Тело

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
imagePathstringдаimage path returned when called upload-image api
transformIdstringда
widthintegerнет
heightintegerнет
keepHairbooleanнетfalse
keepPosebooleanнетtrue

Данные ответа

ИмяТипОбязательноПо умолчаниюПримечаниеДругие
codenumberда0 -> success;1000 -> no enough credit
infostringнетинформация об ошибке
dataobjectда
├─idstringдаjob ID
├─creditintegerдаобщий кредит пользователя
├─consumedCreditintegerдаconsumed credit of the job

Commercial Service-toB/API

[email protected]