Places and menus over REST

API

The REST API can now do the reading half of an order, for one person: find a restaurant, look at one, and read its live menu. These are the same answers the MCP places, place_facts and menu tools give, because they run the same code.

What changed

  • GET /v1/places?query=&near=&lat=&lng=&openNow=&limit= searches restaurants by name or kind of food.
  • GET /v1/places/:placeId returns one place, its dietary, service and good-for facts, and an orderability verdict.
  • POST /v1/menus reads a restaurant's live menu, named by placeId or by query and near. A read that is not done answers 202 with a menuId; poll GET /v1/menus/:menuId, which is free. A poll that could not be checked is a 503 with Retry-After, and the read is not lost.
  • openapi.json is now generated from the shapes the API validates every request with, and covers every endpoint in this reference.
  • Every error code is one of a published list. The 400 code is invalid_request; the reference said invalid_input, which no developer endpoint sends.

Why it matters

You can show a person where they can eat and what a place serves without driving an MCP session. These routes read and never build, confirm or charge.

What to do

Call them with a person credential, not your application secret: the access token of someone who connected your application, or an lgb_ build grant.

curl -X POST https://api.layout.link/v1/menus \
  -H "Authorization: Bearer $LAYOUT_PERSON_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{ "placeId": "ChIJbloomCoffee" }'

202 Accepted
Retry-After: 5

{ "status": "reading", "menuId": "mnu_Q2hJSmJsb29t…", "assumedNearest": false, "retryAfterSec": 5,
  "restaurant": { "name": "Layout test kitchen", "address": "1194 Roseville Pkwy, Rocklin, CA 95677, USA" } }

Each developer account has a daily allowance, counted across all its applications: 5,000 place reads, 200 live menu reads and 100 knowledge answers in sandbox and for an application not yet approved, and 50,000, 1,000 and 1,000 for an approved production application. A spent allowance is a 429 that names the limit and says whether it was your account's limit or the pool's ceiling across every developer. Open Usage in the console to ask for more. See the API reference and limits.

Breaking changes

None. These are new endpoints, and the spec describes the existing ones as they already behave.

All changes