Plan limits

Each DuckHub plan caps how many menu items a venue can hold. Syncs that would create more items than your plan allows are rejected before anything is written.

Plan availability

API keys and the Menu API are available on every plan, including the free Egg plan. Only the Orders API requires a paid plan.

Limits per venue#

Egg (free)DucklingGolden Duck
Products7020002000
Categories10200200
Ingredients300300300

The counts are per venue and include everything already in the menu — a sync fails if existing items + new items in the request would exceed the cap. Updating existing items (matched by externalId) never counts against the limit; only new items do.

Per-request array caps#

Independent of plan limits, one POST /v1/sync request accepts at most:

ArrayMax per request
categories200
ingredients200
products500

Larger catalogs should be split into several sequential sync requests (mind the rate limits). Exceeding an array cap is a 400 validation error.

When a limit is exceeded#

The sync fails with 400 Bad Request and no changes are applied — the request is checked up-front, so a rejected sync never leaves the menu half-updated.

Distinguishing limit errors

Plan-limit rejections currently return a generic 400 body (no machine-readable code). If a sync that creates many new items fails with a 400 that is not Validation failed, compare your item counts against the table above. See Errors.

To free up capacity, remove stale items with POST /v1/cleanup or upgrade the plan in the DuckHub app.