Skip to content

Keeta Order Management API (v.1.0.0)

This API provides comprehensive order management capabilities for Keeta platform integration, including order operations, refund management, and real-time notifications.

Download OpenAPI description
Overview
Keeta Developer Website

https://developers.mykeeta.com/

Languages
Servers

https://open.mykeeta.com/api/open/

Endpoints

Request APIs - All endpoints for requesting order information and making updates

Operations

Request

This endpoint allows the third party system to retrieve comprehensive details about a specific order from Keeta platform.

Bodyapplication/jsonrequired
orderViewIdinteger(int64)required

Unique identifier for orders on Keeta platform

Example: 756823555555859
shopIdinteger(int64)required

Unique identifier of the Keeta store

Example: 466663
curl -i -X POST \
  https://open.mykeeta.com/api/open/order/get \
  -H 'Content-Type: application/json' \
  -d '{
    "orderViewId": 756823555555859,
    "shopId": 466663
  }'

Responses

Successful returns order details.

Bodyapplication/json
codeintegerrequired

A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.

Enum ValueDescription
0

The request was executed successfully.

Non-zero value

The request execution failed. Specific error details can be viewed in the message field.

Example: 0
messagestringrequired

Text description corresponding to the status code, explaining the operation result or error cause to users.

Example: "Success"
dataobject(FindMerchantOrderByViewIdResp)
Response
application/json
{ "code": 0, "message": "Success", "data": { "orderInfo": { … } } }

Request

This endpoint allows the third party to inform the Keeta ordering application that an order has been accepted and food preparation will begin shortly.

Notes:

  1. Timing Requirements
  • Developers must call this endpoint immediately upon receiving new order notifications from Keeta.
  • The Keeta platform will automatically cancel any order that remains unconfirmed after 5 minutes.
  1. State Management
  • The endpoint rejects requests under these conditions:
  • The order was already accepted through a Keeta POS terminal - The order status has already progressed beyond the initial state
Bodyapplication/jsonrequired
orderViewIdinteger(int64)required

Unique identifier for orders on Keeta platform

Example: 756823555555859
shopIdinteger(int64)required

Unique identifier of the Keeta store

Example: 466663
curl -i -X POST \
  https://open.mykeeta.com/api/open/order/confirm \
  -H 'Content-Type: application/json' \
  -d '{
    "orderViewId": 756823555555859,
    "shopId": 466663
  }'

Responses

Request executed successfully

Bodyapplication/json
codeintegerrequired

A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.

Enum ValueDescription
0

The request was executed successfully.

Non-zero value

The request execution failed. Specific error details can be viewed in the message field.

Example: 0
messagestringrequired

Text description corresponding to the status code, explaining the operation result or error cause to users.

Example: "Success"
Response
application/json
{ "code": 0, "message": "Success" }

Request

This endpoint allows merchants to request order cancellation through the Keeta platform when they are unable to fulfill a customer's order.

Notes:

  1. The developers should only invoke this API when the merchant is unable to fulfill the order.
  2. Upon successful cancellation, the order status will be updated to "CANCELLED" in Keeta's system and Keeta will automatically initiate a full refund to the customer.
  3. This API does not support duplicate calls. If the order is already in a "CANCELLED" state, the system will return an error response.
  4. Merchants should confirm the necessity of cancellation before proceeding to avoid unnecessary losses.
Bodyapplication/jsonrequired
orderViewIdinteger(int64)required

Unique identifier for orders on Keeta platform

Example: 756823555555859
shopIdinteger(int64)required

Unique identifier of the Keeta store

Example: 466663
cancelCodeintegerrequired

This field represents the code value for the reason an order was canceled. Please send the corresponding cancellation reason code for the merchant's order cancellation in this field.

Enum ValueDescription
500000

indicates other unspecified reasons (requires cancelReason)

500001

indicates insufficient ingredients

500002

indicates store temporary closure

500003

indicates staff shortage

Example: 500000
cancelReasonstring

This text field provides a detailed explanation for the cancellation when using the generic reason code (500000).

Example: "too expensive"
curl -i -X POST \
  https://open.mykeeta.com/api/open/order/cancel \
  -H 'Content-Type: application/json' \
  -d '{
    "orderViewId": 756823555555859,
    "shopId": 466663,
    "cancelCode": 500000,
    "cancelReason": "too expensive"
  }'

Responses

Request executed successfully

Bodyapplication/json
codeintegerrequired

A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.

Enum ValueDescription
0

The request was executed successfully.

Non-zero value

The request execution failed. Specific error details can be viewed in the message field.

Example: 0
messagestringrequired

Text description corresponding to the status code, explaining the operation result or error cause to users.

Example: "Success"
Response
application/json
{ "code": 0, "message": "Success" }

Request

This endpoint allows merchants to programmatically approve customer refund requests that were initiated through the Keeta platform.

Notes:

  1. When a customer submits a refund request on the Keeta platform, the system will send a webhook notification to the third-party system.
  2. If the third-party system supports refund management, merchants can review and approve refund requests directly within their system.
  3. Once approved, the third-party system must call this API to confirm the refund with Keeta.
  4. This API does not support duplicate calls. If the refund has already been approved or rejected (e.g., via Keeta POS), subsequent calls will return an error.
