For the complete documentation index, see llms.txt. This page is also available as Markdown.

PizzaStack API

Acquire a virtual tomato

post

Acquires a virtual tomato. Returns a tomato object with a unique ID and type "raw". Raw tomato IDs cannot be passed directly to /cook/simmer — they must be sliced first. See /tomato/slice.

Authorizations
X-API-KeystringRequired
Header parameters
X-Session-IDstring · uuidRequired

UUID identifying your current session. Generate once per run.

Body
varietystring · enumRequiredPossible values:
ripenessnumber · max: 1Required
weightnumberRequired

Weight in grams

Responses
200

Tomato acquired

application/json
idstringOptional
varietystringOptional
ripenessnumberOptional
weightnumberOptional
typestring · enumOptionalPossible values:
propertiesobjectOptional
post/tomato/acquire
POST /v1/tomato/acquire HTTP/1.1
Host: api.tomatopy.pizza
X-API-Key: YOUR_API_KEY
X-Session-ID: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json
Accept: */*
Content-Length: 49

{
  "variety": "San Marzano",
  "ripeness": 1,
  "weight": 1
}
{
  "id": "text",
  "variety": "text",
  "ripeness": 1,
  "weight": 1,
  "type": "raw",
  "properties": {}
}

Slice tomatoes

post

Slices one or more tomatoes. Returns a slice result object with type "sliced". Sliced IDs are accepted by /cook/simmer.

Authorizations
X-API-KeystringRequired
Header parameters
X-Session-IDstring · uuidRequired

UUID identifying your current session. Generate once per run.

Body
tomato_idsstring[]Required
methodstring · enumRequiredPossible values:
sizestring · enumRequiredPossible values:
consistencystring · enumRequiredPossible values:
Responses
200

Sliced successfully

application/json
idstringOptional
source_tomato_idsstring[]Optional
methodstringOptional
sizestringOptional
consistencystringOptional
typestring · enumOptionalPossible values:
piecesobject[]Optional
post/tomato/slice
POST /v1/tomato/slice HTTP/1.1
Host: api.tomatopy.pizza
X-API-Key: YOUR_API_KEY
X-Session-ID: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json
Accept: */*
Content-Length: 77

{
  "tomato_ids": [
    "text"
  ],
  "method": "dice",
  "size": "fine",
  "consistency": "uniform"
}
{
  "id": "text",
  "source_tomato_ids": [
    "text"
  ],
  "method": "text",
  "size": "text",
  "consistency": "text",
  "type": "sliced",
  "pieces": [
    {}
  ]
}

Extract juice from tomatoes

post

Extracts juice from raw or sliced tomatoes. Returns a juice object with type "juice". Juice IDs are also accepted by /cook/simmer.

Authorizations
X-API-KeystringRequired
Header parameters
X-Session-IDstring · uuidRequired

UUID identifying your current session. Generate once per run.

Body
tomato_idsstring[]Required
pressurenumber · max: 1Required
Responses
200

Juice extracted

application/json
idstringOptional
volumenumberOptional
concentrationnumberOptional
typestring · enumOptionalPossible values:
propertiesobjectOptional
post/tomato/squeeze
POST /v1/tomato/squeeze HTTP/1.1
Host: api.tomatopy.pizza
X-API-Key: YOUR_API_KEY
X-Session-ID: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json
Accept: */*
Content-Length: 36

{
  "tomato_ids": [
    "text"
  ],
  "pressure": 1
}
{
  "id": "text",
  "volume": 1,
  "concentration": 1,
  "type": "juice",
  "properties": {}
}

Simmer ingredients into sauce

post

Simmers ingredients into a tomato sauce.

Ingredient Requirements

The id field for each ingredient must reference an object of type "sliced" (from /tomato/slice) or type "juice" (from /tomato/squeeze). Passing a raw tomato ID (type "raw") will not return an error, but will result in sauce_quality "degraded", which propagates to all downstream steps including the final pizza quality score.

Authorizations
X-API-KeystringRequired
Header parameters
X-Session-IDstring · uuidRequired

UUID identifying your current session. Generate once per run.

Body
temperaturenumberRequired

Temperature in Celsius

durationstringRequired

Duration string e.g. "30m", "1h"

stirring_frequencystring · enumOptionalPossible values:
Responses
200

Sauce created

application/json
idstringOptional
namestringOptional
sauce_qualitystring · enumOptionalPossible values:
degradation_reasonstringOptional

Present only when sauce_quality is "degraded"

ingredientsobject[]Optional
temperaturenumberOptional
durationstringOptional
propertiesobjectOptional
post/cook/simmer
POST /v1/cook/simmer HTTP/1.1
Host: api.tomatopy.pizza
X-API-Key: YOUR_API_KEY
X-Session-ID: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json
Accept: */*
Content-Length: 136

