ARCHIVE-84 U

API 문서

ARCHIVE-84 RAG API를 사용하여 문서를 임베딩하고 질의하세요.

1. 빠른 시작

API 요청 시 Authorization 헤더에 API 키를 포함하세요.

Base URL

https://api.archive-84.ai

예시: 문서 질의

curl -X POST https://api.archive-84.ai/v1/rag/query \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"query": "2024년 매출 증가율은?"}'

2. 인증

모든 API 요청에는 Bearer 토큰 인증이 필요합니다. API 키 관리 페이지에서 키를 발급받으세요.

# Header
Authorization: Bearer sk-xxxxxxxxxxxxxxxxxxxxxxxx

권한 설정: API 키 생성 시 can_query, can_ingest 권한을 설정할 수 있습니다.

3. Rate Limits

플랜 임베딩 토큰/월 질의 토큰/월 문서 수
Free 100K 200K 20
Pro 1M 2M 200
Business 10M 20M 무제한

4. 문서 관리

POST /v1/rag/ingest_text

텍스트 문서를 임베딩하여 저장합니다.

Query Parameters

group_id (선택) - 그룹에 저장할 경우 그룹 ID

Request Body

{
  "text": "임베딩할 텍스트 내용...",
  "source": "문서명 (선택)"
}

Response

{
  "status": "ok",
  "chunks": 15,
  "message": "Document ingested successfully"
}
POST /v1/rag/ingest_file

PDF 또는 TXT 파일을 업로드하여 임베딩합니다.

Query Parameters

group_id (선택) - 그룹에 저장할 경우 그룹 ID

Request (multipart/form-data)

file: (binary) 업로드할 파일
source: (string) 문서명 (선택)

지원 형식

PDF TXT

Response

{
  "status": "ok",
  "filename": "document.pdf",
  "chunks": 42
}
GET /v1/rag/documents

저장된 문서 목록을 조회합니다.

Query Parameters

group_id (선택) - 그룹 문서만 조회할 경우

Response

{
  "ok": true,
  "documents": [
    {
      "id": "doc_abc123",
      "source": "report.pdf",
      "group_id": null,
      "created_at": "2024-01-15T10:30:00Z"
    }
  ]
}
GET /v1/rag/documents/{doc_id}

특정 문서의 상세 정보를 조회합니다.

Response

{
  "ok": true,
  "document": {
    "id": "doc_abc123",
    "source": "report.pdf",
    "chunk_count": 42,
    "char_count": 15000,
    "file_size": 102400,
    "created_at": "2024-01-15T10:30:00Z"
  }
}
DELETE /v1/rag/documents/{doc_id}

문서를 삭제합니다. 벡터 데이터도 함께 삭제됩니다.

Response

{
  "ok": true,
  "message": "Document deleted successfully"
}
POST /v1/rag/documents/{doc_id}/move

문서를 개인 ↔ 그룹 간에 이동합니다.

Request Body

{
  "target_group_id": "group_xyz"  // null이면 개인으로 이동
}

Response

{
  "ok": true,
  "message": "Document moved successfully"
}

5. 질의 및 분석

POST /v1/rag/query

저장된 문서를 기반으로 질의응답을 수행합니다.

Query Parameters

group_id (선택) - 특정 그룹 문서만 검색할 경우

Request Body

{
  "query": "2024년 매출 증가율은?"
}

Response

{
  "ok": true,
  "answer": "2024년 매출은 전년 대비 25% 증가했습니다...",
  "usage": {
    "total_tokens": 1250
  }
}
POST /v1/rag/summary

저장된 문서들의 요약을 생성합니다.

Query Parameters

group_id (선택) - 특정 그룹 문서만 요약할 경우

Response

{
  "ok": true,
  "summary": "저장된 문서들의 전체 요약 내용...",
  "usage": {
    "total_tokens": 2500
  }
}

6. 그룹

그룹을 통해 여러 사용자가 문서를 공유하고 함께 질의할 수 있습니다.

POST /v1/groups

새 그룹을 생성합니다.

Request Body

{
  "name": "마케팅팀",
  "description": "마케팅 관련 문서 공유"
}

