> ## Documentation Index
> Fetch the complete documentation index at: https://docs.factagora.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Claim Detection

> 텍스트 안에서 검증 가능한 사실 주장을 찾아냅니다.

기사 본문처럼 덩어리진 텍스트를 넣으면 그 안에서 실제로 팩트체크할 수 있는 문장만 골라 돌려줍니다. 의견, 질문, 수사적 표현은 제외됩니다.

각 claim에는 입력 원문에서 **그대로 발췌한 문장**이 담깁니다. 패러프레이즈가 아니므로 원문에서 부분 문자열로 찾아 하이라이트할 수 있습니다.

[Fact Checker](/ko/api-reference/fact-checker)와 함께 씁니다. 먼저 탐지하고, 그중 필요한 claim만 검증하는 흐름입니다.

## 요청 본문

<ParamField body="text" type="string" required>
  탐지할 텍스트. 최대 20,000자.
</ParamField>

<ParamField body="url" type="string">
  원문 출처 URL. 결과와 함께 기록됩니다.
</ParamField>

<ParamField body="title" type="string">
  원문 페이지 제목. 결과와 함께 기록됩니다.
</ParamField>

<RequestExample>
  ```bash cURL theme={null}
  curl -X POST "https://api.factagora.com/api/v1/claims/detect" \
    -H "Authorization: Bearer fa_your_api_key" \
    -H "Content-Type: application/json" \
    -d '{
      "text": "유럽중앙은행이 목요일 기준금리를 25bp 인상했다. 분석가들은 이번 조치가 늦었다고 본다. 유로존 물가상승률은 11개월 연속 2%를 넘었다.",
      "url": "https://example.com/ecb-article",
      "title": "ECB 또 금리 인상"
    }'
  ```
</RequestExample>

## 응답

<ResponseField name="claims" type="array">
  탐지된 claim 목록입니다. 텍스트에 등장하는 순서를 따릅니다.

  <Expandable title="Claim fields">
    <ResponseField name="id" type="string">탐지된 claim의 식별자</ResponseField>
    <ResponseField name="text" type="string">입력에서 그대로 발췌한 문장. 원문 하이라이트를 위한 부분 문자열 매칭에 이 값을 씁니다</ResponseField>
    <ResponseField name="normalized_claim" type="string">주변 맥락으로 대명사·지시어를 해소해 문장 하나로 성립하게 만든 버전. Fact Checker에는 `text`가 아니라 이 값을 보냅니다. 해소할 것이 없으면 `text`와 동일합니다</ResponseField>
    <ResponseField name="claim_type" type="string">`FACTUAL`, `STATISTICAL`, `QUOTE`, `EVENT` 중 하나</ResponseField>
    <ResponseField name="title" type="string">claim을 짧게 요약한 라벨</ResponseField>
    <ResponseField name="description" type="string">무엇을 주장하는지에 대한 설명</ResponseField>
    <ResponseField name="confidence" type="number">검증 가능한 claim이라고 판단한 신뢰도. 0\~1</ResponseField>
    <ResponseField name="category" type="string">claim의 주제 분류</ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json 200 theme={null}
  {
    "claims": [
      {
        "id": "ck_01H8X2",
        "text": "유럽중앙은행이 목요일 기준금리를 25bp 인상했다.",
        "normalized_claim": "유럽중앙은행이 목요일 기준금리를 25bp 인상했다.",
        "claim_type": "EVENT",
        "title": "ECB 기준금리 25bp 인상",
        "description": "유럽중앙은행이 기준금리를 25베이시스포인트 올렸다.",
        "confidence": 0.94,
        "category": "economy"
      },
      {
        "id": "ck_01H8X3",
        "text": "유로존 물가상승률은 11개월 연속 2%를 넘었다.",
        "normalized_claim": "유로존 물가상승률은 11개월 연속 2%를 넘었다.",
        "claim_type": "STATISTICAL",
        "title": "유로존 물가상승률 11개월 연속 2% 초과",
        "description": "유로존 인플레이션이 목표치 2%를 11개월 연속 웃돌았다.",
        "confidence": 0.88,
        "category": "economy"
      }
    ]
  }
  ```
</ResponseExample>

<Note>
  "분석가들은 이번 조치가 늦었다고 본다"는 반환되지 않습니다. 의견이라 검증할 대상이 없습니다.
</Note>
