소개

API 문서입니다.

공통 사항

API 문서에서 공통으로 사용되는 내용을 정의합니다.

공통 응답 구조

성공 응답

{
  "status": 200,
  "data": { ... }
}
  • status: HTTP 상태 코드

  • data: 실제 응답 데이터

실패 응답

{
  "status": 400,
  "error": {
    "errorCode": "COMMON_2",
    "message": "요청 변수가 잘못되었습니다."
  }
}
  • status: HTTP 상태 코드

  • errorCode: 에러 코드

  • message: 에러 메시지

상태 코드

상태 코드

의미

설명

200

OK

요청이 성공적으로 처리됨

401

Unauthorized

인증 실패 (잘못된 토큰 등)

404

Not Found

리소스를 찾을 수 없음

409

Conflict

리소스 충돌 (중복 등)

500

Internal Server Error

서버 내부 오류

Authorization

  • Authorization: Bearer 액세스 토큰 (필수)

  • 형식: Bearer {token}

  • 인증이 필요한 API 호출 시 반드시 포함

Auth API

1. 회원가입 인증번호 전송 07/13 수정

요청(Request)

POST /api/auth/create/send HTTP/1.1
Content-Type: application/json
Content-Length: 62
Host: api.roomgenie.team9.com

{
  "phoneNumber" : "82",
  "countryCode" : "01012345678"
}

요청 필드 설명(Request Fields)

Path Type Description

countryCode

String

국가 코드

phoneNumber

String

휴대폰 번호

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 68

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공 메시지

1-1 회원가입 인증번호 전송 (이미 가입된 번호) 07/13 수정

응답(Response)

HTTP/1.1 409 Conflict
Content-Type: application/json
Content-Length: 127

