Developer Reference

REST endpoints for Ugandan recipes, ingredients and cultural taxonomy. Authenticated via API key.

Getting started

Sign up for a free account, generate an API key, and send your first request.

Authentication

Pass your API key as either Authorization: Bearer <key> or x-api-key: <key>. Generate keys at /dashboard/api-keys. Keys are shown once at creation — copy them then.

# Either header works:
curl -H "Authorization: Bearer lapi_your_key_here" .../v1/recipes
curl -H "x-api-key: lapi_your_key_here" .../v1/recipes

Rate limits & quotas

Each plan ships per-minute and per-month limits. Hitting either returns 429 with X-RateLimit-Limit, X-RateLimit-Remaining and Retry-After headers.

PlanPer minutePer month
Free105,000
Starter6050,000
Growth150150,000
Pro300350,000
Scale1,0001,000,000

Full recipe by ID

GET/api/v1/recipes/rec_luwombo_nkoko

Returns the complete record — ingredients with substitutes, numbered instructions, nutrition, cost analysis, seasonality, district popularity and variations.

curl -X GET "https://ugafoodapi.vercel.app/api/v1/recipes/rec_luwombo_nkoko" \
  -H "x-api-key: lapi_your_api_key_here"
Sample response
{
  "status": "success",
  "recipe": {
    "id": "rec_luwombo_nkoko",
    "name": "Luwombo lwa Nkoko (Chicken Luwombo)",
    "ingredients": [
      { "name": "Chicken (free-range, kienyeji)", "quantity": 1.5, "unit": "kg", "average_cost_ugx": 33000 },
      { "name": "Groundnut paste (peanut butter)", "quantity": 0.3, "unit": "kg", "average_cost_ugx": 3600 }
    ],
    "instructions": [
      { "step": 1, "heading": "Joint and clean the chicken", "description": "...", "time_estimate_minutes": 10 }
    ],
    "nutrition": { "calories": 1293, "protein_grams": 114.2, "health_score": 6.6 },
    "cost_analysis": { "total_cost_ugx": 42180, "cost_per_serving_ugx": 10545, "affordability_tier": "moderate" }
  }
}

List ingredients

GET/api/v1/ingredients

Browse the master ingredient catalog with local names, per-100g nutrition and storage info.

Query parameters

qstringFree-text on name, scientific name and local names
categorystringstaple_carb, protein, vegetable, fruit, legume, spice, dairy, fat, seed, beverage, other
in_seasonbooleanRestrict to ingredients available this calendar month
limitinteger1-200 (default 50)
curl -X GET "https://ugafoodapi.vercel.app/api/v1/ingredients?category=protein&in_season=true" \
  -H "x-api-key: lapi_your_api_key_here"
Sample response
{
  "status": "success",
  "total_results": 17,
  "current_month": "apr",
  "ingredients": [
    {
      "id": "ing_chicken_free-range_kienyeji",
      "name": "Chicken (free-range, kienyeji)",
      "scientific_name": "Gallus gallus domesticus",
      "category": "protein",
      "local_names": { "luganda": "Nkoko", "acholi": "Gweno", "runyankole": "Enkoko" },
      "nutrition_per_100g": { "calories": 215, "protein_grams": 25, "fat_grams": 13 }
    }
  ]
}

Cultural taxonomy of Uganda

GET/api/v1/culture

Returns the regions / tribes / districts tree with each tribe's signature dishes plus national holiday food associations.

curl -X GET "https://ugafoodapi.vercel.app/api/v1/culture" \
  -H "x-api-key: lapi_your_api_key_here"
Sample response
{
  "status": "success",
  "country": "Uganda",
  "regions": [
    {
      "name": "Central (Buganda)",
      "tribes": [
        {
          "name": "Baganda",
          "language": "Luganda",
          "signature_dishes": [
            { "recipe_id": "rec_luwombo_nkoko", "name": "Luwombo lwa Nkoko" },
            { "recipe_id": "rec_matoke_steamed", "name": "Matooke" }
          ]
        }
      ]
    }
  ]
}

Need every endpoint, parameter and response field? Open the live Scalar reference.

Open API reference