이 문서는 웹에서와 동일한 결과를 얻기 위해 코드를 사용하는 방법을 설명합니다. 문서 이후에는 상대 주소 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
},
...
]
}
}
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"
}
}
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와 마찬가지로 폴링을 통해 작업 생성 상태를 확인할 수 있습니다.
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"
}'
경로: /api/job/upload-image
방법: POST
헤더
| 이름 | 값 | 필수 | 예시 |
|---|---|---|---|
| Content-Type | multipart/form-data | 예 | |
| Authorization | Bearer {YOUR KEY} | 예 | Bearer 37f333a2d5f811edb248acde48001122 |
본문
| 이름 | 값 | 필수 |
|---|---|---|
| image | file | 예 |
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| code | integer | 예 | code=0 -> 성공 | ||
| info | string | 아니요 | 오류 정보 | ||
| data | object | 아니요 | |||
| ├─path | string | 아니요 | AliYun OSS의 이미지 경로 |
경로: /api/job/create
방법: POST
헤더
| 이름 | 값 | 필수 | 예시 |
|---|---|---|---|
| Content-Type | application/json | 예 | |
| Authorization | Bearer {YOUR KEY} | 예 | Bearer 37f333a2d5f811edb248acde48001122 |
본문
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| imagePath | string | 아니요 | 업로드된 이미지의 경로(url/oss 모두) | ||
| maskImage | string | 아니요 | AI 편집기는 이 필드를 전달해야 합니다. | ||
| modelId | string | 아니요 | controlModel이 null이면 이 필드를 채워야 합니다. | ||
| prompt | string | 예 | 프롬프트 | ||
| negativePrompt | string | 아니요 | 부정적인 프롬프트 | ||
| controlModel | string | 아니요 | canny / scribble / openpose / mlsd / hed / seg / depth / normal | ||
| controlStrength | number | 아니요 | 1 | [0, 2] | |
| controlFilter | string | 아니요 | control 이미지의 전처리, 예: openpose / openpose_full / openpose_hand / openpose_face / openpose_faceonly | ||
| strength | number | 아니요 | 0.8 | [0.1, 1] | |
| width | integer | 아니요 | 512 | ||
| height | integer | 아니요 | 512 | ||
| steps | integer | 아니요 | 30 | 10 <= value <= 50 | |
| guidanceScale | integer | 아니요 | 7.5 | 0 < value <= 20 | |
| count | integer | 아니요 | 4 | 생성된 이미지 수 |
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| code | number | 예 | 0 -> 성공;1000 -> 크레딧 부족 | ||
| info | string | 아니요 | 오류 정보 | ||
| data | object | 예 | |||
| ├─id | string | 예 | 작업 ID | ||
| ├─credit | integer | 예 | 사용자의 총 크레딧 | ||
| ├─consumedCredit | integer | 예 | 작업에 사용된 크레딧 |
경로: /api/job/get
방법: GET
쿼리
| 이름 | 필수 | 예시 | 참고 |
|---|---|---|---|
| id | 예 | 642ba091592245d79a645b39 | 작업 ID |
| 이름 | Type | 필수 | Default | 참고 | Others |
|---|---|---|---|---|---|
| code | integer | 예 | 0 -> 성공 | ||
| info | string | 아니요 | 오류 정보 | ||
| data | object | 예 | |||
| ├─id | string | 예 | 작업 ID | ||
| ├─createAt | string | 예 | 작업 생성 시간 | ||
| ├─status | integer | 예 | 작업 상태. 0 -> 준비 안 됨; 1 -> 처리 중; 2 -> 성공; 3 -> 실패 | ||
| ├─result | object | 아니요 | |||
| ├─├─info | string | 아니요 | |||
| ├─├─data | object | 아니요 | |||
| ├─├─├─images | string [] | 아니요 | 이미지의 결과 상대 경로 (도메인 필드와 연결해야 함) | item Type:string | |
| ├─├─├─artIds | string [] | 아니요 | 그림 해당 artID | item Type:string | |
| ├─├─├─domain | string | 아니요 | oss url, 그림의 상대 경로를 연결해야 합니다. | ||
| ├─args | object | 아니요 | |||
| ├─├─prompt | string | 아니요 | |||
| ├─├─negativePrompt | string | 아니요 | |||
| ├─├─model | string | 아니요 | |||
| ├─├─strength | integer | 아니요 | |||
| ├─├─width | integer | 아니요 | |||
| ├─├─height | integer | 아니요 |
경로: /api/job/models
방법: GET
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| code | integer | 예 | 0 -> 성공 | ||
| info | string | 아니요 | 오류 정보 | ||
| data | object | 예 | |||
| ├domain | string | 예 | 이미지 oss 도메인 이름, 아래 아이콘 필드를 연결해야 합니다. | ||
| ├models | object [] | 예 | item Type:object | ||
| id | string | 예 | 모델 ID, 작업을 생성할 때 controlModel 매개변수 값은 이 ID입니다. | ||
| name | string | 예 | 영문 이름 | ||
| cname | string | 예 | 중국어 이름 | ||
| icon | string | 예 | 샘플 그림. oss 상대 경로, 도메인을 연결해야 합니다. |
경로: /api/job/list
방법: GET
헤더
| 이름 | 값 | 필수 | 예시 | 참고 |
|---|---|---|---|---|
| Content-Type | application/json | 예 | ||
| Authorization | Bearer {YOUR KEY} | 예 | Bearer 37f333a2d5f811edb248acde48001122 |
Query
| 이름 | 필수 | 예시 | 참고 |
|---|---|---|---|
| pageIndex | 예 | 1부터 시작 | |
| pageSize | 예 |
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| code | integer | 예 | 0 -> 성공 | ||
| info | string | 아니요 | 오류 정보 | ||
| data | object | 예 | |||
| ├─jobs | object [] | 예 | 작업 배열 | item Type:object | |
| ├─├─id | string | 예 | 작업 ID | ||
| ├─├─createdAt | string | 예 | |||
| ├─├─args | object | 예 | |||
| ├─├─├─prompt | string | 예 | |||
| ├─├─├─negativePrompt | string | 예 | |||
| ├─├─├─strength | integer | 예 | |||
| ├─├─├─width | integer | 예 | |||
| ├─├─├─height | integer | 예 | |||
| ├─├─├─count | integer | 예 | |||
| ├─├─├─steps | integer | 예 | |||
| ├─├─arts | object [] | 예 | 생성된 이미지 배열 | item Type:object | |
| ├─├─├─id | string | 예 | 생성된 이미지의 ID | ||
| ├─├─├─images | object [] | 예 | 다양한 그림 배열 | item Type:object | |
| ├─├─├─├─spec | string | 예 | 변형 유형. o -> 원본; 2x/3x/4x -> 2/3/4 배율 이미지 | ||
| ├─├─├─├─path | string | 예 | 이미지 경로. 연결할 도메인 | ||
| ├─├─├─├─size | integer | 예 | 이미지 크기. 단위: 바이트 | ||
| ├─domain | string | 예 | oss 이미지 도메인 |
경로: /api/model/list
방법: GET
헤더
| 이름 | 값 | 필수 | 예시 | 참고 |
|---|---|---|---|---|
| Authorization | Bearer {YOUR KEY} | 예 | Bearer 37f333a2d5f811edb248acde48001122 |
쿼리
| 이름 | 필수 | 예시 | 참고 |
|---|---|---|---|
| pageIndex | 예 | 1부터 시작 | |
| pageSize | 예 | ||
| type | 아니요 | platform/community |
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| code | integer | 예 | 0 -> 성공 | ||
| info | string | 아니요 | 오류 정보 | ||
| data | object | 예 | |||
| ├─domain | string | 예 | oss 도메인 | ||
| ├─total | integer | 예 | 페이징을 위해 필터링된 총 모델 수 | ||
| ├─models | object [] | 예 | item Type:object | ||
| ├─├─id | string | 예 | 모델 ID | ||
| ├─├─name | string | 예 | 모델 이름 | ||
| ├─├─username | string | 예 | model’s author name | ||
| ├─├─desc | string | 예 | 모델 설명 | ||
| ├─├─cover | string | 예 | 모델 표지 | ||
| ├─├─isFavourite | boolean | 예 | 사용자가 모델을 즐겨찾기했는지 여부 | ||
| ├─├─controlNet | boolean | 예 | 모델이 ControlNet을 지원하는지 여부 |
경로: /api/job/upscale
방법: POST
헤더
| 이름 | 값 | 필수 | 예시 | 참고 |
|---|---|---|---|---|
| Content-Type | application/json | 예 | ||
| Authorization | Bearer {YOUR KEY} | 예 | Bearer 37f333a2d5f811edb248acde48001122 |
본문
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| model | string | 아니요 | 업스케일 모델 이름 | ||
| RealESRGAN _x4plus / RealESRGAN_x4plus_anime_6B | |||||
| imagePath | string | 예 | 이미지 경로. 연결할 도메인 | ||
| upscaleFactor | integer | 예 | 2 <= factor <= 4 | ||
| beauty | boolean | 아니요 | 얼굴 향상 활성화 여부 | ||
| artId | string | 예 | 슈퍼 포인트 그림 artID 필요 |
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| code | number | 예 | 0 -> 성공;1000 -> 크레딧 부족 | ||
| info | string | 아니요 | 오류 정보 | ||
| data | object | 예 | |||
| ├─id | string | 아니요 | 업스케일 작업 ID | ||
| ├─credit | integer | 예 | 사용자의 총 크레딧 | ||
| ├─consumedCredit | integer | 예 | 작업에 사용된 크레딧 |
경로: /api/art/segment
방법: POST
헤더
| 이름 | 값 | 필수 | 예시 | 참고 |
|---|---|---|---|---|
| Content-Type | application/json | 예 | ||
| Authorization | Bearer {YOUR KEY} | 예 | Bearer 37f333a2d5f811edb248acde48001122 |
본문
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| image | string | 예 | 이미지 경로. 절대/상대 경로 |
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| code | number | 예 | 0 -> 성공 | ||
| info | string | 아니요 | 오류 정보 | ||
| data | object | 예 | |||
| ├─image | string | 예 | 분할 후 이미지의 URL |
경로: /api/user/profile
방법: GET
헤더
| 이름 | 값 | 필수 | 예시 | 참고 |
|---|---|---|---|---|
| Content-Type | application/json | 예 | ||
| Authorization | Bearer {YOUR KEY} | 예 | Bearer 37f333a2d5f811edb248acde48001122 |
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| code | number | 예 | 0 -> 성공 | ||
| info | string | 아니요 | 오류 정보 | ||
| data | object | 예 | |||
| ├─name | string | 예 | |||
| string | 예 | ||||
| ├─avatar | string | 예 | |||
| ├─phone | string | 예 | |||
| ├─credit | integer | 예 | 사용자의 총 크레딧 | ||
| ├─displayNSFW | boolean | 예 | |||
| ├─discord | boolean | 예 |
경로: api/transform/list
방법: GET
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| code | number | 예 | 0 -> 성공 | ||
| info | string | 아니요 | 오류 정보 | ||
| data | object | 예 | |||
| ├─domain | string | 예 | 이미지 oss 도메인 이름, 아래 아이콘 필드를 연결해야 합니다. | ||
| ├─tags | string[] | 예 | 템플릿 태그 | ||
| ├─transform | object | 예 | |||
| ├─├─tag | object[] | 예 | |||
| ├─├─├─id | string | 예 | |||
| ├─├─├─name | string | 예 | |||
| ├─├─├─image | string | 예 | 원본 이미지 | ||
| ├─├─├─art | string | 예 | 결과 이미지 | ||
| ├─├─├─cost | number | 예 | 크레딧 소비 | ||
| ├─├─├─pro | boolean | 예 | is pro | ||
| ├─├─├─tag | string | 예 | 태그 |
경로: api/transform/create-headshot
방법: POST
헤더
| 이름 | 값 | 필수 | 예시 | 참고 |
|---|---|---|---|---|
| Content-Type | application/json | 예 | ||
| Authorization | Bearer {YOUR KEY} | 예 | Bearer 37f333a2d5f811edb248acde48001122 |
본문
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| imagePath | string | 예 | 호출 시 반환된 이미지 경로 upload-image api | ||
| transformId | string | 예 | |||
| width | integer | 아니요 | |||
| height | integer | 아니요 | |||
| keepHair | boolean | 아니요 | false | ||
| keepPose | boolean | 아니요 | true |
| 이름 | 유형 | 필수 | 기본값 | 참고 | 기타 |
|---|---|---|---|---|---|
| code | number | 예 | 0 -> 성공;1000 -> 크레딧 부족 | ||
| info | string | 아니요 | 오류 정보 | ||
| data | object | 예 | |||
| ├─id | string | 예 | 작업 ID | ||
| ├─credit | integer | 예 | 사용자의 총 크레딧 | ||
| ├─consumedCredit | integer | 예 | 작업에 사용된 크레딧 |