All endpoints under
/admin/products require an authenticated session with the ADMIN or SUPER_ADMIN role. Always call GET /auth/csrf-token first and pass the returned token in the x-csrf-token header for every POST, PATCH, and DELETE request.List Products
Retrieve a paginated list of products from the admin catalog view. Unlike the public catalog endpoint, this view lets you filter by deleted status, search across all products regardless of active variant availability, and sort by any supported field.Query Parameters
integer
default:"1"
Page number (1-based).
integer
default:"20"
Number of results per page. Accepted range: 1–100.
string
Free-text search across product name, brand, and description.
string
Filter by exact brand name (trimmed). Maximum 255 characters.
string
default:"-created_at"
Sort field. Prefix with
- for descending order. Accepted values: name, -name, created_at, -created_at, updated_at, -updated_at.string
default:"false"
Pass
"true" to include soft-deleted products in the response. Must be the string "true" or "false".Response
Returns a paginated envelope with adata array of product summaries and a meta pagination object.
boolean
Always
true on a 200 response.array
Array of product summary objects.
object
Pagination metadata.
Create Product
Create a new product in the catalog. Onlyname is required; provide a slug to control the URL path or let the API auto-generate one from the name. A 409 is returned if the slug already exists.
Request Body
string
required
Product display name. Between 1 and 255 characters.
string
URL slug for the product. Must match
^[a-z0-9]+(?:-[a-z0-9]+)*$ and be unique. Auto-generated from name if omitted. Maximum 255 characters.string
Long-form product description. Maximum 10,000 characters. Optional.
string
Brand name. Maximum 255 characters. Optional.
Example
201 Response
Error Responses
Get Product
Fetch the full admin projection of a product by its public ID. Passinclude_deleted_variants=true to include any soft-deleted variants in the response.
Path Parameters
string
required
The product’s public ID, prefixed
prd_.Query Parameters
string
default:"false"
Pass
"true" to include soft-deleted variants in the variants array. Must be the string "true" or "false".Response
Returns the fullProductDetail object including images (ordered by display_order) and variants (all statuses when include_deleted_variants=true).
Update Product
Partially update a product’s fields. Only the fields you supply are modified. Passnull for description or brand to explicitly clear those values.
Path Parameters
string
required
The product’s public ID, prefixed
prd_.Request Body
At least one field is required.string
Updated display name. Between 1 and 255 characters.
string
Updated URL slug. Must match
^[a-z0-9]+(?:-[a-z0-9]+)*$. Returns 409 on conflict.string | null
Updated description. Pass
null to clear the existing value.string | null
Updated brand. Pass
null to clear the existing value.Example
Delete Product
Soft-delete a product and all of its variants. The product is immediately hidden from all customer-facing endpoints but remains in the database withdeleted_at set. Returns 204 No Content on success.
Path Parameters
string
required
The product’s public ID, prefixed
prd_.Example
Soft-deleted products — and all their variants — are hidden from customers but are permanently retained in the database. This ensures that historical order line items continue to reference the correct product name, slug, and brand without data loss.