Docs

These are the advanced docs. Most restaurant owners should use the Dashboard.
Need help? Email support@restaurantassist.app

Overview

Advanced

RestaurantAssist is a review-reply workflow tool. Most users paste reviews into the dashboard and copy replies. These docs are for developers or advanced users who want to call the API directly.

Support
Auth
API key in x-api-key header
Dashboard

Authentication

API key
No logins. Your API key is your identity. After checkout, the key is emailed to you. Include it as x-api-key in requests.
# Example header
x-api-key: YOUR_KEY_HERE
Tip: You can store the key locally in the Dashboard (this device only).

Base URL

Environment
https://review-assistant-api.onrender.com
Later, you may use a custom domain like api.restaurantassist.app.

Quickstart

1 minute

Make sure you have your API key. Then run:

curl -X POST "https://review-assistant-api.onrender.com/analyze" \
            -H "Content-Type: application/json" \
            -H "x-api-key: YOUR_KEY_HERE" \
            -d '{
              "review_text": "Food was great but the wait was really long.",
              "platform": "google"
            }'
If your subscription is inactive, protected requests may return 402.

Endpoints

Reference
Account
GET /me
Generate reply
POST /analyze
Stripe checkout
POST /billing/create-checkout
Provision status
GET /billing/status?session_id=...

GET /me

GET

Returns the business attached to your API key and subscription info.

curl "https://review-assistant-api.onrender.com/me" \
  -H "x-api-key: YOUR_KEY_HERE"
{
  "business_id": "california-pizza-kitchen",
  "email": "you@yourrestaurant.com",
  "subscription": {
    "plan": "starter",
    "status": "active",
    "current_period_end": "2026-02-15"
  }
}

POST /analyze

POST

Analyzes a review and returns a ready-to-post reply. Also returns metadata that the Dashboard may use.

Content-Type
application/json
Required
review_text
Optional
platform (google/yelp/facebook/other)
curl -X POST "https://review-assistant-api.onrender.com/analyze" \
  -H "Content-Type: application/json" \
  -H "x-api-key: YOUR_KEY_HERE" \
  -d '{
    "review_text": "The food was amazing but the order was missing an item.",
    "platform": "google"
  }'
{
  "record": {
    "reply": "Thanks for letting us know — we’re glad you enjoyed the food, and we’re sorry an item was missed. Please reach out so we can make it right.",
    "sentiment": "mixed",
    "urgency": "high",
    "category": "missing_item",
    "tags": ["missing_item", "apology"],
    "next_steps": [
      "Offer to make it right",
      "Ask for order details (date/time) if appropriate"
    ]
  }
}
Note: The Dashboard may hide most metadata for simplicity.

Billing

Stripe

Checkout is handled by Stripe subscriptions. After successful checkout, your API key is emailed automatically.

POST /billing/create-checkout

POST
curl -X POST "https://review-assistant-api.onrender.com/billing/create-checkout" \
  -H "Content-Type: application/json" \
  -d '{
    "business_id": "california-pizza-kitchen",
    "email": "you@yourrestaurant.com",
    "plan": "starter"
  }'

GET /billing/status

GET
curl "https://review-assistant-api.onrender.com/billing/status?session_id=SESSION_ID_HERE"
While the webhook is processing you may see {"ready": false}. When provisioning is complete you’ll see {"ready": true, ...}.

Errors

HTTP
401 / 403
Missing or invalid API key
402
Subscription inactive / past due / canceled
429
Rate limit (future)
5xx
Server error
{
  "detail": "Subscription inactive. Please update billing."
}

Common recipes

Practical

Test if your key works

curl "https://review-assistant-api.onrender.com/me" \
  -H "x-api-key: YOUR_KEY_HERE"

Frontend fetch example

const res = await fetch("https://review-assistant-api.onrender.com/analyze", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": localStorage.getItem("ra_api_key"),
  },
  body: JSON.stringify({
    review_text: "Food was great but the wait was long.",
    platform: "google",
  }),
});

const data = await res.json();

Webhooks

Stripe

Stripe webhooks provision accounts and trigger API key delivery. Most users don’t need to touch this.

Tip: If checkout succeeded but the key hasn’t arrived after a few minutes, check Spam, then contact support.

Troubleshooting

Help

If the Dashboard says “Not connected”

  • Make sure you pasted the full API key (no extra spaces)
  • Click Load my account
  • Try refreshing the page
  • If you just checked out, wait a moment (webhook provisioning)

If you get a 402

A 402 typically means billing is inactive (past_due/canceled). You’ll need to update billing.

Changelog

Tiny
Keep this short. It makes the docs feel “alive”.
2026-01
Dashboard-first UX. Platform detection simplified. Docs and Support pages refined.
Copied!