Blog API

Use the Blog API to generate and manage AI-powered blog posts.

Authentication

All API requests require an API key in the PULITZER-API-KEY header.

Header Setup

PULITZER-API-KEY: YOUR_API_KEY
curl -X GET "https://api.pulitzer.ai/live/openapi/blog/list" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

Generate Blog

Generate an AI-powered blog post based on keywords.

POST https://api.pulitzer.ai/live/openapi/blog/generate

Request Body

{
  "keyword": "AI λ§ˆμΌ€νŒ… μžλ™ν™” νŠΈλ Œλ“œ",
  "blog_type": "marketing",
  "language": "ko",
  "target_length": "medium",
  "tone": "professional",
  "is_image": false,
  "is_search": true,
  "reference_ids": [
    1,
    2
  ]
}

Request Body Parameters

ParameterTypeRequiredDescription
keywordstringβœ…Blog generation keyword (max 2000 chars)
blog_typestring❌Blog type (general, tech, marketing, news)
languagestring❌Language (ko, en, ja, zh, default: ko)
target_lengthstring❌Target length (short, medium, long)
tonestring❌Tone (professional, casual, friendly)
is_imageboolean❌Auto-generate images
is_searchboolean❌Use web search
reference_idsarray[integer]❌Reference IDs

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "λΈ”λ‘œκ·Έ 생성 μ™„λ£Œ",
  "data": {
    "blog_id": 100,
    "title": "2026 AI λ§ˆμΌ€νŒ… μžλ™ν™” μ™„λ²½ κ°€μ΄λ“œ",
    "content": "인곡지λŠ₯ 기술의 λ°œμ „μœΌλ‘œ λ§ˆμΌ€νŒ… μžλ™ν™”κ°€...",
    "content_blocks": [
      {
        "type": "text",
        "content": "인곡지λŠ₯ 기술의 λ°œμ „μœΌλ‘œ..."
      }
    ],
    "keyword": "AI λ§ˆμΌ€νŒ… μžλ™ν™” νŠΈλ Œλ“œ",
    "language": "ko"
  }
}
curl -X POST "https://api.pulitzer.ai/live/openapi/blog/generate" \
  -H "PULITZER-API-KEY: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "AI Marketing Automation Trends",
    "blog_type": "marketing",
    "language": "en",
    "is_search": true
  }'

Modify Blog with AI

Modify an existing blog post with AI.

POST https://api.pulitzer.ai/live/openapi/blog/modify-ai

Request Body

{
  "blog_id": 100,
  "modification_prompt": "더 μΊμ£Όμ–Όν•œ ν†€μœΌλ‘œ μˆ˜μ •ν•΄μ£Όμ„Έμš”"
}

Request Body Parameters

ParameterTypeRequiredDescription
blog_idintegerβœ…Blog ID to modify
modification_promptstringβœ…Modification instructions (max 2000 chars)

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "λΈ”λ‘œκ·Έ μˆ˜μ • μ™„λ£Œ",
  "data": {
    "blog_id": 100,
    "title": "2026 AI λ§ˆμΌ€νŒ… μžλ™ν™” μ™„λ²½ κ°€μ΄λ“œ",
    "content": "μˆ˜μ •λœ λΈ”λ‘œκ·Έ λ‚΄μš©..."
  }
}
curl -X POST "https://api.pulitzer.ai/live/openapi/blog/modify-ai" \
  -H "PULITZER-API-KEY: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "blog_id": 100,
    "modification_prompt": "Please revise to a more casual tone"
  }'

List Blogs

Retrieve user's blog list.

GET https://api.pulitzer.ai/live/openapi/blog/list

Query Parameters

