API 참조

Aitubo의 API 문서

개요

이 문서는 웹에서와 동일한 결과를 얻기 위해 코드를 사용하는 방법을 설명합니다. 문서 이후에는 상대 주소 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 기능을 사용하기 전에 먼저 /job/model/list API를 호출하여 해당 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"
            },
            ...
    }
}

그런 다음 /job/create API를 호출합니다.

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 field(모델이 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

본문

이름필수
imagefile

응답 데이터

이름유형필수기본값참고기타
codeintegercode=0 -> 성공
infostring아니요오류 정보
dataobject아니요
├─pathstring아니요AliYun OSS의 이미지 경로

2. 작업 생성

기본 정보

경로: /api/job/create

방법: POST

요청 매개변수

헤더

이름필수예시
Content-Typeapplication/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

본문

이름유형필수기본값참고기타
imagePathstring아니요업로드된 이미지의 경로(url/oss 모두)
maskImagestring아니요AI 편집기는 이 필드를 전달해야 합니다.
modelIdstring아니요controlModel이 null이면 이 필드를 채워야 합니다.
promptstring프롬프트
negativePromptstring아니요부정적인 프롬프트
controlModelstring아니요canny / scribble / openpose / mlsd / hed / seg / depth / normal
controlStrengthnumber아니요1[0, 2]
controlFilterstring아니요control 이미지의 전처리, 예: 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아니요4생성된 이미지 수

응답 데이터

이름유형필수기본값참고기타
codenumber0 -> 성공;1000 -> 크레딧 부족
infostring아니요오류 정보
dataobject
├─idstring작업 ID
├─creditinteger사용자의 총 크레딧
├─consumedCreditinteger작업에 사용된 크레딧

3. 작업 가져오기

기본 정보

경로: /api/job/get

방법: GET

요청 매개변수

쿼리

이름필수예시참고
id642ba091592245d79a645b39작업 ID

Response Data

이름Type필수Default참고Others
codeinteger0 -> 성공
infostring아니요오류 정보
dataobject
├─idstring작업 ID
├─createAtstring작업 생성 시간
├─statusinteger작업 상태. 0 -> 준비 안 됨; 1 -> 처리 중; 2 -> 성공; 3 -> 실패
├─resultobject아니요
├─├─infostring아니요
├─├─dataobject아니요
├─├─├─imagesstring []아니요이미지의 결과 상대 경로 (도메인 필드와 연결해야 함)item Type:string
├─├─├─artIdsstring []아니요그림 해당 artIDitem Type:string
├─├─├─domainstring아니요oss url, 그림의 상대 경로를 연결해야 합니다.
├─argsobject아니요
├─├─promptstring아니요
├─├─negativePromptstring아니요
├─├─modelstring아니요
├─├─strengthinteger아니요
├─├─widthinteger아니요
├─├─heightinteger아니요

4. ControlNet 모델 나열

기본 정보

경로: /api/job/models

방법: GET

응답 데이터

이름유형필수기본값참고기타
codeinteger0 -> 성공
infostring아니요오류 정보
dataobject
├domainstring이미지 oss 도메인 이름, 아래 아이콘 필드를 연결해야 합니다.
├modelsobject []item Type:object
idstring모델 ID, 작업을 생성할 때 controlModel 매개변수 값은 이 ID입니다.
namestring영문 이름
cnamestring중국어 이름
iconstring샘플 그림. oss 상대 경로, 도메인을 연결해야 합니다.

5. 히스토리 작업 나열

기본 정보

경로: /api/job/list

방법: GET

요청 매개변수

헤더

이름필수예시참고
Content-Typeapplication/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

Query

이름필수예시참고
pageIndex1부터 시작
pageSize

응답 데이터

이름유형필수기본값참고기타
codeinteger0 -> 성공
infostring아니요오류 정보
dataobject
├─jobsobject []작업 배열item Type:object
├─├─idstring작업 ID
├─├─createdAtstring
├─├─argsobject
├─├─├─promptstring
├─├─├─negativePromptstring
├─├─├─strengthinteger
├─├─├─widthinteger
├─├─├─heightinteger
├─├─├─countinteger
├─├─├─stepsinteger
├─├─artsobject []생성된 이미지 배열item Type:object
├─├─├─idstring생성된 이미지의 ID
├─├─├─imagesobject []다양한 그림 배열item Type:object
├─├─├─├─specstring변형 유형. o -> 원본; 2x/3x/4x -> 2/3/4 배율 이미지
├─├─├─├─pathstring이미지 경로. 연결할 도메인
├─├─├─├─sizeinteger이미지 크기. 단위: 바이트
├─domainstringoss 이미지 도메인

6. 모델 나열

기본 정보

경로: /api/model/list

방법: GET

요청 매개변수

헤더

이름필수예시참고
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

쿼리

이름필수예시참고
pageIndex1부터 시작
pageSize
type아니요platform/community

응답 데이터

이름유형필수기본값참고기타
codeinteger0 -> 성공
infostring아니요오류 정보
dataobject
├─domainstringoss 도메인
├─totalinteger페이징을 위해 필터링된 총 모델 수
├─modelsobject []item Type:object
├─├─idstring모델 ID
├─├─namestring모델 이름
├─├─usernamestringmodel’s author name
├─├─descstring모델 설명
├─├─coverstring모델 표지
├─├─isFavouriteboolean사용자가 모델을 즐겨찾기했는지 여부
├─├─controlNetboolean모델이 ControlNet을 지원하는지 여부

7. 슈퍼 해상도

기본 정보

경로: /api/job/upscale

방법: POST

요청 매개변수

헤더

이름필수예시참고
Content-Typeapplication/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

본문

이름유형필수기본값참고기타
modelstring아니요업스케일 모델 이름
RealESRGAN _x4plus / RealESRGAN_x4plus_anime_6B
imagePathstring이미지 경로. 연결할 도메인
upscaleFactorinteger2 <= factor <= 4
beautyboolean아니요얼굴 향상 활성화 여부
artIdstring슈퍼 포인트 그림 artID 필요

응답 데이터

이름유형필수기본값참고기타
codenumber0 -> 성공;1000 -> 크레딧 부족
infostring아니요오류 정보
dataobject
├─idstring아니요업스케일 작업 ID
├─creditinteger사용자의 총 크레딧
├─consumedCreditinteger작업에 사용된 크레딧

8. 이미지 분할

기본 정보

경로: /api/art/segment

방법: POST

요청 매개변수

헤더

이름필수예시참고
Content-Typeapplication/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

본문

이름유형필수기본값참고기타
imagestring이미지 경로. 절대/상대 경로

응답 데이터

이름유형필수기본값참고기타
codenumber0 -> 성공
infostring아니요오류 정보
dataobject
├─imagestring분할 후 이미지의 URL

9. GetUserInfo

기본 정보

경로: /api/user/profile

방법: GET

요청 매개변수

헤더

이름필수예시참고
Content-Typeapplication/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

응답 데이터

이름유형필수기본값참고기타
codenumber0 -> 성공
infostring아니요오류 정보
dataobject
├─namestring
├─emailstring
├─avatarstring
├─phonestring
├─creditinteger사용자의 총 크레딧
├─displayNSFWboolean
├─discordboolean

10. 헤드샷 생성

10.1 템플릿 나열

기본 정보

경로: api/transform/list

방법: GET

응답 데이터

이름유형필수기본값참고기타
codenumber0 -> 성공
infostring아니요오류 정보
dataobject
├─domainstring이미지 oss 도메인 이름, 아래 아이콘 필드를 연결해야 합니다.
├─tagsstring[]템플릿 태그
├─transformobject
├─├─tagobject[]
├─├─├─idstring
├─├─├─namestring
├─├─├─imagestring원본 이미지
├─├─├─artstring결과 이미지
├─├─├─costnumber크레딧 소비
├─├─├─probooleanis pro
├─├─├─tagstring태그

10.2 헤드샷 생성

기본 정보

경로: api/transform/create-headshot

방법: POST

헤더

이름필수예시참고
Content-Typeapplication/json
AuthorizationBearer {YOUR KEY}Bearer 37f333a2d5f811edb248acde48001122

본문

이름유형필수기본값참고기타
imagePathstring호출 시 반환된 이미지 경로 upload-image api
transformIdstring
widthinteger아니요
heightinteger아니요
keepHairboolean아니요false
keepPoseboolean아니요true

응답 데이터

이름유형필수기본값참고기타
codenumber0 -> 성공;1000 -> 크레딧 부족
infostring아니요오류 정보
dataobject
├─idstring작업 ID
├─creditinteger사용자의 총 크레딧
├─consumedCreditinteger작업에 사용된 크레딧

상업 서비스-toB/API

[email protected]