Press API

Use the Press API to generate and manage AI-powered press releases.

Authentication

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

Header Setup

PULITZER-API-KEY: YOUR_API_KEY

Getting API Key

You can obtain an API key from the PulitzerAI dashboard.

  • Navigate to Settings after logging into the dashboard
  • Create a new key in the API Key Management section
  • Store the generated key securely
curl -X GET "https://api.pulitzer.ai/live/openapi/press/list" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

Create Press Release

AI automatically generates press releases based on keywords.

POST https://api.pulitzer.ai/live/openapi/press/create-v2

Request Body

{
  "keyword": "Pulitzer AI Press Release Generation API Launch",
  "language": "en",
  "is_public": false,
  "is_image": false,
  "is_search": false,
  "kind": "Product Launch",
  "is_lead_text": false,
  "reference_ids": [
    1,
    2
  ],
  "img_options": [
    "professional",
    "modern"
  ]
}

Request Body Parameters

ParameterTypeRequiredDefaultDescription
keywordstringβœ…-Core keyword for press release generation (max 1000 chars)
languagestring❌koOutput language (ko, en, ja, fr, zh, id)
is_publicboolean❌falseWhether to make the press release public
is_imageboolean❌falseWhether to auto-generate images
is_searchboolean❌falseWhether to use web search
kindstring❌nullPress release type (e.g. "Product Launch", "Personnel")
is_lead_textboolean❌falseWhether to generate a lead text (subtitle)
reference_idsarray[integer]❌nullList of reference press release IDs
img_optionsarray[string]❌nullImage generation options (e.g. ["professional", "modern"])

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "Press release created successfully",
  "data": {
    "press_id": 658,
    "title": "Pulitzer AI Officially Launches Innovative Press Release Generation API",
    "content": "Pulitzer AI, developed by StarSeed, has launched a press release generation API...",
    "img_url": null,
    "language": "en",
    "created_at": 1760079885
  }
}

Response Fields

FieldTypeDescription
statusstringResponse status ("SUCCESS" or "FAIL")
successbooleanWhether the request was successful
messagestringResponse message
data.press_idintegerGenerated press release ID
data.titlestringGenerated press release title
data.contentstringGenerated press release content
data.img_urlstring|nullGenerated image URL (only when image generation is enabled)
data.languagestringPress release language code
data.created_atintegerCreation time (Unix timestamp)
curl -X POST "https://api.pulitzer.ai/live/openapi/press/create-v2" \
  -H "PULITZER-API-KEY: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "keyword": "Pulitzer AI Press Release Generation API Launch",
    "language": "en",
    "is_search": true
  }'

Modify Press Release

Modify an existing press release with AI.

POST https://api.pulitzer.ai/live/openapi/press/modify

Request Body

{
  "press_id": 658,
  "modification_prompt": "Please revise to a more formal tone"
}

Request Body Parameters

ParameterTypeRequiredDescription
press_idintegerβœ…Press release ID to modify
modification_promptstringβœ…Modification instructions (max 1000 chars)

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "Press release modified successfully",
  "data": {
    "press_id": 658,
    "title": "Pulitzer AI Officially Launches Innovative Press Release Generation API",
    "content": "Pulitzer AI, developed by StarSeed, has launched a press release generation API..."
  }
}

Response Fields

FieldTypeDescription
statusstringResponse status ("SUCCESS" or "FAIL")
successbooleanWhether the request was successful
messagestringResponse message
data.press_idintegerModified press release ID
data.titlestringModified press release title
data.contentstringModified press release content
curl -X POST "https://api.pulitzer.ai/live/openapi/press/modify" \
  -H "PULITZER-API-KEY: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "press_id": 658,
    "modification_prompt": "Please revise to a more formal tone"
  }'

List Press Releases

Retrieve a list of user's press releases.

GET https://api.pulitzer.ai/live/openapi/press/list?page=1&page_size=10

Query Parameters

ParameterTypeRequiredDefaultDescription
pageinteger❌1Page number (1 or above)
page_sizeinteger❌20Page size (1-100)
keywordstring❌nullSearch keyword (searches title, content, keyword)
sortingstring❌latestSort order (latest: newest first, oldest: oldest first)

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "Press release list retrieved successfully",
  "data": {
    "press_list": [
      {
        "id": 658,
        "title": "Pulitzer AI Officially Launches Innovative Press Release Generation API",
        "content": "Pulitzer AI developed by StarSeed...",
        "language": "en",
        "is_public": false,
        "img_url": null,
        "created_at": 1760079885,
        "updated_at": 1760079885,
        "question": "Pulitzer AI Press Release Generation API Launch"
      }
    ],
    "page_count": 59,
    "total_count": 590
  }
}

Response Fields

