curl --request GET \
--url https://platform-api.trychainshift.ai/api/v1/platform/answers \
--header 'API-Key: <api-key>'import requests
url = "https://platform-api.trychainshift.ai/api/v1/platform/answers"
headers = {"API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'API-Key': '<api-key>'}};
fetch('https://platform-api.trychainshift.ai/api/v1/platform/answers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://platform-api.trychainshift.ai/api/v1/platform/answers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://platform-api.trychainshift.ai/api/v1/platform/answers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://platform-api.trychainshift.ai/api/v1/platform/answers")
.header("API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform-api.trychainshift.ai/api/v1/platform/answers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"answers": [
{
"id": "pv9LpgpbQyXpCAv8l0Lf0w",
"model": "NAVER_AI_BRIEFING",
"promptID": "KNUETdAfRhDY9lQTgu9wuw",
"region": "KR",
"status": "SUCCESS",
"content": "AI 검색 노출을 늘리려면 먼저 어떤 질문에서 브랜드가 인용되는지 측정하고, 인용이 많은 출처 유형에 맞춰 콘텐츠를 보강하는 순서로 접근합니다.",
"createdAt": "2026-08-05T02:24:50Z",
"fanouts": [
"AI 검색 노출 최적화 방법"
],
"markdownURL": "https://cdn.trychainshift.ai/78af3dd2-0b10-4dc5-8c53-83fc875a625e.md",
"query": "우리 서비스가 AI 검색에 노출되게 하려면 어떻게 해야 하나요?",
"runID": "S8cqDSjSot67bCK6YtmvHw",
"sources": [
{
"domain": "wikipedia.org",
"title": "Search engine optimization",
"url": "https://en.wikipedia.org/wiki/Search_engine_optimization"
}
]
}
],
"nextCursor": "eyJpZCI6NzIzMDF9"
}{
"code": "COMMON_VALIDATION",
"details": [
"limit: 100 이하여야 합니다"
],
"message": "데이터 검증에 실패했습니다"
}{
"code": "COMMON_UNAUTHORIZED",
"message": "인증되지 않은 사용자입니다"
}{
"code": "INSUFFICIENT_CREDITS",
"message": "크레딧이 부족합니다."
}{
"code": "PLATFORM_RATE_LIMIT_EXCEEDED",
"message": "요청이 너무 많습니다. 잠시 후 다시 시도해주세요."
}{
"message": "Internal Server Error",
"requestID": "bkZqnHQepkgTOocTvyHWSlHcGzRqQbZk"
}답변 목록
프롬프트를 실행해서 얻은 답변 목록을 조회합니다. 각 답변은 본문과 함께 인용(sources)·팬아웃(fanouts)·원본 마크다운(markdownURL)을 포함하며, PENDING/FAILED 실행도 상태와 함께 반환됩니다.
markdownURL 은 status 가 SUCCESS 인 답변에 항상 포함됩니다. 수집 전(PENDING)·수집 실패(FAILED) 답변에만 원본이 없어 생략되므로, SUCCESS 답변을 다룰 때 값이 없는 경우를 대비할 필요는 없습니다.
오류
| HTTP | 코드 | 설명 |
|---|---|---|
| 400 | COMMON_VALIDATION | • limit 범위 위반(1~100) • 지원하지 않는 status 값 |
| 400 | COMMON_INVALID_CURSOR | cursor 형식 오류 |
| 400 | COMMON_BINDING | runID·promptSetID·promptID 형식 오류 (details 에 PLATFORM_INVALID_ID) |
| 401 | COMMON_UNAUTHORIZED | API 키 또는 액세스 토큰이 없거나 유효하지 않음 |
| 402 | INSUFFICIENT_CREDITS | 조직 크레딧 잔액이 이 요청의 단가보다 적음 |
| 429 | PLATFORM_RATE_LIMIT_EXCEEDED | 요청 한도 초과. Retry-After 헤더의 초만큼 기다린 뒤 재시도 |
| 500 | — | 서버 내부 오류. code 없이 message 와 requestID 를 반환 |
curl --request GET \
--url https://platform-api.trychainshift.ai/api/v1/platform/answers \
--header 'API-Key: <api-key>'import requests
url = "https://platform-api.trychainshift.ai/api/v1/platform/answers"
headers = {"API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'API-Key': '<api-key>'}};
fetch('https://platform-api.trychainshift.ai/api/v1/platform/answers', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://platform-api.trychainshift.ai/api/v1/platform/answers",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://platform-api.trychainshift.ai/api/v1/platform/answers"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://platform-api.trychainshift.ai/api/v1/platform/answers")
.header("API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform-api.trychainshift.ai/api/v1/platform/answers")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"answers": [
{
"id": "pv9LpgpbQyXpCAv8l0Lf0w",
"model": "NAVER_AI_BRIEFING",
"promptID": "KNUETdAfRhDY9lQTgu9wuw",
"region": "KR",
"status": "SUCCESS",
"content": "AI 검색 노출을 늘리려면 먼저 어떤 질문에서 브랜드가 인용되는지 측정하고, 인용이 많은 출처 유형에 맞춰 콘텐츠를 보강하는 순서로 접근합니다.",
"createdAt": "2026-08-05T02:24:50Z",
"fanouts": [
"AI 검색 노출 최적화 방법"
],
"markdownURL": "https://cdn.trychainshift.ai/78af3dd2-0b10-4dc5-8c53-83fc875a625e.md",
"query": "우리 서비스가 AI 검색에 노출되게 하려면 어떻게 해야 하나요?",
"runID": "S8cqDSjSot67bCK6YtmvHw",
"sources": [
{
"domain": "wikipedia.org",
"title": "Search engine optimization",
"url": "https://en.wikipedia.org/wiki/Search_engine_optimization"
}
]
}
],
"nextCursor": "eyJpZCI6NzIzMDF9"
}{
"code": "COMMON_VALIDATION",
"details": [
"limit: 100 이하여야 합니다"
],
"message": "데이터 검증에 실패했습니다"
}{
"code": "COMMON_UNAUTHORIZED",
"message": "인증되지 않은 사용자입니다"
}{
"code": "INSUFFICIENT_CREDITS",
"message": "크레딧이 부족합니다."
}{
"code": "PLATFORM_RATE_LIMIT_EXCEEDED",
"message": "요청이 너무 많습니다. 잠시 후 다시 시도해주세요."
}{
"message": "Internal Server Error",
"requestID": "bkZqnHQepkgTOocTvyHWSlHcGzRqQbZk"
}fanouts·sources가 언제 비는지)은 답변 객체를, 실제 응답 예시와 해석은 답변 조회하기 가이드를 참고하세요.인증
"조직 API 키를 입력하세요. 예: 'cs_live_xxxx'"
쿼리 매개변수
특정 프롬프트 실행으로 범위를 좁히는 필터 (실행 요청 시 발급된 ID)
특정 프롬프트 세트로 범위를 좁히는 필터 (세트 목록·생성 응답의 id)
특정 프롬프트로 범위를 좁히는 필터 (프롬프트 목록·생성 응답의 id)
특정 모델로 범위를 좁히는 필터
특정 지역으로 범위를 좁히는 필터
수집·분류 상태 필터. PENDING(아직 답변 미준비), SUCCESS(답변 분류 완료), FAILED(실패 또는 건너뜀) 중 하나
인용 출처 도메인 필터. 응답 sources[].domain 값이나 출처 통계의 domain 값을 그대로 넣습니다 (eTLD+1·서브도메인 축 모두 매칭, 최대 253자)
인용 출처 URL 필터. 응답 sources[].url 값이나 URL 통계의 url 값을 그대로 넣습니다 (통계와 동일한 정규화 축 매칭, 최대 2048자)
생성일 시작 (RFC3339)
생성일 종료 (RFC3339)
이전 응답의 nextCursor (첫 요청은 생략)
페이지 크기 (기본 20, 최대 100)