NewsClip Custom API

NewsClip Custom API를 사용하여 비동기 커스텀 뉴스 수집 요청을 생성하고, 처리 상태 및 결과를 조회할 수 있습니다.

인증

모든 API 요청에는 PULITZER-API-KEY 헤더에 API 키가 필요합니다.

헤더 설정

PULITZER-API-KEY: YOUR_API_KEY
curl -X POST "https://api.pulitzer.ai/live/openapi/news-clipping-custom/collect" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

커스텀 수집 요청 등록

비동기 뉴스 수집 요청을 생성합니다. 결과는 collect_id로 조회합니다.

POST https://api.pulitzer.ai/live/openapi/news-clipping-custom/collect

요청 본문

{
  "channel": "google_news",
  "keyword": "AI 반도체",
  "max_pages": 3,
  "site_domains": [
    "chosun.com",
    "donga.com"
  ],
  "filter_prompt": "투자/사업 전략 관련 기사만 포함",
  "language": "ko",
  "date_from": "2026-05-01",
  "date_to": "2026-05-31"
}

Request Body Parameters

파라미터타입필수설명
channelstring수집 채널: naver_news | google_news | naver_blog
keywordstring검색 키워드 (1-200자)
max_pagesinteger최대 수집 페이지 (1-10)
site_domainsarray[string]도메인 필터 (google_news 전용, 최대 10개)
filter_promptstringAI 필터링 프롬프트 (미입력 시 전체 기사 포함)
languagestring언어 필터 (ISO 639-1 코드, 미입력 시 언어 제한 없음. 예: ko, en, ja)
date_fromstring(date)검색 시작일 (YYYY-MM-DD)
date_tostring(date)검색 종료일 (YYYY-MM-DD, 최대 31일 범위)

응답

{
  "status": "SUCCESS",
  "success": true,
  "message": "수집 요청이 등록되었습니다. collect_id로 상태를 조회하세요.",
  "data": {
    "collect_id": 123,
    "estimated_completion_kst": "2026-06-01T18:30:00+09:00"
  }
}

Response Fields

필드타입설명
statusstring응답 상태 코드 문자열 (성공 시 SUCCESS)
successboolean요청 성공 여부
messagestring응답 메시지
data.collect_idinteger생성된 수집 요청 ID
data.estimated_completion_kststring | null예상 완료 시간 (KST ISO 8601)
curl -X POST "https://api.pulitzer.ai/live/openapi/news-clipping-custom/collect" \
  -H "PULITZER-API-KEY: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "channel": "google_news",
    "keyword": "AI 반도체",
    "max_pages": 3,
    "site_domains": ["chosun.com", "donga.com"],
    "filter_prompt": "투자/사업 전략 관련 기사만 포함",
    "language": "ko",
    "date_from": "2026-05-01",
    "date_to": "2026-05-31"
  }'

커스텀 수집 요청 목록

사용자의 커스텀 수집 요청 내역을 페이지네이션으로 조회합니다.

GET https://api.pulitzer.ai/live/openapi/news-clipping-custom/collect/list

Query Parameters

파라미터타입필수설명
pageinteger페이지 번호 (기본: 1)
page_sizeinteger페이지 크기 (1-100, 기본: 20)
statusstring상태 필터: pending | processing | done | error

응답

{
  "status": "SUCCESS",
  "success": true,
  "message": "수집 요청 내역 조회 성공",
  "data": [
    {
      "collect_id": 123,
      "channel": "google_news",
      "keyword": "AI 반도체",
      "max_pages": 3,
      "site_domains": [
        "chosun.com"
      ],
      "filter_prompt": "투자/사업 전략 관련 기사만 포함",
      "status": "processing",
      "charged_pages": 0,
      "total_cost": 0,
      "created_kst": "2026-06-01T17:30:00+09:00",
      "estimated_completion_kst": "2026-06-01T18:30:00+09:00"
    }
  ],
  "page_count": 1,
  "total_count": 1
}

Response Fields

