API för arbetstidskontroll
Skicka ett schema som JSON och få tillbaka varje avvikelse mot arbetstidslagen, EU-direktivet eller ert kollektivavtal, med lagrum och en förklaring på svenska. Samma kontroll som på sidan, direkt i ert schema-, tid- eller lönesystem.
Kom igång på fem minuter
- Hämta en nyckelGratisnivån ger 1 000 kontroller per månad. Nyckeln kommer direkt till din e-post.
- Skicka ett schemaSom text, en rad per pass, eller som poster med datum, start, slut och rast.
- Visa svaretSamlad bedömning, färdiga rubriker och varje avvikelse med lagrum, uppmätt värde och förklaring.
Exempel
curl
curl -X POST https://etid.se/api/v1/analyze \
-H "X-Api-Key: $ETID_KEY" \
-H "Content-Type: application/json" \
-d '{ "ruleSetId": "atl",
"schedule": "2026-09-02 13:00-21:30 rast 30\n2026-09-03 06:00-14:00 rast 30" }'
C#
using System.Net.Http.Json;
var http = new HttpClient { BaseAddress = new Uri("https://etid.se") };
http.DefaultRequestHeaders.Add("X-Api-Key", Environment.GetEnvironmentVariable("ETID_KEY"));
var res = await http.PostAsJsonAsync("/api/v1/analyze", new
{
ruleSetId = "atl",
entries = new[]
{
new { date = "2026-09-02", start = "13:00", end = "21:30", rastMinutes = 30 },
new { date = "2026-09-03", start = "06:00", end = "14:00", rastMinutes = 30 },
},
});
var svar = await res.Content.ReadFromJsonAsync<System.Text.Json.JsonElement>();
Console.WriteLine(svar.GetProperty("headline").GetString());
JavaScript (Node)
const res = await fetch("https://etid.se/api/v1/analyze", {
method: "POST",
headers: { "X-Api-Key": process.env.ETID_KEY, "Content-Type": "application/json" },
body: JSON.stringify({
ruleSetId: "atl",
entries: [
{ date: "2026-09-02", start: "13:00", end: "21:30", rastMinutes: 30 },
{ date: "2026-09-03", start: "06:00", end: "14:00", rastMinutes: 30 },
],
}),
});
const svar = await res.json();
console.log(svar.headline, svar.findings.length);
Python
import os, requests
svar = requests.post(
"https://etid.se/api/v1/analyze",
headers={"X-Api-Key": os.environ["ETID_KEY"]},
json={
"ruleSetId": "atl",
"entries": [
{"date": "2026-09-02", "start": "13:00", "end": "21:30", "rastMinutes": 30},
{"date": "2026-09-03", "start": "06:00", "end": "14:00", "rastMinutes": 30},
],
},
).json()
print(svar["headline"])
Svar:
{ "verdict": "brott",
"headline": "1 brott mot Arbetstidslagen (ATL)",
"counts": { "fel": 1, "varning": 0, "undantag": 0, "kompensation": 0 },
"findings": [
{ "rule": "dygnsvila", "ref": "ATL 13 §", "status": "fel", "date": "2026-09-02",
"title": "Dygnsvila 8 h 30 min",
"detail": "Längsta sammanhängande vila under 24 timmar … Krav 11 h." } ] }
Nyckeln ska bara användas från er server, aldrig i kod som körs i webbläsaren eller i en app.
Anrop
JSON i UTF-8. Nyckeln skickas i headern X-Api-Key eller som Authorization: Bearer.
| Anrop | Gör | Räknas |
|---|---|---|
POST /api/v1/analyze | Kontrollerar ett schema mot valt regelverk och returnerar bedömning, avvikelser, regler och veckosammanställning. Fält · Svar | Ja |
GET /api/v1/rulesets | Inbyggda regelverk och avtalsmallar med alla gränsvärden. ?q=handels söker. | Nej |
GET /api/v1/catalog | Katalogen med 203 kollektivavtal och vilken mall som gäller för vart och ett. | Nej |
GET /api/v1/rules | Regler, parametrar, tolkningsinställningar och grunder för undantag. | Nej |
Det här ingår
Alla regler i ett anrop
Dygnsvila, veckovila, rast, passlängd, nattarbete, ordinarie tid, övertid, mertid, sammanlagd tid, jour och beredskap. Sommar- och vintertid räknas rätt.
Avtal och undantag
Färdiga mallar för kollektivavtal eller ett eget regelverk. Medgivna avvikelser och dispenser räknas in, med krav på kompensation.
OB och veckor
OB-timmar per band och belopp med timlön, och timmar per vecka för ordinarie tid, övertid, jour och beredskap.
Förutsägbart
Fasta månadspriser, headrar med kvarvarande kontroller och tydliga felkoder. Inga scheman sparas.
Gränser och priser
Högst 1 MB, 5 000 rader och 1 100 dagar per anrop. Gratis 1 000 kontroller per månad, större volymer från 495 kr/mån. Felkoder
Se nivåerVanliga frågor
Vad kostar API:t?
Gratisnivån ger 1 000 kontroller per månad och nyckeln kommer direkt. Större volymer har fasta månadspriser, se priser.
Vad räknas som en kontroll?
Varje anrop till POST /api/v1/analyze som ger ett svar är en kontroll, oavsett hur många dagar schemat innehåller. Att hämta regelverk, regler och avtal kostar inget.
Sparas scheman som skickas till API:t?
Nej. Schemat används bara för att räkna fram svaret. Vi sparar statistik per anrop, till exempel antal dagar och avvikelser, men aldrig själva schemat.
Kan vi använda vårt kollektivavtal?
Ja. Välj en färdig mall med ruleSetId, eller skicka ett eget regelverk i ruleSet. Hämta mallarna med GET /api/v1/rulesets.