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์˜ˆ

์‘๋‹ต ๋ฐ์ดํ„ฐ

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜๊ธฐ๋ณธ๊ฐ’์ฐธ๊ณ ๊ธฐํƒ€
codeinteger์˜ˆcode=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์ƒ์„ฑ๋œ ์ด๋ฏธ์ง€ ์ˆ˜

์‘๋‹ต ๋ฐ์ดํ„ฐ

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜๊ธฐ๋ณธ๊ฐ’์ฐธ๊ณ ๊ธฐํƒ€
codenumber์˜ˆ0 -> ์„ฑ๊ณต;1000 -> ํฌ๋ ˆ๋”ง ๋ถ€์กฑ
infostring์•„๋‹ˆ์š”์˜ค๋ฅ˜ ์ •๋ณด
dataobject์˜ˆ
โ”œโ”€idstring์˜ˆ์ž‘์—… ID
โ”œโ”€creditinteger์˜ˆ์‚ฌ์šฉ์ž์˜ ์ด ํฌ๋ ˆ๋”ง
โ”œโ”€consumedCreditinteger์˜ˆ์ž‘์—…์— ์‚ฌ์šฉ๋œ ํฌ๋ ˆ๋”ง

3. ์ž‘์—… ๊ฐ€์ ธ์˜ค๊ธฐ

๊ธฐ๋ณธ ์ •๋ณด

๊ฒฝ๋กœ๏ผš /api/job/get

๋ฐฉ๋ฒ•๏ผš GET

์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜

์ฟผ๋ฆฌ

์ด๋ฆ„ํ•„์ˆ˜์˜ˆ์‹œ์ฐธ๊ณ 
id์˜ˆ642ba091592245d79a645b39์ž‘์—… ID

Response Data

์ด๋ฆ„Typeํ•„์ˆ˜Default์ฐธ๊ณ Others
codeinteger์˜ˆ0 -> ์„ฑ๊ณต
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

์‘๋‹ต ๋ฐ์ดํ„ฐ

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜๊ธฐ๋ณธ๊ฐ’์ฐธ๊ณ ๊ธฐํƒ€
codeinteger์˜ˆ0 -> ์„ฑ๊ณต
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

์ด๋ฆ„ํ•„์ˆ˜์˜ˆ์‹œ์ฐธ๊ณ 
pageIndex์˜ˆ1๋ถ€ํ„ฐ ์‹œ์ž‘
pageSize์˜ˆ

์‘๋‹ต ๋ฐ์ดํ„ฐ

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜๊ธฐ๋ณธ๊ฐ’์ฐธ๊ณ ๊ธฐํƒ€
codeinteger์˜ˆ0 -> ์„ฑ๊ณต
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์˜ˆ์ด๋ฏธ์ง€ ํฌ๊ธฐ. ๋‹จ์œ„: ๋ฐ”์ดํŠธ
โ”œโ”€domainstring์˜ˆoss ์ด๋ฏธ์ง€ ๋„๋ฉ”์ธ

6. ๋ชจ๋ธ ๋‚˜์—ด

๊ธฐ๋ณธ ์ •๋ณด

๊ฒฝ๋กœ๏ผš /api/model/list

๋ฐฉ๋ฒ•๏ผš GET

์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜

ํ—ค๋”

์ด๋ฆ„๊ฐ’ํ•„์ˆ˜์˜ˆ์‹œ์ฐธ๊ณ 
AuthorizationBearer {YOUR KEY}์˜ˆBearer 37f333a2d5f811edb248acde48001122

์ฟผ๋ฆฌ

์ด๋ฆ„ํ•„์ˆ˜์˜ˆ์‹œ์ฐธ๊ณ 
pageIndex์˜ˆ1๋ถ€ํ„ฐ ์‹œ์ž‘
pageSize์˜ˆ
type์•„๋‹ˆ์š”platform/community

์‘๋‹ต ๋ฐ์ดํ„ฐ

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜๊ธฐ๋ณธ๊ฐ’์ฐธ๊ณ ๊ธฐํƒ€
codeinteger์˜ˆ0 -> ์„ฑ๊ณต
infostring์•„๋‹ˆ์š”์˜ค๋ฅ˜ ์ •๋ณด
dataobject์˜ˆ
โ”œโ”€domainstring์˜ˆoss ๋„๋ฉ”์ธ
โ”œโ”€totalinteger์˜ˆํŽ˜์ด์ง•์„ ์œ„ํ•ด ํ•„ํ„ฐ๋ง๋œ ์ด ๋ชจ๋ธ ์ˆ˜
โ”œโ”€modelsobject []์˜ˆitem Type:object
โ”œโ”€โ”œโ”€idstring์˜ˆ๋ชจ๋ธ ID
โ”œโ”€โ”œโ”€namestring์˜ˆ๋ชจ๋ธ ์ด๋ฆ„
โ”œโ”€โ”œโ”€usernamestring์˜ˆmodelโ€™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์˜ˆ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ. ์—ฐ๊ฒฐํ•  ๋„๋ฉ”์ธ
upscaleFactorinteger์˜ˆ2 <= factor <= 4
beautyboolean์•„๋‹ˆ์š”์–ผ๊ตด ํ–ฅ์ƒ ํ™œ์„ฑํ™” ์—ฌ๋ถ€
artIdstring์˜ˆ์Šˆํผ ํฌ์ธํŠธ ๊ทธ๋ฆผ artID ํ•„์š”

