Voor jou en je AI-assistent

Receptzoeker verbinden met je AI-app

Zoek recepten, maak je eigen recepten en beheer je kookschrift vanuit ChatGPT, Claude of een andere MCP-app. Je gebruikt je bestaande account.

Serveradres

https://receptzoeker.nl/api/mcp

Verbinding: Streamable HTTP. Inloggen: OAuth via Receptzoeker.

Verbinden in jouw app

ChatGPT

Open Plugins, kies Add custom MCP server en vul het serveradres hieronder in. Kies OAuth. Gebruik automatische clientregistratie (DCR), log in op Receptzoeker en beoordeel de gevraagde toegang. Afhankelijk van je account of werkruimte staat deze functie onder Apps / Create en kan beheerderstoestemming nodig zijn.

Officiële handleiding voor ChatGPT

Claude

Open Settings → Connectors en voeg een Custom / Web connector toe met dit serveradres. Kies inloggen met OAuth en Register automatically. Log daarna in op Receptzoeker en geef toegang. In een team kan de eigenaar eerst de connector moeten toevoegen.

Officiële handleiding voor Claude

Eigen applicatie

Gebruik een remote MCP-client met Streamable HTTP en OAuth authorization-code + PKCE S256. Ontdek eerst de protected resource metadata. Registreer een client via DCR of gebruik een vooraf geregistreerd client-id. Vraag alleen de benodigde scopes aan en bewaar tokens in beveiligde opslag.

Officiële handleiding voor Eigen applicatie
Ondersteuning en teststatus

De officiële MCP-client en de protocolversies 2026-07-28 en 2025-11-25 zijn getest. Een koppeling binnen ChatGPT of Claude zelf is nog niet afzonderlijk bevestigd. Beschikbaarheid hangt ook af van je account en werkruimte. Kies automatische registratie (DCR); Client ID Metadata Documents worden nog niet aangeboden.

Jouw account, jouw toegang

Je logt in op Receptzoeker en ziet welke toegang de app vraagt. Je wachtwoord wordt niet gedeeld. De app kan uitsluitend de toegestane functies gebruiken. Via je account trek je toegang direct in.

Koppelingen verlopen na maximaal 30 dagen. De toegangstokens zijn 15 minuten geldig en worden veilig vernieuwd. Je kunt je ook beperken tot lezen.

Welke toegang kan een app vragen?
  • recipes:read — Openbare en eigen recepten lezen
  • recipes:write — Eigen recepten maken, wijzigen en insturen
  • cookbook:read — Kookschrift, weekmenu en boodschappen lezen
  • cookbook:write — Kookschrift, weekmenu en boodschappen wijzigen
  • reviews:read — Ervaringen lezen
  • reviews:write — Eigen ervaringen schrijven en reageren als kok
  • media:read — Beschikbare foto's lezen
  • media:write — Eigen foto's uploaden
  • profile:read — Naam, woonplaats en bio lezen
  • profile:write — Naam, woonplaats en bio wijzigen

Wat je kunt vragen

Opslaan, kopiëren en publiceren

Nieuwe recepten en kopieën zijn eigen concepten. Insturen betekent dat de redactie ze bekijkt; alleen de redactie zet ze online. Als je een eigen online recept bewerkt, gaat het opnieuw in beoordeling en is het tijdelijk niet openbaar.

Je kunt uitsluitend je eigen recepten wijzigen. Een kopie krijgt een bronverwijzing en verandert het origineel niet. Ontbrekende porties, tijden en hoeveelheden blijven onbekend. Bewaren en weekmenu gebruiken openbare recepten. Voor het verwijderen van eerder gedeelde recepten met bestaande koppelingen helpt de redactie, zodat andermans kookschrift en notities behouden blijven.

Ervaringen en foto’s van leden wachten op goedkeuring. Een AI-app kan geen rollen, wachtwoorden, e-mailadressen of redactionele instellingen veranderen. Voor koken met timers, afdrukken en downloaden krijg je website-links.

Betrouwbaar wijzigen

