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

# ChatGPT API: 답변, 출처, 검색어

> ChatGPT에 질문하고 답변, 인용 출처, 검색어, 상품, 이어지는 대화를 받습니다.

`CHATGPT`는 웹 검색을 켠 ChatGPT에 묻고, 답변과 찾은 모든 출처, 실행한 검색, 그려 낸 상품·장소 카드를 반환합니다.

| | |
| - | - |
| taskType | `CHATGPT` |
| 읽는 필드 | `prompt` (없으면 `query`) |
| 크레딧 | 답변당 1 |
| 국가 | 선택, 기본값 `US`. `CN`과 `HK`는 싱가포르 출구에서 현지 기기 위치로 묻습니다. |
| 위치 | `payload.location`을 받습니다. [지역과 위치](/ko/engines/capacity.md)를 참고하세요. |

## 요청

```bash theme={"theme":"css-variables"}
curl -X POST https://api.querying.ai/v1/async/task \
  -H "Authorization: Bearer $QUERYING_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "taskType": "CHATGPT", "payload": { "prompt": "best CRM for a small team", "country": "US" } }'
```

## 응답

| 필드 | 타입 | 설명 |
| - | - | - |
| `text` | string | 일반 텍스트 답변. |
| `markdown` | string | Markdown 답변. 사진은 각 카드 자리에 놓입니다. 기본으로 켜져 있습니다. |
| `model` | string | ChatGPT가 답변에 쓴 모델. |
| `sources` | array | 모든 출처: `position`, `url`, `label`, `footnote`, `datePublished`, `searchQueries`, `cited`, `citedText`. |
| `searchQueries` | string\[] | ChatGPT가 실행한 웹 검색. 기본으로 켜져 있습니다. |
| `shoppingCards`, `inlineProducts` | array | 상품 카드와 답변 안에 링크된 상품 이름. 기본으로 켜져 있습니다(`include.shopping`). |
| `ads` | array | 답변 안의 스폰서 항목. 기본으로 켜져 있습니다(`include.ads`). |
| `entities` | array | 카드에 나온 장소와 상품. 각 항목에 `local_business`, `product` 같은 `type`과 `name`이 있습니다. |
| `entityDetails` | array | 카드마다의 상세 창. `include.entityDetails`일 때만. [카드 상세](#카드-상세)를 참고하세요. |
| `map` | array | 카드에 나온 장소: 주소, 좌표, 전화번호, 평점, ChatGPT가 핀에 쓴 `icon` 이모지. `provider`는 기록을 가져온 피드(`serp`와 `bright-feed`는 Google 지도, `yelp-feed`는 Yelp, `tripadvisor-feed`는 Tripadvisor)이고, `placeId`와 `providerUrl`은 그 피드의 장소 ID와 페이지입니다. `resolvedBy: "address"`는 모델이 쓴 주소로 ChatGPT가 찾은 장소에 붙습니다. `localName`은 한국 매장의 한글 이름 같은 기록의 다른 이름이고, `closed`는 `permanently` 또는 `temporarily`입니다. |
| `citationPills` | array | 인라인 인용 칩마다 그 뒤의 출처. |
| `layout` | object | ChatGPT가 답변을 카드로 그렸을 때의 카드 배치. 아래를 참고하세요. |
| `forms` | array | 답변에 있는 이어 묻기 양식(있을 때). [대화](#나중에-이어-묻기)를 참고하세요. |
| `conversation` | object | 답변이 속한 대화의 `id`, `turn`, `expiresAt`. |
| `html` | object | ChatGPT가 보여 준 화면. `include.html`일 때만. |
| `rawResponse` | array | 파싱된 스트림 이벤트. `include.rawResponse`일 때만. |

다음은 일부를 줄인 응답 예시입니다.

```json theme={"theme":"css-variables"}
{
  "text": "For a small team, HubSpot CRM and Pipedrive are the usual picks ...",
  "markdown": "For a small team, **HubSpot CRM** and **Pipedrive** are the usual picks ...",
  "model": "gpt-5-3",
  "sources": [
    {
      "position": 1,
      "url": "https://www.example.com/best-crm-small-business",
      "label": "The best CRM software for small businesses",
      "searchQueries": ["best CRM for small teams"],
      "cited": true,
      "citedText": ["HubSpot CRM and Pipedrive are the usual picks"]
    }
  ],
  "searchQueries": ["best CRM for small teams"],
  "conversation": { "id": "8f6c1d2e-...", "turn": 1, "expiresAt": "2026-10-19T12:00:00.000Z" }
}
```

각 출처에는 `searchQueries`(이 출처를 결과로 돌려준 검색어), `cited`(답변 본문이 인라인으로 인용했는지), `citedText`(인용이 뒷받침하는 답변 문장)가 붙습니다. 상품처럼 어떤 검색도 돌려주지 않은 출처에는 `searchQueries`가 없습니다.

### 카드 배치

`layout`은 ChatGPT가 답변을 카드로 그렸을 때 나옵니다. `nodes`는 ChatGPT 화면의 순서를 따릅니다.

| 노드 | 담는 내용 |
| - | - |
| `row`, `box` | 카드 묶음. |
| `title`, `text`, `badge` | 카드 문구. |
| `image` | 사진: `images[].url`, `thumbnailUrl`, `pageUrl`. |
| `markdown` | 나머지 답변 본문. |
| `map` | `places`에 그 지도에 나온 각 장소의 `position`. |
| `form` | 다음 질문을 고르게 하는 양식. `choice` 노드에는 선택지와 처음 선택된 값이, `button` 노드에는 ChatGPT가 다음에 보낼 질문(`prompt`)이 들어 있습니다. 양식은 `text`와 `markdown`에서 빠집니다. |

## include 플래그

`CHATGPT`는 모든 응답 플래그를 지원합니다. `rawResponse`와 `html`을 제외하면 모두 기본으로 켜져 있으며, 끄려면 `false`를 보내세요.

| 플래그 | 기본값 | 효과 |
| - | - | - |
| `markdown` | `true` | `markdown`을 추가합니다. |
| `searchQueries` | `true` | `searchQueries`를 추가합니다. |
| `shopping` | `true` | 상품 카드를 추가합니다. |
| `ads` | `true` | `ads`를 추가합니다. |
| `rawResponse` | `false` | `rawResponse`를 추가합니다. [Markdown과 원본 응답](/ko/engines/response-options.md)을 참고하세요. |
| `html` | `false` | `html`을 추가합니다. 페이지가 저장되면 0.25크레딧. `location`, `CN`, `HK`, `continueFrom`과 함께 보내면 `422 EVIDENCE_UNSUPPORTED`로 거절합니다. [HTML 페이지](/ko/engines/html-pages.md)를 참고하세요. |
| `analysis` | `false` | `analysis`를 추가합니다. 1크레딧. [답변 분석](/ko/engines/answer-analysis.md)을 참고하세요. |
| `citationAnalysis` | `false` | 답변에 [Citation Analysis](/ko/research/citation-analysis.md)를 실행합니다. |
| `entityDetails` | `false` | `entityDetails`를 추가합니다. 추가 크레딧은 없습니다. [카드 상세](#카드-상세)를 참고하세요. |

## 카드 상세

`include.entityDetails`를 켜면 답변의 카드(상품, 장소, 앱, 브랜드)마다 사용자가 카드를 눌렀을 때 ChatGPT가 여는 상세 창을 함께 받습니다. 설명, 사양, 리뷰와 그 근거 페이지가 들어 있습니다. 상세 창은 자기 출처를 따로 인용하므로 답변 본문에 없는 출처까지 보여 줍니다.

| 필드 | 설명 |
| - | - |
| `name`, `category`, `query` | 답변에 보이는 카드 이름, 종류(`product`, `local_business`, `software`, `organization`), ChatGPT가 찾아본 이름. |
| `status` | `ok`, 또는 `error`와 함께 `failed`. |
| `markdown` | 상세 창의 Markdown. 인용 칩은 답변과 같은 모양입니다. |
| `sources` | 인용한 페이지를 처음 인용한 순서로 한 번씩: `position`, `url`, `label`, `site`, `description`. |
| `products` | 상품 상세 창 맨 위의 쇼핑 카드. `title`, `price`, `merchant`, `rating`, `num_reviews`, `url`, `offers`를 `shoppingCards[].products`와 같은 모양으로 담습니다. 창에 카드가 있을 때만 옵니다. |
| `images` | 상세 창의 사진. |
| `complete` | ChatGPT가 상세 창을 끝까지 쓰기 전에 멈추면 `false`. 그때까지의 본문과 출처가 들어 있습니다. |

`error`는 상세 요청이 실패하면 `ENTITY_DETAIL_FAILED`, 상세 창에 본문이 없으면 `ENTITY_DETAIL_EMPTY`, 상세를 조회할 대화나 턴 정보가 없으면 `ENTITY_DETAIL_UNAVAILABLE`입니다. `payload.location`, `CN`, `HK`, 대체 경로의 답변과 `include.html`에서도 카드 상세를 받을 수 있습니다.

ChatGPT가 전에 쓴 상세 창은 약 1초, 요청을 받고 새로 쓰는 상세 창은 10\~30초가 걸리며 한 번에 4개까지 엽니다. 답변마다 카드 20개까지 엽니다. 상세 창에는 추가 크레딧이 없고, 이어 묻기의 답변도 각자 상세 창을 받습니다.

```json theme={"theme":"css-variables"}
"entityDetails": [
  {
    "name": "Brooks Adrenaline GTS 25",
    "category": "product",
    "query": "Brooks Adrenaline GTS 25",
    "status": "ok",
    "markdown": "## Brooks Adrenaline GTS 25\n\nThe **Brooks Adrenaline GTS 25** is a **stability road running shoe** ... ([Brooks Running](https://www.brooksrunning.com/...))\n\n### Key specifications\n\n| Feature | Details |\n| --- | --- |\n| Heel-to-toe drop | 10 mm |\n...",
    "sources": [
      { "position": 1, "url": "https://www.brooksrunning.com/...", "label": "Men's Adrenaline GTS 25 Running Shoes | Brooks Running", "site": "Brooks Running" },
      { "position": 2, "url": "https://www.rei.com/product/249691/...", "label": "Brooks Adrenaline GTS 25 Road-Running Shoes - Men's | REI Co-op", "site": "REI" }
    ],
    "images": ["https://images.openai.com/..."],
    "complete": true
  }
]
```

## 이어 묻기

`payload.followUps`는 첫 답변 뒤에 같은 대화에서 최대 4개의 질문을 순서대로 더 묻습니다. 각 항목은 다음 중 하나입니다.

* `{ "prompt": "..." }`: 직접 쓴 질문.
* `{ "select": { "button": 0, "choices": { "budget": "Under $100" } } }`: 앞 답변에 있는 이어 묻기 양식의 버튼을 누릅니다.

`button`은 답변의 버튼을 0부터 세며 기본값은 첫 버튼입니다. `choices`는 `choice` 노드의 `name`으로, 또는 양식 순서대로 배열로 옵션을 고릅니다. 고르는 값은 옵션의 `value`나 `label`, 또는 0부터 센 위치입니다. 고르지 않은 항목은 ChatGPT가 선택해 둔 옵션을 그대로 쓰므로 `{ "select": {} }`는 버튼의 `prompt`를 그대로 보냅니다.

```json theme={"theme":"css-variables"}
{
  "taskType": "CHATGPT",
  "payload": {
    "prompt": "best CRM for a small team",
    "country": "US",
    "followUps": [{ "prompt": "Which of these has the best free plan?" }]
  }
}
```

최상위 필드는 첫 답변 그대로입니다. 응답의 `followUps`에는 이어진 답변이 차례로 들어가며, 각 항목에 실제로 보낸 질문(`prompt`), `select`가 누른 내용(`selection`: 버튼 `label`과 항목별 값), 첫 답변과 같은 필드가 담깁니다.

`select`를 누를 수 없으면 남은 질문은 보내지 않고, `followUpsStopped`에 해당 항목의 `index`, `code`, `message`를 담습니다.

| 코드 | 의미 |
| - | - |
| `NO_FOLLOW_UP_FORM` | 앞 답변에 양식이 없습니다. |
| `BUTTON_NOT_FOUND` | 그 위치에 버튼이 없습니다. |
| `CHOICE_NOT_FOUND` | 그 이름의 선택 항목이 없습니다. |
| `OPTION_NOT_FOUND` | 고른 값과 맞는 옵션이 없습니다. |
| `PROMPT_UNAVAILABLE` | 버튼에 보낼 질문이 없습니다. |

태스크는 받은 답변까지로 완료됩니다. 답변마다 1크레딧이며, 태스크는 모든 이어 묻기만큼 크레딧을 예약하고 실제로 반환한 답변만 청구합니다. `include.analysis`, `include.citationAnalysis`, `include.html`은 첫 답변에 적용됩니다. 다른 엔진은 `followUps`를 `400 VALIDATION_ERROR`로 거절합니다.

## 나중에 이어 묻기

답변을 읽은 뒤 다음 질문을 정하려면 새 `CHATGPT` 태스크의 `payload.continueFrom`에 완료된 태스크의 id를 넣고, `prompt` 또는 그 태스크의 마지막 답변에 있는 양식을 누르는 `select`(규칙은 `followUps`와 같습니다)를 함께 보내세요.

```json theme={"theme":"css-variables"}
{
  "taskType": "CHATGPT",
  "payload": {
    "continueFrom": "8f6c1d2e-...",
    "select": { "button": 0 }
  }
}
```

* 양식이 있는 답변에는 `forms`가 붙습니다. 각 양식의 `buttons` 순서가 `select.button`이고, `choices`에는 `name`, 처음 선택된 옵션, `options`가 있습니다.
* `conversation.id`는 대화를 연 태스크, `turn`은 지금까지의 답변 수, `expiresAt`은 이어 물을 수 있는 마지막 시각으로 첫 답변 뒤 3시간입니다.
* 이어 묻기는 지정한 태스크의 마지막 답변 아래에 질문하므로, 같은 태스크를 두 번 지정하면 대화가 갈라집니다.
* 원래의 `country`와 `location`을 이어받습니다. 빼거나 같은 값을 보내세요.
* 다른 계정이나 엔진의 태스크, 완료되지 않은 태스크, 잘못된 `select`는 `400 VALIDATION_ERROR`로 거절됩니다. 만료된 대화는 `400 CONVERSATION_EXPIRED`로 거절됩니다. 어느 쪽도 과금되지 않습니다.
* 이어 묻기의 가격은 일반 ChatGPT 태스크와 같습니다.

## 관련 문서

* [ChatGPT 제품 페이지](https://querying.ai/ko/engines/chatgpt)
* [엔진 개요](/ko/engines/overview.md)


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.