Getting started
Every request is authenticated with an API key and scoped to a single store. The base URL is:
https://demo.kaniva.io/api/v1
The store (tenant) is resolved from your API key — you don't pass a store slug in API URLs.
Authentication
Pass your secret key as a Bearer token in the Authorization header. Keys look like kn_live_… and are shown only once at creation.
curl https://demo.kaniva.io/api/v1/admin/store/summary \ -H "Authorization: Bearer kn_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Accept: application/json"
Missing/invalid/expired/revoked keys return 401 Unauthorized. A key missing the required scope returns 403 Forbidden.
Rate limits
Limits are enforced per API key, defaulting to 60 requests/minute (configurable per key up to 600/min). Every response includes:
| Header | Meaning |
|---|---|
X-RateLimit-Limit | Your per-minute ceiling. |
X-RateLimit-Remaining | Requests left in the current window. |
Retry-After | Seconds until reset (sent on 429 responses). |
Exceeding the limit returns 429 Too Many Requests.
Errors
Errors return a JSON body with an error label and a human-readable message:
{
"error": "Forbidden",
"message": "This API key does not have the required scope(s): calendar:write",
"required_scopes": ["calendar:write"],
"key_scopes": ["calendar:read"]
}
| Status | Meaning |
|---|---|
200 / 201 | Success. |
401 | Missing or invalid API key. |
403 | Key lacks the scope, or the module is disabled for the store. |
404 | Resource not found. |
422 | Validation error. |
429 | Rate limit exceeded. |
Scopes
Each key is granted a set of scopes. Endpoints below list the scope they require.
| Scope | Grants |
|---|---|
products:read | View products and variants |
products:write | Create, update, and delete products |
orders:read | View orders and order details |
orders:write | Update order status and details |
orders:manage | Fulfill, refund, and cancel orders |
customers:read | View customer information |
customers:write | Create and update customers |
categories:read | View categories |
categories:write | Create, update, and delete categories |
cart:read | View cart contents (not available yet) |
cart:write | Add, update, and remove cart items (not available yet) |
checkout:write | Process checkout and create orders (not available yet) |
inventory:read | View inventory levels and items |
inventory:write | Adjust inventory quantities |
inventory:manage | Full inventory control (reserve, commit, transfers) |
manufacturing:read | View BOMs and work orders |
manufacturing:write | Create and manage work orders |
webhooks:read | View webhook configurations |
webhooks:write | Create, update, and delete webhooks |
blog:read | View blog posts, categories and tags |
blog:write | Create, update and delete blog posts, upload their images |
crm:read | View CRM contacts and support tickets |
crm:write | Create and update support tickets |
triage:read | View AI triage results and metrics |
triage:write | Ingest messages for AI triage and send triaged replies |
calendar:read | View calendar events and availability |
calendar:write | Create, update, and delete calendar events and availability |
bookings:read | View bookings and available time slots |
bookings:write | Create, confirm, and cancel bookings |
settings:read | View shipping configuration and integration health (never secret values) |
Calendar — Events
calendar:read
List calendar events.
| Parameter | Description |
|---|---|
start | ISO date — range start (with end) |
end | ISO date — range end |
type | Filter by type (appointment, meeting, reminder, shift, custom, …) |
status | Filter by status (scheduled, confirmed, cancelled, completed) |
per_page | Items per page (max 100) |
curl https://demo.kaniva.io/api/v1/admin/calendar/events \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
calendar:read
Get a single calendar event (includes its booking, if any).
curl https://demo.kaniva.io/api/v1/admin/calendar/events/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
calendar:write
Create a calendar event.
| Parameter | Description |
|---|---|
title | required |
start_at | required, datetime |
end_at | datetime |
type | required (appointment, meeting, …) |
all_day | boolean |
description | string |
location | string |
color | hex |
reminder_minutes | int |
status | scheduled|confirmed|cancelled|completed |
curl -X POST https://demo.kaniva.io/api/v1/admin/calendar/events \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
calendar:write
Update a calendar event.
curl -X PUT https://demo.kaniva.io/api/v1/admin/calendar/events/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
calendar:write
Delete a calendar event.
curl -X DELETE https://demo.kaniva.io/api/v1/admin/calendar/events/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
Calendar — Availability
calendar:read
Get recurring weekly availability rules and blocked dates.
curl https://demo.kaniva.io/api/v1/admin/calendar/availability \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
calendar:write
Replace weekly rules; add/remove blocked dates.
| Parameter | Description |
|---|---|
days[] | { day_of_week 0-6, is_available, start_time H:i, end_time H:i } |
add_blocked[] | YYYY-MM-DD dates to block |
remove_blocked[] | availability ids to unblock |
curl -X PUT https://demo.kaniva.io/api/v1/admin/calendar/availability \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
Bookings (admin)
bookings:read
List bookings, newest first.
| Parameter | Description |
|---|---|
status | pending|confirmed|cancelled |
per_page | Items per page (max 100) |
curl https://demo.kaniva.io/api/v1/admin/calendar/bookings \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
bookings:read
Get a single booking with its event.
curl https://demo.kaniva.io/api/v1/admin/calendar/bookings/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
bookings:write
Confirm a booking and email the guest.
curl -X POST https://demo.kaniva.io/api/v1/admin/calendar/bookings/{id}/confirm \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
bookings:write
Cancel a booking.
curl -X POST https://demo.kaniva.io/api/v1/admin/calendar/bookings/{id}/cancel \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
Booking (storefront / scheduling widget)
bookings:read
Available 30-minute slots for a date.
| Parameter | Description |
|---|---|
date | required, YYYY-MM-DD (today or later) |
curl https://demo.kaniva.io/api/v1/storefront/calendar/slots \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
bookings:write
Create a booking (sends guest + admin emails).
| Parameter | Description |
|---|---|
date | required |
time | required H:i |
guest_name | required |
guest_email | required |
guest_phone | optional |
guest_company | optional |
notes | optional |
curl -X POST https://demo.kaniva.io/api/v1/storefront/calendar/bookings \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
Products (admin)
products:read
List products.
| Parameter | Description |
|---|---|
search | name or SKU |
category_id | filter |
is_active | boolean |
per_page | max 100 |
curl https://demo.kaniva.io/api/v1/admin/products \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
products:read
Get a product with variants and images.
curl https://demo.kaniva.io/api/v1/admin/products/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
products:write
Create a product (name and price required).
| Parameter | Description |
|---|---|
name | string |
price | number |
sku | stored as the part number |
product_type | physical|digital|build_to_order|bundle (new products default to physical; wins over is_digital) |
track_inventory | boolean |
stock_quantity | int |
is_active | boolean |
visibility | public|private |
category_id | int |
curl -X POST https://demo.kaniva.io/api/v1/admin/products \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
products:write
Update a product; fields left out are unchanged.
| Parameter | Description |
|---|---|
name | string |
price | number |
sku | stored as the part number |
product_type | physical|digital|build_to_order|bundle (new products default to physical; wins over is_digital) |
track_inventory | boolean |
stock_quantity | int |
is_active | boolean |
visibility | public|private |
category_id | int |
curl -X PUT https://demo.kaniva.io/api/v1/admin/products/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
products:write
Upload photos (multipart). The first becomes the main photo if there is none or is_primary is true; the rest join the gallery.
| Parameter | Description |
|---|---|
image | file (or images[] for several), max 10 MB |
is_primary | boolean |
alt_text | string |
curl -X POST https://demo.kaniva.io/api/v1/admin/products/{id}/images \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
products:write
Delete a product.
curl -X DELETE https://demo.kaniva.io/api/v1/admin/products/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
Orders (admin)
orders:read
List orders.
curl https://demo.kaniva.io/api/v1/admin/orders \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
orders:read
Get an order with items, customer, shipment boxes (label + per-box tracking), and a refund_gate block (refundable_amount, is_shipped, has_label, can_cancel, can_refund).
curl https://demo.kaniva.io/api/v1/admin/orders/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
orders:write
Update order status.
| Parameter | Description |
|---|---|
status | required — pending|processing|shipped|delivered|cancelled |
curl -X PUT https://demo.kaniva.io/api/v1/admin/orders/{id}/status \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
orders:manage
Mark shipped/delivered and record tracking. Stamps shipped_at / delivered_at, registers the number with Shippo and PayPal when carrier + number are given.
| Parameter | Description |
|---|---|
fulfillment_status | required — pending|processing|partially_shipped|labeled|shipped|delivered |
tracking_carrier | e.g. usps, ups, fedex |
tracking_number | string |
tracking_url | url |
tracking_mode | add (default, appends) | replace |
notify_customer | boolean, default false |
curl -X PUT https://demo.kaniva.io/api/v1/admin/orders/{id}/fulfillment \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
orders:manage
Refund at the payment provider (Stripe/PayPal), full or partial. Only completed, processing, or partially refunded orders; never more than refund_gate.refundable_amount. 502 and no change if the provider call fails.
| Parameter | Description |
|---|---|
amount | decimal — omit for the full refundable balance |
reason | string, max 500 |
notify_customer | boolean, default true |
force | boolean — record the refund even if the provider call fails |
curl -X POST https://demo.kaniva.io/api/v1/admin/orders/{id}/refund \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
orders:manage
Move an order to one of the store's order steps (Settings → Order steps). Moving to the Shipped step marks it shipped; Delivered completes it. Order responses include step and next_step.
| Parameter | Description |
|---|---|
step | required — a step key, e.g. packed, shipped, delivered, or the store's own |
notify_customer | boolean, default false — send the step email if the step has one |
curl -X POST https://demo.kaniva.io/api/v1/admin/orders/{id}/step \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
orders:manage
Cancel a pending or processing order (revokes downloads; does not move money — use refund).
| Parameter | Description |
|---|---|
reason | string, max 500 |
notify_customer | boolean, default true |
curl -X POST https://demo.kaniva.io/api/v1/admin/orders/{id}/cancel \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
Settings & integration health (admin)
settings:read
Shipping configuration: ship-from address, rate source (Shippo or fallback formula), allowed countries, local pickup/delivery radii, label printing and address validation flags. Secrets are reported as configured booleans only.
curl https://demo.kaniva.io/api/v1/admin/settings/shipping \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
settings:read
checkout_ready plus configured flags for payments (Stripe Connect / keys / PayPal), shipping, Shippo, PrintNode, Google Maps, Stripe webhook secret, and the go-live checklist.
curl https://demo.kaniva.io/api/v1/admin/integrations/health \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
Customers (admin)
customers:read
List customers.
curl https://demo.kaniva.io/api/v1/admin/customers \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
customers:read
Get a customer.
curl https://demo.kaniva.io/api/v1/admin/customers/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
customers:write
Create a customer.
curl -X POST https://demo.kaniva.io/api/v1/admin/customers \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
customers:write
Update a customer.
curl -X PUT https://demo.kaniva.io/api/v1/admin/customers/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
Categories (admin)
categories:read
List categories.
curl https://demo.kaniva.io/api/v1/admin/categories \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
categories:read
Get a category.
curl https://demo.kaniva.io/api/v1/admin/categories/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
categories:write
Create a category.
curl -X POST https://demo.kaniva.io/api/v1/admin/categories \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
categories:write
Update a category.
curl -X PUT https://demo.kaniva.io/api/v1/admin/categories/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
categories:write
Delete a category.
curl -X DELETE https://demo.kaniva.io/api/v1/admin/categories/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
Inventory (admin)
inventory:read
List inventory items.
curl https://demo.kaniva.io/api/v1/admin/inventory/items \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
inventory:read
Get an inventory item.
curl https://demo.kaniva.io/api/v1/admin/inventory/items/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
inventory:write
Adjust stock quantity.
curl -X POST https://demo.kaniva.io/api/v1/admin/inventory/adjust \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
Manufacturing — Work Orders (admin)
manufacturing:read
List work orders (operator pick-list).
| Parameter | Description |
|---|---|
status | draft|in_progress|completed|cancelled, or "active" (draft+in_progress) |
priority | low|normal|high|urgent |
overdue | boolean |
work_center | Machine queue — matches the WO or an active operation |
assigned_to | User id |
order_item_id | Filter to a build-to-order line |
parent_only | boolean — top-level WOs only |
search | WO number or item name/SKU |
due_before | ISO date |
due_after | ISO date |
sort | due_date (default), priority, created_at |
per_page | Items per page (max 100) |
curl https://demo.kaniva.io/api/v1/admin/work-orders \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
manufacturing:read
Get a work order with operations, components, jobs, and a production reconciliation block.
| Parameter | Description |
|---|---|
by | Set to "number" to look up a scanned work_order_number instead of id |
curl https://demo.kaniva.io/api/v1/admin/work-orders/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
manufacturing:write
Start a work order (checks component stock; auto-creates operation jobs).
| Parameter | Description |
|---|---|
operator_name | Optional — recorded on the WO |
curl -X POST https://demo.kaniva.io/api/v1/admin/work-orders/{id}/start \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
manufacturing:write
Complete a work order — consumes components, produces finished goods, advances any linked order build stage.
| Parameter | Description |
|---|---|
operator_name | Optional |
curl -X POST https://demo.kaniva.io/api/v1/admin/work-orders/{id}/complete \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
manufacturing:write
Cancel a work order.
| Parameter | Description |
|---|---|
reason | Optional — appended to notes |
curl -X POST https://demo.kaniva.io/api/v1/admin/work-orders/{id}/cancel \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
manufacturing:write
Pause the work order (closes the open labour-time segment; the WO stays in progress).
curl -X POST https://demo.kaniva.io/api/v1/admin/work-orders/{id}/pause \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
manufacturing:write
Resume the work order (opens a new labour-time segment).
| Parameter | Description |
|---|---|
operator_name | Optional |
operation_id | Optional — tag the segment to an operation |
curl -X POST https://demo.kaniva.io/api/v1/admin/work-orders/{id}/resume \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
manufacturing:write
Log produced/good/scrap quantities against the work order.
| Parameter | Description |
|---|---|
quantity_good | required, int ≥0 |
quantity_scrap | int ≥0 |
scrap_reason | string |
operation_id | Optional — target a specific operation |
complete_operation | boolean — also complete the targeted operation |
operator_name | Optional |
curl -X POST https://demo.kaniva.io/api/v1/admin/work-orders/{id}/production \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
manufacturing:write
Start an operation (enforces routing order).
curl -X POST https://demo.kaniva.io/api/v1/admin/work-orders/{id}/operations/{operationId}/start \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
manufacturing:write
Complete an operation and its job.
| Parameter | Description |
|---|---|
quantity_good | int |
quantity_scrap | int |
notes | string |
curl -X POST https://demo.kaniva.io/api/v1/admin/work-orders/{id}/operations/{operationId}/complete \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
manufacturing:write
Skip an operation.
| Parameter | Description |
|---|---|
notes | string |
curl -X POST https://demo.kaniva.io/api/v1/admin/work-orders/{id}/operations/{operationId}/skip \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
Blog & how-to articles (admin)
blog:read
List posts (newest first).
| Parameter | Description |
|---|---|
status | draft or published |
category | Category id or slug |
search | Title or slug contains |
per_page | 1–100, default 25 |
curl https://demo.kaniva.io/api/v1/admin/blog/posts \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
blog:read
Get a post by id or slug, with its HTML content and SEO fields.
curl https://demo.kaniva.io/api/v1/admin/blog/posts/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
blog:write
Create a post. Send content_markdown (converted to HTML) or content_html (sanitised). category and tags may be names; new ones are created. status draft (default) or published; published_at optional.
| Parameter | Description |
|---|---|
title | Required |
slug | Made from the title when blank |
excerpt | Up to 500 characters |
content_markdown | Markdown body |
content_html | HTML body (used when no markdown) |
category | Category id, slug or name |
tags | Array of tag names or ids |
featured_image | URL from POST /admin/blog/images |
featured_image_alt | Alt text |
meta_title | SEO title |
meta_description | SEO description |
meta_keywords | SEO keywords |
status | draft | published |
published_at | ISO 8601, defaults to now when publishing |
author_id | A staff member id; defaults to the owner |
curl -X POST https://demo.kaniva.io/api/v1/admin/blog/posts \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
blog:write
Update any of the create fields; omitted fields are left alone.
curl -X PUT https://demo.kaniva.io/api/v1/admin/blog/posts/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
blog:write
Delete a post.
curl -X DELETE https://demo.kaniva.io/api/v1/admin/blog/posts/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
blog:write
Upload an image (multipart field file, jpeg/png/gif/webp, up to 10 MB). Returns url to use as featured_image or in the content.
curl -X POST https://demo.kaniva.io/api/v1/admin/blog/images \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
blog:read
List blog categories.
curl https://demo.kaniva.io/api/v1/admin/blog/categories \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
blog:write
Create a category (or return the existing one with that name).
| Parameter | Description |
|---|---|
name | Required |
description | Optional |
curl -X POST https://demo.kaniva.io/api/v1/admin/blog/categories \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
blog:read
List blog tags.
curl https://demo.kaniva.io/api/v1/admin/blog/tags \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
CRM (admin)
crm:read
List CRM contacts.
curl https://demo.kaniva.io/api/v1/admin/crm/contacts \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
crm:read
Get a CRM contact.
curl https://demo.kaniva.io/api/v1/admin/crm/contacts/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
crm:read
List support tickets.
curl https://demo.kaniva.io/api/v1/admin/crm/tickets \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
crm:read
Get a support ticket.
curl https://demo.kaniva.io/api/v1/admin/crm/tickets/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
crm:write
Create a support ticket.
curl -X POST https://demo.kaniva.io/api/v1/admin/crm/tickets \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
Store & Webhooks (admin)
Store summary statistics (any valid key).
curl https://demo.kaniva.io/api/v1/admin/store/summary \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
List subscribable webhook event types.
curl https://demo.kaniva.io/api/v1/admin/webhooks/events \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
webhooks:read
List webhooks.
curl https://demo.kaniva.io/api/v1/admin/webhooks \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
webhooks:read
Get a webhook.
curl https://demo.kaniva.io/api/v1/admin/webhooks/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
webhooks:read
List delivery attempts for a webhook.
curl https://demo.kaniva.io/api/v1/admin/webhooks/{id}/deliveries \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
webhooks:write
Create a webhook.
curl -X POST https://demo.kaniva.io/api/v1/admin/webhooks \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
webhooks:write
Update a webhook.
curl -X PUT https://demo.kaniva.io/api/v1/admin/webhooks/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
webhooks:write
Delete a webhook.
curl -X DELETE https://demo.kaniva.io/api/v1/admin/webhooks/{id} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
webhooks:write
Regenerate the signing secret.
curl -X POST https://demo.kaniva.io/api/v1/admin/webhooks/{id}/regenerate-secret \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
webhooks:write
Send a test delivery.
curl -X POST https://demo.kaniva.io/api/v1/admin/webhooks/{id}/test \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-d '{ }'
Products (storefront)
products:read
Public product catalog.
curl https://demo.kaniva.io/api/v1/storefront/products \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
products:read
Search products.
| Parameter | Description |
|---|---|
q | search query |
curl https://demo.kaniva.io/api/v1/storefront/products/search \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
products:read
Get a product by slug.
curl https://demo.kaniva.io/api/v1/storefront/products/{slug} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"
Categories (storefront)
categories:read
Public category list.
curl https://demo.kaniva.io/api/v1/storefront/categories \ -H "Authorization: Bearer kn_live_…" \ -H "Accept: application/json"
categories:read
Get a category by slug.
curl https://demo.kaniva.io/api/v1/storefront/categories/{slug} \
-H "Authorization: Bearer kn_live_…" \
-H "Accept: application/json"