Kanorio

API reference

Orders

Management API: GET /sites/{id}/orders, GET /sites/{id}/orders/{orderId}

Base URL https://app.kanorio.com/api/v1ErrorsPagination

List orders

GET/sites/{id}/orders
betaorders:viewdefault (120/minute per token)

List orders newest first with line items and shipment summary (amounts in minor units of order.currency). Refunds, payment settings and invoices are not available to agents. Errors: FORBIDDEN, INVALID_CURSOR.

Parameters

  • idstring · pathrequired

    Website id. Get it from sites.list or from sites.create.

  • status"UNPAID" | "PAID" | "PARTIALLY_REFUNDED" | "REFUNDED" | "DISPUTED" | "PAYMENT_REVERSED" | "CANCELLED" · query
  • limitinteger · query

    Maximum number of items to return, 1–100. Defaults to 20.

  • cursorstring · query

    Opaque cursor from the previous page's nextCursor. Omit for the first page.

Response 200

  • dataobject[]required
  • data[].idstringrequired
  • data[].orderNumberinteger | nullrequired

    Human-readable per-store number (#1001...).

  • data[].statusstringrequired
  • data[].currencystringrequired
  • data[].subtotalAmountintegerrequired
  • data[].discountAmountintegerrequired
  • data[].amountintegerrequired

    Items after discount, excluding shipping.

  • data[].shippingFeeintegerrequired
  • data[].totalRefundedintegerrequired
  • data[].itemCountintegerrequired
  • data[].customerEmailstringrequired
  • data[].customerNamestring | nullrequired
  • data[].customerPhonestring | nullrequired
  • data[].buyerNotestring | nullrequired
  • data[].metadataobjectrequired

    Public integration fields on the order.

  • data[].privateMetadataobjectrequired

    Private integration fields on the order (console, members and service accounts only).

  • data[].promotionCodestring | nullrequired
  • data[].paymentProviderstringrequired
  • data[].paidAtstring | nullrequired
  • data[].refundedAtstring | nullrequired
  • data[].createdAtstringrequired
  • data[].itemsobject[]required
  • data[].items[].idstringrequired
  • data[].items[].productIdstringrequired
  • data[].items[].tierIdstring | nullrequired
  • data[].items[].productTitlestringrequired
  • data[].items[].tierNamestring | nullrequired
  • data[].items[].productTypestringrequired
  • data[].items[].unitPriceintegerrequired
  • data[].items[].quantityintegerrequired
  • data[].items[].lineAmountintegerrequired
  • data[].items[].refundedQuantityintegerrequired
  • data[].items[].refundedAmountintegerrequired
  • data[].shipmentsobject[]required
  • data[].shipments[].idstringrequired
  • data[].shipments[].statusstringrequired
  • data[].shipments[].providerstringrequired
  • data[].shipments[].methodstringrequired
  • data[].shipments[].trackingNostring | nullrequired
  • data[].shipments[].trackingUrlstring | nullrequired
  • hasMorebooleanrequired

    True when another page exists; pass nextCursor to fetch it.

  • nextCursorstring | nullrequired

    Cursor for the next page, or null on the last page.

Errors

  • FORBIDDEN 403
  • INVALID_CURSOR 400

MCP tool orders_list

curl -X GET "https://app.kanorio.com/api/v1/sites/{id}/orders" \
  -H "Authorization: Bearer $KANORIO_TOKEN"
Response
{
  "data": [
    {
      "id": "order_example01",
      "orderNumber": 1024,
      "status": "PAID",
      "currency": "TWD",
      "subtotalAmount": 880,
      "discountAmount": 0,
      "amount": 980,
      "shippingFee": 100,
      "totalRefunded": 0,
      "itemCount": 1,
      "customerEmail": "customer@example.com",
      "customerName": "Alex Chen",
      "customerPhone": "+886912345678",
      "buyerNote": "Pickup on Saturday at 2 p.m.",
      "metadata": {},
      "privateMetadata": {},
      "promotionCode": null,
      "paymentProvider": "STRIPE",
      "paidAt": "2026-10-06T08:00:00.000Z",
      "refundedAt": null,
      "createdAt": "2026-10-06T08:00:00.000Z",
      "items": [
        {
          "id": "item_example01",
          "productId": "prod_example01",
          "tierId": "tier_example01",
          "productTitle": "Strawberry Birthday Cake",
          "tierName": "6-inch",
          "productType": "PHYSICAL",
          "unitPrice": 880,
          "quantity": 1,
          "lineAmount": 880,
          "refundedQuantity": 0,
          "refundedAmount": 0
        }
      ],
      "shipments": [
        {
          "id": "ship_example01",
          "status": "PENDING",
          "provider": "MANUAL",
          "method": "PICKUP",
          "trackingNo": null,
          "trackingUrl": null
        }
      ]
    }
  ],
  "hasMore": false,
  "nextCursor": null
}

Retrieve an order

GET/sites/{id}/orders/{orderId}
betaorders:viewdefault (120/minute per token)

Get one order with line items and shipments. Errors: FORBIDDEN, ORDER_NOT_FOUND.

Parameters

  • idstring · pathrequired

    Website id. Get it from sites.list or from sites.create.

  • orderIdstring · pathrequired

Response 200

  • idstringrequired
  • orderNumberinteger | nullrequired

    Human-readable per-store number (#1001...).

  • statusstringrequired
  • currencystringrequired
  • subtotalAmountintegerrequired
  • discountAmountintegerrequired
  • amountintegerrequired

    Items after discount, excluding shipping.

  • shippingFeeintegerrequired
  • totalRefundedintegerrequired
  • itemCountintegerrequired
  • customerEmailstringrequired
  • customerNamestring | nullrequired
  • customerPhonestring | nullrequired
  • buyerNotestring | nullrequired
  • metadataobjectrequired

    Public integration fields on the order.

  • privateMetadataobjectrequired

    Private integration fields on the order (console, members and service accounts only).

  • promotionCodestring | nullrequired
  • paymentProviderstringrequired
  • paidAtstring | nullrequired
  • refundedAtstring | nullrequired
  • createdAtstringrequired
  • itemsobject[]required
  • items[].idstringrequired
  • items[].productIdstringrequired
  • items[].tierIdstring | nullrequired
  • items[].productTitlestringrequired
  • items[].tierNamestring | nullrequired
  • items[].productTypestringrequired
  • items[].unitPriceintegerrequired
  • items[].quantityintegerrequired
  • items[].lineAmountintegerrequired
  • items[].refundedQuantityintegerrequired
  • items[].refundedAmountintegerrequired
  • shipmentsobject[]required
  • shipments[].idstringrequired
  • shipments[].statusstringrequired
  • shipments[].providerstringrequired
  • shipments[].methodstringrequired
  • shipments[].trackingNostring | nullrequired
  • shipments[].trackingUrlstring | nullrequired

Errors

  • FORBIDDEN 403
  • ORDER_NOT_FOUND 404

MCP tool orders_get

curl -X GET "https://app.kanorio.com/api/v1/sites/{id}/orders/{orderId}" \
  -H "Authorization: Bearer $KANORIO_TOKEN"
Response
{
  "id": "order_example01",
  "orderNumber": 1024,
  "status": "PAID",
  "currency": "TWD",
  "subtotalAmount": 880,
  "discountAmount": 0,
  "amount": 980,
  "shippingFee": 100,
  "totalRefunded": 0,
  "itemCount": 1,
  "customerEmail": "customer@example.com",
  "customerName": "Alex Chen",
  "customerPhone": "+886912345678",
  "buyerNote": "Pickup on Saturday at 2 p.m.",
  "metadata": {},
  "privateMetadata": {},
  "promotionCode": null,
  "paymentProvider": "STRIPE",
  "paidAt": "2026-10-06T08:00:00.000Z",
  "refundedAt": null,
  "createdAt": "2026-10-06T08:00:00.000Z",
  "items": [
    {
      "id": "item_example01",
      "productId": "prod_example01",
      "tierId": "tier_example01",
      "productTitle": "Strawberry Birthday Cake",
      "tierName": "6-inch",
      "productType": "PHYSICAL",
      "unitPrice": 880,
      "quantity": 1,
      "lineAmount": 880,
      "refundedQuantity": 0,
      "refundedAmount": 0
    }
  ],
  "shipments": [
    {
      "id": "ship_example01",
      "status": "PENDING",
      "provider": "MANUAL",
      "method": "PICKUP",
      "trackingNo": null,
      "trackingUrl": null
    }
  ]
}