Response

{
  "ok": true,
  "group": {
    "id": "grp_abc123",
    "name": "마케팅팀",
    "owner_id": "tenant_xyz"
  }
}
GET /v1/groups

참여 중인 그룹 목록을 조회합니다.

Response

{
  "ok": true,
  "groups": [
    {
      "id": "grp_abc123",
      "name": "마케팅팀",
      "role": "owner",
      "status": "active",
      "member_count": 5
    }
  ]
}
GET /v1/groups/{group_id}

그룹 상세 정보와 멤버 목록을 조회합니다.

Response

{
  "ok": true,
  "group": { ... },
  "members": [
    {
      "id": "member_123",
      "email": "user@example.com",
      "role": "member",
      "status": "active"
    }
  ]
}
POST /v1/groups/{group_id}/invite

사용자를 그룹에 초대합니다. (owner만 가능)

Request Body

{
  "email": "newuser@example.com"
}
POST /v1/groups/{group_id}/accept

그룹 초대를 수락합니다.

POST /v1/groups/{group_id}/decline

그룹 초대를 거절합니다.

POST /v1/groups/{group_id}/leave

그룹에서 탈퇴합니다. (owner는 탈퇴 불가)

DELETE /v1/groups/{group_id}/members/{member_id}

멤버를 그룹에서 제거합니다. (owner만 가능)

DELETE /v1/groups/{group_id}

그룹을 삭제합니다. (owner만 가능, 모든 문서도 삭제됨)

7. 통계

GET /v1/stats

사용량 통계를 조회합니다.

Query Parameters

days (선택, 기본값: 30) - 조회 기간 (일)

Response

{
  "ok": true,
  "current_month": {
    "embed_tokens": 50000,
    "query_tokens": 120000,
    "total_tokens": 170000
  },
  "change_rate": {
    "embed_tokens": 15.5,
    "query_tokens": -8.2
  },
  "response_time": {
    "avg_ms": 1250,
    "min_ms": 450,
    "max_ms": 3200
  },
  "daily_trend": [ ... ]
}
GET /v1/stats/compare

두 기간의 통계를 비교합니다.

Query Parameters (프리셋 사용)

preset - 7days, 30days, week, month, quarter, year

Query Parameters (커스텀 사용)

period1_start, period1_end, period2_start, period2_end (YYYY-MM-DD)

Response

{
  "ok": true,
  "period1": {
    "start_date": "2024-01-01",
    "end_date": "2024-01-31",
    "total_tokens": 150000,
    "embed_tokens": 50000,
    "query_tokens": 100000
  },
  "period2": { ... },
  "comparison": {
    "total_tokens": {
      "diff": 30000,
      "change_rate": 25.0
    }
  }
}

8. 채팅

POST /v1/chat/messages

채팅 메시지를 저장합니다.

Request Body

{
  "messages": [
    { "role": "user", "content": "매출 현황 알려줘" },
    { "role": "assistant", "content": "현재 매출은..." }
  ],
  "group_id": "grp_abc"  // 선택
}
GET /v1/chat/messages

저장된 채팅 메시지를 조회합니다.

Query Parameters

group_id (선택) - 특정 그룹의 메시지만 조회
DELETE /v1/chat/messages

채팅 메시지를 모두 삭제합니다.

Query Parameters

group_id (선택) - 특정 그룹의 메시지만 삭제

9. 에러 코드

코드 설명
400 잘못된 요청 - 필수 파라미터 누락 또는 형식 오류
401 인증 실패 - API 키가 유효하지 않음
403 권한 없음 - 해당 작업에 대한 권한이 없음 (플랜 한도 초과 포함)
404 리소스 없음 - 요청한 문서/그룹 등을 찾을 수 없음
429 요청 제한 - Rate limit 초과
500 서버 오류 - 잠시 후 다시 시도하세요

에러 응답 형식

{
  "detail": "에러 메시지"
}

10. SDK & 라이브러리

다양한 언어의 SDK를 지원합니다. (준비 중)

Python (준비 중) Node.js (준비 중) Go (준비 중)