canonical: https://jentic.com/apis/dev.foodkit.io/foodkit

# Dev Foodkit Foodkit API

Jentic publishes the only available OpenAPI specification for Foodkit API, keeping it validated and agent-ready. Foodkit is a white-label restaurant commerce platform that exposes storefront operations for customer profiles, branch availability, menus, orders, quotes, loyalty punch cards, and referrals. The 34 endpoints span versioned namespaces from v1 through v6 and are scoped per tenant and brand, so a single integration can drive multiple restaurant brands across iOS, Android, web, and kiosk surfaces. Use it to build the front-end of a delivery or pickup experience without operating a custom commerce backend.

## For AI agents

Drive a restaurant storefront through 34 Foodkit endpoints covering customer profiles, branch availability, menus, orders, quotes, loyalty, and referrals.

## Scope

Does not handle in-restaurant POS, kitchen display, payment capture, or driver dispatch routing - use for storefront ordering, menu, branch, and loyalty operations only.

## Capabilities

- Register a customer and update their profile via POST `/v1/storefront/customers` and PATCH `/v1/storefront/customers/me`
- Fetch the current menu and publications for a tenant via `/v5/storefront/content/tenants/{tenant}/menu` and /publications-cached
- Check which branches can deliver to a given address via GET `/v5/storefront/tenants/{tenant}/deliverable-branches`
- Submit a price quote and place an order via POST `/v5/storefront/tenants/{tenant}/quotes` and POST `/v5/storefront/tenants/{tenant}/orders`
- Track an in-flight order via GET `/v4/storefront/customers/brands/{brand}/customers/{customer}/orders/{id}/track`
- Read a customer's loyalty punch card balance via GET `/v6/storefront/loyalty/tenants/{tenant}/customers/{customer}/punch-card`
- Look up active promotions for a vendor via GET `/v3/storefront/vendors/{vendor}/promotions`

## Use cases

### Branded delivery and pickup app

Power a restaurant brand's mobile app or website end-to-end with Foodkit. Customers register through `/v1/storefront/customers`, browse the menu loaded from `/v5/storefront/content/tenants/{tenant}/menu`, see which branches can deliver via /deliverable-branches, get a quote with `/v5/storefront/tenants/{tenant}/quotes`, and place an order with `/v5/storefront/tenants/{tenant}/orders.` Foodkit is multi-tenant and multi-brand, so one integration covers a portfolio of restaurant brands operating in different cities.

Example prompt: Load the menu for tenant t1 via GET `/v5/storefront/content/tenants/t1/menu`, build a basket of 2 items, POST `/v5/storefront/tenants/t1/quotes` for pricing, then POST `/v5/storefront/tenants/t1/orders` to place the order.

### Loyalty and referrals concierge

Drive repeat orders by surfacing loyalty progress and referral status from Foodkit. GET `/v6/storefront/loyalty/tenants/{tenant}/customers/{customer}/punch-card` returns the customer's punch card state and GET `/v6/storefront/referrals/tenants/{tenant}/customers/{customer}` returns referral rewards earned. Surface these in the app's account screen or as nudges in checkout to lift conversion without a separate loyalty platform.

Example prompt: GET `/v6/storefront/loyalty/tenants/t1/customers/c123/punch-card` and render the current stamps and reward threshold in the app account screen.

### Order tracking and post-purchase updates

After an order is placed, hit GET `/v4/storefront/customers/brands/{brand}/customers/{customer}/orders/{id}/track` to retrieve the live state of the order through preparation, dispatch, and delivery. Combine with GET `/v3/storefront/customers/me/orders` to render an order history view. This gives a customer-facing app real-time visibility without polling the underlying POS system directly.

Example prompt: GET `/v4/storefront/customers/brands/b1/customers/c123/orders/o789/track` and parse the state field to render a status bar.

### Agent-driven storefront automation

An AI assistant inside a restaurant brand's customer support tool can resolve order, menu, and loyalty questions by calling Foodkit through Jentic. The agent searches by intent, gets the right tenant-scoped operation, and runs it on behalf of the support agent without ever holding raw credentials or learning Foodkit's URL conventions.