Bodyapplication/jsonrequired
orderViewIdinteger(int64)required

Unique identifier for orders on Keeta platform

Example: 756823555555859
shopIdinteger(int64)required

Unique identifier of the Keeta store

Example: 466663
curl -i -X POST \
  https://open.mykeeta.com/api/open/order/agree \
  -H 'Content-Type: application/json' \
  -d '{
    "orderViewId": 756823555555859,
    "shopId": 466663
  }'

Responses

Request executed successfully

Bodyapplication/json
codeintegerrequired

A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.

Enum ValueDescription
0

The request was executed successfully.

Non-zero value

The request execution failed. Specific error details can be viewed in the message field.

Example: 0
messagestringrequired

Text description corresponding to the status code, explaining the operation result or error cause to users.

Example: "Success"
Response
application/json
{ "code": 0, "message": "Success" }

Request

This endpoint enables merchant to formally reject customer refund requests initiated through the Keeta platform.

Notes:

  1. When a customer submits a refund request on the Keeta platform, the system will send a webhook notification to the third-party system.
  2. If the third-party system has implemented refund processing capabilities, merchants can review and evaluate customer refund requests directly within their own system endpoint.
  3. When merchants decide to reject a refund request after careful consideration, the third-party system must explicitly call this rejection API endpoint to formally communicate the decision to Keeta's platform.
  4. This API does not support duplicate calls. If the refund has already been approved or rejected (e.g., via Keeta POS), subsequent calls will return an error.
Bodyapplication/jsonrequired
orderViewIdinteger(int64)required

Unique identifier for orders on Keeta platform

Example: 756823555555859
shopIdinteger(int64)required

Unique identifier of the Keeta store

Example: 466663
rejectCodeintegerrequired

Reason code for refund rejection:

100000: indicates other unspecified reasons

100001: indicates meal preparation already completed

100002: indicates delivery process already initiated

Enum100000100001100002
rejectReasonstring

The rejectReason field contains the merchant's textual explanation for refusing a refund request. This provides transparency to customers about the rejection decision.

When Using Custom Rejection Code (100000), The rejectReason field becomes mandatory.

For rejectCode = 100001 (meal already prepared) or 100002 (delivery already started), The rejectReason field is optional.

Example: "Your Reason"
curl -i -X POST \
  https://open.mykeeta.com/api/open/order/reject \
  -H 'Content-Type: application/json' \
  -d '{
    "orderViewId": 756823555555859,
    "shopId": 466663,
    "rejectCode": 100000,
    "rejectReason": "Your Reason"
  }'

Responses

Request executed successfully

Bodyapplication/json
codeintegerrequired

A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.

Enum ValueDescription
0

The request was executed successfully.

Non-zero value

The request execution failed. Specific error details can be viewed in the message field.

Example: 0
messagestringrequired

Text description corresponding to the status code, explaining the operation result or error cause to users.

Example: "Success"
Response
application/json
{ "code": 0, "message": "Success" }

Request

This endpoint allows merchant to notify the Keeta platform that an order has been fully prepared and is ready for rider pickup.

Notes:

  1. Keeta strongly recommends that developers integrate this API to significantly enhance delivery efficiency.
  2. Calling this endpoint automatically updates the order status to 'Order Ready' in Keeta's system.
  3. This API does not support duplicate calls.
  4. It is crucial to call this API only after meal preparation is fully completed to avoid disrupting the delivery workflow. Premature or mistaken invocations could lead to delivery inefficiencies and negatively affect the overall customer experience.
Bodyapplication/jsonrequired
orderViewIdinteger(int64)required

Unique identifier for orders on Keeta platform

Example: 756823555555859
shopIdinteger(int64)required

Unique identifier of the Keeta store

Example: 466663
curl -i -X POST \
  https://open.mykeeta.com/api/open/order/prepare \
  -H 'Content-Type: application/json' \
  -d '{
    "orderViewId": 756823555555859,
    "shopId": 466663
  }'

Responses

Request executed successfully

Bodyapplication/json
codeintegerrequired

A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.

Enum ValueDescription
0

The request was executed successfully.

Non-zero value

The request execution failed. Specific error details can be viewed in the message field.

Example: 0
messagestringrequired

Text description corresponding to the status code, explaining the operation result or error cause to users.

Example: "Success"
Response
application/json
{ "code": 0, "message": "Success" }

Request

This API is designed to retrieve detailed information about items that are eligible for partial refunds. It allows developers to access and display specific product details related to refund eligibility.

Bodyapplication/jsonrequired
orderViewIdinteger(int64)required

Unique identifier for orders on Keeta platform

Example: 756823555555859
shopIdinteger(int64)required

Unique identifier of the Keeta store

Example: 466663
productsArray of objects(AfterSaleProductDTO)

A List of products designated for refund: This field should be populated with specific product information for partial refunds. If left empty, the API will return all products eligible for refund, with the refund amount set to zero.

