API keys
Create a key in your admin, under Settings › API. A “read only” key can only read; a “read and write” key can change everything. The key is shown once: keep it like a password. You can revoke it at any time.
Authentication
Send the key in the Authorization header. Replace {handle} with your shop’s identifier (the one in your-name.kelcommerce.eu).
Authorization: Bearer kc_…
https://admin.kelcommerce.be/api/commerce/manage/{handle}/…
Rules
- JSON in and out, UTF-8. Amounts are strings with two decimals (
"19.90"), VAT included. - Lists are paginated with
start(from 0) andcount; the total is in theX-Total-Countheader. - Limit: 120 requests per minute per key. Above it: status 429 and a
Retry-Afterheader. - Errors:
{"error": "code", "message": "…"}with status 401 (key missing, revoked or shop not on Business), 404 (not found), 417 (refused), 429 (limit). - A key never gives access to billing, the team, API keys or payment settings.
Example: paid orders to ship
curl -H "Authorization: Bearer kc_…" \
"https://admin.kelcommerce.be/api/commerce/manage/{handle}/orders?status=paid&start=0&count=50"
Reference
Products
| GET | /products?q=&status=&category=&start=0&count=50 | List products (X-Total-Count header gives the total). |
| POST | /products | Create a product with its options, variants and categories. |
| GET | /products/{id} | One product with variants, stock and media. |
| PUT | /products/{id} | Replace a product; variants with an id are kept, without id created, missing ones deleted. |
| DELETE | /products/{id} | Delete a product. |
| POST | /products/{id}/media | Add an image: {filename, contentType, data: base64, alt}. JPEG, PNG or WebP, 8 MB max. |
Categories
| GET | /categories | All categories (tree via parentId). |
| POST · PUT · DELETE | /categories[/{id}] | Create, update, delete. |
Orders
| GET | /orders?status=pending|paid|fulfilled|cancelled|refunded&q=&start&count | List orders. |
| GET | /orders/{id} | One order with lines, addresses, payment and fulfilment. |
| POST | /orders/{id}/fulfill | Mark shipped: {carrier, trackingNumber, trackingUrl}. The customer gets an e-mail. |
| POST | /orders/{id}/cancel | Cancel (a paid order is restocked and marked refunded). |
| PUT | /orders/{id}/note | Internal note: {note}. |
Customers and B2B
| GET | /customers?q=&b2b=pending|approved&start&count | List customers. |
| GET | /customers/{id} | One customer with their orders. |
| PUT | /customers/{id} | B2B status and price group: {b2bStatus, groupId}. |
| GET · POST · PUT · DELETE | /customer-groups[/{id}] | Price groups: {name, discountPercent}. |
| GET · PUT | /customer-groups/{id}/prices | Group price list: [{variantId, price, minQuantity}] (PUT replaces the list). |
Shop settings
| GET · PUT | /shop | Name, languages, address, theme… |
| GET · POST · PUT · DELETE | /shipping-rates[/{id}] | Shipping rates. |
| GET · POST · PUT · DELETE | /discounts[/{id}] | Discount codes. |
| GET · POST · PUT · DELETE | /pages[/{id}] | Content pages. |
| GET | /dashboard?days=30 | Sales totals, series and top products. |
Create a key Business plan
A question? Write to support@kelcommerce.be.