Compass Food Technologies
DocsPOST /v1/decision/restaurant-fit

Docs

POST /v1/decision/restaurant-fit

Return fit, not_fit, or unknown for one restaurant and one user profile. Provide exactly one of compass_id or google_place_id.

Request

FieldTypeNotes
compass_idstringOne of compass_id or google_place_id. The exact restaurant ID returned by Search or Enrich — bring your own records via Enrich, then decide with the stored ID. Integration patterns →
google_place_idstringOne of compass_id or google_place_id. Exact caller-supplied Google Place ID. No name or address guess.
user_profile.dietenumRequired. The diet to evaluate.
user_profile.exclude_cross_contaminationbooleanOptional. Omitted means false. Set true only when unknown shared-prep evidence should return unknown.
user_profile.dietary_rulesarrayOptional free-form customer rules.
curl -X POST "https://api.compassfoodtechnologies.com/v1/decision/restaurant-fit" \
  -H "Content-Type: application/json" \
  -H "X-Compass-API-Key: $COMPASS_API_KEY" \
  -H "X-Compass-Mode: rich" \
  -d '{
    "compass_id": "restaurant_123",
    "user_profile": {
      "diet": "strict_vegan"
    }
  }'

Response

unknown is a valid verdict when evidence is insufficient, conflicting, or stale. It is not an error. A Google Place ID with no stored mapping, or more than one eligible restaurant, returns no verdict.

DecisionResponse: 26 contract leaves. A row is one contract leaf. Optional leaves, missing restaurant evidence, and fast mode can omit fields. This count is the schema, not a promise that every response contains every field.

FieldTypeNotes
ai_generatedbooleanRequired on this object.
client_refstringOptional. Omitted when the value is absent.
compass_idstringRequired on this object.
compass_request_idstringRequired on this object.
confidencehigh | medium | lowRequired on this object.
coverage.covered_geographyUSRequired on this object.
coverage.interpreted_locationstringOptional. Omitted when the value is absent.
coverage.notestringOptional. Omitted when the value is absent.
coverage.statusin_coverage | out_of_coverage | coverage_unknownRequired on this object.
decisionfit | not_fit | unknownRequired on this object.
evidence[].evidence_idstringRequired on this object.
evidence[].excerptstringOptional. Omitted when the value is absent.
evidence[].paraphrase_methodautomatic | manual | noneOptional. Omitted when the value is absent.
evidence[].sourcestring (uri)Required on this object.
evidence[].tierA | BRequired on this object.
evidence[].typemenu_item | review_signal | external_source | user_report | restaurant_declaredRequired on this object.
evidence[].weightprimary | supportingRequired on this object.
google_place_idstringOptional. Omitted when the value is absent.
human_review_recommendedbooleanOptional. Omitted when the value is absent.
last_evaluated_atstring (date-time) | nullRequired on this object.
reason_codes[]VEGAN_MENU_CONFIRMED | VEGAN_OPTIONS_MENTIONED | NO_VEGAN_EVIDENCE_FOUND | VEGETARIAN_ONLY_NOT_STRICT_VEGAN | VEGAN_MENU_FULL_RESTAURANT | VEGAN_FRIENDLY_PARTIAL | FRYER_CONTAMINATION_RISK | SHARED_GRILL_RISK | SHARED_PREP_SURFACE_RISK | DEDICATED_VEGAN_PREP_CONFIRMED | CROSS_CONTAMINATION_UNKNOWN | MENU_OUTDATED | REVIEW_SIGNAL_POSITIVE | REVIEW_SIGNAL_NEGATIVE | REVIEW_SIGNAL_CONFLICTING | SOURCE_CONFIDENCE_LOW | SOURCE_CONFIDENCE_HIGH | RESTAURANT_VERIFICATION_RECOMMENDED | DATA_FRESHNESS_POOR | INSUFFICIENT_EVIDENCE | HIGH_CONFIDENCE_DECISION | EDGE_CASE_FLAGGED | USER_PROFILE_AMBIGUOUS | DIET_NOT_SUPPORTED | LOCATION_OUT_OF_COVERAGE | LOCATION_INTERPRETED_US | LOCATION_UNRESOLVED_US_ONLY | VEGAN_MEAL_AVAILABLE | VEGAN_OPTIONS_LIMITED | NO_VEGAN_DISHES_IN_COLLECTED_MENU | INSUFFICIENT_MENU_EVIDENCE | NO_DISH_DATA | REQUESTED_DISH_AVAILABLE | FULLY_VEGAN_RESTAURANT | NOT_FULLY_VEGAN | NO_RESTAURANT_FLAGRequired on this object. Key field. Locked reason codes for the verdict.
recommended_user_textstringRequired on this object. Key field. The sentence you can show a user.
risk_flags[]cross_contamination_risk | limited_evidence | stale_data | third_party_unverified | user_report_only | language_barrierRequired on this object. Key field. Keep these visible next to the verdict.
source_freshness.newest_signal_age_daysintegerRequired on this object.
source_freshness.oldest_signal_age_daysintegerRequired on this object.
verification_requiredbooleanRequired on this object.

A strict_vegan fit: the collected menu has a vegan meal.

Abridged DecisionResponse example — 8 of 26 contract leaves. Illustrative values, not a live payload.

{
  "compass_request_id": "req_example_ramen_house_decide_fit",
  "compass_id": "cmp_example_ramen_house_001",
  "decision": "fit",
  "confidence": "medium",
  "reason_codes": [
    "VEGAN_MEAL_AVAILABLE"
  ],
  "risk_flags": [],
  "recommended_user_text": "Compass found a vegan meal on the collected menu (menu collected 2026-10-07).",
  "verification_required": true,
  "ai_generated": true
}

An unknown: vegan dishes were found, but not enough for a meal.

Abridged DecisionResponse example — 9 of 26 contract leaves. Illustrative values, not a live payload.

{
  "compass_request_id": "req_example_noodle_bar_decide_unknown",
  "compass_id": "cmp_example_noodle_bar_002",
  "decision": "unknown",
  "confidence": "low",
  "reason_codes": [
    "VEGAN_OPTIONS_LIMITED"
  ],
  "risk_flags": [
    "limited_evidence"
  ],
  "recommended_user_text": "Compass found vegan dishes on the collected menu, but not enough for a meal (menu collected 2026-10-07).",
  "verification_required": true,
  "ai_generated": true
}
Decision API Reference | Compass Food Technologies