Skip to main content

ZeroCommerce API

Base URL: https://zerocommerce-production.up.railway.app
API Prefix: /api/v1
Auth: JWT Bearer (cookie-based)
Source: github.com/AINative-Studio/ZeroCommerce

Custom Domain Pending

zerocommerce.ainative.studio is not yet provisioned. Use zerocommerce-production.up.railway.app until the custom domain is live.

ZeroCommerce is a headless ecommerce API with a product templating engine, semantic product search via ZeroDB, Redis rate limiting, and Stripe payments.

Health Check
curl https://zerocommerce-production.up.railway.app/health
# {"status":"healthy","db":"ok","zerodb":"ok","vector_search":"ok","redis":"ok"}

Authentication

Step 1: Get CSRF Token (browser clients)

GET /api/v1/auth/csrf

Returns {"csrf_token": "..."}. Include as X-CSRF-Token header on all mutating requests from browsers.

Step 2: Register

POST /api/v1/auth/register
Content-Type: application/json

{
"email": "user@example.com",
"password": "securepassword",
"name": "Jane Dev"
}

Step 3: Login

POST /api/v1/auth/login
Content-Type: application/json

{"email": "user@example.com", "password": "securepassword"}

Returns JWT in httpOnly cookie. Pass Authorization: Bearer <token> on API clients.

Other Auth Endpoints

MethodPathDescription
POST/api/v1/auth/refreshRefresh expired JWT
GET/api/v1/auth/meCurrent user profile
POST/api/v1/auth/verify-emailVerify email address
POST/api/v1/auth/resend-verificationResend verification email
POST/api/v1/auth/password-resetRequest password reset

Products

All list endpoints require a trailing slash (e.g. /api/v1/products/).

MethodPathDescription
GET/api/v1/products/List products
POST/api/v1/products/Create product (admin)
GET/api/v1/products/{product_id}Get product with template config
PUT/api/v1/products/{product_id}Update product (admin)
DELETE/api/v1/products/{product_id}Delete product (admin)
POST/api/v1/products/search/semanticSemantic search by description
POST/api/v1/products/search/compareCompare similar products

Semantic Search Example:

POST /api/v1/products/search/semantic
Authorization: Bearer <token>
Content-Type: application/json

{"query": "custom engraved jewelry", "limit": 10}

Templates & Option Sets

Product templates define customization UI. Option sets are the building blocks (e.g. color, size, engraving text).

Templates

MethodPathDescription
GET/api/v1/templates/List templates
POST/api/v1/templates/Create template (admin)
GET/api/v1/templates/{template_id}Get template
PUT/api/v1/templates/{template_id}Update template (admin)
DELETE/api/v1/templates/{template_id}Delete template (admin)

Option Sets

MethodPathDescription
GET/api/v1/option-sets/List option sets
POST/api/v1/option-sets/Create option set (admin)
POST/api/v1/option-sets/with-options/Create option set with options in one call
GET/api/v1/option-sets/with-options/List option sets with options
GET/api/v1/option-sets/{option_set_id}Get option set
PUT/api/v1/option-sets/{option_set_id}Update option set (admin)
DELETE/api/v1/option-sets/{option_set_id}Delete option set (admin)
GET/api/v1/option-sets/{option_set_id}/options/List options in set
POST/api/v1/option-sets/{option_set_id}/options/Add option to set
GET/api/v1/option-sets/options/{option_id}Get individual option
PUT/api/v1/option-sets/options/{option_id}Update option
DELETE/api/v1/option-sets/options/{option_id}Delete option

Cart

MethodPathDescription
GET/api/v1/cartGet current user cart
DELETE/api/v1/cartClear cart
GET/api/v1/cart/{cart_id}Get specific cart
GET/api/v1/cart/{cart_id}/itemsList cart items
POST/api/v1/cart/itemsAdd item (with customization data)
PUT/api/v1/cart/items/{item_id}Update item quantity
DELETE/api/v1/cart/items/{item_id}Remove item
POST/api/v1/cart/checkoutCreate order from cart