FieldTypeDescription
statusstringResponse status ("SUCCESS" or "FAIL")
successbooleanWhether the request was successful
messagestringResponse message
data.press_listarrayArray of press release objects
data.press_list[].idintegerPress release ID
data.press_list[].titlestringPress release title
data.press_list[].contentstringPress release content
data.press_list[].languagestringLanguage code
data.press_list[].is_publicbooleanPublic status
data.press_list[].img_urlstring|nullImage URL
data.press_list[].created_atintegerCreation time (Unix timestamp)
data.press_list[].updated_atintegerUpdated time (Unix timestamp)
data.press_list[].questionstringKeyword used for generation
data.page_countintegerTotal page count
data.total_countintegerTotal press release count
curl -X GET "https://api.pulitzer.ai/live/openapi/press/list?page=1&page_size=10" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

Press Release Detail

Retrieve detailed information of a specific press release.

GET https://api.pulitzer.ai/live/openapi/press/{`{press_id}`}

Path Parameters

ParameterTypeRequiredDescription
press_idintegerβœ…Press release ID to retrieve

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "Press release retrieved successfully",
  "data": {
    "id": 658,
    "title": "Pulitzer AI Officially Launches Innovative Press Release Generation API",
    "content": "Pulitzer AI, developed by StarSeed, has launched a press release generation API...",
    "language": "en",
    "is_public": false,
    "img_url": null,
    "created_at": 1760079885,
    "updated_at": 1760079885,
    "question": "Pulitzer AI Press Release Generation API Launch"
  }
}

Response Fields

FieldTypeDescription
statusstringResponse status ("SUCCESS" or "FAIL")
successbooleanWhether the request was successful
messagestringResponse message
data.idintegerPress release ID
data.titlestringPress release title
data.contentstringPress release content
data.languagestringLanguage code
data.is_publicbooleanPublic status
data.img_urlstring|nullImage URL
data.created_atintegerCreation time (Unix timestamp)
data.updated_atintegerUpdated time (Unix timestamp)
data.questionstringKeyword used for generation
curl -X GET "https://api.pulitzer.ai/live/openapi/press/658" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

Delete Press Release

Delete a press release.

DELETE https://api.pulitzer.ai/live/openapi/press/{`{press_id}`}

Path Parameters

ParameterTypeRequiredDescription
press_idintegerβœ…Press release ID to delete

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "Press release deleted successfully"
}

Response Fields

FieldTypeDescription
statusstringResponse status ("SUCCESS" or "FAIL")
successbooleanWhether the request was successful
messagestringResponse message
curl -X DELETE "https://api.pulitzer.ai/live/openapi/press/658" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

Create Reference

Create a new reference press release. Created references can be used as reference material for future press release creation.

POST https://api.pulitzer.ai/live/openapi/press/reference

Request Body

{
  "title": "Test Reference Press Release",
  "content": "This is test reference press release content.",
  "url": "https://example.com",
  "kind": "text"
}

Request Body Parameters

ParameterTypeRequiredDefaultDescription
titlestringβœ…-Reference title (max 200 chars)
contentstringβœ…-Reference content (max 50,000 chars)
urlstring❌nullReference URL (optional)
kindstring❌textReference type (text, url, etc.)

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "Reference press release created successfully",
  "data": {
    "id": 123,
    "title": "Test Reference Press Release",
    "content": "This is test reference press release content.",
    "url": "https://example.com",
    "kind": "text",
    "user_id": 1,
    "created_kst": "2024-10-10T16:00:00.000Z"
  }
}

Response Fields

FieldTypeDescription
statusstringResponse status ("SUCCESS" or "FAIL")
successbooleanWhether the request was successful
messagestringResponse message
dataPressReferenceCreated reference press release object
data.idintegerCreated reference ID
data.titlestringReference title
data.contentstringReference content
data.urlstring|nullReference URL
data.kindstringReference type (text, url, etc.)
data.user_idintegerOwner user ID
data.created_kstdatetimeCreation time (ISO 8601 format)
curl -X POST "https://api.pulitzer.ai/live/openapi/press/reference" \
  -H "PULITZER-API-KEY: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "title": "Test Reference Press Release",
    "content": "This is test reference press release content.",
    "url": "https://example.com",
    "kind": "text"
  }'

List References

Retrieve the full list of user-created reference press releases. Returns a type-safe <code>PressReference</code> object array.

GET https://api.pulitzer.ai/live/openapi/press/reference/list

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "Reference press release list retrieved successfully",
  "data": [
    {
      "id": 123,
      "title": "Test Reference Press Release",
      "content": "This is test reference press release content.",
      "url": "https://example.com",
      "kind": "text",
      "user_id": 1,
      "created_kst": "2024-10-10T16:00:00.000Z"
    }
  ]
}

Response Fields

FieldTypeDescription
statusstringResponse status ("SUCCESS" or "FAIL")
successbooleanWhether the request was successful
messagestringResponse message
dataPressReference[]Array of reference press release objects
data[].idintegerReference press release ID
data[].titlestringReference title
data[].contentstringReference content
data[].urlstring|nullReference URL
data[].kindstringReference type (text, url, etc.)
data[].user_idintegerOwner user ID
data[].created_kstdatetimeCreation time (ISO 8601 format)
curl -X GET "https://api.pulitzer.ai/live/openapi/press/reference/list" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

