{"openapi":"3.1.0","info":{"title":"ReceptAPI","version":"1.0.0","summary":"Svenska recept som strukturerad data.","description":"Läs-API för svenska recept med ingredienser, allergener (EU 14), steg och portionsdata. Anonyma anrop: 50/dag per IP. Gratisnyckel: 100/dag. All användning av gratisnivån kräver attribution: \"Data från ReceptAPI – receptapi.se\".","termsOfService":"https://receptapi.se/docs#villkor","contact":{"name":"ReceptAPI","url":"https://receptapi.se"},"license":{"name":"ReceptAPI Data License","url":"https://receptapi.se/docs#licens"}},"servers":[{"url":"https://receptapi.se/api/v1"}],"security":[{"ApiKey":[]},{}],"tags":[{"name":"recipes","description":"Recept"},{"name":"ingredients","description":"Ingredienser"},{"name":"search","description":"Sök"}],"paths":{"/recipes":{"get":{"tags":["recipes"],"operationId":"listRecipes","summary":"Lista recept","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Fritext i titel, beskrivning, taggar, ingredienser"},{"name":"category","in":"query","schema":{"type":"string"},"example":"huvudratt"},{"name":"tag","in":"query","schema":{"type":"string"},"example":"vegetariskt"},{"name":"ingredient","in":"query","schema":{"type":"string"},"description":"Ingrediens-slug","example":"kyckling"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":48}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","headers":{"x-receptapi-tier":{"schema":{"type":"string"},"description":"anonymous | free | indie | pro | business"},"x-ratelimit-limit":{"schema":{"type":"integer"}},"x-ratelimit-remaining":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RecipeListItem"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Ogiltig API-nyckel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Dagsgräns nådd","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/recipes/{slug}":{"get":{"tags":["recipes"],"operationId":"getRecipe","summary":"Hämta ett recept","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"x-receptapi-tier":{"schema":{"type":"string"},"description":"anonymous | free | indie | pro | business"},"x-ratelimit-limit":{"schema":{"type":"integer"}},"x-ratelimit-remaining":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Recipe"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Ogiltig API-nyckel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Hittades inte"},"429":{"description":"Dagsgräns nådd","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ingredients":{"get":{"tags":["ingredients"],"operationId":"listIngredients","summary":"Lista ingredienser","parameters":[{"name":"q","in":"query","schema":{"type":"string"},"description":"Namn eller alias"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":48}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","headers":{"x-receptapi-tier":{"schema":{"type":"string"},"description":"anonymous | free | indie | pro | business"},"x-ratelimit-limit":{"schema":{"type":"integer"}},"x-ratelimit-remaining":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/Ingredient"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Ogiltig API-nyckel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Dagsgräns nådd","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/ingredients/{slug}":{"get":{"tags":["ingredients"],"operationId":"getIngredient","summary":"Hämta en ingrediens","parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"OK","headers":{"x-receptapi-tier":{"schema":{"type":"string"},"description":"anonymous | free | indie | pro | business"},"x-ratelimit-limit":{"schema":{"type":"integer"}},"x-ratelimit-remaining":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"$ref":"#/components/schemas/Ingredient"},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"401":{"description":"Ogiltig API-nyckel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Hittades inte"},"429":{"description":"Dagsgräns nådd","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/search":{"get":{"tags":["search"],"operationId":"search","summary":"Sök recept","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":48}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"OK","headers":{"x-receptapi-tier":{"schema":{"type":"string"},"description":"anonymous | free | indie | pro | business"},"x-ratelimit-limit":{"schema":{"type":"integer"}},"x-ratelimit-remaining":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"type":"object","required":["data","meta"],"properties":{"data":{"type":"array","items":{"$ref":"#/components/schemas/RecipeListItem"}},"meta":{"$ref":"#/components/schemas/Meta"}}}}}},"400":{"description":"q saknas"},"401":{"description":"Ogiltig API-nyckel","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Dagsgräns nådd","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}}},"components":{"securitySchemes":{"ApiKey":{"type":"apiKey","in":"header","name":"x-api-key"}},"schemas":{"Allergen":{"type":"string","enum":["gluten","kraftdjur","agg","fisk","jordnotter","soja","mjolk","notter","selleri","senap","sesam","svaveldioxid","lupin","blotdjur"]},"Meta":{"type":"object","required":["attribution"],"properties":{"attribution":{"type":"string","const":"Data från ReceptAPI – receptapi.se"},"source":{},"total":{"type":"integer"},"limit":{"type":"integer"},"offset":{"type":"integer"},"tier":{"type":"string"}}},"Error":{"type":"object","properties":{"error":{"type":"string"},"meta":{"$ref":"#/components/schemas/Meta"}}},"RecipeListItem":{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"servings":{"type":"integer"},"total_minutes":{"type":"integer"},"difficulty":{"type":"string","enum":["latt","medel","svar"]},"category":{"type":"string"},"cuisine":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"image_url":{"type":["string","null"]},"url":{"type":"string","format":"uri"},"api_url":{"type":"string","format":"uri"},"updated_at":{"type":"string","format":"date-time"}}},"Recipe":{"allOf":[{"type":"object","properties":{"slug":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"servings":{"type":"integer"},"total_minutes":{"type":"integer"},"difficulty":{"type":"string","enum":["latt","medel","svar"]},"category":{"type":"string"},"cuisine":{"type":["string","null"]},"tags":{"type":"array","items":{"type":"string"}},"image_url":{"type":["string","null"]},"url":{"type":"string","format":"uri"},"api_url":{"type":"string","format":"uri"},"updated_at":{"type":"string","format":"date-time"}}},{"type":"object","properties":{"active_minutes":{"type":["integer","null"]},"allergens":{"type":"array","items":{"$ref":"#/components/schemas/Allergen"}},"text_status":{"type":"string","enum":["rewritten","original_facts_only"]},"verified":{"type":"boolean"},"nutrition":{"type":["object","null"]},"source":{"type":"object","properties":{"name":{"type":["string","null"]},"url":{"type":"string","format":"uri"}}},"ingredients":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"raw_text":{"type":"string"},"amount":{"type":["number","null"]},"unit":{"type":["string","null"]},"note":{"type":["string","null"]},"group":{"type":["string","null"]},"ingredient":{"type":["object","null"],"properties":{"slug":{"type":"string"},"name_sv":{"type":"string"},"category":{"type":"string"},"allergens":{"type":"array","items":{"$ref":"#/components/schemas/Allergen"}}}}}}},"steps":{"type":"array","items":{"type":"object","properties":{"position":{"type":"integer"},"text":{"type":"string"},"timer_seconds":{"type":["integer","null"]}}}}}}]},"Ingredient":{"type":"object","properties":{"slug":{"type":"string"},"name_sv":{"type":"string"},"category":{"type":"string","enum":["frukt_gront","kott_chark","fisk","mejeri","skafferi","frys","brod","dryck","ovrigt"]},"allergens":{"type":"array","items":{"$ref":"#/components/schemas/Allergen"}},"default_unit":{"type":["string","null"]},"density_g_per_dl":{"type":["number","null"]},"livsmedelsverket_id":{"type":["string","null"]},"aliases":{"type":"array","items":{"type":"string"}},"recipe_count":{"type":"integer"},"url":{"type":"string","format":"uri"}}}}}}