Saffron Documentation
THE CONTRACT · V1

A place for
every detail.

Exact fields, units, and limits. Use the JSON Schema for automated validation and this reference for the meaning behind each value.

Document

FieldTypeDetails
formatstringRequired. Exactly "saffron".
versionintegerRequired. Exactly 1.
recipesarrayRequired. Between 1 and 100 recipe objects.

Recipe

FieldTypeDetails
titlestringRecipe name. Required, nonempty; maximum 300 characters.
descriptionstringShort factual description; maximum 10,000 characters.
servingsintegerPositive whole-number base yield. Defaults to 1; no product-defined maximum.
yieldUnitstringWhat the yield counts, such as cookies or slices; up to 60 characters.
prepMinutesintegerPreparation time in whole minutes, from 0 to 10,080.
cookMinutesintegerCooking time in whole minutes, from 0 to 10,080.
notesstringRecipe notes, substitutions, and storage guidance from the source; up to 20,000 characters.
sourceURLstringOptional HTTPS source URL. Preserve attribution when available.
imageURLstringOptional HTTPS image link. Images are linked, not embedded.
ingredientsarrayRequired array of 1–200 ingredient objects.
stepsarrayRequired array of 1–150 ordered step objects.

Ingredient

FieldTypeDetails
namestringRequired. Nonempty; up to 300 characters.
quantitystringRequired. A nonnegative decimal, such as "1.25". No fraction, exponent, comma, or unit suffix.
unitstringRequired. One exact token from the list below.
preparationstringOptional. Up to 2,000 characters, such as Softened.

Canonical units

noneteaspoontablespooncupmilliliterlitergramkilogramfluidOunceouncepoundpiececlovebulbcanslicebunchpackagepinchtoTaste

For unmeasured seasoning, use quantity "0" and unit toTaste. Keep mass and volume separate; do not guess ingredient densities.

Step

FieldTypeDetails
textstringRequired. Nonempty; up to 10,000 characters.
timerSecondsintegerOptional. Between 0 and 604,800 seconds.

Count what the recipe makes.

A batch of 24 cookies uses servings: 24 and yieldUnit: "cookies". To make 30, ingredient amounts multiply by 1.25. Temperatures and timer durations stay grounded in the original directions.