필드타입설명
statusstring응답 상태 코드 문자열
successboolean요청 성공 여부
messagestring응답 메시지
data[]array수집 요청 목록
data[].collect_idinteger수집 요청 ID
data[].channelstring수집 채널
data[].keywordstring검색 키워드
data[].max_pagesinteger요청 최대 페이지 수
data[].site_domainsarray[string] | null도메인 필터 목록
data[].filter_promptstring | nullAI 필터 프롬프트
data[].languagestring | null언어 필터 (ISO 639-1, None=제한없음)
data[].statusstring요청 상태 (pending/processing/done/error)
data[].charged_pagesinteger과금된 페이지 수
data[].total_costinteger총 비용(원)
data[].created_kststring | null요청 생성 시간 (KST ISO 8601)
data[].estimated_completion_kststring | null예상 완료 시간
page_countinteger전체 페이지 수
total_countinteger전체 항목 수
curl -X GET "https://api.pulitzer.ai/live/openapi/news-clipping-custom/collect/list?page=1&page_size=20&status=processing" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

커스텀 수집 상태/결과 조회

collect_id 기준으로 처리 상태와 기사 결과를 조회합니다.

GET https://api.pulitzer.ai/live/openapi/news-clipping-custom/collect/{`{collect_id}`}

상태 값

  • pending: 대기 중
  • processing: 수집 진행 중
  • done: 수집 완료
  • error: 수집 실패

응답

{
  "status": "SUCCESS",
  "success": true,
  "message": "수집 상태 조회 성공",
  "data": {
    "collect_id": 123,
    "channel": "google_news",
    "keyword": "AI 반도체",
    "max_pages": 3,
    "site_domains": [
      "chosun.com"
    ],
    "filter_prompt": null,
    "status": "done",
    "charged_pages": 2,
    "total_cost": 400,
    "created_kst": "2026-06-01T17:30:00+09:00",
    "processing_kst": "2026-06-01T17:31:00+09:00",
    "completed_kst": "2026-06-01T17:36:00+09:00",
    "error_message": null,
    "estimated_completion_kst": "2026-06-01T17:36:00+09:00",
    "full_articles": [
      {
        "title_ko": "AI 반도체 투자 확대",
        "title_en": "Expanded Investment in AI Semiconductors",
        "summary_ko": "국내 기업이 AI 반도체 투자 확대를 발표...",
        "summary_en": "A local company announced an expansion in AI semiconductor investment...",
        "url": "https://example.com/article-1",
        "media_name": "Example Media",
        "pub_date": "2026-06-01T09:00:00+09:00"
      }
    ],
    "filtered_articles": [
      {
        "title_ko": "AI 반도체 투자 확대",
        "title_en": "Expanded Investment in AI Semiconductors",
        "summary_ko": "국내 기업이 AI 반도체 투자 확대를 발표...",
        "summary_en": "A local company announced an expansion in AI semiconductor investment...",
        "url": "https://example.com/article-1",
        "media_name": "Example Media",
        "pub_date": "2026-06-01T09:00:00+09:00"
      }
    ]
  }
}

Response Fields

필드타입설명
statusstring응답 상태 코드 문자열
successboolean요청 성공 여부
messagestring응답 메시지
data.collect_idinteger수집 요청 ID
data.channelstring수집 채널
data.keywordstring검색 키워드
data.max_pagesinteger요청 최대 페이지 수
data.site_domainsarray[string] | null도메인 필터 목록
data.filter_promptstring | nullAI 필터 프롬프트
data.languagestring | null언어 필터 (ISO 639-1, None=제한없음)
data.statusstring요청 상태
data.charged_pagesinteger과금된 페이지 수
data.total_costinteger총 비용(원)
data.created_kststring | null요청 생성 시간
data.processing_kststring | null처리 시작 시간
data.completed_kststring | null처리 완료 시간
data.error_messagestring | null실패 시 에러 메시지
data.estimated_completion_kststring | null예상 완료 시간
data.full_articles[]array필터링 전 전체 기사 목록
data.filtered_articles[]array필터링 후 기사 목록
*.title_ko/title_enstring | null기사 제목(한/영)
*.summary_ko/summary_enstring | null기사 요약(한/영)
*.urlstring | null기사 원문 URL
*.media_namestring | null매체명
*.pub_datestring | null기사 발행 시각
curl -X GET "https://api.pulitzer.ai/live/openapi/news-clipping-custom/collect/123" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"