ParameterTypeRequiredDescription
pageinteger❌Page number (default: 1)
page_sizeinteger❌Page size (1-100, default: 20)

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "λΈ”λ‘œκ·Έ λͺ©λ‘ 쑰회 성곡",
  "data": {
    "blog_list": [
      {
        "id": 100,
        "title": "2026 AI λ§ˆμΌ€νŒ… μžλ™ν™” μ™„λ²½ κ°€μ΄λ“œ",
        "keyword": "AI λ§ˆμΌ€νŒ… μžλ™ν™” νŠΈλ Œλ“œ",
        "language": "ko",
        "is_public": false,
        "created_at": 1760079885
      }
    ],
    "page_count": 5,
    "total_count": 42
  }
}
curl -X GET "https://api.pulitzer.ai/live/openapi/blog/list?page=1&page_size=10" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

Blog Detail

Retrieve detailed information of a blog post.

GET https://api.pulitzer.ai/live/openapi/blog/{`{blog_id}`}

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "λΈ”λ‘œκ·Έ 쑰회 성곡",
  "data": {
    "id": 100,
    "title": "2026 AI λ§ˆμΌ€νŒ… μžλ™ν™” μ™„λ²½ κ°€μ΄λ“œ",
    "content": "인곡지λŠ₯ 기술의 λ°œμ „μœΌλ‘œ λ§ˆμΌ€νŒ… μžλ™ν™”κ°€...",
    "content_blocks": [
      {
        "type": "text",
        "content": "인곡지λŠ₯ 기술의 λ°œμ „μœΌλ‘œ..."
      },
      {
        "type": "image",
        "image_url": "https://...",
        "caption": "AI λ§ˆμΌ€νŒ… 도식"
      }
    ],
    "keyword": "AI λ§ˆμΌ€νŒ… μžλ™ν™” νŠΈλ Œλ“œ",
    "language": "ko",
    "is_public": false,
    "created_at": 1760079885
  }
}
curl -X GET "https://api.pulitzer.ai/live/openapi/blog/100" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

Delete Blog

Delete a blog post.

DELETE https://api.pulitzer.ai/live/openapi/blog/{`{blog_id}`}

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "λΈ”λ‘œκ·Έ μ‚­μ œ 성곡"
}
curl -X DELETE "https://api.pulitzer.ai/live/openapi/blog/100" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

Blog History

Retrieve blog modification history.

GET https://api.pulitzer.ai/live/openapi/blog/{`{blog_id}`}/history

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "μˆ˜μ • νžˆμŠ€ν† λ¦¬ 쑰회 성곡",
  "data": [
    {
      "id": 1,
      "title": "이전 제λͺ©",
      "content": "이전 λ³Έλ¬Έ λ‚΄μš©...",
      "created_kst": "2026-05-25T14:30:00"
    }
  ]
}
curl -X GET "https://api.pulitzer.ai/live/openapi/blog/100/history" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

Blog References

Manage reference materials for blog generation.

Create Reference

POST https://api.pulitzer.ai/live/openapi/blog/reference
{
  "title": "λ§ˆμΌ€νŒ… λ¦¬μ„œμΉ˜ 자료",
  "content": "2026λ…„ λ””μ§€ν„Έ λ§ˆμΌ€νŒ… νŠΈλ Œλ“œ 리포트...",
  "url": "https://example.com/report"
}

List References

GET https://api.pulitzer.ai/live/openapi/blog/references

Delete Reference

DELETE https://api.pulitzer.ai/live/openapi/blog/reference/{`{reference_id}`}

Response (List)

{
  "status": "SUCCESS",
  "success": true,
  "data": [
    {
      "id": 1,
      "title": "λ§ˆμΌ€νŒ… λ¦¬μ„œμΉ˜ 자료",
      "content": "2026λ…„ λ””μ§€ν„Έ λ§ˆμΌ€νŒ… νŠΈλ Œλ“œ 리포트...",
      "url": "https://example.com/report"
    }
  ]
}
curl -X POST "https://api.pulitzer.ai/live/openapi/blog/reference" \
  -H "PULITZER-API-KEY: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Marketing Research Report",
    "content": "2026 Digital Marketing Trends Report...",
    "url": "https://example.com/report"
  }'