Preferences

What the household likes and does not like.4 operations

Headers on every response

Every response on this page carries these headers.
X-Trace-Id
— The W3C trace id of this request — the same id in the log and in the traceId of a problem. Quote it when reporting.
Server-Timing
— Where the time went: total, db;dur=…;desc="N queries", and every step the handler named (ADR-163).
X-Diagnostics
— Only when the request asked with X-Diagnostics: 1 or ?diagnostics=1: the same breakdown as one JSON object, with the trace id (ADR-163).

Operations

GET/api/v1/households/{householdId}/preferences

List the household's food likes and dislikes, declared and learned

Parameters

NameInTypeRequiredDescription
householdIdpathstring (uuid)Required—

Responses

200OK
application/jsonFoodPreferenceResponse[]
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Headers
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Example

curl -b "bryti_session=…" \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/preferences"

Example response

200application/json
[
  {
    "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "householdId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "householdMemberId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
    "subjectType": "Ingredient",
    "subject": "string",
    "sentiment": "Like",
    "source": "UserDeclared",
    "confidence": 0,
    "createdAt": "2026-09-07T16:30:00Z",
    "updatedAt": "2026-09-07T16:30:00Z"
  }
]
POST/api/v1/households/{householdId}/preferences

Declare a like or dislike for the whole household or one person

Adults only; a Junior member gets 403. householdMemberId null means the whole household. 404 when the person is not in this household. Preferences made here carry source UserDeclared; learned ones come from Bryti.

Parameters

NameInTypeRequiredDescription
householdIdpathstring (uuid)Required—

Request body

application/jsonRequiredCreateFoodPreferenceRequest

Responses

201Created
application/jsonFoodPreferenceResponse
400Bad Request
application/problem+jsonProblemDetails
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Headers
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Example

curl -b "bryti_session=…" \
  -X POST \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/preferences" \
  -H "Content-Type: application/json" \
  -d '{"householdMemberId":"3fa85f64-5717-4562-b3fc-2c963f66afa6","subjectType":"Ingredient","subject":"string","sentiment":"Like"}'

Example response

201application/json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "householdId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "householdMemberId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "subjectType": "Ingredient",
  "subject": "string",
  "sentiment": "Like",
  "source": "UserDeclared",
  "confidence": 0,
  "createdAt": "2026-09-07T16:30:00Z",
  "updatedAt": "2026-09-07T16:30:00Z"
}
PATCH/api/v1/households/{householdId}/preferences/{preferenceId}

Change a preference's subject, subject type or sentiment

Adults only; a Junior member gets 403. The person it belongs to cannot be changed here — delete it and add a new one.

Parameters

NameInTypeRequiredDescription
householdIdpathstring (uuid)Required—
preferenceIdpathstring (uuid)Required—

Request body

application/jsonRequiredUpdateFoodPreferenceRequest

Responses

200OK
application/jsonFoodPreferenceResponse
400Bad Request
application/problem+jsonProblemDetails
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Headers
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Example

curl -b "bryti_session=…" \
  -X PATCH \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/preferences/3fa85f64-5717-4562-b3fc-2c963f66afa6" \
  -H "Content-Type: application/json" \
  -d '{"subjectType":"Ingredient","subject":"string","sentiment":"Like"}'

Example response

200application/json
{
  "id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "householdId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "householdMemberId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
  "subjectType": "Ingredient",
  "subject": "string",
  "sentiment": "Like",
  "source": "UserDeclared",
  "confidence": 0,
  "createdAt": "2026-09-07T16:30:00Z",
  "updatedAt": "2026-09-07T16:30:00Z"
}
DELETE/api/v1/households/{householdId}/preferences/{preferenceId}

Remove a food preference

Adults only; a Junior member gets 403.

Parameters

NameInTypeRequiredDescription
householdIdpathstring (uuid)Required—
preferenceIdpathstring (uuid)Required—

Responses

204No Content
401No session, or the session is no longer valid.
application/problem+jsonProblemDetails
404Not Found
application/problem+jsonProblemDetails
426The build named in X-App-Version is below its platform's version floor (ADR-070). Problem type app-version-unsupported; the only way forward is the store. Callers without the header are never turned away.
application/problem+jsonProblemDetails
429Too many calls in the window; Retry-After says how long.
application/problem+jsonProblemDetails
Headers
Retry-After
— Seconds to wait when a rate limit answered, or an HTTP date when the household's AI is paused. Absent when the household's AI quota for the period is used up — that resets by itself.

Example

curl -b "bryti_session=…" \
  -X DELETE \
  "https://bryti.app/api/v1/households/3fa85f64-5717-4562-b3fc-2c963f66afa6/preferences/3fa85f64-5717-4562-b3fc-2c963f66afa6"

Schemas

CreateFoodPreferenceRequest

PropertyTypeRequired
householdMemberIdstring (uuid) | nullRequired
subjectTypePreferenceSubjectTypeRequired
subjectstringRequired
sentimentPreferenceSentimentRequired

FoodPreferenceResponse

PropertyTypeRequired
idstring (uuid)Required
householdIdstring (uuid)Required
householdMemberIdstring (uuid) | nullRequired
subjectTypePreferenceSubjectTypeRequired
subjectstringRequired
sentimentPreferenceSentimentRequired
sourcePreferenceSourceRequired
confidencenumber (double)Required
createdAtstring (date-time)Required
updatedAtstring (date-time)Required

PreferenceSentiment

Type

Values

LikeDislikeStrongDislike

PreferenceSource

Type

Values

UserDeclaredLearned

PreferenceSubjectType

Type

Values

IngredientCategoryDishTexturePreparationTaste

ProblemDetails

PropertyTypeRequired
typestring | null—
titlestring | null—
statusinteger (int32) | null—
detailstring | null—
instancestring | null—
codestring | null—

UpdateFoodPreferenceRequest

PropertyTypeRequired
subjectTypePreferenceSubjectTypeRequired
subjectstringRequired
sentimentPreferenceSentimentRequired