Lees een item vóór je het bewerkt: stuur de ontvangen updatedAt mee als expectedUpdatedAt. Bij een gelijktijdige wijziging vraagt de server om het item opnieuw te lezen. Geef aanmaakopdrachten een unieke idempotencyKey en hergebruik die bij een retry; zo ontstaat geen dubbel recept.

Je kunt maximaal 50 resultaten per pagina opvragen. Foto’s zijn maximaal 5 MB (JPEG, PNG of WebP, stilstaand en tot 40 megapixel). De server downloadt geen willekeurige afbeeldings-URL’s.

Alle 32 beschikbare functies

Onder elke functie staan de vereiste toegang, uitvoer en exacte invoervelden. De catalogus komt rechtstreeks uit de serverdefinities.

search_recipesLezen

Zoek openbare recepten op tekst, collectie, bereiding, maximale tijd en ingrediënten die je in huis hebt.

Toegang: recipes:read

Uitvoer: Pagina met items (recepten), page, totalPages en totalItems. Met pantry bevat elk resultaat match met owned/missing/total/score na rangschikken vóór paginering; maxMissing begrenst ontbrekende ingrediënten (standaard 2). cookingMethods matcht één van de gekozen technieken; equipment zoekt een apparaat. availableEquipment past alle vereiste regels toe (OR binnen alternatives, AND tussen regels); een lege lijst accepteert alleen gecontroleerde recepten zonder apparaten. Ongecontroleerde recepten vallen bij availableEquipment en withoutOven weg.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "page": {
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "q": {
      "type": "string",
      "maxLength": 200
    },
    "category": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "method": {
      "type": "string",
      "enum": [
        "fornuis",
        "oven",
        "airfryer",
        "geen"
      ]
    },
    "cookingMethods": {
      "maxItems": 15,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "koken",
          "bakken",
          "braden",
          "roerbakken",
          "stoven",
          "stomen",
          "grillen",
          "frituren",
          "pocheren",
          "blancheren",
          "pureren",
          "kneden",
          "koelen",
          "invriezen",
          "zonder-verhitten"
        ]
      }
    },
    "equipment": {
      "type": "string",
      "enum": [
        "kookplaat",
        "oven",
        "airfryer",
        "magnetron",
        "barbecue",
        "friteuse",
        "slowcooker",
        "snelkookpan",
        "stoompan",
        "blender",
        "staafmixer",
        "handmixer",
        "keukenmachine",
        "koelkast",
        "vriezer"
      ]
    },
    "availableEquipment": {
      "description": "Aanwezig: alleen recepten met volledig gecontroleerde apparaten die in deze lijst passen. Lege lijst: geen apparaten.",
      "maxItems": 15,
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "kookplaat",
          "oven",
          "airfryer",
          "magnetron",
          "barbecue",
          "friteuse",
          "slowcooker",
          "snelkookpan",
          "stoompan",
          "blender",
          "staafmixer",
          "handmixer",
          "keukenmachine",
          "koelkast",
          "vriezer"
        ]
      }
    },
    "withoutOven": {
      "type": "boolean"
    },
    "vegetarian": {
      "type": "boolean"
    },
    "maxTime": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1440
    },
    "pantry": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 100
      }
    },
    "maxMissing": {
      "default": 2,
      "type": "integer",
      "minimum": 0,
      "maximum": 20
    }
  },
  "additionalProperties": false
}
get_recipeLezen

Lees een openbaar of eigen recept. Eigen concepten zijn privé; bevat ook versie en links.

Toegang: recipes:read

Uitvoer: Een recept met id, title, status, ingredients, steps, optionele feiten/foto, timeIsEstimated, timeNote, editorialNote, copiedFrom, updatedAt en website-links.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "slug": {
      "type": "string",
      "maxLength": 200
    }
  },
  "additionalProperties": false
}
list_categoriesLezen

Bekijk de openbare receptcollecties.

Toegang: recipes:read

Uitvoer: items met id, name, slug en url van openbare collecties.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
list_my_recipesLezen

Bekijk uitsluitend je eigen recepten, inclusief concepten en beoordelingsstatus.

Toegang: recipes:read

Uitvoer: Pagina met uitsluitend eigen recepten en hun beoordelingsstatus.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "page": {
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "additionalProperties": false
}
create_recipeWijzigen

