API
Dokumentation för Matrummets REST-API. Tillgänglig som ren text för agenter och verktyg.
Autentisering
Alla anrop kräver headern x-api-key:
x-api-key: sk_...
Skapa nycklar under Inställningar → API-nycklar efter inloggning. Nyckeln valideras av PostgREST och ger tillgång till din data via row-level security (RLS).
Hushållskopplade anrop
Skafferi-, inköpsliste- och hushållsoperationer kan vara kopplade till ett hushåll. Inkludera X-Active-Home-Id för att välja hushåll:
X-Active-Home-Id: <home-uuid>
Hämta ditt hushålls-ID via get_user_homes eller get_home_info.
Bas-URL
https://api.matrummet.se
Alla RPC-anrop använder POST /rpc/<funktionsnamn> med JSON-kropp. Tabell-/vyfrågor använder GET /<vynamn>.
Snabbstart
Verifiera att din nyckel fungerar:
curl -s https://api.matrummet.se/rpc/current_user_info \ -H "x-api-key: sk_DIN_NYCKEL" \ -X POST
Returnerar din användarinfo (e-post, namn, roll).
Recept
insert_recipe
Skapa ett nytt recept. Returnerar receptets UUID.
curl -s https://api.matrummet.se/rpc/insert_recipe \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{
"p_name": "Pasta Carbonara",
"p_author": "Kocken",
"p_url": "",
"p_recipe_yield": 4,
"p_recipe_yield_name": "portioner",
"p_prep_time": 10,
"p_cook_time": 20,
"p_description": "Klassisk italiensk pasta",
"p_categories": ["Pasta", "Middag"],
"p_ingredients": [
{"name": "Spaghetti", "quantity": 400, "measurement": "g"},
{"name": "Pancetta", "quantity": 150, "measurement": "g"}
],
"p_instructions": [
{"step": "Koka pastan al dente."},
{"step": "Stek pancettan krispig."}
],
"p_cuisine": "Italienskt"
}'| Parameter | Typ | Krävs | Beskrivning |
|---|---|---|---|
| p_name | text | ja | Receptnamn |
| p_author | text | ja | Författare |
| p_url | text | ja | Käll-URL (tom sträng om ingen) |
| p_recipe_yield | integer | ja | Antal portioner |
| p_recipe_yield_name | text | ja | Portionsenhet (t.ex. "portioner") |
| p_prep_time | integer | ja | Förberedelsetid i minuter |
| p_cook_time | integer | ja | Tillagningstid i minuter |
| p_description | text | ja | Kort beskrivning |
| p_categories | text[] | ja | Kategorinamn |
| p_ingredients | jsonb[] | ja | Ingrediensobjekt (se datamodell) |
| p_instructions | jsonb[] | ja | Instruktionsobjekt (se datamodell) |
| p_cuisine | text | nej | Typ av kök |
| p_image | text | nej | Bildsökväg |
| p_thumbnail | text | nej | Miniatyrsökväg |
update_recipe
Uppdatera ett befintligt recept. Samma parametrar som insert_recipe plus p_recipe_id (uuid, krävs) och valfritt p_date_published (ISO 8601). Du måste äga receptet. Returnerar inget.
copy_recipe
Kopiera ett recept till din samling. Returnerar det nya receptets UUID.
curl -s https://api.matrummet.se/rpc/copy_recipe \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"p_source_recipe_id": "uuid-här"}'search_recipes
Fulltextsökning bland recept (svensk stemming).
curl -s https://api.matrummet.se/rpc/search_recipes \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"p_query": "pasta", "p_owner_only": true, "p_limit": 20}'| Parameter | Typ | Krävs | Beskrivning |
|---|---|---|---|
| p_query | text | ja | Sökfråga |
| p_owner_only | boolean | nej | Bara egna recept (standard: false) |
| p_category | text | nej | Filtrera på kategori |
| p_limit | integer | nej | Max resultat (standard: 50) |
| p_offset | integer | nej | Sidnumrering (standard: 0) |
| p_owner_ids | uuid[] | nej | Filtrera på specifika ägare |
search_liked_recipes
Sök bland dina gillade recept.
curl -s https://api.matrummet.se/rpc/search_liked_recipes \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"p_query": "pasta", "p_category": null}'toggle_recipe_like
Gilla eller avgilla ett recept (inte ditt eget). Returnerar {"liked": true} eller {"liked": false}.
curl -s https://api.matrummet.se/rpc/toggle_recipe_like \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"p_recipe_id": "uuid-här"}'Datamodell
Ingrediensobjekt
{
"name": "Spaghetti",
"quantity": 400,
"measurement": "g"
}| Parameter | Typ | Krävs | Beskrivning |
|---|---|---|---|
| name | string | ja | Ingrediensnamn |
| quantity | number | null | nej | Mängd |
| measurement | string | null | nej | Enhet (t.ex. "g", "dl", "st") |
| group_name | string | null | nej | Grupp (t.ex. "Sås", "Topping") |
Instruktionsobjekt
{
"step": "Koka pastan al dente."
}| Parameter | Typ | Krävs | Beskrivning |
|---|---|---|---|
| step | string | ja | Instruktionstexten |
Sökhjälpare
search_foods
Sök i livsmedelsdatabasen. Användbart för att hitta food_id till skafferifunktionerna.
curl -s https://api.matrummet.se/rpc/search_foods \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"p_query": "tomat", "p_limit": 5}'search_units
Sök bland tillgängliga enheter.
curl -s https://api.matrummet.se/rpc/search_units \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"p_query": "gram", "p_limit": 5}'Skafferi
Skafferioperationer är hushållskopplade. Inkludera X-Active-Home-Id om du tillhör ett hushåll.
add_to_pantry
Lägg till en vara i skafferiet. Används även för att uppdatera utgångsdatum på befintliga varor (upsert). Returnerar UUID.
curl -s https://api.matrummet.se/rpc/add_to_pantry \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{"p_food_id": "uuid-här", "p_expires_at": "2025-12-31"}'Alla parametrar utom p_food_id är valfria: p_quantity (numeric), p_unit (text), p_expires_at (datum).
remove_from_pantry
Ta bort en vara från skafferiet.
curl -s https://api.matrummet.se/rpc/remove_from_pantry \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{"p_food_id": "uuid-här"}'get_user_pantry
Lista allt i ditt skafferi.
curl -s https://api.matrummet.se/rpc/get_user_pantry \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{}'Returnerar: id, food_id, food_name, quantity, unit, added_at, expires_at, is_expired, added_by.
get_common_pantry_items
Hämta vanliga skafferivaror (för snabbval).
curl -s https://api.matrummet.se/rpc/get_common_pantry_items \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{}'find_recipes_from_pantry
Hitta recept du kan laga med det som finns i skafferiet.
curl -s https://api.matrummet.se/rpc/find_recipes_from_pantry \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{"p_min_match_percentage": 50, "p_limit": 10}'Returnerar recept rankade efter matchningsgrad med saknade ingredienser.
find_recipes_by_ingredients
Hitta recept baserat på specifika livsmedels-ID:n (utan att läsa från skafferiet).
curl -s https://api.matrummet.se/rpc/find_recipes_by_ingredients \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{
"p_food_ids": ["food-uuid-1", "food-uuid-2"],
"p_user_email": null,
"p_min_match_percentage": 50,
"p_limit": 20
}'deduct_from_pantry
Dra av mängder från skafferiet efter matlagning. Returnerar antal avdragna varor.
curl -s https://api.matrummet.se/rpc/deduct_from_pantry \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{"p_deductions": [{"food_id": "uuid", "amount": 200}]}'Inköpslistor
Inköpslisteoperationer är hushållskopplade. Inkludera X-Active-Home-Id om du tillhör ett hushåll.
create_shopping_list
Skapa en ny inköpslista. Returnerar UUID.
curl -s https://api.matrummet.se/rpc/create_shopping_list \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"p_name": "Veckans inköp"}'Valfritt: p_home_id (uuid) för att skapa en delad hushållslista.
get_user_shopping_lists
Lista alla dina inköpslistor med antal varor.
curl -s https://api.matrummet.se/rpc/get_user_shopping_lists \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{}'Returnerar: id, name, is_default, item_count, checked_count, date_published, date_modified, home_id, home_name.
add_recipe_to_shopping_list
Lägg till ett recepts ingredienser på en inköpslista.
curl -s https://api.matrummet.se/rpc/add_recipe_to_shopping_list \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{"p_recipe_id": "uuid-här", "p_servings": 4}'Valfritt: p_shopping_list_id (null = standardlista), p_ingredient_ids (uuid[], null = alla).
add_custom_shopping_list_item
Lägg till en egen vara (ej från recept) på en inköpslista.
curl -s https://api.matrummet.se/rpc/add_custom_shopping_list_item \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{"p_name": "Hushållspapper", "p_shopping_list_id": "uuid-här"}'Valfritt: p_food_id (uuid) för att koppla till ett livsmedel.
toggle_shopping_list_item
Bocka av/på en vara.
curl -s https://api.matrummet.se/rpc/toggle_shopping_list_item \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{"p_item_id": "uuid-här"}'clear_checked_items
Ta bort alla avbockade varor. Om p_shopping_list_id är null rensas standardlistan.
curl -s https://api.matrummet.se/rpc/clear_checked_items \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{"p_shopping_list_id": "uuid-här"}'rename_shopping_list
Byt namn på en inköpslista.
curl -s https://api.matrummet.se/rpc/rename_shopping_list \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"p_list_id": "uuid-här", "p_name": "Nytt namn"}'set_default_shopping_list
Välj vilken inköpslista som är din standard.
curl -s https://api.matrummet.se/rpc/set_default_shopping_list \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"p_list_id": "uuid-här"}'delete_shopping_list
Radera en inköpslista med alla varor.
curl -s https://api.matrummet.se/rpc/delete_shopping_list \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"p_list_id": "uuid-här"}'Läsa inköpslistevaror
Varor läses via vyn shopping_list_view:
curl -s "https://api.matrummet.se/shopping_list_view?shopping_list_id=eq.LIST_UUID&order=is_checked.asc,sort_order.asc" \ -H "x-api-key: sk_DIN_NYCKEL" \ -H "X-Active-Home-Id: home-uuid"
Hushåll
get_user_homes
Lista alla hushåll du tillhör.
curl -s https://api.matrummet.se/rpc/get_user_homes \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{}'create_home
Skapa ett nytt hushåll. Returnerar UUID.
curl -s https://api.matrummet.se/rpc/create_home \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"p_name": "Familjen"}'get_home_info
Hämta hushållsdetaljer inklusive medlemmar. Om p_home_id är null returneras ditt nuvarande hushåll (eller null om du inte har något).
curl -s https://api.matrummet.se/rpc/get_home_info \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{"p_home_id": null}'update_home_name
Byt namn på ditt hushåll.
curl -s https://api.matrummet.se/rpc/update_home_name \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{"p_name": "Nytt namn"}'invite_to_home
Bjud in en användare via e-post. Returnerar inbjudans UUID.
curl -s https://api.matrummet.se/rpc/invite_to_home \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{"p_email": "namn@exempel.se"}'generate_join_code
Generera en delbar anslutningskod för ditt hushåll.
curl -s https://api.matrummet.se/rpc/generate_join_code \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{"p_expires_hours": 48}'join_home_by_code
Gå med i ett hushåll med en kod.
curl -s https://api.matrummet.se/rpc/join_home_by_code \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "Content-Type: application/json" \
-d '{"p_code": "ABC123"}'leave_home
Lämna ett hushåll.
curl -s https://api.matrummet.se/rpc/leave_home \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{}'remove_home_member
Ta bort en medlem från ditt hushåll.
curl -s https://api.matrummet.se/rpc/remove_home_member \
-H "x-api-key: sk_DIN_NYCKEL" \
-H "X-Active-Home-Id: home-uuid" \
-H "Content-Type: application/json" \
-d '{"p_member_email": "namn@exempel.se"}'Direkt tabellåtkomst
PostgREST exponerar tabeller och vyer direkt med standard frågesyntax:
# Hämta dina recept curl -s "https://api.matrummet.se/user_recipes?limit=10&order=date_modified.desc" \ -H "x-api-key: sk_DIN_NYCKEL" # Filtrera på kolumn curl -s "https://api.matrummet.se/user_recipes?name=ilike.*pasta*" \ -H "x-api-key: sk_DIN_NYCKEL" # Välj specifika kolumner curl -s "https://api.matrummet.se/user_recipes?select=id,name,categories&limit=5" \ -H "x-api-key: sk_DIN_NYCKEL"
Vanliga operatorer: eq, neq, gt, lt, gte, lte, like, ilike, in, is. Se PostgREST-dokumentationen för fullständig syntax.
Begränsningar
- Max 1000 rader per anrop
- Sidnumrering med
limitochoffset - RLS: du kan bara ändra din egen data
OpenAPI-specifikation
En maskinläsbar OpenAPI-specifikation finns på api.matrummet.se (begär med Accept: application/openapi+json).
Senast uppdaterad: 20 februari 2026