Delete Reference

Delete a reference press release.

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

Path Parameters

ParameterTypeRequiredDefaultDescription
reference_idintegerβœ…-Reference ID to delete

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "Reference press release deleted successfully"
}

Response Fields

FieldTypeDescription
statusstringResponse status ("SUCCESS" or "FAIL")
successbooleanWhether the request was successful
messagestringResponse message
curl -X DELETE "https://api.pulitzer.ai/live/openapi/press/reference/123" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

Download PDF

Download a press release as a PDF file.

GET https://api.pulitzer.ai/live/openapi/press/{`{press_id}`}/pdf

Response

On success, returns application/pdf binary data. The filename is included in the Content-Disposition header.

Status CodeDescription
200PDF file binary
404Press release not found
curl -X GET "https://api.pulitzer.ai/live/openapi/press/658/pdf" \
  -H "PULITZER-API-KEY: YOUR_API_KEY" \
  -o press_658.pdf

Download DOCX

Download a press release as a DOCX (Word) file.

GET https://api.pulitzer.ai/live/openapi/press/{`{press_id}`}/docx

Response

On success, returns DOCX binary data.

Status CodeDescription
200DOCX file binary
404Press release not found
curl -X GET "https://api.pulitzer.ai/live/openapi/press/658/docx" \
  -H "PULITZER-API-KEY: YOUR_API_KEY" \
  -o press_658.docx

Generate AI Image

Generate an AI image based on a press release. Credits will be deducted.

POST https://api.pulitzer.ai/live/openapi/press/{`{press_id}`}/image-ai

Response

{
  "status": "SUCCESS",
  "success": true,
  "message": "AI 이미지 생성 μ™„λ£Œ",
  "data": {
    "image_url": "https://cdn.pulitzer.ai/images/press/658/ai-generated.png"
  }
}

Error Response

Status CodeError CodeDescription
400IMAGE_POLICY_VIOLATIONImage policy violation
402INSUFFICIENT_CREDITInsufficient credits
404NOT_FOUNDPress release not found
curl -X POST "https://api.pulitzer.ai/live/openapi/press/658/image-ai" \
  -H "PULITZER-API-KEY: YOUR_API_KEY"

Response Structure

All API responses follow this standard structure:
{
"status": "SUCCESS", // Response status (SUCCESS/FAIL)
"success": true, // Success flag (boolean)
"message": "Success message", // Response message
"data": {
  // Actual data (on success)
  // API-specific response data
}
}

Response Field Description

FieldTypeDescription
statusstringResponse status ("SUCCESS" or "FAIL")
successbooleanWhether the request was successful
messagestringResponse message (success/failure)
dataobjectActual data (included only on success)

Error Codes

Common error codes that may occur during API requests.

Status CodeError CodeDescription
400NOT_FOUNDSome reference press releases do not exist
401UNAUTHORIZEDAPI key is invalid
403NOT_AUTHORIZEDCan only access/modify own resources
404USER_NOT_FOUNDUser not found
404NOT_FOUNDResource does not exist or no access permission
500GENERATION_ERRORError occurred during press release generation
500MODIFICATION_ERRORError occurred during press release modification

Usage Examples

Python Example

import requests

# API key setup
headers = {
  "PULITZER-API-KEY": "YOUR_API_KEY_HERE"
}

# Create press release
response = requests.post(
  "https://api.pulitzer.ai/live/openapi/press/create-v2",
  headers=headers,
  json={
      "keyword": "Pulitzer AI Press Release Generation API Launch",
      "language": "en",
      "is_search": True
  }
)

if response.status_code == 200:
  result = response.json()
  if result['success']:
      data = result['data']
      print(f"Press release ID: {data['press_id']}")
      print(f"Title: {data['title']}")
  else:
      print(f"Error: {result['message']}")

JavaScript Example

const response = await fetch(
"https://api.pulitzer.ai/live/openapi/press/create-v2",
{
  method: "POST",
  headers: {
    "PULITZER-API-KEY": "YOUR_API_KEY_HERE",
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    keyword: "Pulitzer AI Press Release Generation API Launch",
    language: "en",
    is_search: true,
  }),
}
);

const result = await response.json();
if (result.success) {
console.log("Created press release:", result.data);
} else {
console.error("Error:", result.message);
}

cURL Example

curl -X POST "https://api.pulitzer.ai/live/openapi/press/create-v2" \
-H "PULITZER-API-KEY: YOUR_API_KEY_HERE" \
-H "Content-Type: application/json" \
-d '{
  "keyword": "Pulitzer AI Press Release Generation API Launch",
  "language": "en",
  "is_search": true
}'