# 응답 형식: 검색의 모든 필드 설명

> 검색 API 응답 형식: /search와 /extract의 모든 필드, 여덟 가지 content_status 값과 target_status를 전체 예시와 함께 설명합니다. KYC 없이, 암호화폐 결제.

- URL: https://llmwebsearch.com/ko/docs/response/
- 마지막 업데이트: 2026-10-22
- 발행자: LLMWebSearch (https://llmwebsearch.com)

검색 응답은 하나의 JSON 객체입니다. 호출에 관한 몇 개의 필드 다음에 순위가 매겨진 `results` 배열이 옵니다. 각 결과는 해당 페이지를 읽었는지 여부를 표시하고, 읽었으면 콘텐츠를 담고 있습니다. 에이전트가 처리해야 할 상태 값과 함께 모든 필드를 정리했습니다.

**빠른 답변 — LLMWebSearch API는 검색 시 무엇을 반환하나요?**

**LLMWebSearch**는 `query`, `created_at`, `credits_used`와 순위가 매겨진 `results` 배열을 포함한 JSON을 반환합니다. 각 결과에는 순위, 제목, URL, 호스트, 스니펫과 `content_status`이 있습니다. 해당 값이 `ok`이면 페이지의 본문이 `word_count`과 함께 `content`에 담깁니다. 최대 3개 페이지를 읽는 검색 1회는 크레딧 1개가 들며, 2026년 10월 기준 US$1.20/1K 검색부터 시작합니다. KYC 없이, 암호화폐로 결제하세요.

## 호출을 설명하는 필드는 무엇인가요?

`/search` 응답의 최상위 필드입니다.

| 필드 | 유형 | 의미 |
| --- | --- | --- |
| `query` | string | 공백을 제거한 뒤 실제로 실행한 검색 쿼리 |
| `created_at` | string | 검색을 실행한 시각, UTC 기준 ISO 8601 |
| `credits_used` | integer | 호출 비용: 1, 또는 `read`이 4에서 10일 때 2 |
| `results` | array | 순위가 매겨진 결과, 가장 좋은 것부터, 최대 `max_results`개 항목 |

## 각 결과에는 어떤 필드가 있나요?

페이지나 검색 결과가 제공하지 않는 필드는 빈 값으로 보내지 않고 생략합니다.

| 필드 | 유형 | 존재할 때 | 의미 |
| --- | --- | --- | --- |
| `position` | integer | 항상 | 검색 순위, 1부터 시작 |
| `title` | string | 항상 | 결과의 제목 |
| `url` | string | 항상 | 페이지 주소 |
| `host` | string | 항상 | 페이지의 호스트 이름, 그룹화나 인용에 유용 |
| `snippet` | string | 항상 | 검색에서 표시되는 짧은 발췌 |
| `published_at` | string | 날짜를 알 수 있는 경우 | 페이지 또는 검색 결과의 게시일 |
| `content_status` | string | 항상 | 페이지를 읽었는지 여부와, 읽지 못했다면 그 이유 |
| `content` | string | `content_status`이(가) `ok`인 경우 | Markdown 또는 일반 텍스트로 된 본문, `max_chars`에서 잘림 |
| `word_count` | integer | `content_status`이(가) `ok`인 경우 | 잘리기 전에 집계된, 추출된 전체 텍스트의 단어 수 |
| `target_status` | integer | `target_refused`과(와) 함께 | 사이트가 응답한 HTTP 상태 코드 (예: 403 또는 429) |

## 각 content_status는 무슨 의미인가요?

이 중 어느 것도 검색 가격을 바꾸지 않습니다. 이 값들은 페이지 하나를 설명할 뿐, 호출 전체를 설명하지 않습니다.

| `content_status` | 의미 | 에이전트가 해야 할 일 |
| --- | --- | --- |
| `ok` | 페이지를 읽었으며, `content`에 본문이 담겨 있습니다 | 이를 사용하고 `url`을(를) 인용하세요 |
| `not_requested` | 결과가 `read` 개수 범위를 벗어남 | `read`을(를) 늘리거나, 필요하다면 `/extract`을(를) 통해 읽으세요 |
| `blocked_by_robots` | 사이트의 robots.txt가 이 페이지에 대한 우리 리더의 접근을 허용하지 않음 | 스니펫 또는 다른 출처에 의존하세요 |
| `blocked_by_site_policy` | 사이트가 `Content-Signal: ai-input=no`을(를) 선언함 | 스니펫 또는 다른 출처에 의존하세요 |
| `target_refused` | 사이트가 요청을 거부함; `target_status` 참고 | 페이지를 재시도하지 말고 다른 출처를 사용하세요 |
| `fetch_failed` | DNS, TLS 또는 연결 오류, 또는 페이지가 사라짐 | 다른 결과를 시도하세요; 나중에 재시도하면 될 수 있습니다 |
| `fetch_timeout` | 페이지가 15초 안에 응답하지 않음 | 다른 결과를 시도하세요; 나중에 재시도하면 될 수 있습니다 |
| `unsupported_content` | 링크가 텍스트로 변환할 수 없는 파일임 | 스니펫 또는 다른 결과를 사용하세요 |

## 전체 응답은 어떻게 생겼나요?

아래 예시는 결과 5개를 요청하고 처음 4개를 읽었으므로 크레딧 2개가 소모되었습니다. 결과 1과 3은 읽혔습니다. 결과 2는 robots.txt가 우리 리더의 접근을 막는 사이트에 속하며, 결과 4는 요청을 거부했고, 결과 5는 `read`을(를) 벗어납니다. 제목, URL, 값은 예시입니다.

*POST /search 응답 (예시)*

```json
{
  "query": "how to rotate api keys without downtime",
  "created_at": "2026-10-22T10:15:04Z",
  "credits_used": 2,
  "results": [
    {
      "position": 1,
      "title": "Rotating API keys",
      "url": "https://docs.example.com/security/key-rotation",
      "host": "docs.example.com",
      "snippet": "Create a second key, deploy it everywhere, then revoke the first one.",
      "published_at": "2026-09-30",
      "content_status": "ok",
      "content": "# Rotating API keys\n\n## Zero-downtime rotation\n\n1. Create a second key.\n2. Deploy it to every service.\n3. Revoke the old key.",
      "word_count": 948
    },
    {
      "position": 2,
      "title": "Key rotation checklist",
      "url": "https://blog.example.org/key-rotation-checklist",
      "host": "blog.example.org",
      "snippet": "Keep two keys active during the switch and alert on the old one.",
      "content_status": "blocked_by_robots"
    },
    {
      "position": 3,
      "title": "Secrets management basics",
      "url": "https://security.example.net/secrets-basics",
      "host": "security.example.net",
      "snippet": "Never commit keys to a repository.",
      "content_status": "ok",
      "content": "# Secrets management basics\n\n**Never** commit keys to a repository.",
      "word_count": 1310
    },
    {
      "position": 4,
      "title": "Key management service guide",
      "url": "https://cloud.example.com/kms-guide",
      "host": "cloud.example.com",
      "snippet": "Store keys in a managed vault and rotate them on a schedule.",
      "content_status": "target_refused",
      "target_status": 403
    },
    {
      "position": 5,
      "title": "API key best practices",
      "url": "https://dev.example.com/api-key-best-practices",
      "host": "dev.example.com",
      "snippet": "Scope each key to one service and one environment.",
      "content_status": "not_requested"
    }
  ]
}
```

## 어떤 결과에 not_requested가 아닌 페이지 상태가 붙나요?

처음 `read`개 결과만, 그리고 `/extract` 호출의 모든 항목에 붙습니다. 이 페이지들은 리더가 실제로 시도한 페이지입니다. `read`개 이후의 결과는 사이트가 무엇을 응답했든 `not_requested`로 남습니다.

순서는 결코 바뀌지 않습니다. 리더는 1, 2, 3... 위치를 기준으로 작업하며, 실패한 앞선 결과 대신 뒤의 결과로 대체하지 않습니다. 에이전트가 거부된 페이지를 대체할 결과가 필요하면 `/extract`로 다음 결과를 읽을 수 있습니다.

## extract 응답은 어떻게 생겼나요?

`/extract`은 `credits_used`과, 보낸 URL 순서대로 정렬된 `results` 배열을 반환합니다. 각 항목에는 `url`과 `content_status`이 있고, `ok`을 사용하면 `title`, `content`, `word_count`가 추가되며, `target_refused`을 사용하면 `target_status`이 추가됩니다. 검색이 실행되지 않았으므로 `position`, `host`, `snippet`은 없습니다.

[extract 레퍼런스](https://llmwebsearch.com/ko/docs/extract/)에서 전체 예시를 확인하고 크레딧이 어떻게 계산되는지 설명합니다.

## 결과를 모델용 컨텍스트로 어떻게 바꾸나요?

출처에 번호를 매기고 각 출처 옆에 URL을 두고, 모델에 필요한 것만 전달하세요. 간결한 레이아웃이 잘 맞습니다: `[1] title — url`, 그다음 해당 페이지의 콘텐츠, 그다음 다음 출처. 모델에게 같은 번호로 인용하도록 요청하세요.

결과에 콘텐츠가 없으면 대신 스니펫을 주고 스니펫일 뿐이라고 알려주세요. 그러면 모델이 보지 못한 페이지에 기반한 답변을 피할 수 있습니다. [Python 페이지](https://llmwebsearch.com/ko/docs/python/)에는 이 모든 것을 토큰 예산 안에서 처리하는 짧은 루프가 있습니다.

## 응답 형식: 자주 묻는 질문

### 콘텐츠는 항상 Markdown인가요?

기본은 Markdown입니다. 마크업 없는 일반 텍스트가 필요하면 `format: "text"`을 보내세요. 예를 들어 단어 수만 세거나 페이지를 분류할 때 유용합니다. 필드 이름은 `content` 그대로입니다.

### 일부 결과에서 published_at이 없는 이유는 무엇인가요?

많은 페이지가 날짜를 표시하지 않으며, 일부 검색 결과도 날짜를 보여주지 않습니다. 이 경우 필드는 생략되므로 사용하기 전에 필드가 있는지 확인하세요.

### 나중에 새 필드가 추가될 수 있나요?

예. 버전 1에서는 필드가 추가될 수 있지만 이름이 바뀌거나 제거되지는 않습니다. 파서가 모르는 필드는 무시하도록 작성하세요.

### 콘텐츠가 귀하 측에 저장되나요?

아니요. 저희는 귀하의 검색 쿼리나 API가 반환하는 내용으로 어떤 모델도 학습시키지 않으며, 결과 저장을 금지하는 자체 규칙도 두지 않습니다. 다만 귀하가 읽는 페이지의 사이트 권리는 여전히 적용됩니다. 요청 로그에는 각 호출의 짧은 흔적만 남으며, [개인정보 페이지](https://llmwebsearch.com/ko/privacy/)에서 설명합니다.

---

LLMWebSearch: LLMWebSearch는 AI 에이전트를 위한 웹 검색 API로, 순위가 매겨진 결과와 함께 상위 페이지의 본문을 Markdown으로 반환하며, 신분증 업로드 없이 암호화폐로 결제합니다. US$1.20/1K 검색부터 시작하는 선불 크레딧은 만료되지 않습니다. KYC 없이 — 신분증도, 셀피도, 서류도 필요 없습니다. 암호화폐로 결제하세요.
