API 문서

AI API 오마카세 데모 앱이 제공하는 HTTP 엔드포인트 요약입니다. 요청 시 발급받은 액세스 토큰이 필요한 경우, 아래 헤더를 포함합니다.

앞으로도 새로운 API가 계속 추가되고, 기존 엔드포인트 스펙도 개선될 예정입니다. 아래 목록은 시점에 따라 늘어나거나 바뀔 수 있으니 공지·문서 업데이트를 함께 확인해 주세요.

Authorization: Bearer <your_access_token>

브라우저에서 호출 시 동일 오리진 기준 상대 경로(예: /api/chat)를 사용합니다.

Text (LLM)

POST/api/chat

프롬프트 입력에 대해 한국어로 텍스트 응답을 생성합니다. 내부적으로 LLM 업스트림과 연동됩니다.

본문 (application/json)

{
  "input": "질문 또는 지시문",
  "temperature": 0.1
}

성공 (200)

{
  "text": "모델이 생성한 한국어 답변 문자열"
}
  • `temperature`는 생략 시 0.1에 가깝게 처리됩니다.
  • 한도 초과 시 429와 `{ "error": "일일 체험 한도를 초과했습니다. ..." }` 형태로 응답할 수 있습니다.

광고 카피라이팅

POST/api/ad-copy

자사 광고 카피 생성 엔진으로 브리프·톤·채널에 맞는 문구를 생성합니다. `language`로 출력 언어를 지정할 수 있습니다.

본문 (application/json)

{
  "brief": "제품·서비스 설명(필수)",
  "tone": "친근 / 전문 등 (선택)",
  "channel": "배너, SNS 등 (선택)",
  "temperature": 0.7,
  "language": "ko"
}

성공 (200)

{
  "copy": "생성된 광고 카피 (지정 언어)"
}
  • `brief`만 필수입니다. `language`는 아래 코드 중 하나여야 합니다(생략 시 ko): ko, en, ja, zh, zh-TW, es, fr, de, vi, th, id, pt, ru, ar.
  • 한도 초과 시 `/api/chat`과 동일하게 429 응답이 올 수 있습니다.

광고 카피 (Copywrite 엔진)

POST/api/copy

`/api/ad-copy`와 다른 업스트림(카피라이트) 경로입니다. 헤드라인·본문을 분리한 JSON을 반환합니다. 톤·채널은 `tone`/`channel` 대신 `toneLine`/`channelLine` 필드명을 사용합니다.

본문 (application/json)

{
  "brief": "제품·서비스 설명(필수)",
  "toneLine": "톤 힌트 (선택)",
  "channelLine": "채널 힌트 (선택)",
  "temperature": 0.7
}

성공 (200)

{
  "headline": "메인 헤드라인 또는 슬로건",
  "body": "본문·설명 문구"
}
  • `brief`만 필수입니다. `toneLine`·`channelLine`을 생략하면 서버가 기본 힌트 문구로 채웁니다.
  • 출력 언어 지정 필드는 없으며, 업스트림 Copywrite 엔진 동작에 따릅니다.
  • 한도 초과 시 429 등은 `/api/ad-copy`와 유사하게 처리될 수 있습니다.

텍스트 요약

POST/api/summarize

긴 본문을 받아 핵심만 추린 요약 문자열을 반환합니다. 리뷰·뉴스·회의록 등 비정형 텍스트 정리에 활용할 수 있습니다.

본문 (application/json)

{
  "text": "요약할 원문(필수)",
  "style": "불릿 3줄, 한 문단 등 (선택)",
  "temperature": 0.3
}

성공 (200)

{
  "summary": "압축된 요약 문자열"
}
  • `text`만 필수입니다. 요약 형식·톤 힌트는 `style` 또는 `styleLine`(동일 의미)으로 선택할 수 있습니다.
  • `temperature`는 선택이며, 숫자로 보내면 업스트림 요약 API에 함께 전달됩니다.
  • 한도 초과 시 `/api/chat`과 동일하게 429 응답이 올 수 있습니다.

리뷰 감정 분석

POST/api/sentiment

고객 리뷰 등 짧은 텍스트의 문맥을 읽어 전체 및 측면(aspect)별로 긍정·부정·중립을 분류하고, 0~1 점수로 극성을 수치화합니다.

본문 (application/json)

{
  "text": "분석할 리뷰·문장(필수)",
  "temperature": 0.2
}

성공 (200)

{
  "overall": { "label": "positive", "score": 0.82 },
  "aspects": [
    { "aspect": "음식", "label": "positive", "score": 0.9 },
    { "aspect": "배송", "label": "negative", "score": 0.15 }
  ]
}
  • `label`은 positive | negative | neutral, `score`는 0(부정)~1(긍정) 근거 점수입니다.
  • 모델이 JSON 외 텍스트를 섞으면 502가 날 수 있습니다. 한도 초과 시 429가 올 수 있습니다.

