API & Enterprise
AI product imagery
at scale
Embed Paqshot's generation engine directly into your platform, PIM, or workflow. One REST call - studio packshot, lifestyle session, editorial - delivered in seconds.
Who it's for
Built for teams that ship at scale
E-commerce platforms
Auto-generate catalog packshots for every SKU on upload - no studio, no manual work.
PIM & DAM integrations
Trigger image generation inside your product information or asset management workflow.
Marketplace operators
Standardize product imagery across thousands of sellers with a single API call per listing.
Creative agencies
Deliver lifestyle and editorial imagery for clients at 10× the speed of traditional production.
Automation pipelines
Plug into n8n, Make, Zapier, or any custom pipeline to enrich product data with imagery.
SaaS builders
White-label product photography into your own platform with our private-label plan.
API Reference
REST API documentation
Base URL: https://api.paqshot.com/v1
Authentication
All API requests require a Bearer token passed in the Authorization header.
Authorization: Bearer pk_live_xxxxxxxxxxxxxxxxxxxxxxxx /v1/generate Generate product imagery Submit a generation job. Returns immediately with a job id - poll GET /generate/{id} for the result.
Request body
| Parameter | Type | Required | Description |
|---|---|---|---|
| product_image | string | required | URL or base64-encoded image of the product (JPEG / PNG / WebP, max 10 MB) |
| style | enum | required | "studio_packshot" | "lifestyle" | "editorial" | "mockup" |
| scene_type | enum | optional | "auto" | "action" | "abstract" | "product_packshot" - defaults to "auto" |
| background | enum / string | optional | "white" | "off_white" | "light_gray" | "black" | "#RRGGBB" - used with studio_packshot |
| aspect_ratio | enum | optional | "1:1" | "4:3" | "16:9" | "9:16" | "3:2" | "2:3" - defaults to "1:1" |
| people | enum | optional | "none" | "with_people" | "without_people" - defaults to "none" |
| location | string | optional | "office" | "outdoor" | "cafe" | "studio" | "urban" | "nature" or any custom text |
| prompt | string | optional | Optional free-text prompt to guide composition, mood, or styling (max 500 chars) |
| webhook_url | string | optional | HTTPS URL to receive a POST callback when the generation completes |
Example request
curl -X POST https://api.paqshot.com/v1/generate \
-H "Authorization: Bearer pk_live_xxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{
"product_image": "https://yourdomain.com/product.jpg",
"style": "studio_packshot",
"background": "white",
"aspect_ratio": "1:1"
}' Response 202 Accepted
{
"id": "gen_01j9xkm3p8fvz4q2n7tbhc6r",
"status": "processing",
"style": "studio_packshot",
"aspect_ratio": "1:1",
"estimated_seconds": 12,
"created_at": "2026-06-09T14:00:00Z"
} /v1/generate/{id} Poll generation status Check the status of a generation job. Poll every 2–5 seconds until status is completed or failed.
Response 200 OK
{
"id": "gen_01j9xkm3p8fvz4q2n7tbhc6r",
"status": "completed",
"image_url": "https://cdn.paqshot.com/gen/gen_01j9xk...jpg",
"thumbnail_url": "https://cdn.paqshot.com/gen/gen_01j9xk..._thumb.jpg",
"width": 1024,
"height": 1024,
"style": "studio_packshot",
"created_at": "2026-06-09T14:00:00Z",
"expires_at": "2026-06-16T14:00:00Z"
} Image URLs are accessible for 7 days. Download and store them on your side if you need long-term access.
/v1/generations List generations Returns a paginated list of your recent generation jobs.
| Parameter | Type | Default | Description |
|---|---|---|---|
| limit | integer | 20 | Number of results (max 100) |
| offset | integer | 0 | Pagination offset |
| status | enum | - | Filter by: "processing" | "completed" | "failed" |
Webhooks
Async result deliveryPass a webhook_url in the generate request. We'll POST the completed result to your endpoint - no polling needed.
Webhook payload
{
"event": "generation.completed",
"id": "gen_01j9xkm3p8fvz4q2n7tbhc6r",
"status": "completed",
"image_url": "https://cdn.paqshot.com/gen/gen_01j9xk...jpg",
"thumbnail_url": "https://cdn.paqshot.com/gen/gen_01j9xk..._thumb.jpg",
"created_at": "2026-06-09T14:00:00Z"
} Verify webhook authenticity by checking the X-Paqshot-Signature header (HMAC-SHA256 of the raw body, signed with your webhook secret).
Error codes
| HTTP | code | Description |
|---|---|---|
| 400 | invalid_request | Missing or malformed parameters |
| 401 | unauthorized | Missing or invalid API key |
| 403 | forbidden | Quota exceeded or feature not available on your plan |
| 404 | not_found | Generation ID not found |
| 413 | image_too_large | Product image exceeds 10 MB |
| 422 | unsupported_image | Image format not supported (use JPEG / PNG / WebP) |
| 429 | rate_limited | Too many requests - back off and retry |
| 500 | server_error | Internal error on our side - retry after a few seconds |
All errors return a JSON body: { "error": "code", "message": "human readable" }
Limits & SLA
Predictable, scalable performance
Get access
Ready to integrate?
API access is available to business customers. Drop us a line - we'll set you up with an API key, rate limits tailored to your volume, and a technical onboarding call.