Upload a menu (PDF or image) and get a proposal
Partner key + restaurant key. multipart/form-data with the menu in the field file: a PDF (up to 4 MB and 20 pages) or a JPEG, PNG or WebP image (up to 4 MB, 200 to 8000 pixels per side; HEIC is not supported). The type is read from the file’s content, not from Content-Type or the file name. The file is interpreted during the request and never stored; only the proposal is stored, as a draft that is deleted after 7 days. Sending the same file as an open draft returns that draft (200) without a new interpretation.
A language model reads the menu. For a PDF with a text layer every price and name is checked against the text, and if the model is unavailable the deterministic parser is used (proposal.source). An image or a scanned PDF cannot be checked against text and gets the warning CHECK_AGAINST_MENU. The call can take a couple of minutes. Committing always creates a new menu that is turned off, so nothing is overwritten. Works for sandboxes and real restaurants. Not allowed for an archived restaurant.
Limits: 10 interpretations per hour per restaurant (shared with the restaurant dashboard), 60 per hour per partner, and 20 model interpretations per day per restaurant.
Authentication
The partner key, sent as Authorization: Bearer lbp_test_…. Created in LettBestilt Partner under Partner key. It belongs to the partner, not to a restaurant, and only works against /api/v1/partner. Server to server only: a request with an Origin header is rejected with 403 FORBIDDEN. A test key sees and creates only sandboxes; live partner keys are not available yet. A revoked key, a restaurant key (lbs_…) here, or a suspended or archived partner returns 401 UNAUTHORIZED; an expired key returns 401 KEY_EXPIRED.
The restaurant’s own key (lbs_test_… or lbs_live_…), sent in X-LettBestilt-Restaurant-Key together with the partner key for calls about one restaurant. The key must have full access (scope *, otherwise 403 INSUFFICIENT_SCOPE), belong to a restaurant the partner owns, and be in the same environment as the partner key (otherwise 401 UNAUTHORIZED). A slug that does not exist, belongs to another partner or does not match the key always gives the same 404 RESTAURANT_NOT_FOUND. Older keys without an environment in the prefix (lbs_<random>) are not accepted here; rotate them in LettBestilt Partner.
Path parameters
Request
PDF (høyst 4 MB og 20 sider) eller bilde i JPEG, PNG eller WebP (høyst 4 MB).