Maak een eigen concept. Publicatie gebeurt na insturen door de redactie. Een herhaalde idempotencyKey maakt geen dubbel recept.

Toegang: recipes:write

Uitvoer: Het aangemaakte recept als concept, inclusief id en updatedAt. timeIsEstimated markeert geschatte tijden; timeNote verklaart bijvoorbeeld rust of koeling. prepTime zit al in totalTime. editorialNote is een openbare redactionele toelichting en kan niet door leden worden geschreven. cookingMethods bevat bereidingswijzen. equipment bevat vereiste regels met alternatives (één keuze per regel volstaat). equipmentComplete=true bevestigt dat alle apparaten vermeld zijn; true plus een lege lijst betekent geen apparaten. Vermeld alleen vereiste apparaten, geen optionele bewaring.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 100
    },
    "recipe": {
      "type": "object",
      "properties": {
        "cookingMethods": {
          "maxItems": 15,
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "koken",
              "bakken",
              "braden",
              "roerbakken",
              "stoven",
              "stomen",
              "grillen",
              "frituren",
              "pocheren",
              "blancheren",
              "pureren",
              "kneden",
              "koelen",
              "invriezen",
              "zonder-verhitten"
            ]
          }
        },
        "equipment": {
          "maxItems": 15,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "alternatives": {
                "minItems": 1,
                "maxItems": 15,
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "kookplaat",
                    "oven",
                    "airfryer",
                    "magnetron",
                    "barbecue",
                    "friteuse",
                    "slowcooker",
                    "snelkookpan",
                    "stoompan",
                    "blender",
                    "staafmixer",
                    "handmixer",
                    "keukenmachine",
                    "koelkast",
                    "vriezer"
                  ]
                }
              }
            },
            "required": [
              "alternatives"
            ],
            "additionalProperties": false
          }
        },
        "equipmentComplete": {
          "type": "boolean"
        },
        "timeIsEstimated": {
          "type": "boolean"
        },
        "timeNote": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2000
            },
            {
              "type": "null"
            }
          ]
        },
        "title": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "intro": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 4000
            },
            {
              "type": "null"
            }
          ]
        },
        "totalTime": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1,
              "maximum": 1440
            },
            {
              "type": "null"
            }
          ]
        },
        "prepTime": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 600
            },
            {
              "type": "null"
            }
          ]
        },
        "servings": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1,
              "maximum": 24
            },
            {
              "type": "null"
            }
          ]
        },
        "difficulty": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "makkelijk",
                "gemiddeld",
                "uitdagend"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "method": {
          "type": "string",
          "enum": [
            "fornuis",
            "oven",
            "airfryer",
            "geen"
          ]
        },
        "vegetarian": {
          "type": "boolean"
        },
        "category": {
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "heroImage": {
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "tip": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 4000
            },
            {
              "type": "null"
            }
          ]
        },
        "ingredients": {
          "minItems": 1,
          "maxItems": 100,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 300
              },
              "quantity": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1000000
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "unit": {
                "anyOf": [
                  {
                    "type": "string",
                    "maxLength": 40
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "optional": {
                "type": "boolean"
              }
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          }
        },
        "steps": {
          "minItems": 1,
          "maxItems": 100,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4000
              },
              "timerMinutes": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 600
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "text"
            ],
            "additionalProperties": false
          }
        }
      },
      "required": [
        "title",
        "ingredients",
        "steps"
      ],
      "additionalProperties": false
    }
  },
  "required": [
    "idempotencyKey",
    "recipe"
  ],
  "additionalProperties": false
}
update_recipeWijzigen

Wijzig je eigen recept met de laatst gelezen updatedAt. Een online recept gaat opnieuw in beoordeling.

Toegang: recipes:write