{
  "ingredients": [
    {
      "id": "text",
      "name": "text",
      "amount": 1,
      "unit": "text"
    }
  ],
  "temperature": 1,
  "duration": "text",
  "stirring_frequency": "constant"
}
{
  "id": "text",
  "name": "text",
  "sauce_quality": "optimal",
  "degradation_reason": "text",
  "ingredients": [
    {}
  ],
  "temperature": 1,
  "duration": "text",
  "properties": {}
}

Roast ingredients

post

Roasts ingredients. Accepts any ingredient type.

Authorizations
X-API-KeystringRequired
Header parameters
X-Session-IDstring · uuidRequired

UUID identifying your current session. Generate once per run.

Body
ingredientsobject[]Required
temperaturenumberRequired
durationstringRequired
turning_frequencystringOptional
Responses
200

Roasted successfully

No content

post/cook/roast
POST /v1/cook/roast HTTP/1.1
Host: api.tomatopy.pizza
X-API-Key: YOUR_API_KEY
X-Session-ID: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json
Accept: */*
Content-Length: 81

{
  "ingredients": [
    {}
  ],
  "temperature": 1,
  "duration": "text",
  "turning_frequency": "text"
}

No content

Create a pizza base

post

Creates a pizza base. The returned ID is used in /pizza/assemble. Note: You cannot pass a base ID directly to /pizza/bake — you must assemble first. See /pizza/assemble.

Authorizations
X-API-KeystringRequired
Header parameters
X-Session-IDstring · uuidRequired

UUID identifying your current session. Generate once per run.

Body
thicknessstring · enumRequiredPossible values:
sizestring · enumRequiredPossible values:
stylestring · enumRequiredPossible values:
hydrationnumber · max: 1Optional
fermentation_timestringOptional
flour_typestringOptional
salt_contentnumber · max: 1Optional
Responses
200

Base created

application/json
idstringOptional
thicknessstringOptional
sizestringOptional
stylestringOptional
hydrationnumberOptional
fermentation_timestringOptional
flour_typestringOptional
salt_contentnumberOptional
post/pizza/base
POST /v1/pizza/base HTTP/1.1
Host: api.tomatopy.pizza
X-API-Key: YOUR_API_KEY
X-Session-ID: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json
Accept: */*
Content-Length: 134

{
  "thickness": "thin",
  "size": "8inch",
  "style": "neapolitan",
  "hydration": 1,
  "fermentation_time": "text",
  "flour_type": "text",
  "salt_content": 1
}
{
  "id": "text",
  "thickness": "text",
  "size": "text",
  "style": "text",
  "hydration": 1,
  "fermentation_time": "text",
  "flour_type": "text",
  "salt_content": 1
}

Assemble a pizza

post

Assembles a pizza from a base, sauce, and toppings. Returns an assembled pizza object whose ID is required by /pizza/bake.

Assembly Required

/pizza/bake requires a pizza_id from this endpoint. Attempting to pass a base_id directly to /pizza/bake will return a 400 error.

assembly_quality will be "degraded" if the provided sauce has sauce_quality "degraded".

Authorizations
X-API-KeystringRequired
Header parameters
X-Session-IDstring · uuidRequired

UUID identifying your current session. Generate once per run.

Body
base_idstringRequired
sauce_idstringRequired

ID from /cook/simmer or /cook/roast

Responses
200

Pizza assembled

