{"openapi":"3.0.3","info":{"title":"APICK LLM 대화 세션 관리 API","version":"1.0.0","description":"대화 기록을 서버에 맡깁니다. 세션을 만든 뒤 대화 API에 session_id와 이번 질문만 보내면 앞선 대화가 이어집니다. 모든 대화 모델에서 쓸 수 있고 세션 생성·조회·보관은 무료입니다."},"servers":[{"url":"https://apick.app"}],"paths":{"/rest/llm/sessions/create":{"post":{"summary":"LLM 대화 세션 관리 API","description":"대화 기록을 서버에 맡깁니다. 세션을 만든 뒤 대화 API에 session_id와 이번 질문만 보내면 앞선 대화가 이어집니다. 모든 대화 모델에서 쓸 수 있고 세션 생성·조회·보관은 무료입니다.","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"서비스별 성공·처리 상태 응답","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"session_id":{"type":"string","description":"세션 ID(create·get·reset·delete)"},"title":{"type":"string","description":"세션 이름"},"model":{"type":"string","description":"마지막 대화에 쓴 모델 ID","nullable":true},"message_count":{"type":"integer","description":"저장된 메시지 수(system 제외)"},"created_at":{"type":"string","description":"만든 시각(ISO 8601)"},"updated_at":{"type":"string","description":"마지막으로 대화한 시각"},"expires_at":{"type":"string","description":"자동으로 지워지는 시각"},"system":{"type":"string","description":"저장된 지시문(get·reset). 비어 있으면 기본 지시문을 씁니다."},"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"description":"저장된 대화(get·reset). role·content 순서대로 들어 있습니다."},"ic_id":{"nullable":true},"result":{"type":"integer"},"msg":{"type":"string"},"success":{"type":"integer"},"sessions":{"type":"array","description":"list의 세션 목록. 항목마다 위의 session_id~expires_at가 있고 대화 내용은 없습니다.","items":{}},"total":{"type":"integer","description":"list에서 보관 중인 전체 세션 수"},"deleted":{"type":"boolean","description":"delete 성공 시 true"}}},"api":{"type":"object","properties":{"success":{"type":"boolean"},"cost":{"type":"integer","description":"항상 0"},"ms":{"type":"integer"},"pl_id":{"nullable":true}}}}}}}},"default":{"description":"HTTP 상태 및 서비스 오류코드 확인","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"session_id":{"type":"string","description":"세션 ID(llms_로 시작). get·reset·delete에서 필수입니다. (string)"},"system":{"type":"string","description":"대화 전체에 적용할 지시문(최대 100,000자). create에서 저장하고, reset에서 보내면 바꿉니다. 비워 두면 한국어로 답하도록 하는 기본 지시문을 씁니다. (string)","example":"당신은 쇼핑몰 반품 상담원입니다. 존댓말로 짧게 답합니다."},"title":{"type":"string","description":"create에서 붙이는 세션 이름(최대 100자). 생략하면 첫 질문 앞부분으로 정해집니다. (string)","example":"반품 상담"},"model":{"type":"string","description":"create에서 기록해 둘 모델 ID. 실제 대화의 모델은 대화 요청의 model이 정합니다. (string)"},"limit":{"type":"string","description":"list에서 받을 개수. 기본 20, 최대 100. 숫자로 보내며, 허용 범위를 벗어나면 요청이 거부됩니다. (integer)"},"offset":{"type":"string","description":"list에서 건너뛸 개수. 기본 0. 최근에 쓴 세션부터 정렬됩니다. 숫자로 보내며, 허용 범위를 벗어나면 요청이 거부됩니다. (integer)"}}}}}}}},"/rest/llm/sessions/list":{"post":{"summary":"LLM 대화 세션 관리 API","description":"대화 기록을 서버에 맡깁니다. 세션을 만든 뒤 대화 API에 session_id와 이번 질문만 보내면 앞선 대화가 이어집니다. 모든 대화 모델에서 쓸 수 있고 세션 생성·조회·보관은 무료입니다.","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"서비스별 성공·처리 상태 응답","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"session_id":{"type":"string","description":"세션 ID(create·get·reset·delete)"},"title":{"type":"string","description":"세션 이름"},"model":{"type":"string","description":"마지막 대화에 쓴 모델 ID","nullable":true},"message_count":{"type":"integer","description":"저장된 메시지 수(system 제외)"},"created_at":{"type":"string","description":"만든 시각(ISO 8601)"},"updated_at":{"type":"string","description":"마지막으로 대화한 시각"},"expires_at":{"type":"string","description":"자동으로 지워지는 시각"},"system":{"type":"string","description":"저장된 지시문(get·reset). 비어 있으면 기본 지시문을 씁니다."},"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"description":"저장된 대화(get·reset). role·content 순서대로 들어 있습니다."},"ic_id":{"nullable":true},"result":{"type":"integer"},"msg":{"type":"string"},"success":{"type":"integer"},"sessions":{"type":"array","description":"list의 세션 목록. 항목마다 위의 session_id~expires_at가 있고 대화 내용은 없습니다.","items":{}},"total":{"type":"integer","description":"list에서 보관 중인 전체 세션 수"},"deleted":{"type":"boolean","description":"delete 성공 시 true"}}},"api":{"type":"object","properties":{"success":{"type":"boolean"},"cost":{"type":"integer","description":"항상 0"},"ms":{"type":"integer"},"pl_id":{"nullable":true}}}}}}}},"default":{"description":"HTTP 상태 및 서비스 오류코드 확인","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"session_id":{"type":"string","description":"세션 ID(llms_로 시작). get·reset·delete에서 필수입니다. (string)"},"system":{"type":"string","description":"대화 전체에 적용할 지시문(최대 100,000자). create에서 저장하고, reset에서 보내면 바꿉니다. 비워 두면 한국어로 답하도록 하는 기본 지시문을 씁니다. (string)"},"title":{"type":"string","description":"create에서 붙이는 세션 이름(최대 100자). 생략하면 첫 질문 앞부분으로 정해집니다. (string)"},"model":{"type":"string","description":"create에서 기록해 둘 모델 ID. 실제 대화의 모델은 대화 요청의 model이 정합니다. (string)"},"limit":{"type":"string","description":"list에서 받을 개수. 기본 20, 최대 100. 숫자로 보내며, 허용 범위를 벗어나면 요청이 거부됩니다. (integer)"},"offset":{"type":"string","description":"list에서 건너뛸 개수. 기본 0. 최근에 쓴 세션부터 정렬됩니다. 숫자로 보내며, 허용 범위를 벗어나면 요청이 거부됩니다. (integer)"}}}}}}}},"/rest/llm/sessions/get":{"post":{"summary":"LLM 대화 세션 관리 API","description":"대화 기록을 서버에 맡깁니다. 세션을 만든 뒤 대화 API에 session_id와 이번 질문만 보내면 앞선 대화가 이어집니다. 모든 대화 모델에서 쓸 수 있고 세션 생성·조회·보관은 무료입니다.","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"서비스별 성공·처리 상태 응답","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"session_id":{"type":"string","description":"세션 ID(create·get·reset·delete)"},"title":{"type":"string","description":"세션 이름"},"model":{"type":"string","description":"마지막 대화에 쓴 모델 ID","nullable":true},"message_count":{"type":"integer","description":"저장된 메시지 수(system 제외)"},"created_at":{"type":"string","description":"만든 시각(ISO 8601)"},"updated_at":{"type":"string","description":"마지막으로 대화한 시각"},"expires_at":{"type":"string","description":"자동으로 지워지는 시각"},"system":{"type":"string","description":"저장된 지시문(get·reset). 비어 있으면 기본 지시문을 씁니다."},"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"description":"저장된 대화(get·reset). role·content 순서대로 들어 있습니다."},"ic_id":{"nullable":true},"result":{"type":"integer"},"msg":{"type":"string"},"success":{"type":"integer"},"sessions":{"type":"array","description":"list의 세션 목록. 항목마다 위의 session_id~expires_at가 있고 대화 내용은 없습니다.","items":{}},"total":{"type":"integer","description":"list에서 보관 중인 전체 세션 수"},"deleted":{"type":"boolean","description":"delete 성공 시 true"}}},"api":{"type":"object","properties":{"success":{"type":"boolean"},"cost":{"type":"integer","description":"항상 0"},"ms":{"type":"integer"},"pl_id":{"nullable":true}}}}}}}},"default":{"description":"HTTP 상태 및 서비스 오류코드 확인","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"session_id":{"type":"string","description":"세션 ID(llms_로 시작). get·reset·delete에서 필수입니다. (string)"},"system":{"type":"string","description":"대화 전체에 적용할 지시문(최대 100,000자). create에서 저장하고, reset에서 보내면 바꿉니다. 비워 두면 한국어로 답하도록 하는 기본 지시문을 씁니다. (string)"},"title":{"type":"string","description":"create에서 붙이는 세션 이름(최대 100자). 생략하면 첫 질문 앞부분으로 정해집니다. (string)"},"model":{"type":"string","description":"create에서 기록해 둘 모델 ID. 실제 대화의 모델은 대화 요청의 model이 정합니다. (string)"},"limit":{"type":"string","description":"list에서 받을 개수. 기본 20, 최대 100. 숫자로 보내며, 허용 범위를 벗어나면 요청이 거부됩니다. (integer)"},"offset":{"type":"string","description":"list에서 건너뛸 개수. 기본 0. 최근에 쓴 세션부터 정렬됩니다. 숫자로 보내며, 허용 범위를 벗어나면 요청이 거부됩니다. (integer)"}}}}}}}},"/rest/llm/sessions/reset":{"post":{"summary":"LLM 대화 세션 관리 API","description":"대화 기록을 서버에 맡깁니다. 세션을 만든 뒤 대화 API에 session_id와 이번 질문만 보내면 앞선 대화가 이어집니다. 모든 대화 모델에서 쓸 수 있고 세션 생성·조회·보관은 무료입니다.","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"서비스별 성공·처리 상태 응답","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"session_id":{"type":"string","description":"세션 ID(create·get·reset·delete)"},"title":{"type":"string","description":"세션 이름"},"model":{"type":"string","description":"마지막 대화에 쓴 모델 ID","nullable":true},"message_count":{"type":"integer","description":"저장된 메시지 수(system 제외)"},"created_at":{"type":"string","description":"만든 시각(ISO 8601)"},"updated_at":{"type":"string","description":"마지막으로 대화한 시각"},"expires_at":{"type":"string","description":"자동으로 지워지는 시각"},"system":{"type":"string","description":"저장된 지시문(get·reset). 비어 있으면 기본 지시문을 씁니다."},"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"description":"저장된 대화(get·reset). role·content 순서대로 들어 있습니다."},"ic_id":{"nullable":true},"result":{"type":"integer"},"msg":{"type":"string"},"success":{"type":"integer"},"sessions":{"type":"array","description":"list의 세션 목록. 항목마다 위의 session_id~expires_at가 있고 대화 내용은 없습니다.","items":{}},"total":{"type":"integer","description":"list에서 보관 중인 전체 세션 수"},"deleted":{"type":"boolean","description":"delete 성공 시 true"}}},"api":{"type":"object","properties":{"success":{"type":"boolean"},"cost":{"type":"integer","description":"항상 0"},"ms":{"type":"integer"},"pl_id":{"nullable":true}}}}}}}},"default":{"description":"HTTP 상태 및 서비스 오류코드 확인","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"session_id":{"type":"string","description":"세션 ID(llms_로 시작). get·reset·delete에서 필수입니다. (string)"},"system":{"type":"string","description":"대화 전체에 적용할 지시문(최대 100,000자). create에서 저장하고, reset에서 보내면 바꿉니다. 비워 두면 한국어로 답하도록 하는 기본 지시문을 씁니다. (string)"},"title":{"type":"string","description":"create에서 붙이는 세션 이름(최대 100자). 생략하면 첫 질문 앞부분으로 정해집니다. (string)"},"model":{"type":"string","description":"create에서 기록해 둘 모델 ID. 실제 대화의 모델은 대화 요청의 model이 정합니다. (string)"},"limit":{"type":"string","description":"list에서 받을 개수. 기본 20, 최대 100. 숫자로 보내며, 허용 범위를 벗어나면 요청이 거부됩니다. (integer)"},"offset":{"type":"string","description":"list에서 건너뛸 개수. 기본 0. 최근에 쓴 세션부터 정렬됩니다. 숫자로 보내며, 허용 범위를 벗어나면 요청이 거부됩니다. (integer)"}}}}}}}},"/rest/llm/sessions/delete":{"post":{"summary":"LLM 대화 세션 관리 API","description":"대화 기록을 서버에 맡깁니다. 세션을 만든 뒤 대화 API에 session_id와 이번 질문만 보내면 앞선 대화가 이어집니다. 모든 대화 모델에서 쓸 수 있고 세션 생성·조회·보관은 무료입니다.","security":[{"bearerAuth":[]}],"parameters":[],"responses":{"200":{"description":"서비스별 성공·처리 상태 응답","content":{"application/json":{"schema":{"type":"object","properties":{"data":{"type":"object","properties":{"session_id":{"type":"string","description":"세션 ID(create·get·reset·delete)"},"title":{"type":"string","description":"세션 이름"},"model":{"type":"string","description":"마지막 대화에 쓴 모델 ID","nullable":true},"message_count":{"type":"integer","description":"저장된 메시지 수(system 제외)"},"created_at":{"type":"string","description":"만든 시각(ISO 8601)"},"updated_at":{"type":"string","description":"마지막으로 대화한 시각"},"expires_at":{"type":"string","description":"자동으로 지워지는 시각"},"system":{"type":"string","description":"저장된 지시문(get·reset). 비어 있으면 기본 지시문을 씁니다."},"messages":{"type":"array","items":{"type":"object","properties":{"role":{"type":"string"},"content":{"type":"string"}}},"description":"저장된 대화(get·reset). role·content 순서대로 들어 있습니다."},"ic_id":{"nullable":true},"result":{"type":"integer"},"msg":{"type":"string"},"success":{"type":"integer"},"sessions":{"type":"array","description":"list의 세션 목록. 항목마다 위의 session_id~expires_at가 있고 대화 내용은 없습니다.","items":{}},"total":{"type":"integer","description":"list에서 보관 중인 전체 세션 수"},"deleted":{"type":"boolean","description":"delete 성공 시 true"}}},"api":{"type":"object","properties":{"success":{"type":"boolean"},"cost":{"type":"integer","description":"항상 0"},"ms":{"type":"integer"},"pl_id":{"nullable":true}}}}}}}},"default":{"description":"HTTP 상태 및 서비스 오류코드 확인","content":{"application/json":{"schema":{"type":"object"}}}}},"requestBody":{"required":false,"content":{"multipart/form-data":{"schema":{"type":"object","properties":{"session_id":{"type":"string","description":"세션 ID(llms_로 시작). get·reset·delete에서 필수입니다. (string)"},"system":{"type":"string","description":"대화 전체에 적용할 지시문(최대 100,000자). create에서 저장하고, reset에서 보내면 바꿉니다. 비워 두면 한국어로 답하도록 하는 기본 지시문을 씁니다. (string)"},"title":{"type":"string","description":"create에서 붙이는 세션 이름(최대 100자). 생략하면 첫 질문 앞부분으로 정해집니다. (string)"},"model":{"type":"string","description":"create에서 기록해 둘 모델 ID. 실제 대화의 모델은 대화 요청의 model이 정합니다. (string)"},"limit":{"type":"string","description":"list에서 받을 개수. 기본 20, 최대 100. 숫자로 보내며, 허용 범위를 벗어나면 요청이 거부됩니다. (integer)"},"offset":{"type":"string","description":"list에서 건너뛸 개수. 기본 0. 최근에 쓴 세션부터 정렬됩니다. 숫자로 보내며, 허용 범위를 벗어나면 요청이 거부됩니다. (integer)"}}}}}}}}},"x-code-tables":[{"title":"오류 코드","columns":["HTTP","data.code","대처"],"rows":[["400","SESSION_ID_REQUIRED","session_id를 보내세요."],["400","UNSUPPORTED_MODEL","model은 모델 카탈로그의 ID를 씁니다."],["400","SESSION_SYSTEM_TOO_LONG","system을 100,000자 이하로 줄이세요."],["401","-","인증키를 확인하세요."],["404","SESSION_NOT_FOUND","만료(마지막 대화 후 7일)·삭제됐거나 다른 계정의 세션입니다. 새 세션을 만드세요."],["409","SESSION_BUSY","같은 세션의 대화가 진행 중입니다. 끝난 뒤 다시 보내세요."],["409","SESSION_LIMIT","보관 세션이 1,000개입니다. 쓰지 않는 세션을 지우세요."],["503","SESSION_UNAVAILABLE","잠시 후 다시 시도하세요."]]}],"x-service-errors":[],"components":{"securitySchemes":{"bearerAuth":{"type":"http","scheme":"bearer"}}}}