---
title: "Classify ad-hoc free-form food inputs (internal testing, never writes)"
method: POST
path: "/internal/food_classifier/classify_ad_hoc"
tags: ["internal", "food_classifier"]
---

# Classify ad-hoc free-form food inputs (internal testing, never writes)

`POST /internal/food_classifier/classify_ad_hoc`

Phase 1 admin-only testing endpoint. Runs the classifier against free-form inputs with no DB lookup and never writes to the DB — useful for prompt iteration. Do NOT invoke from production paths.

## Request body

- FoodClassifierClassifyAdHocRequest
  - `canonical_name` string, nullable
  - `description` string, nullable
  - `food_name` string, required
  - `model_preset` 'flash' | 'hybrid_pro_glycemic_index' | 'all_pro'
  - `nutrition` object, nullable — Per-serving NFT values keyed by DBUsdaNutrition column names.
  - `ontology` object, nullable — Optional dict with keys level1..level4.
  - `ontology_serving_size_g` number, nullable

## Response `200`

successful classification

- FoodClassifierClassifyResponse
  - `committed` boolean
  - `db_rows_written` object[], nullable
  - `deterministic_overrides` object
  - `disagreements` object, nullable
  - `json_parse_failures` string[]
  - `llm_metadata` object[]
  - `model_preset` string
  - `predictions` object, required
  - `rxfood_id` string, nullable
  - `total_cost_cents` number

## Other responses

- `400` — invalid request
- `403` — not authorized

---

[API](https://skmtc.dev/rxfoodapp/apis/inneranalytics-mnt-server.md) · [All operations](https://skmtc.dev/rxfoodapp/apis/inneranalytics-mnt-server/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/rxfoodapp/inneranalytics-mnt-server/revisions/f06884d9c093/schema)