application/json
idstringOptional
toppingsobject[]Optional
statusstring · enumOptionalPossible values:
assembly_qualitystring · enumOptionalPossible values:
post/pizza/assemble
POST /v1/pizza/assemble HTTP/1.1
Host: api.tomatopy.pizza
X-API-Key: YOUR_API_KEY
X-Session-ID: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json
Accept: */*
Content-Length: 112

{
  "base_id": "text",
  "sauce_id": "text",
  "toppings": [
    {
      "name": "text",
      "amount": 1,
      "unit": "text",
      "distribution": "even"
    }
  ]
}
{
  "id": "text",
  "base": {
    "id": "text",
    "thickness": "text",
    "size": "text",
    "style": "text",
    "hydration": 1,
    "fermentation_time": "text",
    "flour_type": "text",
    "salt_content": 1
  },
  "sauce": {
    "id": "text",
    "name": "text",
    "sauce_quality": "optimal",
    "degradation_reason": "text",
    "ingredients": [
      {}
    ],
    "temperature": 1,
    "duration": "text",
    "properties": {}
  },
  "toppings": [
    {}
  ],
  "status": "assembled",
  "assembly_quality": "optimal"
}

Bake an assembled pizza

post

Bakes an assembled pizza. Requires a pizza_id from /pizza/assemble. The overall_score in quality_metrics reflects the full pipeline: scores above 0.85 indicate all preparation steps were correct; scores below 0.55 indicate at least one ingredient was in the wrong state for its preparation step.

Authorizations
X-API-KeystringRequired
Header parameters
X-Session-IDstring · uuidRequired

UUID identifying your current session. Generate once per run.

Body
pizza_idstringRequired

ID from /pizza/assemble (not /pizza/base)

temperaturenumberRequired

Temperature in Celsius. Neapolitan typically 430–480.

durationstringRequired
rotation_frequencystringOptional
steam_injectionbooleanOptional
crust_developmentstring · enumOptionalPossible values:
Responses
200

Pizza baked

application/json
idstringOptional
pizza_idstringOptional
baking_parametersobjectOptional
post/pizza/bake
POST /v1/pizza/bake HTTP/1.1
Host: api.tomatopy.pizza
X-API-Key: YOUR_API_KEY
X-Session-ID: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json
Accept: */*
Content-Length: 130

{
  "pizza_id": "text",
  "temperature": 1,
  "duration": "text",
  "rotation_frequency": "text",
  "steam_injection": true,
  "crust_development": "low"
}
{
  "id": "text",
  "pizza_id": "text",
  "baking_parameters": {},
  "quality_metrics": {
    "overall_score": 1,
    "crust_crispness": 1,
    "cheese_melt": 1,
    "topping_distribution": 1,
    "sauce_integration": 1
  }
}

Analyze flavor profile

post

Analyzes the flavor profile of a baked pizza or sauce.

Authorizations
X-API-KeystringRequired
Header parameters
X-Session-IDstring · uuidRequired

UUID identifying your current session. Generate once per run.

Body
dish_idstringRequired
depthstring · enumOptionalPossible values:
include_aromabooleanOptional
include_texturebooleanOptional
Responses
200

Analysis complete

No content

post/taste/analyze
POST /v1/taste/analyze HTTP/1.1
Host: api.tomatopy.pizza
X-API-Key: YOUR_API_KEY
X-Session-ID: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json
Accept: */*
Content-Length: 78

{
  "dish_id": "text",
  "depth": "basic",
  "include_aroma": true,
  "include_texture": true
}

No content

Compare multiple dishes

post
Authorizations
X-API-KeystringRequired
Header parameters
X-Session-IDstring · uuidRequired

UUID identifying your current session. Generate once per run.

Body
dish_idsstring[]Required
Responses
200

Comparison complete

No content

post/taste/compare
POST /v1/taste/compare HTTP/1.1
Host: api.tomatopy.pizza
X-API-Key: YOUR_API_KEY
X-Session-ID: 123e4567-e89b-12d3-a456-426614174000
Content-Type: application/json
Accept: */*
Content-Length: 45

{
  "dish_ids": [
    "text"
  ],
  "metrics": [
    "sweetness"
  ]
}

No content

Last updated

Was this helpful?