curl --request POST \
--url https://api.tassyir.io/apps/2026-10/orders/{id}/cancel \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reasonId": "<string>",
"note": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({reasonId: '<string>', note: '<string>'})
};
fetch('https://api.tassyir.io/apps/2026-10/orders/{id}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"id": "<string>",
"orderNumber": "<string>",
"storeId": "<string>",
"status": "<string>",
"waiting": true,
"archived": true,
"dispatched": true,
"delivered": true,
"returned": true,
"currency": "<string>",
"total": "<string>",
"shippingPrice": "<string>",
"buyer": {
"provinceCode": 0,
"townOns": 0,
"name": "<string>",
"phone": "<string>",
"phone2": "<string>",
"email": "<string>",
"address": "<string>",
"address2": "<string>"
},
"delivery": {
"method": "home",
"speed": "<string>",
"deliveryAgentId": "<string>",
"trackingNumber": "<string>",
"carrierStatus": "<string>"
},
"items": [
{
"id": "<string>",
"productId": "<string>",
"variantId": "<string>",
"packParentItemId": "<string>",
"name": "<string>",
"variantName": "<string>",
"sku": "<string>",
"quantity": 0,
"unitPrice": "<string>",
"totalPrice": "<string>"
}
],
"source": "<string>",
"landingPageId": "<string>",
"utm": {
"source": "<string>",
"medium": "<string>",
"campaign": "<string>",
"content": "<string>"
},
"exchangeOfOrderId": "<string>",
"cancellation": {
"reasonId": "<string>",
"reasonLabel": "<string>",
"source": "<string>"
},
"scheduledFor": "2023-11-07T05:31:56Z",
"confirmedAt": "2023-11-07T05:31:56Z",
"dispatchedAt": "2023-11-07T05:31:56Z",
"deliveredAt": "2023-11-07T05:31:56Z",
"returnedAt": "2023-11-07T05:31:56Z",
"canceledAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"note": "<string>",
"deliveryNote": "<string>"
}
}{
"type": "<string>",
"title": "<string>",
"status": 400,
"detail": "<string>",
"code": "BAD_REQUEST",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 401,
"detail": "<string>",
"code": "APP_TOKEN_INVALID",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 403,
"detail": "<string>",
"code": "PERMISSION_DENIED",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 404,
"detail": "<string>",
"code": "NOT_FOUND",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 409,
"detail": "<string>",
"code": "IDEMPOTENCY_KEY_IN_USE",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 413,
"detail": "<string>",
"code": "PAYLOAD_TOO_LARGE",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 415,
"detail": "<string>",
"code": "UNSUPPORTED_MEDIA_TYPE",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 422,
"detail": "<string>",
"code": "IDEMPOTENCY_KEY_REUSED",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 429,
"detail": "<string>",
"code": "BUSINESS_RATE_LIMITED",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 500,
"detail": "<string>",
"code": "INTERNAL_ERROR",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 503,
"detail": "<string>",
"code": "API_BUSY",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}Cancel an order
With one of GET cancel-reasons and a note when that reason asks for one. Recorded as cancelled by the app.
Needs the write_orders scope (permission orders:cancel).
curl --request POST \
--url https://api.tassyir.io/apps/2026-10/orders/{id}/cancel \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"reasonId": "<string>",
"note": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({reasonId: '<string>', note: '<string>'})
};
fetch('https://api.tassyir.io/apps/2026-10/orders/{id}/cancel', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"data": {
"id": "<string>",
"orderNumber": "<string>",
"storeId": "<string>",
"status": "<string>",
"waiting": true,
"archived": true,
"dispatched": true,
"delivered": true,
"returned": true,
"currency": "<string>",
"total": "<string>",
"shippingPrice": "<string>",
"buyer": {
"provinceCode": 0,
"townOns": 0,
"name": "<string>",
"phone": "<string>",
"phone2": "<string>",
"email": "<string>",
"address": "<string>",
"address2": "<string>"
},
"delivery": {
"method": "home",
"speed": "<string>",
"deliveryAgentId": "<string>",
"trackingNumber": "<string>",
"carrierStatus": "<string>"
},
"items": [
{
"id": "<string>",
"productId": "<string>",
"variantId": "<string>",
"packParentItemId": "<string>",
"name": "<string>",
"variantName": "<string>",
"sku": "<string>",
"quantity": 0,
"unitPrice": "<string>",
"totalPrice": "<string>"
}
],
"source": "<string>",
"landingPageId": "<string>",
"utm": {
"source": "<string>",
"medium": "<string>",
"campaign": "<string>",
"content": "<string>"
},
"exchangeOfOrderId": "<string>",
"cancellation": {
"reasonId": "<string>",
"reasonLabel": "<string>",
"source": "<string>"
},
"scheduledFor": "2023-11-07T05:31:56Z",
"confirmedAt": "2023-11-07T05:31:56Z",
"dispatchedAt": "2023-11-07T05:31:56Z",
"deliveredAt": "2023-11-07T05:31:56Z",
"returnedAt": "2023-11-07T05:31:56Z",
"canceledAt": "2023-11-07T05:31:56Z",
"createdAt": "2023-11-07T05:31:56Z",
"updatedAt": "2023-11-07T05:31:56Z",
"note": "<string>",
"deliveryNote": "<string>"
}
}{
"type": "<string>",
"title": "<string>",
"status": 400,
"detail": "<string>",
"code": "BAD_REQUEST",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 401,
"detail": "<string>",
"code": "APP_TOKEN_INVALID",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 403,
"detail": "<string>",
"code": "PERMISSION_DENIED",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 404,
"detail": "<string>",
"code": "NOT_FOUND",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 409,
"detail": "<string>",
"code": "IDEMPOTENCY_KEY_IN_USE",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 413,
"detail": "<string>",
"code": "PAYLOAD_TOO_LARGE",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 415,
"detail": "<string>",
"code": "UNSUPPORTED_MEDIA_TYPE",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 422,
"detail": "<string>",
"code": "IDEMPOTENCY_KEY_REUSED",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 429,
"detail": "<string>",
"code": "BUSINESS_RATE_LIMITED",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 500,
"detail": "<string>",
"code": "INTERNAL_ERROR",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}{
"type": "<string>",
"title": "<string>",
"status": 503,
"detail": "<string>",
"code": "API_BUSY",
"docs": "<string>",
"fix": "<string>",
"requestId": "<string>",
"errors": [
"<string>"
]
}Authorizations
An app access token from POST /apps/oauth/token, valid 1 hour. An offline token acts as the app; an online token acts as the app on behalf of one dashboard user (the intersection of both permission sets).
Headers
Makes a write safe to retry: the same key with the same method, path, query and body within 24 hours answers the stored result (Idempotent-Replayed: true) without running the write again. Only a successful answer is stored, so a retry after a failure runs. A key reused for a different request is 422 IDEMPOTENCY_KEY_REUSED; one whose first request still runs is 409 IDEMPOTENCY_KEY_IN_USE.
1 - 255^[\x21-\x7E]+$Path Parameters
A resource id. One this installation cannot read, or a malformed one, is 404 NOT_FOUND.
1Query Parameters
Return only these top-level fields, separated by commas; the id is always kept. The response schema describes the whole resource. An unknown name is 400 INVALID_FIELDS. Fields: id, orderNumber, storeId, status, waiting, archived, dispatched, delivered, returned, currency, total, shippingPrice, buyer, delivery, items, note, deliveryNote, source, landingPageId, utm, exchangeOfOrderId, cancellation, scheduledFor, confirmedAt, dispatchedAt, deliveredAt, returnedAt, canceledAt, createdAt, updatedAt.
1000Body
Response
The cancelled order.
An order (API 2026-10).
Show child attributes
Show child attributes