Docs
API Reference

API Reference

Base URL: https://dish-embed.latimal.com

Authentication

All endpoints except /health require an API key in the X-API-Key header:

curl -X POST https://dish-embed.latimal.com/embed \
  -H "X-API-Key: YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"items": ["Chicken Biryani"]}'

Keys are issued per-customer. Contact us to get yours.

Plans and rate limits

Access is sold as monthly plans. One HTTP request counts as one API call against your plan's monthly quota, no matter how many items it carries. Plans also set a per-second rate limit and gate which endpoints are available:

PlanAPI calls/moRate limitEndpoints
Starter10,00020 req/sec/search, /classify, /match
Pro100,00060 req/sec+ /suggest, /report
Scale1,000,000150 req/sec+ /dedup

The Endpoints column lists what each tier adds over the one below it. The utility endpoints /embed, /embed/batch, /health, and /balance are available on every plan.

Every plan starts with a 14-day free trial. Reaching your monthly quota returns 402 with no overage billing. Bursting past your rate limit, or running too many requests at once, returns 429. See latimal.com/pricing for current rates.

Common patterns

  • All endpoints accept and return JSON
  • Per-item text limit: 500 characters
  • All text is automatically preprocessed (noise removal, spelling normalization) before processing
  • Embeddings are L2-normalized

Error codes

CodeMeaning
200Success
400Bad request (malformed JSON, invalid parameters)
401Missing or invalid API key
402Monthly quota reached (no overage billing; upgrade or wait for the next cycle)
422Validation error (item too long, exceeds max count, etc.)
429Rate limit exceeded (your plan's per-second limit, or too many simultaneous in-flight requests)
503Model not loaded or server starting up

Latency (p50, production)

EndpointItemsLatency
POST /embed100~50ms
POST /embed/batch1000~400ms
POST /search100 corpus~80ms
POST /match10 pairs~120ms
POST /dedup100 items~200ms
POST /classify100 items~60ms
POST /report500 items~1.5s
POST /suggest50 cart + 200 menu~150ms

Endpoints

EndpointDescriptionPlans
POST /embedGenerate embeddings for menu itemsAll plans
POST /embed/batchBatch embedding for large catalogs (up to 5K items)All plans
POST /matchCheck if pairs of items are the same dishAll plans
POST /dedupFind duplicate items in a menuScale
POST /classifyClassify items by cuisineAll plans
POST /searchSemantic menu searchAll plans
POST /reportFull menu health reportPro, Scale
POST /suggestCart upsell suggestionsPro, Scale
GET /healthServer status checkAll plans
GET /balanceCheck remaining quotaAll plans