{
  "status" : 409,
  "data" : {
    "errorCode" : "USER_3",
    "message" : "이미 가입된 사용자입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

USER_3

data.message

String

이미 가입된 사용자입니다. - 계정이 이미 생성되었음으로 로그인으로 유도 해야함

2. 회원가입을 위한 휴대폰 인증 번호 확인 08/05 수정

요청(Request)

POST /api/auth/create/verify HTTP/1.1
Content-Type: application/json
Content-Length: 205
Host: api.roomgenie.team9.com

{
  "userName" : "testName",
  "phoneNumber" : "01012345678",
  "countryCode" : "82",
  "verificationCode" : "123",
  "deviceId" : "testDeviceId",
  "provider" : "ios",
  "appToken" : "testToken"
}

요청 필드 설명(Request Fields)

Path Type Description

phoneNumber

String

휴대폰 번호

countryCode

String

국가 코드

verificationCode

String

인증번호

deviceId

String

디바이스 아이디(디바이스 식별을 위한 정보)

provider

String

플랫폼(ios, android)

appToken

String

앱 토큰(푸시 토큰)

userName

String

사용자 이름

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 115

{
  "status" : 200,
  "data" : {
    "accessToken" : "accessToken",
    "refreshToken" : "refreshToken"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.accessToken

String

액세스 토큰

data.refreshToken

String

리프레시 토큰

2-1 회원가입을 위한 휴대폰 인증 번호 확인 (이미 가입된 번호) 08/05 수정

응답(Response)

HTTP/1.1 409 Conflict
Content-Type: application/json
Content-Length: 127

{
  "status" : 409,
  "data" : {
    "errorCode" : "USER_3",
    "message" : "이미 가입된 사용자입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

USER_3

data.message

String

이미 가입된 사용자입니다. - 계정이 이미 생성되었으므로 로그인으로 유도 해야함. 다만, 전화번호 인증 요청시 이미 검증이 되었는데 발생한 잘못된 접근 임.

2-2 회원가입을 위한 휴대폰 인증 번호 확인 (인증번호 불일치) 08/05 수정

응답(Response)

HTTP/1.1 401 Unauthorized
Content-Type: application/json
Content-Length: 124

{
  "status" : 401,
  "data" : {
    "errorCode" : "AUTH_1",
    "message" : "인증 번호가 틀렸습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

401

data.errorCode

String

AUTH_1

data.message

String

인증 번호가 틀렸습니다. - 휴대폰 인증번호가 잘못되었음 - 재인증 요청으로 유도해야함

2-3 회원가입을 위한 휴대폰 인증 번호 확인 (인증번호 만료) 08/05 수정

응답(Response)

HTTP/1.1 401 Unauthorized
Content-Type: application/json
Content-Length: 130

{
  "status" : 401,
  "data" : {
    "errorCode" : "AUTH_2",
    "message" : "인증 번호가 만료되었습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

401

data.errorCode

String

AUTH_2

data.message

String

인증 번호가 만료되었습니다. - 휴대폰 인증번호가 만료됨 - 재인증 요청으로 유도해야함

3. 비밀번호 생성 08/05 수정

요청(Request)

POST /api/auth/create/password HTTP/1.1
Content-Type: application/json
Authorization: Bearer access-token
Content-Length: 100
Host: api.roomgenie.team9.com

{
  "email" : "yhkim052556@naver.com",
  "birth" : "2001-05-25",
  "password" : "testPassword"
}

요청헤더(Request Headers)

Name Description

Authorization

Bearer 액세스 토큰

요청 필드 설명(Request Fields)

Path Type Description

password

String

생성할 비밀번호

birth

String

생년월일 (yyyy-MM-dd 형식)

email

String

이메일

응답(Response)

HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 75

{
  "status" : 201,
  "data" : {
    "message" : "생성 완료"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공 메시지

4. 로그인 08/05 수정

요청(Request)

POST /api/auth/login HTTP/1.1
Content-Type: application/json
Content-Length: 150
Host: api.roomgenie.team9.com

{
  "email" : "test@naver.com",
  "password" : "testPassword",
  "deviceId" : "testDeviceId",
  "provider" : "ios",
  "appToken" : "testToken"
}

요청 필드 설명(Request Fields)

Path Type Description

email

String

아이디

password

String

비밀번호

deviceId

String

디바이스 아이디(디바이스 식별을 위한 정보)

provider

String

플랫폼(ios, android)

appToken

String

앱 토큰(푸시 토큰)

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 115

{
  "status" : 200,
  "data" : {
    "accessToken" : "accessToken",
    "refreshToken" : "refreshToken"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.accessToken

String

액세스 토큰

data.refreshToken

String

리프레시 토큰

4-1 로그인 (비밀번호 불일치) 08/05 수정

응답(Response)

HTTP/1.1 401 Unauthorized
Content-Type: application/json
Content-Length: 123

{
  "status" : 401,
  "data" : {
    "errorCode" : "AUTH_9",
    "message" : "비밀번호가 틀렸습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

401

data.errorCode

String

AUTH_9

data.message

String

비밀번호가 틀렸습니다. - 비밀번호가 잘못되었음 - 새로운 인증 번호 요청으로 유도해야함

4-2 로그인 (존재하지 않는 사용자) 08/05 수정

응답(Response)

HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 119

{
  "status" : 404,
  "data" : {
    "errorCode" : "USER_1",
    "message" : "회원을 찾을 수 없음."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

USER_1

data.message

String

회원을 찾을 수 없음. - 계정이 존재하지 않음으로 회원가입을 유도해야함 - 로그인시 휴대폰 인증 할때 이미 존재 유무를 검증하는데 이때 오류 발생시 잘못된 접근

Mission API

1. 오늘의 미션 추천

요청(Request)

GET /api/today-mission/recommend HTTP/1.1
Authorization: Bearer testToken
Host: api.roomgenie.team9.com

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 116

{
  "status" : 200,
  "data" : {
    "missionId" : "123",
    "content" : "오늘의 미션: 방 청소"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.missionId

String

오늘의 미션 ID

data.content

String

오늘의 미션 내용

1-1. 오늘의 미션 추천 - 실패 (미션 없음)

요청(Request)

GET /api/today-mission/recommend HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer testToken
Accept: application/json
Host: api.roomgenie.team9.com

응답(Response)

HTTP/1.1 404 Not Found
Content-Type: application/json;charset=UTF-8
Content-Length: 130

{
  "status" : 404,
  "data" : {
    "errorCode" : "MISSION_1",
    "message" : "미션이 존재하지 않습니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

MISSION_1

data.message

String

미션이 존재하지 않습니다. - 미션이 존재하지 않는 경우 - 등록된 미션이 하나도 없을 때

2. 오늘의 미션 직접 생성 - 성공

요청(Request)

POST /api/today-mission HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer testToken
Accept: application/json;charset=UTF-8
Content-Length: 45
Host: localhost:8080

{"mission":"나만의 미션: 빨래 개기"}

요청 필드 설명(Request Fields)

Path Type Description

mission

String

사용자가 입력한 커스텀 미션 내용

응답(Response)

HTTP/1.1 201 Created
Content-Type: application/json;charset=UTF-8
Content-Length: 49

{"status":201,"data":{"message":"생성 완료"}}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공 메시지

2-1. 오늘의 미션 직접 생성 - 실패 (미션 초과)

요청(Request)

POST /api/today-mission HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer testToken
Accept: application/json;charset=UTF-8
Content-Length: 33
Host: localhost:8080

{"mission":"청소기 돌리기"}

요청 필드 설명(Request Fields)

Path Type Description

mission

String

사용자가 입력한 오늘의 미션

응답(Response)

HTTP/1.1 409 Conflict
Content-Type: application/json;charset=UTF-8
Content-Length: 125

{"status":409,"data":{"errorCode":"MISSION_2","message":"오늘의 미션은 최대 3개까지 등록할 수 있습니다."}}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

MISSION_2

data.message

String

오늘의 미션은 최대 3개까지 등록할 수 있습니다. - 오늘의 미션 개수가 3개를 초과한 경우

3. 추천 미션 수락 - 성공

요청(Request)

POST /api/today-mission/accept HTTP/1.1
Content-Type: application/json;charset=UTF-8
Authorization: Bearer testToken
Accept: application/json
Content-Length: 34
Host: api.roomgenie.team9.com

{
  "missionId" : "mission123"
}

요청 필드 설명(Request Fields)

Path Type Description

missionId

String

수락할 추천 미션 ID

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 68

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

4. 오늘의 미션 목록 조회

요청(Request)

GET /api/today-mission/ HTTP/1.1
Authorization: Bearer testToken
Accept: application/json;charset=UTF-8
Host: api.roomgenie.team9.com

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 309

{
  "status" : 200,
  "data" : [ {
    "missionId" : "m1",
    "content" : "방 청소",
    "targetDate" : "2025-08-18 10:30:00",
    "status" : "ONGOING"
  }, {
    "missionId" : "m2",
    "content" : "빨래 개기",
    "targetDate" : "2025-08-18 12:00:00",
    "status" : "COMPLETED"
  } ]
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data[].missionId

String

오늘의 미션 ID

data[].content

String

미션 내용

data[].targetDate

String

목표 날짜/시간(yyyy-MM-dd HH:mm:ss)

data[].status

String

미션 상태 (ONGOING/COMPLETED 등)

5. 오늘의 미션 단건 조회

요청(Request)

GET /api/today-mission/m1/ HTTP/1.1
Authorization: Bearer testToken
Accept: application/json;charset=UTF-8
Host: api.roomgenie.team9.com

경로 변수(Path Parameters)

Table 1. /api/today-mission/{todayMissionId}/
Parameter Description

todayMissionId

오늘의 미션 ID

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
Content-Length: 167

{
  "status" : 200,
  "data" : {
    "missionId" : "m1",
    "content" : "방 청소",
    "targetDate" : "2025-08-18 10:30:00",
    "status" : "ONGOING"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.missionId

String

오늘의 미션 ID

data.content

String

미션 내용

data.targetDate

String

목표 날짜/시간(yyyy-MM-dd HH:mm:ss)

data.status

String

미션 상태

Friend API

1. 친구 추가

요청(Request)

POST /api/friend HTTP/1.1
Content-Type: application/json
Authorization: Bearer testToken
Content-Length: 35
Host: api.roomgenie.team9.com

{
  "targetId" : "targetUserId"
}

요청 필드 설명(Request Fields)

Path Type Description

targetId

String

친구 추가할 대상 사용자 ID

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 68

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공 메시지

1-1. 친구 추가 - 실패 (이미 친구)

요청(Request)

POST /api/friend HTTP/1.1
Content-Type: application/json
Authorization: Bearer testToken
Content-Length: 35
Host: api.roomgenie.team9.com

{
  "targetId" : "targetUserId"
}

응답(Response)

HTTP/1.1 409 Conflict
Content-Type: application/json
Content-Length: 126

{
  "status" : 409,
  "data" : {
    "errorCode" : "FRIEND_2",
    "message" : "이미 추가된 친구입니다."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

409

data.errorCode

String

FRIEND_2

data.message

String

이미 추가된 친구입니다. - 이미 친구인 사용자에게 다시 요청한 경우

2. 친구 삭제

요청(Request)

DELETE /api/friend HTTP/1.1
Content-Type: application/json
Authorization: Bearer testToken
Content-Length: 35
Host: api.roomgenie.team9.com

{
  "targetId" : "targetUserId"
}

요청 필드 설명(Request Fields)

Path Type Description

targetId

String

친구 삭제할 대상 사용자 ID

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 68

{
  "status" : 200,
  "data" : {
    "message" : "성공"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.message

String

성공 메시지

3. 친구 목록 조회

요청(Request)

GET /api/friend/list HTTP/1.1
Authorization: Bearer testToken
Host: api.roomgenie.team9.com

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 229

{
  "status" : 200,
  "data" : {
    "friends" : [ {
      "friendId" : "friendId1",
      "name" : "친구1",
      "email" : "friend@test.com",
      "status" : "friend",
      "birthday" : "2000-01-01"
    } ]
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.friends[]

Array

친구 목록

data.friends[].friendId

String

친구 사용자 ID

data.friends[].name

String

친구 이름

data.friends[].email

String

친구 이메일

data.friends[].status

String

친구 상태 (friend, normal)

data.friends[].birthday

String

친구 생년월일

Post API

1. 게시글 생성

요청(Request)

POST /api/post HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer testToken
Accept: application/json
Host: api.roomgenie.team9.com

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=files; filename=test.png
Content-Type: image/png

�PNG


IHDR�wS?IDATx^c```ҭ?IEND�B`?
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

요청 파트(Request Parts)

Part Description

files

업로드할 이미지 파일 (복수 가능)

응답(Response)

HTTP/1.1 201 Created
Content-Type: application/json
Content-Length: 70

{
  "status" : 201,
  "data" : {
    "postId" : "newPostId"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.postId

String

생성된 게시글 ID

2. 게시글 목록 조회

요청(Request)

GET /api/post?friendIds=friend1 HTTP/1.1
Authorization: Bearer testToken
Accept: application/json
Host: api.roomgenie.team9.com

요청 파라미터(Query Parameters)

Parameter Description

friendIds

조회할 친구 ID 목록

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 423

{
  "status" : 200,
  "data" : {
    "posts" : [ {
      "postId" : "post1",
      "uploadTime" : "2026-04-01 10:00:00",
      "title" : "청소 기록",
      "content" : "거실 청소!",
      "postDetails" : [ ],
      "comments" : [ {
        "userId" : "commenter1",
        "postId" : "post1",
        "content" : "잘했어요!",
        "uploadTime" : "2026-04-01 11:00:00"
      } ]
    } ]
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.posts[]

Array

게시글 목록

data.posts[].postId

String

게시글 ID

data.posts[].uploadTime

String

업로드 시간 (yyyy-MM-dd HH:mm:ss)

data.posts[].title

String

게시글 제목

data.posts[].content

String

게시글 내용

data.posts[].postDetails[]

Array

첨부 파일 목록

data.posts[].comments[]

Array

댓글 목록

data.posts[].comments[].userId

String

댓글 작성자 ID

data.posts[].comments[].postId

String

댓글 대상 게시글 ID

data.posts[].comments[].content

String

댓글 내용

data.posts[].comments[].uploadTime

String

댓글 작성 시간

User API

1. 사용자 검색

요청(Request)

GET /api/users/search?name=%ED%85%8C%EC%8A%A4%ED%8A%B8%EC%9C%A0%EC%A0%80 HTTP/1.1
Authorization: Bearer testToken
Host: api.roomgenie.team9.com

요청 파라미터(Query Parameters)

Parameter Description

name

검색할 사용자 이름

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 109

{
  "status" : 200,
  "data" : {
    "userId" : "foundUserId",
    "userName" : "테스트유저"
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

상태 코드

data.userId

String

검색된 사용자 ID

data.userName

String

검색된 사용자 이름

1-1. 사용자 검색 - 실패 (존재하지 않는 사용자)

요청(Request)

GET /api/users/search?name=%EC%97%86%EB%8A%94%EC%9C%A0%EC%A0%80 HTTP/1.1
Authorization: Bearer testToken
Host: api.roomgenie.team9.com

응답(Response)

HTTP/1.1 404 Not Found
Content-Type: application/json
Content-Length: 119

{
  "status" : 404,
  "data" : {
    "errorCode" : "USER_1",
    "message" : "회원을 찾을 수 없음."
  }
}

응답 필드 설명(Response Fields)

Path Type Description

status

Number

404

data.errorCode

String

USER_1

data.message

String

회원을 찾을 수 없음. - 해당 이름의 사용자가 존재하지 않는 경우

AI API

1. 이미지 분석

요청(Request)

POST /ai/image/analysis HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer testToken
Accept: application/json
Host: api.roomgenie.team9.com

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=image; filename=room.png
Content-Type: image/png

�PNG


IHDR�wS?IDATx^c```ҭ?IEND�B`?
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

요청 파트(Request Parts)

Part Description

image

분석할 방 이미지 파일

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 148

{
  "choices" : [ {
    "index" : 0,
    "message" : {
      "role" : "assistant",
      "content" : "방이 깨끗합니다."
    }
  } ]
}

응답 필드 설명(Response Fields)

Path Type Description

choices[]

Array

AI 응답 목록

choices[].index

Number

응답 인덱스

choices[].message.role

String

메시지 역할 (assistant)

choices[].message.content

String

AI 분석 결과 텍스트

2. 미션 이미지 비교 검증

요청(Request)

POST /ai/image/mission-verify/mission123 HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer testToken
Accept: application/json
Host: api.roomgenie.team9.com

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=beforeImage; filename=before.png
Content-Type: image/png

�PNG


IHDR�wS?IDATx^c```ҭ?IEND�B`?
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=afterImage; filename=after.png
Content-Type: image/png

�PNG


IHDR�wS?IDATx^c```ҭ?IEND�B`?
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

요청 파트(Request Parts)

Part Description

beforeImage

미션 수행 전 이미지

afterImage

미션 수행 후 이미지

경로 변수(Path Parameters)

Table 2. /ai/image/mission-verify/{todayMissionId}
Parameter Description

todayMissionId

검증할 오늘의 미션 ID

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 59

"미션 완료! 방이 깨끗하게 정리되었습니다."

3. 방 이미지 정리 생성

요청(Request)

POST /ai/image/generate HTTP/1.1
Content-Type: multipart/form-data; boundary=6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Authorization: Bearer testToken
Accept: application/json
Host: api.roomgenie.team9.com

--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm
Content-Disposition: form-data; name=image; filename=messy-room.png
Content-Type: image/png

�PNG


IHDR�wS?IDATx^c```ҭ?IEND�B`?
--6o2knFse3p53ty9dmcQvWAIx1zInP11uCfbm--

요청 파트(Request Parts)

Part Description

image

정리할 방 이미지 파일

응답(Response)

HTTP/1.1 200 OK
Content-Type: application/json
Content-Length: 282

{
  "choices" : [ {
    "index" : 0,
    "message" : {
      "role" : "assistant",
      "content" : "https://s3.example.com/cleaned-room.jpg\n\nGPT Analysis:\n방이 깔끔하게 정리되었습니다. 침대 정리와 바닥 청소가 완료되었습니다."
    }
  } ]
}

응답 필드 설명(Response Fields)

Path Type Description

choices[]

Array

AI 응답 목록

choices[].index

Number

응답 인덱스

choices[].message.role

String

메시지 역할 (assistant)

choices[].message.content

String

정리된 이미지 URL + AI 분석 텍스트