API 레퍼런스
에토스AI의 채팅 백엔드 API입니다. 서버에서 프로바이더로 라우팅하고 텍스트를 스트리밍합니다.
POST /api/chat
대화 메시지 배열과 모델 ID를 받아, 선택된 모델의 응답을 스트리밍(plain text)으로 반환합니다.
Request Body (application/json)
| 필드 | 타입 | 설명 |
|---|---|---|
messages | { role, content }[] | 대화 이력. role은 user 또는 assistant. |
model | string | 모델 ID (예: claude-sonnet-5). 생략 시 기본 모델. |
conversationId | string? | 기존 대화 ID. 생략하면 새 대화를 만들어 스트림 메타로 ID를 반환 (로그인 시). |
projectId | string? | 새 대화를 프로젝트에 귀속. 프로젝트 지침이 시스템 프롬프트에 자동 주입됩니다. |
useRag | boolean? | 지식베이스 검색 결과를 근거로 주입 (로그인 시). |
Response
Content-Type: text/plain; charset=utf-8 의 스트림. 토큰이 생성되는 대로 이어붙여 렌더링합니다. 오류는 본문에 **[오류]** ... 형태로 포함됩니다. 스트림 끝에는 구분자(0x1F) 뒤에 사용량 메타 JSON({ model, input, output, conversationId?, ragSources? })이 붙습니다 — 화면 표시는 구분자 앞까지만 사용하세요.
예시 · cURL
curl -N -X POST http://localhost:3000/api/chat \
-H "Content-Type: application/json" \
-d '{
"model": "claude-fable-5",
"messages": [{ "role": "user", "content": "안녕하세요" }]
}'예시 · fetch (스트리밍)
const res = await fetch("/api/chat", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
model: "gpt-4.1",
messages: [{ role: "user", content: "요약해줘" }],
}),
});
const reader = res.body!.getReader();
const dec = new TextDecoder();
let text = "";
while (true) {
const { done, value } = await reader.read();
if (done) break;
text += dec.decode(value, { stream: true });
// text 를 화면에 업데이트
}상태 코드
| 코드 | 의미 |
|---|---|
| 200 | 스트림 정상 |
| 400 | 잘못된 요청 · 알 수 없는 모델 · 빈 메시지 |
| 429 | 워크스페이스 월 토큰 한도 초과 |
| 500 | 해당 프로바이더 API 키 미설정 |
그 외 앱 API 한눈에
모두 세션 쿠키 인증(로그인 필요). 워크스페이스/본인 소유 범위로 격리됩니다.
| 엔드포인트 | 설명 |
|---|---|
GET /api/models | 선택 가능한 모델 목록. Anthropic 은 실제 API로 라이브 조회 (공개 경로) |
GET·POST /api/conversations, GET·PATCH·DELETE /api/conversations/:id | 대화 목록·생성·조회(메시지)·이름변경·삭제. /import 로 localStorage 1회 이관 |
POST /api/rag/upload, GET /api/rag/documents, POST /api/rag/chat | 지식베이스 문서 업로드(≤20MB)·목록·근거 인용 질의 (pgvector) |
GET·POST /api/projects, PATCH·DELETE /api/projects/:id | 프로젝트(대화 폴더 + 자동 적용 지침) 관리 |
GET·POST /api/schedules, POST /api/schedules/:id/run | 예약 리포트 등록·즉시 실행. 크론은 GET /api/cron/run (CRON_SECRET) |
POST /api/data-chat | 데이터 Q&A (NDJSON 스트림). datasourceId 지정 시 실데이터 SQL 질의 |
GET·POST /api/admin/datasources | 회사 PostgreSQL 연결 등록(비밀번호 암호화 저장·읽기전용) — 관리자 |
/api/admin/* (company·users·departments·tokens·usage) | 조직 관리 — 관리자 전용. /api/super·/api/super/:id 는 수퍼 관리자 |