canonical: https://jentic.com/apis/kitchenhub.app/kitchenhub

# Kitchenhub App KitchenHub API

Jentic publishes the only available OpenAPI specification for KitchenHub API, keeping it validated and agent-ready. KitchenHub is a restaurant order-aggregation platform that connects locations and stores to delivery and ordering integrations, and the API exposes the location, store, webhook, integration-account, and provider model that drives those connections. The 48-endpoint surface includes a token issuance and refresh flow, full CRUD on locations and stores, configurable webhooks for order events, and a read-only providers endpoint that lists available integration partners. Authentication uses a Bearer token issued via the auth/token endpoints.

## For AI agents

Manage restaurant locations, stores, integration accounts, and webhook subscriptions inside a KitchenHub account from an automation or agent.

## Scope

Does not handle payment processing, menu authoring, or driver dispatch - use for managing KitchenHub locations, stores, integrations, and order webhooks only.

## Capabilities

- Issue and refresh access and refresh tokens for the KitchenHub API
- Create, read, update, and delete restaurant locations
- Manage stores associated with each location
- Subscribe webhooks to order and integration events
- List the integration providers KitchenHub supports
- Create and read integration accounts that bind a store to a provider
- Validate an access token before running a long-lived workflow

## Use cases

### Onboard a new restaurant location

When a brand opens a new site, an integration can call POST `/v2/locations`/ with the address and metadata, then POST `/v2/stores`/ to create the underlying store. The two-step flow gives the operator a clean separation between the physical location and the ordering surface attached to it.

Example prompt: POST a payload to `/v2/locations`/ with the address, then POST `/v2/stores`/ referencing the new location_id.

### Webhook-driven order sync

Operators can subscribe to KitchenHub order events by calling POST `/v2/webhooks`/ with the destination URL and event types, then PATCH `/v2/webhooks/{webhook_id}`/ to adjust filters as the integration matures. The webhook delivers structured order events into the operator's order management system.

Example prompt: POST a webhook to `/v2/webhooks`/ with the order-events URL and confirm the subscription with GET `/v2/webhooks/.`

### Integration provider rollout

Before enabling a new third-party ordering platform, an operator can call GET `/v2/providers`/ to confirm KitchenHub supports it, then POST `/v2/integration_accounts`/ to attach the store credentials. The pair of calls is enough to bring a new provider online for an existing location.

Example prompt: Call GET `/v2/providers`/, then POST `/v2/integration_accounts`/ with the chosen provider and the store credentials.

### Token lifecycle management

Long-running integrations can call GET `/v2/auth/token/validate`/ before each batch and POST `/v2/auth/token/refresh`/ when the access token is close to expiry. This keeps the integration online without a full re-authentication round trip.

Example prompt: Call GET `/v2/auth/token/validate`/, and if invalid, POST `/v2/auth/token/refresh`/ with the refresh token.

### Agent integration via Jentic

An ordering operations agent can use Jentic to discover the KitchenHub location and webhook operations, load their schemas, and execute them with vaulted credentials. The Bearer token lifecycle is handled inside Jentic, so the agent never reads the raw value.

Example prompt: Search Jentic for 'create a KitchenHub location', load POST `/v2/locations`/, and execute it with the new site's address.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/v2/auth/token/` | Create access and refresh tokens |
| POST | `/v2/auth/token/refresh/` | Refresh an access token |
| POST | `/v2/locations/` | Create a restaurant location |
| POST | `/v2/stores/` | Create a store under a location |
| POST | `/v2/webhooks/` | Create a webhook subscription |
| PATCH | `/v2/webhooks/{webhook_id}/` | Update a webhook |
| GET | `/v2/providers/` | List integration providers |
| POST | `/v2/integration_accounts/` | Create an integration account |

## Key resources

- **Auth** — Issue, refresh, and validate access tokens
- **Locations** — CRUD on restaurant locations
- **Stores** — CRUD on the stores under each location
- **Webhooks** — Subscribe and configure webhooks for order events
- **Providers** — List the integration providers KitchenHub supports
- **Integration accounts** — Bind a store to a third-party provider

## Why Jentic

- **Setup:** Wiring KitchenHub by hand means exchanging credentials for a token at its auth endpoint, refreshing it, and passing it in the Authorization header against the api.kitchenhub.app host yourself. Through Jentic you install once, import KitchenHub from the API Directory, store the credential once, and your agent calls it.
- **Permission scoping:** KitchenHub carries location, store, and integration targets in the request body, pinning a resource in the URL path only for webhook updates, so scope by operation: limit the agent to the operations it needs, such as creating stores or reading providers, and leave webhook changes out unless you add them.
- **Credential handling:** Your KitchenHub credential is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a KitchenHub store' or 'register an order webhook', and Jentic returns the matching KitchenHub operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Grubhub API** — Grubhub is one of the ordering providers KitchenHub aggregates
- **Shopify API** — Shopify can hold product, customer, or loyalty data alongside KitchenHub orders
- **Square API** — Square handles in-store payments and POS that complement KitchenHub digital orders
- **Toast API** — Toast is a restaurant POS and digital-ordering platform that overlaps with KitchenHub's aggregation surface

## FAQ

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

KitchenHub does not publish an OpenAPI specification. Jentic generates and maintains this spec so that AI agents and developers can call KitchenHub 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 KitchenHub API use?

KitchenHub uses Bearer token authentication. Tokens are issued by POST `/v2/auth/token`/ and refreshed by POST `/v2/auth/token/refresh/.` Jentic stores the long-lived credentials in the vault and manages the token lifecycle internally.

### Can I subscribe to order events with the KitchenHub API?

Yes. Call POST `/v2/webhooks`/ with a destination URL and the event types you want to receive. Use PATCH `/v2/webhooks/{webhook_id}`/ to adjust filters and DELETE `/v2/webhooks/{webhook_id}`/ to remove the subscription.

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

The OpenAPI specification does not declare explicit rate limits across the 48 endpoints. Validate the access token with GET `/v2/auth/token/validate`/ rather than refreshing on every request, and back off if the API returns a 429.

### How do I create a KitchenHub location through Jentic?

Run pip install jentic, search Jentic for 'create a KitchenHub location', load the POST `/v2/locations`/ operation, and execute it with the site address. Jentic handles the Bearer token issuance and refresh cycle automatically.

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

Yes. Because you run Jentic One yourself, your own rules decide which KitchenHub operations and credentials the agent can use, so you scope access per operation. For example, you can allow the agent to create stores with POST `/v2/stores`/ or read providers with GET `/v2/providers`/ while leaving webhook changes like PATCH `/v2/webhooks/{webhook_id}`/ out unless you explicitly add them. Since KitchenHub carries location, store, and integration targets in the request body and only pins a resource in the path for webhook updates, limiting the operation set is what controls what the agent can reach. Your KitchenHub credential stays with your instance and is injected only when a permitted operation runs.
