Group Cart Init
Starts a group order. The signed-in customer who calls this becomes the host: they pick the store and order type, and everyone who joins orders into the same session.
Group ordering is off by default. It has to be enabled on both the brand and the store for the chosen order type — read is_group_ordering_enabled on the order type before offering it, or you will get a 1214.
A customer can only have one active group order per brand at a time. If they already have one, this returns 1201; use Group Cart Active to resume it instead.
Keep two things from the response: participant_access_token, which is the host's own participant credential, and share_url (or invite_token), which is what you give to the people you are inviting.
Headers
- Type: stringApplicationrequired
White Label Application Key
- Type: stringApi
- Version requiredVersion of the API that the client app expects
- Type: stringDevice
- U U I D requiredThe identifier of the device and/or client app that sent the request
- Type: stringContent
- Type requiredRequired even on requests with no body
- Type: stringAuthorizationrequired
Bearer token of the signed-in customer
Body
- Properties: 3Type: objectorder
_type required - Type: stringFormat: uuidvenue
_id requiredUUID of the store the group is ordering from. It cannot be changed later.
- Type: stringdisplay
_name max length:100How the host appears in the roster. Defaults to their account name.
- Type: integermax
_amount _per _participant min:1Optional spending cap per guest, in minor units. Applies to guests, not to the host.
- Type: stringFormat: date-timemodifications
_deadline _at Optional soft deadline shown to participants. Must be in the future and before the session expires.
Responses
- application/json
- 400
1201the customer already has an active group order ·1204the caller is a guest account and cannot host ·1214group ordering is not enabled for this brand, store or order type - 401
Missing or invalid customer token.
- 404
Unknown venue.
- 422
Validation failed.
- 429
Too many group orders started. Five per minute per host.
curl https://api-public-demo.menu.app/api/group-cart/init \
--request POST \
--header 'Application: ' \
--header 'Api-Version: 4.78.0' \
--header 'Device-UUID: ' \
--header 'Content-Type: application/json' \
--header 'Authorization: ' \
--header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
--data '{
"venue_id": "8d2f2c42-2f1e-4a3c-9a1e-2c4c9f0d7f11",
"order_type": {
"id": 6,
"properties": {
"pickup_asap": true
}
},
"max_amount_per_participant": 5000,
"display_name": "Alex"
}'
{
"status": "OK",
"code": 200,
"data": {
"group_cart": {
"id": "7c9e6679-f1e4-40b3-a2c5-e8f1a0b9d4c3",
"status": "open",
"venue_id": "8d2f2c42-2f1e-4a3c-9a1e-2c4c9f0d7f11",
"order_type": 6,
"order_type_properties": {
"pickup_asap": true
},
"max_amount_per_participant": 5000,
"invite_token": "4f1c0f3a2b7c4a669f1e2c9a1c9a1c9a4f1c0f3a2b7c4a669f1e2c9a1c9a1c9a",
"share_url": "https://order.example.com/group/join?token=4f1c0f3a2b7c4a669f1e2c9a1c9a1c9a4f1c0f3a2b7c4a669f1e2c9a1c9a1c9a",
"is_reorder": false,
"is_edit": false,
"poll_interval_seconds": 10,
"modifications_deadline_at": null,
"expires_at": "2026-10-05T17:00:00.000000Z",
"locked_at": null,
"participants": [
{
"id": "1f2d3c4b-5a60-4b91-8a0e-b1c5f0a377a2",
"cart_id": "032878b199f90e13e1bdce036e00f157",
"customer_account_id": "6735e303-50a1-4887-9b11-915a6919cc66",
"role": "host",
"display_name": "Alex",
"is_anonymous": false,
"status": "editing",
"joined_at": "2026-09-20T17:00:00.000000Z",
"left_at": null
}
]
},
"participant": {
"id": "1f2d3c4b-5a60-4b91-8a0e-b1c5f0a377a2",
"cart_id": "032878b199f90e13e1bdce036e00f157",
"customer_account_id": "6735e303-50a1-4887-9b11-915a6919cc66",
"role": "host",
"display_name": "Alex",
"is_anonymous": false,
"status": "editing",
"joined_at": "2026-09-20T17:00:00.000000Z",
"left_at": null
},
"participant_access_token": "9b2f4e7c1a3d5f8091b2c3d4e5f60718293a4b5c6d7e8f9012a3b4c5d6e7f801"
}
}