Uitvoer: Het gewijzigde recept en de nieuwe updatedAt. Een online recept gaat in_beoordeling. Bij wijzigen van steps, method of equipment moet equipmentComplete expliciet opnieuw worden bevestigd; anders wordt dit false.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "changes": {
      "type": "object",
      "properties": {
        "cookingMethods": {
          "maxItems": 15,
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "koken",
              "bakken",
              "braden",
              "roerbakken",
              "stoven",
              "stomen",
              "grillen",
              "frituren",
              "pocheren",
              "blancheren",
              "pureren",
              "kneden",
              "koelen",
              "invriezen",
              "zonder-verhitten"
            ]
          }
        },
        "equipment": {
          "maxItems": 15,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "alternatives": {
                "minItems": 1,
                "maxItems": 15,
                "type": "array",
                "items": {
                  "type": "string",
                  "enum": [
                    "kookplaat",
                    "oven",
                    "airfryer",
                    "magnetron",
                    "barbecue",
                    "friteuse",
                    "slowcooker",
                    "snelkookpan",
                    "stoompan",
                    "blender",
                    "staafmixer",
                    "handmixer",
                    "keukenmachine",
                    "koelkast",
                    "vriezer"
                  ]
                }
              }
            },
            "required": [
              "alternatives"
            ],
            "additionalProperties": false
          }
        },
        "equipmentComplete": {
          "type": "boolean"
        },
        "timeIsEstimated": {
          "type": "boolean"
        },
        "timeNote": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 2000
            },
            {
              "type": "null"
            }
          ]
        },
        "title": {
          "type": "string",
          "minLength": 1,
          "maxLength": 200
        },
        "intro": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 4000
            },
            {
              "type": "null"
            }
          ]
        },
        "totalTime": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1,
              "maximum": 1440
            },
            {
              "type": "null"
            }
          ]
        },
        "prepTime": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 0,
              "maximum": 600
            },
            {
              "type": "null"
            }
          ]
        },
        "servings": {
          "anyOf": [
            {
              "type": "integer",
              "minimum": 1,
              "maximum": 24
            },
            {
              "type": "null"
            }
          ]
        },
        "difficulty": {
          "anyOf": [
            {
              "type": "string",
              "enum": [
                "makkelijk",
                "gemiddeld",
                "uitdagend"
              ]
            },
            {
              "type": "null"
            }
          ]
        },
        "method": {
          "type": "string",
          "enum": [
            "fornuis",
            "oven",
            "airfryer",
            "geen"
          ]
        },
        "vegetarian": {
          "type": "boolean"
        },
        "category": {
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "heroImage": {
          "anyOf": [
            {
              "type": "integer",
              "exclusiveMinimum": 0,
              "maximum": 9007199254740991
            },
            {
              "type": "null"
            }
          ]
        },
        "tip": {
          "anyOf": [
            {
              "type": "string",
              "maxLength": 4000
            },
            {
              "type": "null"
            }
          ]
        },
        "ingredients": {
          "minItems": 1,
          "maxItems": 100,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "name": {
                "type": "string",
                "minLength": 1,
                "maxLength": 300
              },
              "quantity": {
                "anyOf": [
                  {
                    "type": "number",
                    "minimum": 0,
                    "maximum": 1000000
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "unit": {
                "anyOf": [
                  {
                    "type": "string",
                    "maxLength": 40
                  },
                  {
                    "type": "null"
                  }
                ]
              },
              "optional": {
                "type": "boolean"
              }
            },
            "required": [
              "name"
            ],
            "additionalProperties": false
          }
        },
        "steps": {
          "minItems": 1,
          "maxItems": 100,
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "text": {
                "type": "string",
                "minLength": 1,
                "maxLength": 4000
              },
              "timerMinutes": {
                "anyOf": [
                  {
                    "type": "integer",
                    "minimum": 1,
                    "maximum": 600
                  },
                  {
                    "type": "null"
                  }
                ]
              }
            },
            "required": [
              "text"
            ],
            "additionalProperties": false
          }
        }
      },
      "additionalProperties": false
    }
  },
  "required": [
    "id",
    "expectedUpdatedAt",
    "changes"
  ],
  "additionalProperties": false
}
copy_recipeWijzigen

Maak van een openbaar of eigen recept een zelfstandig eigen concept. Behoud ontbrekende bronwaarden; het origineel blijft intact.

Toegang: recipes:write

