Scan a dish once with the iPhone app and use it anywhere: true-to-size 3D and AR on your own site, menu data over REST, webhooks when something changes, and the AI Concierge streamed into your app.
# Every restaurant your key can readcurlhttps://api.trueplate.ai/v1/partner/restaurants\-H"Authorization: Bearer tp_sk_live_..."# One dish, with signed USDZ and GLB model URLscurlhttps://api.trueplate.ai/v1/partner/items/ITEM_ID\-H"Authorization: Bearer tp_sk_live_..."
api.trueplate.ai/v1
Bearer keys, scoped
OpenAPI 3.1
What you can build
Three surfaces, one key.
The photoreal models, the menu data and the grounded assistant your guests already use, opened up to your own code.
Embed
Your dishes, in 3D and AR, on your own site
One script tag renders the same photoreal model your guests see on a TruePlate menu, at true size, with the AR button on iPhone and Android. Capture a dish in the app and it appears on your page on its own.
Read your restaurants, sections, items, prices, allergens, nutrition and signed asset URLs. Cursor paginated, test mode included, and documented by a live OpenAPI 3.1 spec rather than a hand-written page.
Cursor pagination with a stable ordering
Test keys that never touch production counters
Signed webhooks for model.ready, item.updated, menu.updated and more
The same grounded menu assistant that runs on a TruePlate menu, over the Partner API. It answers only from the restaurant's published dishes and house notes, and it streams back as Server-Sent Events so your UI can render it token by token.
POST /partner/restaurants/{id}/concierge/chat, streamed as SSE
Gated on the concierge:chat scope and the restaurant’s own allowance
No prompt override and no model choice: the grounding is the product
Switch on the add-on for your account, on any plan. One subscription covers every location you run.
2
Create a key
Under Developers in your dashboard. Secret keys stay on your server; publishable keys are for the browser and only work from the origins you list. Start in Test: it is never billed.
3
Make your first call
Call GET /partner/me to check the key, then read menus, subscribe to webhooks or drop in the embed.
It is an add-on at €49 a month, available on every TruePlate plan. One subscription covers every location on your account, and test keys are never billed.
Can I build against it without being billed?
Yes. Create a key in the Test environment. It reaches the same data with the same permissions, is never billed, and runs under fixed caps of 60 requests a minute and 5,000 a day. When you are ready, swap in a live key: no code changes.
Which key goes where?
Secret keys (tp_sk_) stay on your server and carry the scopes you pick. Publishable keys (tp_pk_) are safe in a web page: they only reach the embed endpoints, and only from the origins you allow-list on the key.
Can I change the concierge's prompt or model?
No. There is no raw-completion mode, no system-prompt override and no model parameter. The assistant answers only from the restaurant's published dishes and house notes, and streams back as Server-Sent Events.
How do I stay in sync when the menu changes?
Subscribe to signed webhooks such as model.ready, item.updated and menu.updated, or poll the item listing with updatedAfter. Each poll reports the window it covered, so feeding that back makes incremental sync gapless.
Build on the real menu.
Create a test key, call it from your own code, and swap in a live key when you are ready. No code changes.