Release API
Release API를 사용하여 보도자료를 기자에게 배포할 수 있습니다. 상품 선택, 카테고리 타겟팅, 배포 생성/조회를 지원합니다.인증
모든 API 요청에는 PULITZER-API-KEY 헤더에 API 키가 필요합니다.
헤더 설정
PULITZER-API-KEY: YOUR_API_KEY배포 플로우
배포 생성은 아래 순서를 따릅니다:
- 상품 목록 조회 (GET /products)
- 카테고리 목록 조회 (GET /categories)
- 최적 배포 시간 조회 (GET /optimal-time) - 선택
- 배포 생성 (POST /create)
curl -X GET "https://api.pulitzer.ai/live/openapi/release/products" \
-H "PULITZER-API-KEY: YOUR_API_KEY"배포 상품 목록
배포 상품(가격, 기자 수 등)을 조회합니다. 배포 생성 시 product_id를 선택합니다. 표시 가격은 부가세 별도입니다.
GET https://api.pulitzer.ai/live/openapi/release/productsQuery Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
country_code | string | No | 국가 코드 (kr, id, ph, sg, my, reg_na). 기본값: kr |
응답
{
"status": "SUCCESS",
"success": true,
"message": "배포 상품 목록 조회 성공",
"data": [
{
"id": 1,
"title": "베이직",
"description": "100명 기자 대상 배포",
"price": 55000,
"currency": "KRW",
"release_count": 100,
"release_tiers": "basic",
"is_recommended": false
}
]
}curl -X GET "https://api.pulitzer.ai/live/openapi/release/products?country_code=kr" \
-H "PULITZER-API-KEY: YOUR_API_KEY"배포 카테고리 목록
배포 대상 카테고리를 조회합니다. 배포 생성 시 카테고리를 선택하면 해당 분야 기자들에게 발송됩니다.
GET https://api.pulitzer.ai/live/openapi/release/categories응답
{
"status": "SUCCESS",
"success": true,
"data": [
{
"id": 1,
"name": "IT/과학",
"categories": [
{
"id": 1,
"name": "AI/머신러닝",
"reporter_count": 245
},
{
"id": 2,
"name": "모바일",
"reporter_count": 189
}
]
}
]
}curl -X GET "https://api.pulitzer.ai/live/openapi/release/categories" \
-H "PULITZER-API-KEY: YOUR_API_KEY"배포 생성
보도자료를 기자에게 배포합니다. 선택한 상품의 가격에 부가세(10%)를 포함한 금액만큼 API 크레딧이 차감됩니다.
POST https://api.pulitzer.ai/live/openapi/release/createRequest Body Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
press_id | integer | Yes | 보도자료 ID |
product_id | integer | Yes | 배포 상품 ID (GET /products에서 조회) |
release_category_ids | integer[] | Yes | 배포 카테고리 ID 목록 (1개 이상) |
release_method | string | Yes | IMMEDIATE (즉시배포) 또는 EXPERT_EDIT (전문가 첨삭) |
email_title | string | Yes | 이메일 제목 |
email_content | string | Yes | 이메일 내용 (서문) |
scheduled_kst | string | No | 예약 배포 시간 (ISO 8601). 미입력시 즉시 배포 |
country_code | string | No | 국가 코드 (kr, id, ph, sg, my, reg_na). 기본값: kr |
include_crm_reporters | boolean | No | CRM 배포 대상 기자 포함 여부. 기본값: false |
응답
{
"status": "SUCCESS",
"success": true,
"message": "배포가 생성되었습니다.",
"data": {
"release_id": 456,
"press_id": 123,
"product_title": "베이직",
"price": 55000,
"currency": "KRW",
"reporter_count": 98,
"release_method": "IMMEDIATE",
"status": "SENT",
"scheduled_kst": null
}
}curl -X POST "https://api.pulitzer.ai/live/openapi/release/create" \
-H "PULITZER-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"press_id": 123,
"product_id": 1,
"release_category_ids": [1, 3, 5],
"release_method": "IMMEDIATE",
"email_title": "퓰리처AI, 보도자료 배포 API 출시",
"email_content": "안녕하세요, 퓰리처AI입니다...",
"country_code": "kr",
"include_crm_reporters": true
}'최적 배포 시간 조회
최적의 보도자료 배포 시간을 조회합니다. 오전 8~10시 사이 30분 단위 슬롯을 추천합니다.
GET https://api.pulitzer.ai/live/openapi/release/optimal-time응답
{
"status": "SUCCESS",
"success": true,
"data": {
"optimal_time": "2026-05-28T08:00:00+09:00",
"optimal_time_str": "2026.05.28. 오전 8시"
}
}curl -X GET "https://api.pulitzer.ai/live/openapi/release/optimal-time" \
-H "PULITZER-API-KEY: YOUR_API_KEY"배포 이력 조회
보도자료 배포 이력을 페이지네이션으로 조회합니다.
GET https://api.pulitzer.ai/live/openapi/release/historyQuery Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
page | integer | 페이지 번호 (기본값: 1) |
page_size | integer | 페이지 크기 (1~100, 기본값: 20) |
sort | string | 정렬 (DESC/ASC, 기본값: DESC) |
keyword | string | 검색어 (보도자료 제목) |
응답
{
"status": "SUCCESS",
"success": true,
"data": [
{
"release_id": 456,
"press_id": 123,
"press_title": "퓰리처AI 보도자료 배포 API 출시",
"subject": "퓰리처AI, 보도자료 배포 API 출시",
"from_name": "김철수",
"reporter_count": 98,
"status": "SENT",
"is_paid": true,
"created_kst": "2026-05-27T10:30:00",
"sent_kst": "2026-05-27T10:30:05"
}
],
"page_count": 3,
"total_count": 52
}curl -X GET "https://api.pulitzer.ai/live/openapi/release/history?page=1&page_size=20&sort=DESC" \
-H "PULITZER-API-KEY: YOUR_API_KEY"최근 배포 상태 조회
최근 배포 요청의 상태를 간략히 조회합니다.
GET https://api.pulitzer.ai/live/openapi/release/statusQuery Parameters
| 파라미터 | 타입 | 설명 |
|---|---|---|
limit | integer | 조회 건수 (1~50, 기본값: 10) |
curl -X GET "https://api.pulitzer.ai/live/openapi/release/status?limit=10" \
-H "PULITZER-API-KEY: YOUR_API_KEY"배포 상세 조회
특정 배포건의 상세 정보(수신 기자, 상태 등)를 조회합니다.
GET https://api.pulitzer.ai/live/openapi/release/{release_id}응답
{
"status": "SUCCESS",
"success": true,
"data": {
"release_id": 456,
"press_id": 123,
"press_title": "퓰리처AI 보도자료 배포 API 출시",
"subject": "퓰리처AI, 보도자료 배포 API 출시",
"from_name": "김철수",
"introduction": "안녕하세요...",
"contact": "cs@company.com",
"reporters": [
{
"id": 1,
"name": "기자1",
"email": "re***",
"media": "매체A"
}
],
"reporter_count": 98,
"status": "SENT",
"is_paid": true,
"product_id": 1,
"payment_price": 55000,
"payment_currency": "KRW",
"release_method": "IMMEDIATE",
"created_kst": "2026-05-27T10:30:00",
"sent_kst": "2026-05-27T10:30:05",
"scheduled_kst": null
}
}curl -X GET "https://api.pulitzer.ai/live/openapi/release/42" \
-H "PULITZER-API-KEY: YOUR_API_KEY"서문 AI 생성
배포용 서문(이메일 본문 앞부분)을 AI로 생성합니다. 발신자 정보를 제공하면 변수를 실제 값으로 대체합니다.
POST https://api.pulitzer.ai/live/openapi/release/{press_id}/introductionRequest Body Parameters
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
sender_name | string | No | 발신자 이름 |
sender_title | string | No | 발신자 직책 |
sender_contact | string | No | 발신자 연락처 |
company_name | string | No | 회사명 |
과금
AI 생성 크레딧 1,000원 차감
응답
{
"status": "SUCCESS",
"success": true,
"data": {
"introduction": "안녕하세요, 김철수 PR팀장입니다...",
"press_id": 123
}
}curl -X POST "https://api.pulitzer.ai/live/openapi/release/123/introduction" \
-H "PULITZER-API-KEY: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"sender_name": "김철수",
"sender_title": "PR팀장",
"sender_contact": "cs@company.com",
"company_name": "주식회사 테크"
}'에러 응답
발생 가능한 에러 코드입니다.
| HTTP Status | Error Code | 설명 |
|---|---|---|
| 400 | PRODUCT_NOT_FOUND | 상품이 존재하지 않음 |
| 400 | WRONG_PRODUCT_KIND | 배포 상품이 아닌 상품 선택 |
| 400 | PRODUCT_INACTIVE | 비활성 상품 |
| 400 | INVALID_CATEGORY | 유효하지 않은 카테고리 ID |
| 400 | INVALID_SCHEDULE | 잘못된 예약 시간 형식 |
| 402 | INSUFFICIENT_API_CREDIT | API 크레딧 부족 |
| 403 | NOT_AUTHORIZED | 보도자료 접근 권한 없음 |
| 404 | PRESS_NOT_FOUND | 보도자료가 존재하지 않음 |