Uitvoer: Een nieuw eigen concept met copiedFrom als bronverwijzing; het origineel blijft bestaan. Tijdschattingen en timeNote blijven behouden; de redactionele claim wordt niet naar de kopie overgenomen.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 100
    },
    "title": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    }
  },
  "required": [
    "id",
    "idempotencyKey"
  ],
  "additionalProperties": false
}
submit_recipeWijzigen

Stuur je eigen concept in ter beoordeling. Dit zet een recept niet direct online.

Toegang: recipes:write

Uitvoer: Het recept met status in_beoordeling.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "id",
    "expectedUpdatedAt"
  ],
  "additionalProperties": false
}
delete_recipeWijzigen

Verwijder je eigen niet-online recept. Een gepubliceerd recept kan niet via deze tool worden verwijderd.

Toegang: recipes:write

Uitvoer: deleted: true en id. Eerder gedeelde recepten met bestaande koppelingen geven conflict; de redactie kan helpen zonder andermans gegevens te wissen.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "id",
    "expectedUpdatedAt"
  ],
  "additionalProperties": false
}
get_cookbookLezen

Bekijk je privé-kookschrift met mappen en notities. Alleen nog openbare recepten worden getoond.

Toegang: cookbook:read

Uitvoer: Pagina met items (id, folder, note, recipe, updatedAt) en downloadUrl. Niet-openbare recepten worden niet getoond; paginatotalen kunnen ook verborgen entries bevatten.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "page": {
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "additionalProperties": false
}
save_recipeWijzigen

Bewaar een openbaar recept in je kookschrift. Bestaande favorieten behouden hun notitie; folder verplaatst het recept.

Toegang: cookbook:write

Uitvoer: De bewaarde entry met id, folder, note, recipe en updatedAt. Als het recept al is bewaard, wordt de bestaande entry ongewijzigd teruggegeven.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "recipeId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "folder": {
      "default": "Favorieten",
      "type": "string",
      "minLength": 1,
      "maxLength": 40
    },
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 100
    }
  },
  "required": [
    "recipeId",
    "idempotencyKey"
  ],
  "additionalProperties": false
}
update_saved_recipeWijzigen

Verplaats een bewaard recept of wijzig je privénotitie met versiecontrole.

Toegang: cookbook:write

Uitvoer: De aangepaste entry met nieuwe updatedAt.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "folder": {
      "type": "string",
      "minLength": 1,
      "maxLength": 40
    },
    "note": {
      "type": "string",
      "maxLength": 1000
    }
  },
  "required": [
    "id",
    "expectedUpdatedAt"
  ],
  "additionalProperties": false
}
remove_saved_recipeWijzigen

Verwijder een eigen favoriet uit het kookschrift; het recept zelf blijft bestaan.

Toegang: cookbook:write

Uitvoer: deleted: true en id; het recept zelf blijft bestaan.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "id",
    "expectedUpdatedAt"
  ],
  "additionalProperties": false
}
get_week_menuLezen

Bekijk je eigen weekmenu met nog openbare recepten.

Toegang: cookbook:read

Uitvoer: Pagina met items (id, day, recipe, updatedAt). Niet-openbare recepten worden niet getoond.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "page": {
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "additionalProperties": false
}
add_menu_itemWijzigen

Plan een openbaar recept op een dag van jouw weekmenu.

Toegang: cookbook:write

Uitvoer: Het menu-item met id, day, recipe en updatedAt.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "recipeId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "day": {
      "type": "string",
      "enum": [
        "ma",
        "di",
        "wo",
        "do",
        "vr",
        "za",
        "zo"
      ]
    },
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 100
    }
  },
  "required": [
    "recipeId",
    "day",
    "idempotencyKey"
  ],
  "additionalProperties": false
}
remove_menu_itemWijzigen

Haal een eigen receptplanning uit het weekmenu.

Toegang: cookbook:write

Uitvoer: deleted: true en id.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "id",
    "expectedUpdatedAt"
  ],
  "additionalProperties": false
}
get_shopping_listLezen

Lees je eigen boodschappenlijst en afgevinkte items.

Toegang: cookbook:read

Uitvoer: Pagina met items (id, name, group, source, done, updatedAt).

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "page": {
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    }
  },
  "additionalProperties": false
}
add_shopping_itemWijzigen

