
Documentation
0 articleshttps://studio-api.naper.ai/api/v1
Products
/api/v1/products
List Products
Retrieve a paginated list of products with optional search and filters.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page | integer | Query | Optional | Page number (Default: 1) |
per_page | integer | Query | Optional | Items per page (max 100) (Default: 25) |
search | string | Query | Optional | Search by product name or SKU |
status | string | Query | Optional | Filter by status: publish, draft, pending, trash |
category | integer | Query | Optional | Filter by category ID |
brand | integer | Query | Optional | Filter by brand ID |
orderby | string | Query | Optional | Sort field: id, date, modified, title, price (Default: id) |
order | string | Query | Optional | Sort direction: asc, desc (Default: desc) |
curl -X GET \ "https://studio-api.naper.ai/api/v1/products" \ -H "Authorization: Bearer <YOUR_API_KEY>"
[ { "id": 1, "name": "Premium T-Shirt", "slug": "premium-t-shirt", "status": "publish", "sku": "TSH-001", "regular_price": "49.90", "sale_price": null, "categories": [ { "id": 1, "name": "Clothing" } ], "images": [ { "id": 1, "src": "https://example.com/image.jpg" } ] } ]
/api/v1/products/:id
Get Product
Retrieve a single product by its ID, including all attributes, categories, and images.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id | integer | Path | Required | Product ID |
curl -X GET \ "https://studio-api.naper.ai/api/v1/products/:id" \ -H "Authorization: Bearer <YOUR_API_KEY>"
{ "id": 1, "name": "Premium T-Shirt", "slug": "premium-t-shirt", "status": "publish", "type": "simple", "sku": "TSH-001", "regular_price": "49.90", "sale_price": null, "description": "<p>A premium quality t-shirt.</p>", "short_description": "Premium t-shirt", "categories": [ { "id": 1, "name": "Clothing", "slug": "clothing" } ], "images": [ { "id": 1, "src": "https://example.com/image.jpg", "alt": "" } ], "attributes": [ { "id": 1, "name": "Color", "options": [ "Red", "Blue" ] } ] }
/api/v1/products
Create Product
Create a new product. Requires at minimum a product name.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
name | string | Body | Required | Product name |
status | string | Body | Optional | Product status: publish, draft, pending (Default: draft) |
type | string | Body | Optional | Product type: simple, variable (Default: simple) |
sku | string | Body | Optional | Unique SKU identifier |
regular_price | string | Body | Optional | Regular price |
sale_price | string | Body | Optional | Sale price |
description | string | Body | Optional | Full HTML description |
short_description | string | Body | Optional | Short description excerpt |
categories | array | Body | Optional | Array of { id: number } category objects |
images | array | Body | Optional | Array of { src: string, alt?: string } image objects |
curl -X POST \ "https://studio-api.naper.ai/api/v1/products" \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "Premium T-Shirt", "status": "draft", "sku": "TSH-001", "regular_price": "49.90", "categories": [ { "id": 1 } ], "images": [ { "src": "https://example.com/image.jpg" } ]}'
{ "id": 1, "name": "Premium T-Shirt", "slug": "premium-t-shirt", "status": "draft", "sku": "TSH-001", "regular_price": "49.90" }
/api/v1/products/:id
Update Product
Update an existing product. Only send the fields you want to change.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id | integer | Path | Required | Product ID |
name | string | Body | Optional | Product name |
status | string | Body | Optional | Product status |
sku | string | Body | Optional | SKU identifier |
regular_price | string | Body | Optional | Regular price |
sale_price | string | Body | Optional | Sale price |
description | string | Body | Optional | Full description |
categories | array | Body | Optional | Category objects array |
curl -X PUT \ "https://studio-api.naper.ai/api/v1/products/:id" \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "Updated T-Shirt Name", "regular_price": "59.90"}'
{ "id": 1, "name": "Updated T-Shirt Name", "regular_price": "59.90" }
/api/v1/products/:id
Delete Product
Permanently delete a product by its ID.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id | integer | Path | Required | Product ID |
curl -X DELETE \ "https://studio-api.naper.ai/api/v1/products/:id" \ -H "Authorization: Bearer <YOUR_API_KEY>"
{ "deleted": true, "id": 1 }
/api/v1/products/batch
Batch Operations
Create, update, and/or delete multiple products in a single request.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
create | array | Body | Optional | Array of product objects to create |
update | array | Body | Optional | Array of product objects to update (must include id) |
delete | array | Body | Optional | Array of product IDs to delete |
curl -X POST \ "https://studio-api.naper.ai/api/v1/products/batch" \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "create": [ { "name": "New Product", "sku": "NEW-001" } ], "update": [ { "id": 1, "regular_price": "39.90" } ], "delete": [ 99 ]}'
{ "create": [ { "id": 2, "name": "New Product" } ], "update": [ { "id": 1, "regular_price": "39.90" } ], "delete": [ 99 ] }
Categories
/api/v1/products/categories
List Categories
Retrieve a paginated list of product categories.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page | integer | Query | Optional | Page number (Default: 1) |
per_page | integer | Query | Optional | Items per page (Default: 25) |
search | string | Query | Optional | Search by category name |
parent | integer | Query | Optional | Filter by parent category ID |
orderby | string | Query | Optional | Sort field: id, name, count (Default: id) |
order | string | Query | Optional | Sort direction: asc, desc (Default: asc) |
curl -X GET \ "https://studio-api.naper.ai/api/v1/products/categories" \ -H "Authorization: Bearer <YOUR_API_KEY>"
[ { "id": 1, "name": "Clothing", "slug": "clothing", "parent": 0, "count": 42, "description": "All clothing items" }, { "id": 2, "name": "T-Shirts", "slug": "t-shirts", "parent": 1, "count": 18, "description": "" } ]
/api/v1/products/categories/tree
Get Category Tree
Retrieve categories as a nested tree structure. Supports light mode for minimal data.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
mode | string | Query | Optional | Response mode: full, light (Default: full) |
flatten | boolean | Query | Optional | Return flat array instead of nested tree (Default: false) |
curl -X GET \ "https://studio-api.naper.ai/api/v1/products/categories/tree" \ -H "Authorization: Bearer <YOUR_API_KEY>"
[ { "id": 1, "name": "Clothing", "slug": "clothing", "parent": 0, "children": [ { "id": 2, "name": "T-Shirts", "slug": "t-shirts", "parent": 1, "children": [] }, { "id": 3, "name": "Pants", "slug": "pants", "parent": 1, "children": [] } ] } ]
/api/v1/products/categories/:id
Get Category
Retrieve a single category by ID.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id | integer | Path | Required | Category ID |
curl -X GET \ "https://studio-api.naper.ai/api/v1/products/categories/:id" \ -H "Authorization: Bearer <YOUR_API_KEY>"
{ "id": 1, "name": "Clothing", "slug": "clothing", "parent": 0, "count": 42, "description": "All clothing items", "image": { "id": 1, "src": "https://example.com/cat.jpg" } }
/api/v1/products/categories
Create Category
Create a new product category.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
name | string | Body | Required | Category name |
slug | string | Body | Optional | URL-friendly slug (auto-generated if omitted) |
parent | integer | Body | Optional | Parent category ID (0 for top-level) (Default: 0) |
description | string | Body | Optional | Category description |
curl -X POST \ "https://studio-api.naper.ai/api/v1/products/categories" \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "Accessories", "parent": 0}'
{ "id": 4, "name": "Accessories", "slug": "accessories", "parent": 0 }
/api/v1/products/categories/:id
Update Category
Update an existing category.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id | integer | Path | Required | Category ID |
name | string | Body | Optional | Category name |
parent | integer | Body | Optional | Parent category ID |
description | string | Body | Optional | Category description |
curl -X PUT \ "https://studio-api.naper.ai/api/v1/products/categories/:id" \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "Updated Category Name"}'
{ "id": 1, "name": "Updated Category Name", "slug": "clothing", "parent": 0 }
/api/v1/products/categories/:id
Delete Category
Delete a category. Child categories are re-parented to the deleted category's parent.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id | integer | Path | Required | Category ID |
curl -X DELETE \ "https://studio-api.naper.ai/api/v1/products/categories/:id" \ -H "Authorization: Bearer <YOUR_API_KEY>"
{ "deleted": true, "id": 1 }
/api/v1/products/categories/batch
Batch Operations
Create, update, and/or delete multiple categories in a single request.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
create | array | Body | Optional | Array of category objects to create |
update | array | Body | Optional | Array of category objects to update |
delete | array | Body | Optional | Array of category IDs to delete |
curl -X POST \ "https://studio-api.naper.ai/api/v1/products/categories/batch" \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "create": [ { "name": "New Category" } ], "update": [ { "id": 1, "name": "Renamed" } ], "delete": [ 99 ]}'
{ "create": [ { "id": 5, "name": "New Category" } ], "update": [ { "id": 1, "name": "Renamed" } ], "delete": [ 99 ] }
Attributes
/api/v1/products/attributes
List Attributes
Retrieve all product attributes defined in the store.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page | integer | Query | Optional | Page number (Default: 1) |
per_page | integer | Query | Optional | Items per page (Default: 25) |
curl -X GET \ "https://studio-api.naper.ai/api/v1/products/attributes" \ -H "Authorization: Bearer <YOUR_API_KEY>"
[ { "id": 1, "name": "Color", "slug": "color", "type": "select", "order_by": "menu_order" }, { "id": 2, "name": "Size", "slug": "size", "type": "select", "order_by": "menu_order" } ]
/api/v1/products/attributes/:id
Get Attribute
Retrieve a single attribute by ID.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id | integer | Path | Required | Attribute ID |
curl -X GET \ "https://studio-api.naper.ai/api/v1/products/attributes/:id" \ -H "Authorization: Bearer <YOUR_API_KEY>"
{ "id": 1, "name": "Color", "slug": "color", "type": "select" }
/api/v1/products/attributes
Create Attribute
Create a new product attribute.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
name | string | Body | Required | Attribute name |
slug | string | Body | Optional | URL-friendly slug |
type | string | Body | Optional | Attribute type: select, text (Default: select) |
curl -X POST \ "https://studio-api.naper.ai/api/v1/products/attributes" \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "Material", "type": "select"}'
{ "id": 3, "name": "Material", "slug": "material", "type": "select" }
/api/v1/products/:productId/attributes
Get Product Attributes
Retrieve all attribute values assigned to a specific product.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
productId | integer | Path | Required | Product ID |
curl -X GET \ "https://studio-api.naper.ai/api/v1/products/:productId/attributes" \ -H "Authorization: Bearer <YOUR_API_KEY>"
[ { "id": 1, "name": "Color", "options": [ "Red", "Blue", "Green" ], "visible": true, "variation": true }, { "id": 2, "name": "Size", "options": [ "S", "M", "L", "XL" ], "visible": true, "variation": true } ]
Templates
/api/v1/templates
List Templates
Retrieve a summary list of enrichment templates available to the store. Returns basic information about each template.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page | integer | Query | Optional | Page number (Default: 1) |
per_page | integer | Query | Optional | Items per page (Default: 25) |
search | string | Query | Optional | Search by template name |
curl -X GET \ "https://studio-api.naper.ai/api/v1/templates" \ -H "Authorization: Bearer <YOUR_API_KEY>"
[ { "id": 1, "name": "SEO Description", "slug": "seo-description", "type": "enrichment", "status": "active" }, { "id": 2, "name": "Full Catalog", "slug": "full-catalog", "type": "enrichment", "status": "active" } ]
/api/v1/templates/:id
Get Template
Retrieve a template by ID. Returns the template's AI input fields (the fields that can be enriched). Use this to identify which fields a template targets before sending an enrichment request.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id | integer | Path | Required | Template ID |
curl -X GET \ "https://studio-api.naper.ai/api/v1/templates/:id" \ -H "Authorization: Bearer <YOUR_API_KEY>"
{ "id": 1, "name": "SEO Description", "type": "enrichment", "ai_inputs": [ "name", "short_description", "description", "seo" ] }
Live Enrichment
/api/v1/live/events
Create Enrichment Event
Create an enrichment event with one or more subjects (products or categories). You can reference existing products by ID or send standalone product data for enrichment without having a product in the catalog. The event is processed asynchronously — poll the event status endpoint to track progress.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
type | string | Body | Required | Event type. Use "enrichment" for AI enrichment. |
title | string | Body | Required | Human-readable event title for tracking |
subject_type | string | Body | Required | Subject type: "product" or "category" |
subjects | array | Body | Required | Array of subjects to enrich (max 500). Each subject can have subject_id (existing product ID) and/or data (inline product data). For inline mode, omit subject_id and provide data with product info. |
options | object | Body | Optional | Enrichment options — which fields to enrich. Available: name, short_description, long_description, attributes, brand, types, categories, seo, image_alt_text, variations, template_id. |
user_payload | object | Body | Optional | Custom metadata attached to the event (returned as-is in responses) |
curl -X POST \ "https://studio-api.naper.ai/api/v1/live/events" \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "type": "enrichment", "title": "Enrich summer collection", "subject_type": "product", "subjects": [ { "subject_id": 42 }, { "subject_id": 108 }, { "data": { "name": "Blue Cotton T-Shirt", "sku": "BTS-001", "categories": [ "Clothing", "T-Shirts" ], "attributes": [ { "name": "Material", "value": "Cotton" } ] } } ], "options": { "short_description": true, "long_description": true, "seo": true, "template_id": 235 }}'
{ "id": 301, "event_type": "enrichment", "title": "Enrich summer collection", "status": "created", "source": "api", "expected_count": 3, "success_count": 0, "error_count": 0, "created_at": "2026-03-08T14:30:00.000Z", "subjects": [ { "id": 1, "subject_type": "product", "subject_id": "42", "processed": false, "result": null }, { "id": 2, "subject_type": "product", "subject_id": "108", "processed": false, "result": null }, { "id": 3, "subject_type": "product", "subject_id": "3", "processed": false, "result": null } ] }
/api/v1/live/events
List Events
Retrieve a paginated list of enrichment events created via the API. Events from the dashboard (Data Center) are not included.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page | integer | Query | Optional | Page number (Default: 1) |
per_page | integer | Query | Optional | Items per page (Default: 25) |
status | string | Query | Optional | Filter by status: created, running, waiting, finished, error, cancelled |
curl -X GET \ "https://studio-api.naper.ai/api/v1/live/events" \ -H "Authorization: Bearer <YOUR_API_KEY>"
[ { "id": 301, "event_type": "enrichment", "title": "Enrich summer collection", "status": "finished", "expected_count": 3, "success_count": 3, "error_count": 0, "created_at": "2026-03-08T14:30:00.000Z" } ]
/api/v1/live/events/:id
Get Event Details
Retrieve a single event with all its subjects and their results. Use this to poll for completion and retrieve enrichment results. Each subject includes its processed status, result data, and any error messages.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id | integer | Path | Required | Event ID |
curl -X GET \ "https://studio-api.naper.ai/api/v1/live/events/:id" \ -H "Authorization: Bearer <YOUR_API_KEY>"
{ "id": 301, "event_type": "enrichment", "title": "Enrich summer collection", "status": "finished", "expected_count": 3, "success_count": 3, "error_count": 0, "created_at": "2026-03-08T14:30:00.000Z", "subjects": [ { "id": 1, "subject_type": "product", "subject_id": "42", "processed": true, "result": { "short_description": "AI-generated short description...", "description": "<p>AI-generated full description...</p>", "seo_data": { "title": "SEO Title", "description": "Meta description" } }, "error_message": null } ] }
/api/v1/live/events/:id
Update Event Status
Update the status or message of an event. Useful for marking events as cancelled.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id | integer | Path | Required | Event ID |
status | string | Body | Optional | New status: created, running, waiting, finished, error, cancelled |
message | string | Body | Optional | Status message |
curl -X PUT \ "https://studio-api.naper.ai/api/v1/live/events/:id" \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "status": "cancelled", "message": "No longer needed"}'
{ "id": 301, "status": "cancelled", "message": "No longer needed" }
Import & Export
/api/v1/import-export/import
Import Products
Import products from a CSV file or structured data payload.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
source | string | Body | Required | Import source type: csv, json, shopify |
data | array | Body | Required | Array of product data objects |
options | object | Body | Optional | Import options (update_existing, skip_images) |
curl -X POST \ "https://studio-api.naper.ai/api/v1/import-export/import" \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "source": "json", "data": [ { "name": "Product A", "sku": "SKU-A", "regular_price": "29.90" } ], "options": { "update_existing": true }}'
{ "imported": 1, "updated": 0, "skipped": 0, "errors": [] }
/api/v1/import-export/export
Export Products
Export products data in the specified format.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
format | string | Query | Optional | Export format: csv, json (Default: json) |
status | string | Query | Optional | Filter by product status |
category | integer | Query | Optional | Filter by category ID |
curl -X GET \ "https://studio-api.naper.ai/api/v1/import-export/export" \ -H "Authorization: Bearer <YOUR_API_KEY>"
[ { "id": 1, "name": "Product A", "sku": "SKU-A", "regular_price": "29.90", "status": "publish" } ]
Settings
/api/v1/settings
Get Settings
Retrieve all store settings.
curl -X GET \ "https://studio-api.naper.ai/api/v1/settings" \ -H "Authorization: Bearer <YOUR_API_KEY>"
{ "store_name": "My Store", "currency": "BRL", "language": "pt-br", "ai_model": "default", "enrichment_auto_apply": false }
/api/v1/settings
Update Settings
Update store settings. Only send the fields you want to change.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
store_name | string | Body | Optional | Store display name |
currency | string | Body | Optional | Currency code (ISO 4217) |
language | string | Body | Optional | Default language code |
curl -X PUT \ "https://studio-api.naper.ai/api/v1/settings" \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "store_name": "Updated Store Name", "currency": "USD"}'
{ "store_name": "Updated Store Name", "currency": "USD" }
Media
/api/v1/media/upload
Upload File
Upload a media file. Accepts multipart/form-data with a file field.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
file | File | Body | Required | The file to upload (multipart/form-data) |
alt | string | Body | Optional | Alt text for the image |
curl -X POST \ "https://studio-api.naper.ai/api/v1/media/upload" \ -H "Authorization: Bearer <YOUR_API_KEY>"
{ "id": 1, "src": "https://cdn.naper.ai/uploads/image.jpg", "alt": "Product image", "mime_type": "image/jpeg", "file_size": 245760 }
Integrations
/api/v1/integrations
List Integrations
Retrieve all configured integrations for the store.
curl -X GET \ "https://studio-api.naper.ai/api/v1/integrations" \ -H "Authorization: Bearer <YOUR_API_KEY>"
[ { "id": 1, "platform": "shopify", "name": "My Shopify Store", "status": "active", "connected_at": "2025-01-10T00:00:00Z" } ]
Webhooks
/api/v1/webhooks
List Webhooks
Retrieve all registered webhooks for the store.
curl -X GET \ "https://studio-api.naper.ai/api/v1/webhooks" \ -H "Authorization: Bearer <YOUR_API_KEY>"
[ { "id": 1, "event": "product.updated", "url": "https://example.com/webhook", "status": "active" } ]
/api/v1/webhooks
Create Webhook
Register a new webhook subscription for a specific event.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
event | string | Body | Required | Event to subscribe: product.created, product.updated, product.deleted, enrichment.completed |
url | string | Body | Required | URL to receive the webhook POST |
secret | string | Body | Optional | Shared secret for signature verification |
curl -X POST \ "https://studio-api.naper.ai/api/v1/webhooks" \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "event": "product.updated", "url": "https://example.com/webhook", "secret": "whsec_..."}'
{ "id": 1, "event": "product.updated", "url": "https://example.com/webhook", "status": "active" }
/api/v1/webhooks/:id
Delete Webhook
Remove a webhook subscription.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id | integer | Path | Required | Webhook ID |
curl -X DELETE \ "https://studio-api.naper.ai/api/v1/webhooks/:id" \ -H "Authorization: Bearer <YOUR_API_KEY>"
{ "deleted": true, "id": 1 }
API Keys
/api/v1/api-keys
List API Keys
Retrieve all API keys for the store. Secret keys are masked.
curl -X GET \ "https://studio-api.naper.ai/api/v1/api-keys" \ -H "Authorization: Bearer <YOUR_API_KEY>"
[ { "id": 1, "name": "Production Key", "key_prefix": "nap_live_...abc", "scopes": [ "products:read", "products:write" ], "created_at": "2025-01-10T00:00:00Z" } ]
/api/v1/api-keys
Create API Key
Generate a new API key. The full key is only returned once at creation time.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
name | string | Body | Required | Descriptive name for the key |
scopes | array | Body | Required | Permission scopes: products:read, products:write, products:delete, categories:read, categories:write |
curl -X POST \ "https://studio-api.naper.ai/api/v1/api-keys" \ -H "Authorization: Bearer <YOUR_API_KEY>" \ -H "Content-Type: application/json" \ -d '{ "name": "Production Key", "scopes": [ "products:read", "products:write" ]}'
{ "id": 1, "name": "Production Key", "key": "nap_live_sk_abc123...full_key_here", "scopes": [ "products:read", "products:write" ] }
/api/v1/api-keys/:id
Revoke API Key
Permanently revoke an API key. This action cannot be undone.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
id | integer | Path | Required | API Key ID |
curl -X DELETE \ "https://studio-api.naper.ai/api/v1/api-keys/:id" \ -H "Authorization: Bearer <YOUR_API_KEY>"
{ "deleted": true, "id": 1 }
Reviews
/api/v1/reviews
List Reviews
Retrieve product reviews with optional filters.
| Name | Type | In | Required | Description |
|---|---|---|---|---|
page | integer | Query | Optional | Page number (Default: 1) |
per_page | integer | Query | Optional | Items per page (Default: 25) |
product_id | integer | Query | Optional | Filter by product ID |
rating | integer | Query | Optional | Filter by rating (1-5) |
curl -X GET \ "https://studio-api.naper.ai/api/v1/reviews" \ -H "Authorization: Bearer <YOUR_API_KEY>"
[ { "id": 1, "product_id": 42, "reviewer": "Jane Doe", "rating": 5, "review": "Excellent product!", "date": "2025-01-15T10:30:00Z" } ]
Statistics
/api/v1/stats
Get Dashboard Stats
Retrieve store statistics including product counts, enrichment metrics, and usage data.
curl -X GET \ "https://studio-api.naper.ai/api/v1/stats" \ -H "Authorization: Bearer <YOUR_API_KEY>"
{ "products": { "total": 1250, "published": 980, "draft": 270 }, "categories": { "total": 45 }, "enrichment": { "total_drafts": 500, "applied": 420, "pending": 80 }, "credits": { "remaining": 95, "used_this_month": 55 } }