텍스트 인사이트 API
입력한 텍스트를 요약하여 제목·요약 내용·분류를 반환합니다. 음성 파일 업로드나 STT 요청 없이 사용할 수 있으며, 결과는 비동기로 조회합니다.
음성 전사 결과에서 인사이트를 생성하려면 일반 STT 인사이트를 사용하세요. 텍스트 인사이트는 입력·출력 토큰으로 과금되며, 일반 STT 인사이트의 건수·시간 과금과 구분됩니다.
이용 조건
- 이용 권한이 부여된 애플리케이션이 필요합니다. Enterprise 기능 문의를 통해 이용 가능 여부를 확인하세요.
- 요청 시 인증 가이드에서 발급받은 액세스 토큰을 사용합니다.
- 무료 사용량으로는 이용할 수 없습니다. 이용 권한이 있는 베이직 플랜 애플리케이션은 결제 카드 등록이 필요합니다.
- 결과는 요청한 애플리케이션의 토큰으로만 조회할 수 있습니다.
API 목록
| Method | URL | 설명 |
|---|---|---|
| POST | /v1/insight | 텍스트 인사이트 생성 요청 |
| GET | /v1/insight/{id} | 처리 상태 및 결과 조회 |
생성 요청
POST https://openapi.vito.ai/v1/insight
요청 바디
Content-Type: application/json
| 필드 | 타입 | 필수 | 설명 |
|---|---|---|---|
text | string | 예 | 요약할 텍스트. 최대 175,000자이며 빈 문자열이나 공백만 있는 값은 허용하지 않습니다. |
prompt | string | 아니요 | 요약 시 참고할 지시사항. 최대 4,096자입니다. |
keywords | string[] | 아니요 | 참고할 키워드. 최대 64개, 각 80자 이하, 전체 합계 2,000자 이하입니다. |
문자 수는 유니코드 코드 포인트 기준입니다. 문자 수와 별도로 JSON 요청 본문 전체는 2 MiB 이하여야 합니다. 한글 등 멀티바이트 문자는 여러 바이트를 사용하므로 문자 수와 본문 크기는 다를 수 있습니다.
요청 예제
ACCESS_TOKEN은 발급받은 액세스 토큰으로 바꿉니다.
curl --request POST 'https://openapi.vito.ai/v1/insight' \
--header 'Authorization: Bearer ACCESS_TOKEN' \
--header 'Content-Type: application/json' \
--data '{
"text": "고객은 상품 견적서를 요청했습니다. 담당자는 금요일까지 견적서를 전달하고 다음 주 월요일에 다시 연락하기로 했습니다.",
"prompt": "고객 요청과 담당자의 후속 조치를 정리해 주세요.",
"keywords": ["견적서", "후속 연락"]
}'
접수 응답
정상 접수 시 HTTP 200과 요청 ID를 반환합니다. 이 응답은 처리 완료를 의미하지 않습니다.
{
"id": "example-insight-id",
"status": "processing"
}
같은 본문을 다시 POST해도 별도의 ID가 생성됩니다. 완료된 각 요청은 별도로 과금될 수 있습니다. 접수 응답에서 ID를 받았다면 POST를 반복하지 말고 해당 ID로 결과를 조회하세요.
상태 및 결과 조회
GET https://openapi.vito.ai/v1/insight/{id}
curl 'https://openapi.vito.ai/v1/insight/example-insight-id' \
--header 'Authorization: Bearer ACCESS_TOKEN'
status | 의미 | 추가 필드 |
|---|---|---|
processing | 처리 중. 잠시 후 같은 ID로 다시 조회합니다. | 없음 |
completed | 처리 완료 | results |
failed | 처리 실패 | error.code |
처리 중 응답은 접수 응답과 동일한 id, status 구조입니다.
일시적인 처리 오류는 서버에서 자동 재시도하며, 재시도 대기 중에도 processing을 유지합니다.
같은 ID로 계속 조회하면 되며, 재시도 횟수를 소진하거나 재시도할 수 없는 오류가 발생하면 failed로 바뀝니다.
완료 응답
results는 인사이트 항목의 배열입니다. 아래 내용은 예시이며, 입력과 지시사항에 따라 달라집니다.
완료 상태에서도 빈 배열이 반환될 수 있습니다.
{
"id": "example-insight-id",
"status": "completed",
"results": [
{
"title": "견적서 전달 및 후속 연락",
"summary": "담당자는 금요일까지 고객에게 견적서를 전달하고 다음 주 월요일에 다시 연락하기로 했습니다.",
"category": "업무"
}
]
}
| 필드 | 타입 | 설명 |
|---|---|---|
results[].title | string | 인사이트 제목 |
results[].summary | string | 요약 내용 |
results[].category | string | 인사이트 분류 |
일반 STT 조회 응답의 results.insight와 달리, 이 API에서는 results 자체가 배열입니다.
토큰 사용량과 청구 금액은 이 API 응답에 포함되지 않습니다.
실패 응답
처리 실패는 조회 요청의 HTTP 오류와 구분됩니다. HTTP 200 응답의 status와 error.code를 확인하세요.
{
"id": "example-insight-id",
"status": "failed",
"error": {
"code": "insight_failed"
}
}
HTTP 오류
| HTTP 상태 | 발생 조건 |
|---|---|
400 | 잘못된 JSON, 입력 제한 초과, 필수 텍스트 누락, 또는 베이직 플랜의 결제 카드 미등록 |
401 | 유효한 인증 토큰이 없음 |
403 | 생성 권한이 없거나 무료 사용량으로 생성 요청 |
404 | 조회 ID가 없거나 다른 애플리케이션의 요청 |
410 | 보관 기간이 지난 요청의 본문과 결과가 정리됨 |
413 | 생성 요청의 JSON 본문이 2 MiB를 초과함 |
500 | 서버 내부 오류로 요청을 처리하지 못함 |
HTTP 오류 응답은 code, msg 형식입니다. 예를 들어 정리된 결과를 조회하면 다음 응답을 반환합니다.
{
"code": "H0007",
"msg": "swept"
}
결과 보관
입력 텍스트는 처리가 완료되거나 실패하면 삭제합니다.
결과 본문은 접수 시각으로부터 3일이 지난 뒤 정리 작업의 대상이 됩니다.
3일이 되는 순간 즉시 조회가 막히는 것은 아니며, 실제 정리가 완료된 이후 GET은 HTTP 410을 반환합니다.
필요한 결과는 완료 후 별도로 저장하세요.
토큰 과금
성공한 요청의 입력·출력 청구 토큰을 기준으로 과금합니다. 단가와 월별 계산 기준은 사용 요금을 확인하세요.