Example prompt: Through Jentic, search 'track a restaurant order', load the Foodkit `/v4/.../orders/{id}/track` operation, and execute with the customer's brand, customer, and order id.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | `/v5/storefront/content/tenants/{tenant}/menu` | Fetch the current menu for a tenant |
| GET | `/v5/storefront/tenants/{tenant}/deliverable-branches` | List branches that can deliver to a location |
| POST | `/v5/storefront/tenants/{tenant}/quotes` | Quote a basket with pricing and fees |
| POST | `/v5/storefront/tenants/{tenant}/orders` | Place an order |
| GET | `/v4/storefront/customers/brands/{brand}/customers/{customer}/orders/{id}/track` | Track the state of a placed order |
| GET | `/v6/storefront/loyalty/tenants/{tenant}/customers/{customer}/punch-card` | Read a customer's loyalty punch card |
| POST | `/v1/storefront/customers` | Register a new customer |

## Key resources

- **Customers** — Create customer accounts and manage profile, addresses, and GDPR preferences via `/v1/storefront/customers` and `/v6/.../gdpr-preferences.`
- **Menu and Branches** — Fetch the menu, publications, and deliverable branches per tenant via `/v5/storefront/content/tenants/{tenant}/menu` and /deliverable-branches.
- **Orders and Quotes** — Quote a basket, place an order, and track its progress via `/v5/storefront/tenants/{tenant}/quotes`, /orders, and `/v4/.../orders/{id}/track.`
- **Loyalty and Referrals** — Read punch card and referral state per customer via `/v6/storefront/loyalty/...` and `/v6/storefront/referrals/...`

## Why Jentic

- **Setup:** Wiring the Foodkit API by hand means threading the tenant and brand identifiers through the storefront menu, branch, quote, order, and loyalty calls across its versioned paths and parsing each response yourself. Through Jentic you install once, import the Foodkit API from the API Directory, and your agent calls it with the tenant parameters resolved.
- **Permission scoping:** Foodkit puts the tenant in the URL path (`/v5/storefront/tenants/{tenant}/...`), so a rule can pin your agent to one tenant: it can read that storefront's menu and branches and place quotes and orders there and nothing else. You choose the operations it may call, so order placement is included only if you add that operation.
- **Credential handling:** Any tenant-scoped Foodkit credential is stored once, encrypted, by your own Jentic One instance and injected into the request headers at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'place a restaurant order' or 'fetch a restaurant menu', and Jentic returns the matching Foodkit storefront operation with its input schema so the agent calls the right endpoint without reading the docs.

## Related APIs

- **Toast** — Restaurant POS and ordering platform with broader operations coverage.
- **Square** — Commerce APIs covering catalog, orders, and in-person payments.
- **Stripe** — Payments, subscriptions, and refund APIs.

## FAQ

### Why is there no official OpenAPI spec for Foodkit API?

Foodkit does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call Foodkit API via structured tooling. It is validated against the live API and kept up to date. Get started with Jentic One, the self-hosted execution layer.

### What authentication does the Foodkit API use?

The Foodkit storefront spec does not declare a security scheme on its endpoints; in practice Foodkit issues tenant-scoped credentials negotiated with their team for production use. Through Jentic, any provisioned credential is held in the vault and injected at call time, so the raw value never reaches the agent.

### Can I place an order with the Foodkit API through Jentic?

Yes. Build the basket against the menu returned by `/v5/storefront/content/tenants/{tenant}/menu`, call POST `/v5/storefront/tenants/{tenant}/quotes` for pricing, and then POST `/v5/storefront/tenants/{tenant}/orders` to commit the order. Through Jentic, search 'place a Foodkit order' to load the operation schemas in sequence.

### How do I check whether a branch delivers to a given address with the Foodkit API?

Call GET `/v5/storefront/tenants/{tenant}/deliverable-branches` with the location parameters. For brand-scoped checks, use `/v5/storefront/tenants/{tenant}/brands/{brand}/deliverable-branches.` The response identifies the branches available for the given address.

### What are the rate limits for the Foodkit API?

The OpenAPI spec does not declare rate limits. Foodkit applies tenant-level throughput limits negotiated with their team; treat HTTP 429 as a signal to back off and contact Foodkit support for production volume.

### How do I read a customer's loyalty status with the Foodkit API?

Use GET `/v6/storefront/loyalty/tenants/{tenant}/customers/{customer}/punch-card` to retrieve the per-customer punch card state, and `/v6/storefront/loyalty/tenants/{tenant}/punch-card` for the punch card configuration of the tenant. The two combined give you progress against the reward threshold.

### Can I limit what my agent is allowed to do with the Foodkit API?

Yes. Because you run Jentic One yourself, your own rules decide which Foodkit operations and credentials the agent may use. Foodkit puts the tenant in the URL path, so a rule can pin the agent to a single tenant, letting it read that storefront's menu and deliverable branches through the versioned storefront endpoints and nothing else. You also choose which operations it can call, so order placement via the quotes and orders endpoints is available only if you explicitly add it.