curl -i -X POST \
  https://open.mykeeta.com/api/open/order/refund/part/products/preview \
  -H 'Content-Type: application/json' \
  -d '{
    "orderViewId": 756823555555859,
    "shopId": 466663,
    "products": [
      {
        "orderProductId": 1234534224,
        "refundCount": 1
      }
    ]
  }'

Responses

Successful returns partial refundable item details.

Bodyapplication/json
codeintegerrequired

A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.

Enum ValueDescription
0

The request was executed successfully.

Non-zero value

The request execution failed. Specific error details can be viewed in the message field.

Example: 0
messagestringrequired

Text description corresponding to the status code, explaining the operation result or error cause to users.

Example: "Success"
dataobject(PartRefundPreviewResp)
Response
application/json
{ "code": 0, "message": "Success", "data": { "products": [ … ], "promotionInfoList": [ … ], "refundPrice": { … }, "valuationRule": "Refund formula: [Item price / (Subtotal + Top-up to minimum)] × [Actual payment amount - Tips - Platform fee - Delivery fee]" } }

Request

This API allows merchants to submit requests for partial refunds on specific products within an order. It is designed to adjust billing and chargeback processes when certain items in an order will not incur costs due to various reasons, such as promotions, errors, or customer satisfaction measures.

Bodyapplication/jsonrequired
orderViewIdinteger(int64)required

Unique identifier for orders on Keeta platform

Example: 756823555555859
shopIdinteger(int64)required

Unique identifier of the Keeta store

Example: 466663
productsArray of objects(AfterSaleProductDTO)required

A List of products designated for refund

products[].​orderProductIdinteger(int64)required

Unique identifier for the SPU, generated by Keeta platform

Example: 1234534224
products[].​refundCountinteger(int64)required

The quantity of this specific product to be refunded

Example: 1
partRefundTypeintegerrequired

This field represents the code value for the reason for initiating a "partial product refund" request within an order. Please send the appropriate code value that corresponds to the reason for initiating the "partial product refund" request in this field. The specific meanings of the codes are as follows:

Enum ValueDescription
200000

indicates other unspecified reasons (requires partRefundReason)

200001

indicates slow meal preparation

200002

indicates insufficient ingredients

200003

indicates missing or incomplete delivery

200004

indicates wrong item prepared

partRefundReasonstring

This field is intended to provide a detailed textual explanation for initiating a partial refund request on specific items within an order.

For partRefundType = 200000 (Other Reasons), the partRefundReason field is mandatory and must be filled in.

For partRefundType = 200001, 200002, 200003, or 200004 (Standard Reasons), the partRefundReason field is optional and may be omitted or left empty.

Example: "Do not like"
curl -i -X POST \
  https://open.mykeeta.com/api/open/order/refund/part/apply \
  -H 'Content-Type: application/json' \
  -d '{
    "orderViewId": 756823555555859,
    "shopId": 466663,
    "products": [
      {
        "orderProductId": 1234534224,
        "refundCount": 1
      }
    ],
    "partRefundType": 200000,
    "partRefundReason": "Do not like"
  }'

Responses

Request executed successfully

Bodyapplication/json
codeintegerrequired

A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.

Enum ValueDescription
0

The request was executed successfully.

Non-zero value

The request execution failed. Specific error details can be viewed in the message field.

Example: 0
messagestringrequired

Text description corresponding to the status code, explaining the operation result or error cause to users.

Example: "Success"
Response
application/json
{ "code": 0, "message": "Success" }

Request

This API is designed to notify the Keeta platform that a customer has personally collected their order. It ensures that the system accurately reflects the order's completion through customer self-pickup.

Notes: This API should be invoked in situations where the customer opts for self-service pickup, collecting their order directly from the merchant premises. It updates Keeta's system with the order's completed status.

Bodyapplication/jsonrequired
orderViewIdinteger(int64)required

Unique identifier for orders on Keeta platform

Example: 756823555555859
shopIdinteger(int64)required

Unique identifier of the Keeta store

Example: 466663
curl -i -X POST \
  https://open.mykeeta.com/api/open/order/collect \
  -H 'Content-Type: application/json' \
  -d '{
    "orderViewId": 756823555555859,
    "shopId": 466663
  }'

Responses

Request executed successfully

Bodyapplication/json
codeintegerrequired

A numeric status identifier indicating the result of the interface call, used to determine whether the operation executed successfully.

Enum ValueDescription
0

The request was executed successfully.

Non-zero value

The request execution failed. Specific error details can be viewed in the message field.

Example: 0
messagestringrequired

Text description corresponding to the status code, explaining the operation result or error cause to users.

Example: "Success"
Response
application/json
{ "code": 0, "message": "Success" }

Webhooks

Webhooks - Webhook notifications sent by Keeta to third-party systems

Webhooks

MerchanSelfDelivery

The endpoint below is restricted to merchant self-delivery orders and is only available for updates after the merchant accepts the order. Orders that are completed or cancelled cannot be updated.
Availability: This API is available starting August 16, 2025.

Operations