JSON for this week's canteen menu, in the shape the first kantine site gave. v3 and v2 add next week, allergens and other weeks.
| Method | Path | Returns |
|---|---|---|
| GET | /api/v1/canteens | Every canteen with a menu |
| GET | /api/v1/canteens/{canteen_id} | One canteen and this week's menu |
GET.
YYYY-MM-DD.
Z suffix.
200 with {"data": ...}
404 for an unknown canteen_id.
{"detail": "Canteen not found"}
/api/v1/canteens
Every canteen with a menu.
| Field | Type | Meaning |
|---|---|---|
canteen_id |
string | The canteen's identifier; the {canteen_id} in the path below. |
name |
string | Display name. |
provider |
string | Where the menu comes from; kanpla. |
{
"data": [
{
"canteen_id": "jonsvollsgaten2",
"name": "Jonsvollsgaten 2",
"provider": "kanpla"
}
]
}
/api/v1/canteens/{canteen_id}
One canteen and this week's menu. Next week is never included.
{canteen_id}
canteen_id from the canteen list.
Also canteen_id, name and provider, as in
the list.
| Field | Type | Meaning |
|---|---|---|
real_canteen_id |
string | The same as canteen_id. |
store_url |
string | Where the canteen's shop is; https://app.kanpla.io/. |
fetched_at |
string |
The last update from Kanpla. 1970-01-01T00:00:00Z before
the first.
|
days |
object[] | This week's days with a menu: date, hot, soup. |
days[].hot, days[].soup |
object[] |
The dishes, sorted by name. Kanpla has no field for soup; a dish is
soup when its name or Kanpla category mentions soup
(suppe, soup), and hot otherwise.
|
dish.name |
string | The dish. |
dish.garnish |
string | null | More about the dish; Kanpla's description. |
dish.theme |
null | Always null. |
{
"data": {
"canteen_id": "jonsvollsgaten2",
"real_canteen_id": "jonsvollsgaten2",
"name": "Jonsvollsgaten 2",
"provider": "kanpla",
"store_url": "https://app.kanpla.io/",
"fetched_at": "2026-10-01T07:17:07.024329Z",
"days": [
{
"date": "2026-10-01",
"hot": [
{
"name": "Fiskekaker med potet og hvitsaus",
"garnish": "Fiskekaker med deilig saus, potet og salat",
"theme": null
}
],
"soup": [
{
"name": "Løksuppe med brød",
"garnish": null,
"theme": null
}
]
}
]
}
}