Skip to content
Documentation

Overview

The ProductPolish API lets you programmatically create SEO-optimised product texts and AI-generated product images. Ideal for e-commerce teams who want to fill their product pages automatically or integrate their own software.

Base URL

https://www.productpolish.ai/api/v1

API access is exclusively included in the Business plan.

Authentication

All API requests are authenticated via a personal API key.

  1. 1

    Generate API key

    Open the API Access section in the dashboard and generate your personal key. The key is shown only once — store it securely.

  2. 2

    Send header with every request

    Authorization: Bearer pp_live_...

Key format

Your API key always starts with pp_live_ followed by a random string.

🔒 Never share your API key publicly. It grants full access to your account.

POST /api/v1/generate

Starts a new product text generation and returns a generationId. The actual generation runs asynchronously.

Request Headers

HeaderValueRequired
AuthorizationBearer pp_live_...Yes
Content-Typeapplication/jsonYes

Request Body (JSON)

FieldTypeRequiredDescription
titlestringYesProduct title (max. 500 characters)
descriptionstringYesProduct description (max. 5,000 characters)
languagestringNoTarget language, e.g. "de", "en", "fr". Default: "de"
imageUrlstringNoURL of a product photo for image generation

Response (200 OK)

{
  "generationId": "550e8400-e29b-41d4-a716-446655440000"
}

The generation runs asynchronously. Retrieve the status with GET /api/generation/{generationId}.

GET /api/generation/{id}

Retrieves the current status and result of a generation. The same Bearer token as for the POST is required.

Status values

StatusMeaning
pendingGeneration still running – please wait briefly and poll again
deliveredDone – all fields are populated

Response fields (when status: "delivered")

{
  "status": "delivered",
  "seo_title": "SEO-optimised product title",
  "meta_description": "Short meta description for search engines...",
  "long_description_html": "<p>Detailed product text in HTML...</p>",
  "bulletpoints": [
    "Ergonomic backrest with lumbar support",
    "Height-adjustable from 42 to 52 cm"
  ],
  "tags": ["office chair", "ergonomic", "height-adjustable"],
  "faq": [
    {
      "question": "Is the chair suitable for long working hours?",
      "answer": "Yes, the lumbar support..."
    }
  ],
  "generated_images": [
    "https://...",
    "https://...",
    "https://..."
  ]
}

Asynchronous Flow

Generation takes 2–10 seconds depending on load. The recommended flow:

  1. 1.POST /api/v1/generate → you receive a generationId
  2. 2.Wait 3 seconds
  3. 3.Call GET /api/generation/{id}
  4. 4.If status === "pending" back to step 2
  5. 5.If status === "delivered" done ✓
POST /generate → { generationId }
       ↓
   wait (3 sec)
       ↓
GET /generation/{id} → status: "pending"  → wait again
       ↓
GET /generation/{id} → status: "delivered" → done ✓

Recommendation: poll every 3 sec, trigger timeout after 60 sec (20 attempts).

Code Examples

# Step 1: Start generation
curl -X POST https://www.productpolish.ai/api/v1/generate \
  -H "Authorization: Bearer pp_live_..." \
  -H "Content-Type: application/json" \
  -d '{"title":"Ergonomic Office Chair","description":"Height-adjustable, lumbar support","language":"en","imageUrl":"https://example.com/image.jpg"}'

# Step 2: Retrieve result (poll)
curl https://www.productpolish.ai/api/generation/GENERATION_ID \
  -H "Authorization: Bearer pp_live_..."

Error Codes

HTTP CodeMeaning
401No or invalid API key
403No active subscription / plan without API access / monthly limit reached
400Required fields missing or too long (title >500, description >5,000 characters)
404Generation not found
500Internal server error

Plans & Limits

API access is exclusively included in the Business plan.

FeatureBusiness Plan
API access✓ Included
Generations/monthUnlimited
Rate LimitNo hard limits (fair use)