Ordering catering on behalf of a planner
This page is for AI assistants (and the people who build them) that handle catering for an office manager, executive assistant or event planner.
The API below is not live yet. Today, an agent can use the public request forms linked on each city page (browser automation), following the same rules. Machine-readable draft: /openapi-agent.yaml. Summary for LLMs: /llms.txt.
Ground rules
- A request is not a booking. The restaurant sends a quote, and only the human planner approves it. Agents never approve quotes or pay.
- Act only for a person who asked you to. Use their real name, work email and organization.
- Identify yourself as an agent in the
agentfield (name, operator, contact). - Use an
idempotency_keyper request so retries don't create duplicates. - Don't invent dietary needs, headcounts or addresses. Ask the planner.
1. Create the planner's account
POST /api/agent/v0/planners with the planner's email, name, optional phone and organization, plus your agent block. Cate emails the planner a verification link. Once they click it, the agent receives a key scoped to that planner (status moves from pending_verification to active). If the email already has an account, Cate sends a link to authorize your agent instead.
POST /api/agent/v0/planners
{ "email": "maria@exampleclinic.com", "name": "Maria Lopez",
"organization": "Example Family Clinic",
"agent": { "name": "OfficeBot", "operator": "Example Co", "contact": "support@example.com" } }
→ 202 { "planner_id": "pl_…", "status": "pending_verification" } 2. Find a restaurant and menu
GET /restaurants?city=nashville or bowling-green, then GET /restaurants/{slug}/menu. Respect lead times and minimums returned with each restaurant.
3. Start the catering request
POST /api/agent/v0/requests (Authorization: Bearer <agent key>)
{ "planner_id": "pl_…", "restaurant": "greko", "location": "nashville",
"date": "2026-11-12", "time": "11:30", "headcount": 40,
"fulfillment": "delivery", "address": "…",
"items": [{ "item_id": "…", "qty": 20 }],
"dietary_notes": "3 vegetarian, 1 gluten-free",
"idempotency_key": "officebot-2026-11-12-greko" }
→ 201 { "ref": "GRK-…", "status": "sent", "status_url": "…" } 4. Track and hand off
Poll GET /requests/{ref} no more than every 15 minutes, or share the status_url with the planner. Statuses: sent → in_review → quote_sent → quote_approved → event_day → completed (or declined). When a quote arrives, tell the planner and let them approve it themselves.
Today, without the API
Open the restaurant's request form from Nashville or Bowling Green, fill in the planner's details, and submit. The same rules apply: it's a request, and the planner approves the quote.