Voeg een boodschap toe aan je eigen lijst.

Toegang: cookbook:write

Uitvoer: De nieuwe boodschap inclusief id en updatedAt.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "group": {
      "type": "string",
      "enum": [
        "Groente en fruit",
        "Vlees en vis",
        "Zuivel en eieren",
        "Voorraad",
        "Overig"
      ]
    },
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 100
    }
  },
  "required": [
    "name",
    "idempotencyKey"
  ],
  "additionalProperties": false
}
update_shopping_itemWijzigen

Wijzig of vink een eigen boodschap af met versiecontrole.

Toegang: cookbook:write

Uitvoer: De gewijzigde boodschap inclusief nieuwe updatedAt.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 200
    },
    "group": {
      "type": "string",
      "enum": [
        "Groente en fruit",
        "Vlees en vis",
        "Zuivel en eieren",
        "Voorraad",
        "Overig"
      ]
    },
    "done": {
      "type": "boolean"
    }
  },
  "required": [
    "id",
    "expectedUpdatedAt"
  ],
  "additionalProperties": false
}
remove_shopping_itemWijzigen

Verwijder een eigen boodschap met versiecontrole.

Toegang: cookbook:write

Uitvoer: deleted: true en id.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "id",
    "expectedUpdatedAt"
  ],
  "additionalProperties": false
}
clear_done_shoppingWijzigen

Verwijder uitsluitend je eigen afgevinkte boodschappen.

Toegang: cookbook:write

Uitvoer: deleted: aantal verwijderde eigen afgevinkte items.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 100
    }
  },
  "required": [
    "idempotencyKey"
  ],
  "additionalProperties": false
}
add_recipe_ingredientsWijzigen

Voeg ingrediënten van een openbaar recept toe. Optioneel alleen opgegeven zoekwoorden; ontbrekende porties worden nooit verzonnen.

Toegang: cookbook:write

Uitvoer: added: aantal toegevoegde ingrediënten. Bestaande niet-afgevinkte regels worden niet dubbel toegevoegd.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "recipeId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "keys": {
      "maxItems": 100,
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 100
      }
    },
    "servings": {
      "type": "integer",
      "minimum": 1,
      "maximum": 24
    },
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 100
    }
  },
  "required": [
    "recipeId",
    "idempotencyKey"
  ],
  "additionalProperties": false
}
menu_to_shoppingWijzigen

Zet de ingrediënten van jouw weekmenu op je boodschappenlijst, zonder basisvoorraad of duplicaten.

Toegang: cookbook:write

Uitvoer: added: aantal toegevoegde ingrediënten, zonder basisvoorraad. Maximaal 100 menu-items per omzetting.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 100
    }
  },
  "required": [
    "idempotencyKey"
  ],
  "additionalProperties": false
}
get_profileLezen

Lees je eigen naam, woonplaats en bio. E-mailadres, rollen en wachtwoord worden nooit gedeeld.

Toegang: profile:read

Uitvoer: id, name, city, bio en updatedAt; geen e-mailadres of rollen.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {},
  "additionalProperties": false
}
update_profileWijzigen

Wijzig je naam, woonplaats of bio met versiecontrole.

Toegang: profile:write

Uitvoer: Het aangepaste profiel met nieuwe updatedAt.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 100
    },
    "city": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 100
        },
        {
          "type": "null"
        }
      ]
    },
    "bio": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 600
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "expectedUpdatedAt"
  ],
  "additionalProperties": false
}
list_reviewsLezen

Lees openbare, eigen of op je eigen recepten ontvangen ervaringen.

Toegang: reviews:read

Uitvoer: Pagina met ervaringen (id, recipeId, rating, body, variation, status, photo, makerReply, updatedAt).

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "page": {
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "recipeId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "view": {
      "default": "public",
      "type": "string",
      "enum": [
        "public",
        "mine",
        "on_my_recipes"
      ]
    }
  },
  "additionalProperties": false
}
create_reviewWijzigen

Deel je ervaring bij een openbaar recept van iemand anders. De redactie keurt deze eerst goed.

Toegang: reviews:write

