Skip to main content
POST
/
v1
/
partner
/
menus
/
sections
Create a section
curl --request POST \
  --url https://api.dev.shadowchef.co/v1/partner/menus/sections \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "title": {
    "en": "All Day Menu",
    "id": "Menu Sepanjang Hari"
  },
  "description": {
    "en": "Available 09:00 – 22:00"
  },
  "isEnabled": true,
  "sequence": 1,
  "visibilities": {
    "1": true
  },
  "availableTimes": {
    "0": {
      "disabled": false,
      "slots": [
        {
          "startTime": 900,
          "endTime": 2200
        }
      ]
    },
    "1": {
      "disabled": false,
      "slots": [
        {
          "startTime": 900,
          "endTime": 2200
        }
      ]
    },
    "2": {
      "disabled": false,
      "slots": [
        {
          "startTime": 900,
          "endTime": 2200
        }
      ]
    },
    "3": {
      "disabled": false,
      "slots": [
        {
          "startTime": 900,
          "endTime": 2200
        }
      ]
    },
    "4": {
      "disabled": false,
      "slots": [
        {
          "startTime": 900,
          "endTime": 2200
        }
      ]
    },
    "5": {
      "disabled": false,
      "slots": [
        {
          "startTime": 900,
          "endTime": 2200
        }
      ]
    },
    "6": {
      "disabled": false,
      "slots": [
        {
          "startTime": 900,
          "endTime": 2200
        }
      ]
    }
  },
  "fromAPI": true
}
'
{
  "request_id": "req_4d1b7e3f-1f06-4d3c-a14f-9c0b9f8a3e2c",
  "data": {
    "id": 1022
  }
}

Authorizations

Authorization
string
header
required

Authorization: Basic base64(partner_key:secret_key).

Credentials are issued by a klikit operator. The plaintext secret_key is shown once at issuance and cannot be retrieved later — store it securely. If lost, ask your operator to rotate the secret to receive a new one. The old secret stops working immediately on rotation; there is no overlap window.

Body

application/json
title
object
required

Locale-keyed text. Keys are ISO 639-1 codes (en, id, ja, ...). Use whichever key matches your storefront; klikit ships a value for every locale your business is configured for.

Example:
{ "en": "Margherita", "id": "Margherita" }
availableTimes
object
required

Weekly schedule keyed by weekday number as a string: "0" = Sunday … "6" = Saturday. Every day must have at least one slot. To make a section dark for a day, set disabled: true and pass any placeholder slot (the disabled flag wins).

Example:
{
"0": {
"disabled": false,
"slots": [{ "startTime": 900, "endTime": 2200 }]
},
"1": {
"disabled": false,
"slots": [{ "startTime": 900, "endTime": 2200 }]
},
"2": {
"disabled": false,
"slots": [{ "startTime": 900, "endTime": 2200 }]
},
"3": {
"disabled": false,
"slots": [{ "startTime": 900, "endTime": 2200 }]
},
"4": {
"disabled": false,
"slots": [{ "startTime": 900, "endTime": 2200 }]
},
"5": {
"disabled": false,
"slots": [{ "startTime": 1000, "endTime": 2300 }]
},
"6": {
"disabled": false,
"slots": [{ "startTime": 1000, "endTime": 2300 }]
}
}
visibilities
object
required

Per-provider visibility flag. Keys are provider ids (as strings) from GET /v1/partner/providers. Set a provider's value to true to publish on that channel. Providers absent from the map default to hidden.

Klikit's own marketplace is provider id "1".

Example:
{ "1": true, "6": true }
description
object

Locale-keyed text. Keys are ISO 639-1 codes (en, id, ja, ...). Use whichever key matches your storefront; klikit ships a value for every locale your business is configured for.

Example:
{ "en": "Margherita", "id": "Margherita" }
isEnabled
boolean
default:true
sequence
integer

Display order within the menu. Lower numbers come first.

image
string | null
isMealForOne
boolean
default:false
parentID
integer | null

For "Meal for One" sections

fromAPI
boolean
default:true

Mark records originating from the partner API. Always true for partner-created entities.

Response

Section created. data.id is the section id.

Canonical response wrapper. Every response — success or error — carries the request_id so you can quote one id to klikit support to correlate a request end-to-end.

request_id
string
required
Example:

"req_4d1b7e3f-..."

data
any

Endpoint-specific payload on success.

error
object

Machine-readable error code + human message. The code is stable across releases — switch on code in your client code rather than parsing the message text.

Common codes you will encounter as a partner:

CodeHTTPMeaning
auth_missing401Authorization header absent / malformed
auth_invalid_credential401partner_key or secret_key did not verify
auth_revoked403Credential is revoked
auth_forbidden403Credential not authorized for the requested scope
request_invalid400Body / query parameters failed validation
request_missing_idempotency_key400Write endpoint called without Idempotency-Key
request_invalid_range400Date range > 90 days
resource_not_found404Order / store / mapping does not exist
resource_unmapped404Stock / availability call referenced an unknown SKU
state_invalid_transition409Order PATCH not allowed by current state
state_idempotency_conflict409Same Idempotency-Key reused with a different body
rate_limit_exceeded429Per-credential rate cap hit
downstream_unavailable502An internal klikit dependency is unreachable