์‘๋‹ต ๋ฐ์ดํ„ฐ

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜๊ธฐ๋ณธ๊ฐ’์ฐธ๊ณ ๊ธฐํƒ€
codenumber์˜ˆ0 -> ์„ฑ๊ณต;1000 -> ํฌ๋ ˆ๋”ง ๋ถ€์กฑ
infostring์•„๋‹ˆ์š”์˜ค๋ฅ˜ ์ •๋ณด
dataobject์˜ˆ
โ”œโ”€idstring์•„๋‹ˆ์š”์—…์Šค์ผ€์ผ ์ž‘์—… ID
โ”œโ”€creditinteger์˜ˆ์‚ฌ์šฉ์ž์˜ ์ด ํฌ๋ ˆ๋”ง
โ”œโ”€consumedCreditinteger์˜ˆ์ž‘์—…์— ์‚ฌ์šฉ๋œ ํฌ๋ ˆ๋”ง

8. ์ด๋ฏธ์ง€ ๋ถ„ํ• 

๊ธฐ๋ณธ ์ •๋ณด

๊ฒฝ๋กœ๏ผš /api/art/segment

๋ฐฉ๋ฒ•๏ผš POST

์š”์ฒญ ๋งค๊ฐœ๋ณ€์ˆ˜

ํ—ค๋”

์ด๋ฆ„๊ฐ’ํ•„์ˆ˜์˜ˆ์‹œ์ฐธ๊ณ 
Content-Typeapplication/json์˜ˆ
AuthorizationBearer {YOUR KEY}์˜ˆBearer 37f333a2d5f811edb248acde48001122

๋ณธ๋ฌธ

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜๊ธฐ๋ณธ๊ฐ’์ฐธ๊ณ ๊ธฐํƒ€
imagestring์˜ˆ์ด๋ฏธ์ง€ ๊ฒฝ๋กœ. ์ ˆ๋Œ€/์ƒ๋Œ€ ๊ฒฝ๋กœ

์‘๋‹ต ๋ฐ์ดํ„ฐ

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜๊ธฐ๋ณธ๊ฐ’์ฐธ๊ณ ๊ธฐํƒ€
codenumber์˜ˆ0 -> ์„ฑ๊ณต
infostring์•„๋‹ˆ์š”์˜ค๋ฅ˜ ์ •๋ณด
dataobject์˜ˆ
โ”œโ”€imagestring์˜ˆ๋ถ„ํ•  ํ›„ ์ด๋ฏธ์ง€์˜ URL

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. ํ—ค๋“œ์ƒท ์ƒ์„ฑ

10.1 ํ…œํ”Œ๋ฆฟ ๋‚˜์—ด

๊ธฐ๋ณธ ์ •๋ณด

๊ฒฝ๋กœ๏ผš api/transform/list

๋ฐฉ๋ฒ•๏ผš GET

์‘๋‹ต ๋ฐ์ดํ„ฐ

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜๊ธฐ๋ณธ๊ฐ’์ฐธ๊ณ ๊ธฐํƒ€
codenumber์˜ˆ0 -> ์„ฑ๊ณต
infostring์•„๋‹ˆ์š”์˜ค๋ฅ˜ ์ •๋ณด
dataobject์˜ˆ
โ”œโ”€domainstring์˜ˆ์ด๋ฏธ์ง€ oss ๋„๋ฉ”์ธ ์ด๋ฆ„, ์•„๋ž˜ ์•„์ด์ฝ˜ ํ•„๋“œ๋ฅผ ์—ฐ๊ฒฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
โ”œโ”€tagsstring[]์˜ˆํ…œํ”Œ๋ฆฟ ํƒœ๊ทธ
โ”œโ”€transformobject์˜ˆ
โ”œโ”€โ”œโ”€tagobject[]์˜ˆ
โ”œโ”€โ”œโ”€โ”œโ”€idstring์˜ˆ
โ”œโ”€โ”œโ”€โ”œโ”€namestring์˜ˆ
โ”œโ”€โ”œโ”€โ”œโ”€imagestring์˜ˆ์›๋ณธ ์ด๋ฏธ์ง€
โ”œโ”€โ”œโ”€โ”œโ”€artstring์˜ˆ๊ฒฐ๊ณผ ์ด๋ฏธ์ง€
โ”œโ”€โ”œโ”€โ”œโ”€costnumber์˜ˆํฌ๋ ˆ๋”ง ์†Œ๋น„
โ”œโ”€โ”œโ”€โ”œโ”€proboolean์˜ˆis 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

์‘๋‹ต ๋ฐ์ดํ„ฐ

์ด๋ฆ„์œ ํ˜•ํ•„์ˆ˜๊ธฐ๋ณธ๊ฐ’์ฐธ๊ณ ๊ธฐํƒ€
codenumber์˜ˆ0 -> ์„ฑ๊ณต;1000 -> ํฌ๋ ˆ๋”ง ๋ถ€์กฑ
infostring์•„๋‹ˆ์š”์˜ค๋ฅ˜ ์ •๋ณด
dataobject์˜ˆ
โ”œโ”€idstring์˜ˆ์ž‘์—… ID
โ”œโ”€creditinteger์˜ˆ์‚ฌ์šฉ์ž์˜ ์ด ํฌ๋ ˆ๋”ง
โ”œโ”€consumedCreditinteger์˜ˆ์ž‘์—…์— ์‚ฌ์šฉ๋œ ํฌ๋ ˆ๋”ง

์ƒ์—… ์„œ๋น„์Šค-toB/API

[email protected]