Add Item with Customization:

{
"product_id": "uuid",
"quantity": 1,
"customization": {
"color": "midnight-blue",
"engraving": "WAGMI",
"size": "L"
}
}

Orders

MethodPathDescription
GET/api/v1/me/ordersMy order history
GET/api/v1/me/orders/{order_id}My order details
GET/api/v1/orders/{order_id}Get order (admin or owner)

Order statuses: pendingconfirmedprocessingshippeddelivered / cancelled


Payments (Stripe)

MethodPathDescription
POST/api/v1/payments/checkoutCreate Stripe checkout session
GET/api/v1/payments/checkoutGet checkout session
GET/api/v1/payments/historyPayment history
GET/api/v1/payments/subscriptionGet subscription
POST/api/v1/payments/subscriptionCreate subscription
POST/api/v1/payments/subscription/cancelCancel subscription
GET/api/v1/payments/portalGet Stripe billing portal
POST/api/v1/payments/portal-sessionCreate billing portal session
POST/api/v1/webhooks/stripeStripe webhook handler
POST/api/v1/webhooks/paypalPayPal webhook handler

Webhooks

Subscribe to ecommerce events (order placed, payment received, etc).

MethodPathDescription
POST/api/v1/webhooks/subscribeCreate webhook subscription
GET/api/v1/webhooks/subscriptionsList subscriptions
DELETE/api/v1/webhooks/subscriptions/{subscription_id}Delete subscription
GET/api/v1/webhooklogsWebhook delivery log
GET/api/v1/webhooklogs/dashboardWebhook delivery dashboard
GET/api/v1/admin/webhooks/failedFailed deliveries (admin)
POST/api/v1/admin/webhooks/failed/{failure_id}/replayReplay failed delivery (admin)

Customization Sessions

Track product customization state across sessions.

MethodPathDescription
POST/api/v1/customization-sessionsCreate session
GET/api/v1/customization-sessions/{product_id}Get session for product
PUT/api/v1/customization-sessions/{product_id}Replace session
PATCH/api/v1/customization-sessions/{product_id}Partial update session
POST/api/v1/sessionsCreate generic session
GET/api/v1/sessions/{session_key}Get session by key

File Uploads

MethodPathDescription
POST/api/v1/files/uploadUpload file
POST/api/v1/files/products/{product_id}/imagesUpload product image
GET/api/v1/files/List files
GET/api/v1/files/{file_id}Get file metadata
GET/api/v1/files/{file_id}/downloadDownload file
POST/api/v1/files/{file_id}/presigned-urlGenerate presigned URL
DELETE/api/v1/files/{file_id}Delete file

Reports

MethodPathDescription
GET/api/v1/reports/salesSales analytics report

Admin

MethodPathDescription
GET/POST/api/v1/admin/api-keysManage API keys
DELETE/api/v1/admin/api-keys/{prefix}Revoke API key
GET/api/v1/admin/signing-keysList JWT signing keys
POST/api/v1/admin/signing-keys/rotateRotate signing key
POST/api/v1/admin/signing-keys/retireRetire a signing key
GET/api/v1/admin/jwt-keys/statusJWT keyring status
GET/api/v1/admin/auditAdmin audit log
POST/api/v1/admin/users/{user_id}/eraseGDPR erasure (admin)

User / GDPR

MethodPathDescription
GET/api/v1/users/me/exportExport all user data
DELETE/api/v1/users/meDelete account (right to erasure)
GET/api/v1/users/me/onboardingOnboarding status

Rate Limits

TierRequests/min
Anonymous30–120 (varies by endpoint)
Authenticated60–240
Admin120–240

Returns X-RateLimit-Limit, X-RateLimit-Remaining, Retry-After headers on 429.