curl --request POST \
--url https://api.tassyir.io/apps/2026-10/orders \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"buyer": {
"name": "<string>",
"phone": "<string>",
"phone2": "<string>",
"email": "[email protected]",
"provinceCode": 29,
"townOns": 2,
"address": "<string>",
"address2": "<string>"
},
"items": [
{
"productId": "<string>",
"quantity": 500,
"variantId": "<string>"
}
],
"storeId": "<string>",
"delivery": {},
"note": "<string>",
"deliveryNote": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
buyer: {
name: '<string>',
phone: '<string>',
phone2: '<string>',
email: '[email protected]',
provinceCode: 29,
townOns: 2,
address: '<string>',
address2: '<string>'
},
items: [{productId: '<string>', quantity: 500, variantId: '<string>'}],
storeId: '<string>',
delivery: {},
note: '<string>',
deliveryNote: '<string>'
})
};
fetch('https://api.tassyir.io/apps/2026-10/orders', 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>"
}
}{
"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": "FORBIDDEN",
"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": 460,
"detail": "<string>",
"code": "STORE_SCOPE_FORBIDDEN",
"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>"
]
}Create an order
The dashboard’s manual create: allowance admit, one distribution pass, source = app:<handle>. Past the plan’s allowance the order is created WAITING (phones hidden, confirm and dispatch locked). On a dev store, orders are capped per day: 429 DEV_STORE_ORDER_LIMIT_REACHED with retryAfterSeconds.
Needs the write_orders scope (permission orders:create).
curl --request POST \
--url https://api.tassyir.io/apps/2026-10/orders \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"buyer": {
"name": "<string>",
"phone": "<string>",
"phone2": "<string>",
"email": "[email protected]",
"provinceCode": 29,
"townOns": 2,
"address": "<string>",
"address2": "<string>"
},
"items": [
{
"productId": "<string>",
"quantity": 500,
"variantId": "<string>"
}
],
"storeId": "<string>",
"delivery": {},
"note": "<string>",
"deliveryNote": "<string>"
}
'const options = {
method: 'POST',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({
buyer: {
name: '<string>',
phone: '<string>',
phone2: '<string>',
email: '[email protected]',
provinceCode: 29,
townOns: 2,
address: '<string>',
address2: '<string>'
},
items: [{productId: '<string>', quantity: 500, variantId: '<string>'}],
storeId: '<string>',
delivery: {},
note: '<string>',
deliveryNote: '<string>'
})
};
fetch('https://api.tassyir.io/apps/2026-10/orders', 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>"
}
}{
"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": "FORBIDDEN",
"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": 460,
"detail": "<string>",
"code": "STORE_SCOPE_FORBIDDEN",
"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]+$Query 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
Show child attributes
Show child attributes
1 - 50 elementsShow child attributes
Show child attributes
An id (a string of digits).
^\d{1,24}$Show child attributes
Show child attributes
10001000Response
The same buyer ordered the same items in the last 24 hours: their existing order, nothing created.
An order (API 2026-10).
Show child attributes
Show child attributes