Docs
API Reference

POST /report

Analyze an entire menu and get a comprehensive quality report: duplicates, noise detection, cuisine breakdown, non-food items, and an overall quality score. Useful for onboarding new restaurants or auditing existing catalog data.

Request

ParameterTypeRequiredDescription
itemsstring[]YesFull menu item list to analyze. 1-2000 items, max 500 chars each.
restaurant_namestringNoRestaurant name for the report header. Default: empty string.
{
  "items": [
    "Chicken Biryani",
    "**NEW** Murgh Biryani Serves 2",
    "Paneer Tikka",
    "Panner Tika",
    "Masala Dosa",
    "Paper Napkins",
    "Cigarette Lighter"
  ],
  "restaurant_name": "Sample Restaurant"
}

Response

FieldTypeDescription
restaurant_namestringRestaurant name (if provided)
total_itemsintTotal menu items analyzed
noise_analysisobjectPromotional text and formatting noise analysis
dedup_summaryobjectDuplicate item detection summary
cuisine_breakdownobject or nullCuisine distribution (null if classifier not loaded)
non_food_itemsobject[]Items detected as non-food
quality_scoreintOverall menu quality score (0-100, higher is better)
processing_time_msfloatProcessing time in milliseconds

noise_analysis

FieldTypeDescription
items_with_noiseintCount of items with promotional or formatting noise
noise_percentagefloatPercentage of menu items with noise
examplesobject[]Up to 5 examples showing original and cleaned text

dedup_summary

FieldTypeDescription
total_clustersintNumber of duplicate groups found
total_duplicate_itemsintTotal excess duplicates across all clusters
top_clustersobject[]Largest duplicate clusters (up to 10)

cuisine_breakdown

FieldTypeDescription
distributionobjectCuisine label to item count mapping, e.g. {"North Indian": 12, "Chinese": 5}

non_food_items

FieldTypeDescription
itemstringItem text flagged as non-food
categorystringNon-food category: pharmacy, grocery, or merchandise

Example

import requests

response = requests.post("https://dish-embed.latimal.com/report",
    headers={"X-API-Key": "YOUR_KEY", "Content-Type": "application/json"},
    json={
        "items": menu_items,
        "restaurant_name": "Biryani House"
    }
)

report = response.json()
print(f"Quality Score: {report['quality_score']}/100")
print(f"Duplicates: {report['dedup_summary']['total_duplicate_items']} excess items")
print(f"Noise: {report['noise_analysis']['noise_percentage']:.0f}% of items have noise")
print(f"Non-food: {len(report['non_food_items'])} items flagged")

Availability

Available on the Pro and Scale plans. Each request counts as one API call against your monthly quota, regardless of how many items you send.

Try it live — Test this endpoint in the interactive playground.

For a complete integration walkthrough, see the Menu Health Monitoring guide.

Notes

  • This endpoint runs the full analysis pipeline (embed + dedup + classify + noise detection + non-food detection), so it does more work per call and has higher latency than the individual endpoints.
  • The quality score penalizes: high duplicate percentage, noise, non-food items, and low cuisine diversity.
  • Non-food detection catches items like paper napkins, cigarettes, phone chargers, and other merchandise that sometimes appears in delivery platform catalogs.
  • For menus over 2000 items, split into batches.