Uitvoer: De ervaring met status pending en updatedAt.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "recipeId": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "rating": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    },
    "body": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 4000
        },
        {
          "type": "null"
        }
      ]
    },
    "variation": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 2000
        },
        {
          "type": "null"
        }
      ]
    },
    "photo": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    },
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 100
    }
  },
  "required": [
    "recipeId",
    "rating",
    "idempotencyKey"
  ],
  "additionalProperties": false
}
update_reviewWijzigen

Wijzig uitsluitend je eigen ervaring. Na een wijziging volgt opnieuw redactionele controle.

Toegang: reviews:write

Uitvoer: De aangepaste eigen ervaring met status pending en nieuwe updatedAt.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "rating": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5
    },
    "body": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 4000
        },
        {
          "type": "null"
        }
      ]
    },
    "variation": {
      "anyOf": [
        {
          "type": "string",
          "maxLength": 2000
        },
        {
          "type": "null"
        }
      ]
    },
    "photo": {
      "anyOf": [
        {
          "type": "integer",
          "exclusiveMinimum": 0,
          "maximum": 9007199254740991
        },
        {
          "type": "null"
        }
      ]
    }
  },
  "required": [
    "id",
    "expectedUpdatedAt"
  ],
  "additionalProperties": false
}
delete_reviewWijzigen

Verwijder uitsluitend je eigen ervaring.

Toegang: reviews:write

Uitvoer: deleted: true en id.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    }
  },
  "required": [
    "id",
    "expectedUpdatedAt"
  ],
  "additionalProperties": false
}
reply_to_reviewWijzigen

Reageer als kok op een ervaring bij je eigen recept.

Toegang: reviews:write

Uitvoer: De ervaring inclusief makerReply en nieuwe updatedAt.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "exclusiveMinimum": 0,
      "maximum": 9007199254740991
    },
    "expectedUpdatedAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d:[0-5]\\d(?:\\.\\d+)?(?:Z))$"
    },
    "text": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000
    }
  },
  "required": [
    "id",
    "expectedUpdatedAt",
    "text"
  ],
  "additionalProperties": false
}
list_mediaLezen

Bekijk goedgekeurde afbeeldingen en je eigen uploads. Ongekeurde uploads zijn privé.

Toegang: media:read

Uitvoer: Pagina met beschikbare foto’s (id, alt, url, status, aiGenerated, updatedAt). Een pending-fotolink is alleen voor de eigenaar beschikbaar via de website.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "page": {
      "default": 1,
      "type": "integer",
      "minimum": 1,
      "maximum": 10000
    },
    "limit": {
      "default": 20,
      "type": "integer",
      "minimum": 1,
      "maximum": 50
    },
    "mine": {
      "default": false,
      "type": "boolean"
    }
  },
  "additionalProperties": false
}
upload_photoWijzigen

Upload een eigen JPEG/PNG/WebP als base64 (maximaal 5 MB, 40 megapixel). Metadata wordt verwijderd; de foto wacht op goedkeuring.

Toegang: media:write

Uitvoer: id, alt, url, status pending, aiGenerated en updatedAt. Gebruik id als heroImage van je recept of photo van je ervaring.

{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "type": "object",
  "properties": {
    "idempotencyKey": {
      "type": "string",
      "minLength": 8,
      "maxLength": 100
    },
    "alt": {
      "type": "string",
      "minLength": 1,
      "maxLength": 300
    },
    "base64": {
      "type": "string",
      "minLength": 4,
      "maxLength": 6990508
    }
  },
  "required": [
    "idempotencyKey",
    "alt",
    "base64"
  ],
  "additionalProperties": false
}

Foutmeldingen

invalid_token: koppel opnieuw. insufficient_scope: geef de aanvullende toegang. conflict: lees de nieuwste versie. idempotency_conflict: gebruik dezelfde sleutel uitsluitend voor dezelfde opdracht. not_found: het item is niet beschikbaar of niet van jou. validation_error: controleer de invoer. Bij te veel aanvragen volgt rate_limited; wacht een minuut.

Lees de complete technische handleiding voor OAuth-endpoints, requestvoorbeelden, foutcodes en alle invoerschema’s.