NER (개체명 인식)

POST/api/ner

문장에서 인물·장소·조직·시간·금액 등 개체를 찾아 label·category와 함께 배열로 반환합니다.

본문 (application/json)

{
  "text": "분석할 문장(필수)",
  "temperature": 0.1
}

성공 (200)

{
  "entities": [
    { "text": "세현", "label": "PER", "category": "Person / 인물" },
    { "text": "3,000,000원", "label": "MON", "category": "Money / 금액" }
  ]
}
  • `entities`는 원문에 실제로 등장한 표면 형태 `text`와 태그 `label`, 설명 `category`를 포함합니다.
  • 한도 초과 시 `/api/chat`과 동일하게 429 응답이 올 수 있습니다.

Text-to-SQL (쿼리 자동 생성)

POST/api/text2sql

자연어 질문을 MySQL 호환 SELECT 문으로 변환합니다. 스키마가 없으면 질문 맥락에서 테이블·컬럼을 추정합니다.

본문 (application/json)

{
  "text": "데이터베이스에 묻고 싶은 질문(필수)",
  "schema": "스키마(선택)",
  "temperature": 0.2
}

성공 (200)

{
  "sql": "SELECT ..."
}
  • `sql`은 단일 쿼리 문자열입니다. 데모는 읽기 전용 분석을 가정해 SELECT 위주로 유도합니다.
  • 한도 초과 시 `/api/chat`과 동일하게 429 응답이 올 수 있습니다.

Embedding

POST/api/embedding

입력 텍스트를 임베딩 벡터(숫자 배열)로 변환합니다.

본문 (application/json)

{
  "input": "임베딩할 문장",
  "input_type": "string"
}

성공 (200)

{
  "embeddingVector": [0.012, -0.034, "..."]
}
  • `text` 필드로 보내도 동작합니다(내부에서 `input`과 동일하게 처리).
  • 업스트림 오류 시 `error` 메시지와 함께 비-200 상태 코드가 반환될 수 있습니다.

Re-ranking

POST/api/rerank

질의와 후보 문장 목록을 받아 관련도에 따라 재정렬하는 결과를 반환합니다.

본문 (application/json)

{
  "query": "검색 질의",
  "input": ["후보 문장 1", "후보 문장 2"]
}

성공 (200)

{
  "...": "업스트림 Re-rank 응답 구조가 그대로 전달됩니다."
}
  • `query`는 비어 있으면 안 되고, `input`은 문자열 배열이어야 합니다.

TTS (텍스트 음성 변환)

POST/api/tts

텍스트를 음성으로 합성합니다. 업스트림 TTS로 프록시하며, 성공 시 오디오 바이너리를 반환합니다. 음성 목록은 `GET /api/tts`로 조회할 수 있습니다.

본문 (application/json)

{
  "text": "읽을 문장(필수)",
  "language": "ko | korean | english | japanese 등 (선택)",
  "speaker": "ryan 등 (선택)",
  "instruct": "스타일·톤 지시 (선택)",
  "style_instruction": "instruct 별칭 (선택)"
}

성공 (200)

Content-Type: audio/mpeg 등 (업스트림이 반환한 오디오 타입)
<바이너리 오디오 스트림>
  • `text`만 필수입니다. `language`는 짧은 코드(ko, en) 또는 korean/english 등으로 보낼 수 있습니다.
  • 오류 시 JSON `{ "error": "..." }`와 함께 400·429·500·504 등이 반환될 수 있습니다. 한도 초과 시 429 메시지가 올 수 있습니다.
  • 합성 요청은 최대 약 58초 제한이 있어, 초과 시 504가 날 수 있습니다.
  • 스피커 목록: `GET /api/tts` (업스트림 `/tts/speakers` 프록시).

STT (Speech-to-Text)

POST/api/stt

음성 파일을 업로드하여 텍스트로 변환합니다. `multipart/form-data`로 전송합니다.

본문 (multipart/form-data)

필드:
  file        — 오디오 파일 (필수)
  language    — 선택
  task        — 선택
  beam_size   — 선택
  vad_filter  — 선택

성공

업스트림 STT 서비스의 JSON 응답이 그대로 반환됩니다.
  • 최대 실행 시간 제한이 있어 장시간 처리 시 504(시간 초과)가 날 수 있습니다.
  • `file`이 없으면 400과 안내 메시지가 반환됩니다.

API는 지속적으로 추가·확장되며, 엔드포인트와 제한 사항은 서비스 업데이트에 따라 달라질 수 있습니다. 최신 동작은 API 체험과 실제 응답을 기준으로 확인해 주세요.