Kom igång
- Välj regelverk. Arbetstidslagen (ATL) är standard. Välj en avtalsmall eller bygg ett eget regelverk om ni har kollektivavtal.
- Klistra in arbetstider. En rad per datum, till exempel
2026-09-01 07:00-16:00 rast 30. Du kan också läsa in en CSV-fil. - Lägg in undantag om avvikelser har medgetts, till exempel en kortare dygnsvila en viss vecka.
Resultatet uppdateras direkt. Allt du matar in sparas bara i din egen webbläsare. Servern räknar på uppgifterna och glömmer dem sedan. Se Vad som sparas.
Format för arbetstider
Varje rad börjar med ett datum. Därefter kommer en eller flera tider med typ och rast. Flera pass på samma rad skiljs med komma.
2026-09-01 07:00-16:00 rast 30
2026-09-04 07:00-15:00 rast 30, 15:00-07:00 beredskap
2026-09-05 02:10-04:40 inkallad
2026-09-09 21:00-07:00 jour
2026-09-14 semester
2026-09-01;07:00;16:00;arbete;30 (CSV)
2026-09-01 07:00 16:00 övertid 30 (klistrat från Excel)
| Del | Så skriver du | Kommentar |
|---|---|---|
| Datum | 2026-09-01, 2026/09/01, 20260901 | Måste stå först på raden. |
| Tid | 07:00-16:00, 7.00–16.00, 7-16 | Sluttid före starttid betyder att passet slutar nästa dag. 07:00-07:00 är 24 timmar. 24:00 går att använda. |
| Typ | arbete, övertid, jour … | Se Tidstyper. Utan typ räknas passet som arbete. |
| Rast | rast 30, rast 1 h, eller bara 30 | Minuter om inget annat anges. Rasten dras från arbetad tid men bryter inte vilan. |
| Kommentar | # text | Allt efter # ignoreras. |
Rader som inte går att läsa visas med radnummer under textrutan. Resten av schemat kontrolleras ändå.
Schemabyggare
I schemabyggaren bygger du ett veckoschema från början i stället för att klistra in ett. Lägg in personer (lärare, personal), grupper (klasser, arbetslag) och rum (salar, kassor). Dra i veckan för att lägga pass, dra passen för att flytta dem och i nederkanten för att ändra längd. Välj en person, grupp eller ett rum för att se just deras vecka.
- Krockar – en person, grupp eller ett rum som är bokat två gånger samtidigt, eller bokat när det inte är tillgängligt, markeras med rött.
- Kontroll – varje person kontrolleras mot valt regelverk med veckan upprepad fyra veckor. Kontrollen räknas inte mot månadstaket.
- Automatisk schemaläggning – ange behov, t.ex. Matte 8A, 3 × 60 min med 8A och Anna, i sal 1 eller 2. Tillfällena läggs ut utan krockar, med få håltimmar och utspritt över veckan. Personer får minst 11 timmars dygnsvila och 36 timmars veckovila och aldrig fler timmar än angivet. Pass du lagt själv eller låst ligger kvar.
- Öppna i kontrollen – hela schemat, fyra veckor, öppnas i kontrollverktyget för rapport och export. Skriv ut ger ett schema per klass eller person.
Utan konto: 5 personer i kontrollen och 30 tillfällen i den automatiska schemaläggningen. Gratis konto: spara scheman och 80 tillfällen. Betalnivåerna: upp till 3 000 tillfällen.
Importera från schemasystem
Klicka Importera fil (Excel, CSV) och välj en export från ert schema- eller tidsystem, till exempel Personalkollen, Quinyx, Timecare, Planday eller en egen Excel-fil. Filen läses på servern, görs om till eTids format och sparas inte.
- Filtyper: Excel (.xlsx), CSV med semikolon, komma eller tabb, och textfiler. Äldre .xls sparar du om som .xlsx eller CSV.
- Kolumner känns igen på rubrikraden, på svenska eller engelska: namn eller anställd (eller förnamn och efternamn), datum, start eller från, slut eller till, rast och typ. Datum och tid i samma kolumn går också bra, liksom en kolumn med hela tiden, till exempel
07:00-16:00. - Typ: ord som övertid, mertid, jour, beredskap, inkallad, semester och sjuk känns igen. Övrigt räknas som arbete.
- Rast kan anges i minuter (30), som tid (0:30) eller i timmar (0,5).
Efter importen står schemat i rutan, med en rubrik per anställd. Kontrollera gärna några rader innan du kör kontrollen. Utan konto kan 100 rader importeras åt gången. Med ett gratis konto kan filen vara upp till 3 MB, ungefär 100 000 rader, och du kan köra hur många filer som helst inom organisationens nivå.
Tidstyper
Överlappar två pass vinner typen högst upp i tabellen. Därför kan du lägga en inkallelse mitt i en beredskap.
| Typ | Skriv | Räknas som |
|---|---|---|
| Inkallad | inkallad, utryckning, aktiv, larm | Arbete under jour eller beredskap. Bryter vilan. Räknas som övertid om inställningen är på. |
| Övertid | övertid, öt | Arbetstid utöver ordinarie tid för heltidare. Räknas mot övertidstaket. |
| Mertid | mertid | Arbetstid utöver ordinarie tid för deltidare. Räknas mot mertidstaket. |
| Arbete | arbete eller ingen typ | Ordinarie arbetstid. |
| Jour | jour | Tid på arbetsplatsen i väntan på arbete. Räknas inte som vila som standard och ingår i sammanlagd arbetstid. |
| Beredskap | beredskap, ber | Tid utanför arbetsplatsen med krav på att kunna rycka in. Räknas som vila som standard. |
| Frånvaro | semester, sjuk, vab, föräldraledig, tjänstledig | Hela dagen. Neutral i snittberäkningar, alltså räknas dagen bort ur perioden. |
| Ledig | ledig | Samma som att utelämna dagen. |
Regelverk och mallar
Ett regelverk är en uppsättning regler med gränsvärden. Fyra mallar finns inbyggda:
- Arbetstidslagen (ATL) – lagens grundregler. Gäller när inget kollektivavtal ersätter dem.
- EU:s arbetstidsdirektiv – miniminivån i direktiv 2003/88/EG. Svenska regler och avtal får inte ge sämre skydd.
- Avtalsmall: längre beräkningsperioder – visar vanliga avtalsavvikelser, som snitt över 16 veckor och tillfälligt 9 h dygnsvila.
- Avtalsmall: jour och beredskap – för verksamhet med jourpass och beredskapstak.
Avtalsmallarna är exempel. De återger inga verkliga kollektivavtal. Kopiera en mall och ändra värdena efter det avtal som gäller hos er.
Egna regelverk
Under Visa och ändra regler kan du slå på och av regler, ändra gränser och välja om en överträdelse ska räknas som brott eller varning. Ändrar du i en mall skapas automatiskt en egen kopia. Egna regelverk kan kopieras ut som JSON och läsas in på en annan dator eller skickas till API:t.
Varje regel har också inställningen Vid överträdelse: Brott eller Varning. Nattvilan är varning i ATL-mallen, eftersom lagen tillåter nattarbete när arbetets art kräver det.
Undantag
Ett undantag säger att en viss regel får avvika under en viss period. Det används när avvikelsen har stöd, till exempel i lagen, ett lokalt avtal eller en dispens.
| Fält | Betydelse |
|---|---|
| Regel | Vilken regel undantaget gäller. |
| Från / Till | Datum som undantaget gäller. En avvikelse omfattas om dess period överlappar undantagets period. |
| Medgiven gräns (h) | Den nya gränsen i timmar. För vila är det lägsta tillåtna vilan, för tak det högsta tillåtna värdet. Tomt betyder att regeln inte tillämpas alls under perioden. |
| Grund | Varför undantaget finns, till exempel särskilda omständigheter (ATL 13–14 §§), nödfallsövertid (9 §), extra övertid (8 a §), dispens (19 §) eller lokalt avtal. |
| Kompensation | Om arbetstagaren får kompensationsledighet eller annat skydd. Visas i resultatet. |
Så bedöms en avvikelse. Först jämförs värdet med regelns gräns. Klarar det inte gränsen prövas regelverkets egen tillfälliga förkortning (fältet Får tillfälligt förkortas till). Därefter prövas undantagen för perioden. Täcker något av dem avvikelsen blir den Medgiven. Annars blir den Brott eller Varning. Finns ett undantag men med för snäv gräns står det i avvikelsen.
Exempel: extra övertid enligt 8 a § läggs in som undantag för regeln Allmän övertid med gränsen 350 h (200 + 150) för året.
Veckoschema
Fliken Veckoschema visar en vecka i taget som ett skolschema: en kolumn per dag och passen som block. Färgen visar typ av tid, och en röd kant betyder att passet är inblandat i ett brott.
- Lägg till pass – dra nedåt i en dag, eller klicka + Lägg till pass. Välj tider, typ och rast. Passet skrivs in som en rad i schemarutan, i datumordning.
- Ändra eller ta bort – klicka på ett pass. Visa i texten markerar raden i schemarutan.
- Kopiera veckan → – kopierar alla veckans pass till veckan efter, så att du snabbt bygger ett rullande schema.
- Skriv ut – skriver ut veckan som ett schema att sätta upp eller dela ut.
Har schemat flera anställda visas den som är vald i tabellen över anställda, och nya pass hamnar under den personens rubrik. Inloggad visas nya pass streckade tills du klickar Kontrollera.
Läsa resultatet
Status
| Status | Betyder |
|---|---|
| Brott | Regeln är inte uppfylld och inget undantag täcker avvikelsen. |
| Varning | Avvikelse som ska granskas. Uppstår när regeln är satt till varning, eller när ett snitt räknas på en period som bara delvis finns i underlaget. |
| Medgiven | Avvikelsen täcks av ett undantag eller av regelverkets tillåtna förkortning. Visar om kompensation krävs. |
| Uppfylld | Regeln kontrollerades och följdes under hela underlaget. |
| Av | Regeln ingår inte i valt regelverk. |
Delarna på sidan
- Sammanfattning – antal brott, varningar och medgivna avvikelser, perioden, antal pass och summerad tid för arbete, jour och beredskap.
- Regler – en ruta per regel med gräns och status. Klicka för att bara visa den regelns avvikelser.
- Avvikelser – varje avvikelse med när, uppmätt värde, lagrum, förklaring och eventuellt undantag. Klicka för att hoppa till dagen i tidslinjen.
- Tidslinje – ett dygn per rad, kl 00–24. Färgerna visar tidstyp. Randigt rött markerar vila som är för kort eller pass som bryter mot en regel, grönt en medgiven avvikelse.
- Veckosammanställning – timmar per typ och vecka med rasten avdragen, plus längsta sammanhängande vila måndag–söndag.
- Samma schema mot andra regelverk – antal avvikelser om schemat hade kontrollerats mot de andra mallarna och dina egna regelverk.
Konto och full skala
Utan konto kan du testa allt med ett schema i taget: upp till 100 rader och 120 dagar, och bara den första anställda om filen har flera. OB visas i timmar. Med ett gratis konto försvinner radgränsen, alla anställda kontrolleras i samma körning, OB räknas även i kronor, och du kan exportera, skriva ut granskningsrapporter och spara mallar och regelverk.
Logga in
Skapa ett konto på Logga in med e-post och organisation. Du får en inloggningslänk i mejlet. Den gäller i 15 minuter och kan bara användas en gång. Vi använder inga lösenord. Du är inloggad i 30 dagar i samma webbläsare.
Den som skapar kontot blir administratör och kan bjuda in kollegor under Mitt konto. Alla i organisationen delar regelverk, undantag och månadens kontroller.
Flera anställda i samma schema
Kräver konto. Utan konto kontrolleras bara den första anställda i filen. Börja varje anställd med en rubrikrad. Alla rader under rubriken gäller den personen:
## Anna Andersson
2026-09-01 07:00-16:00 rast 30
2026-09-02 07:00-16:00 rast 30
## Bertil Berg
2026-09-01 22:00-06:00
Rubriken kan också skrivas Anställd: Anna, Namn: Anna eller Person: Anna. I en CSV-fil kan namnet i stället stå först på varje rad: Anna;2026-09-01;07:00-16:00. Inloggad kan en körning innehålla upp till 300 anställda och ungefär 100 000 rader (3 MB). Större underlag delar du upp i flera körningar, t.ex. per avdelning. Antalet körningar begränsas bara av organisationens nivå.
Resultatet visar en tabell med brott, varningar och medgivna avvikelser per anställd. Klicka på en rad för att se detaljerna för den personen.
Kontroller och nivå
Varje anställd som kontrolleras räknas som en kontroll mot organisationens nivå. Ett schema med 40 anställda blir alltså 40 kontroller. Taket nollställs den 1:a varje månad. Nivåerna är samma som för API:t, se Priser och API. Nya konton börjar på gratisnivån.
När du är inloggad körs kontrollen när du klickar på Kontrollera, inte automatiskt medan du skriver.
Editorn
Rutan har radnummer. Rader som inte kunde tolkas markeras med rött, och du hoppar till raden genom att klicka på felet. Rubrikrader för anställda (## Namn) markeras med blått. Inloggad får du dessutom:
- Infoga rad – lägger in ett vanligt pass, jour, beredskap, semester eller en ny anställd under raden där markören står. Datumet blir dagen efter närmaste datum ovanför, så att du kan fylla på en vecka snabbt.
- Kopiera markerat +1 vecka – markera några rader och få en kopia med alla datum sju dagar senare.
- Nästa fel – hoppar mellan raderna med fel.
- Verktyg – sortera efter datum och tid, ta bort dubbletter och tomma rader, snygga till tider (
7.00blir07:00), flytta datum ett antal dagar, sök och ersätt samt dela upp rader med namn i en kolumn till en rubrik per anställd. Ångra tar tillbaka texten från före senaste verktyget. - Gå till anställd – hoppar till en anställds rubrik när rutan innehåller flera.
- Större ruta – gör rutan lika bred som sidan och nästan lika hög som fönstret. Resultatet visas under. Esc går tillbaka.
- Kortkommandon – Ctrl+Enter kontrollerar, Ctrl+D kopierar raden, Alt+↑/↓ flyttar raden och Ctrl+F öppnar sök och ersätt. På Mac används Cmd.
Tidsmallar och sparade körningar
Inloggad kan du spara det som står i schemarutan. Välj Spara … ovanför rutan och ge det ett namn.
- Tidsmall är text du återanvänder, till exempel ett veckoschema, ett skiftmönster eller en personalgrupp. Infoga lägger in mallen där markören står.
- Körning är hela schemat tillsammans med valt regelverk och en sammanfattning av resultatet: antal anställda, brott och varningar. Öppna ersätter rutan med körningen och väljer samma regelverk, så att du kan kontrollera igen efter ändringar.
Det sparade syns för alla i organisationen. Högst 500 sparade per organisation. Att öppna eller spara räknas inte som en kontroll, bara att klicka Kontrollera.
Export
Exportera CSV ger en fil med en rad per avvikelse: anställd, status, regel, lagrum, när, avvikelse, förklaring, undantag och kompensation. Filen öppnas direkt i Excel. Skriv ut eller spara som PDF skriver ut resultatet.
Dygnsvila
ATL 13 §Arbetstagaren ska ha minst 11 timmars sammanhängande ledighet under varje period om 24 timmar.
Beräkning. För varje 24-timmarsperiod letas den längsta sammanhängande lediga tiden inom perioden fram. Är den kortare än gränsen blir det en avvikelse. Vila som fortsätter efter periodens slut räknas bara fram till slutet, och det står i förklaringen.
- Från varje pass start (standard): en period börjar när ett pass börjar. Det motsvarar hur många arbetsgivare räknar och fångar korta vändor mellan kvälls- och morgonpass.
- Fast dygnsbrytpunkt: perioden börjar samma klockslag varje dag, till exempel 00:00 eller 07:00.
- Får tillfälligt förkortas till: om avtalet tillåter kortare vila, till exempel 9 h, blir vila mellan den gränsen och huvudgränsen medgiven med krav på kompensation.
- Rast bryter inte vilan. Jour bryter vilan. Beredskap utan inkallelse räknas som vila, men det går att ändra under Tolkning.
Nattvila 00–05
ATL 13 § 2 stDygnsvilan ska omfatta tiden mellan midnatt och klockan fem, om inte arbetets art, allmänhetens behov eller andra särskilda omständigheter kräver något annat.
Beräkning. Varje dygn kontrolleras om arbete, övertid, mertid, inkallelse eller jour ligger mellan 00:00 och 05:00. Uppmätt värde är antalet minuter. Beredskap utan inkallelse räknas inte.
Regeln är satt till varning i ATL-mallen. Lägg in ett undantag med grunden Arbetets art eller allmänhetens behov om nattarbetet är motiverat.
Veckovila
ATL 14 §Arbetstagaren ska ha minst 36 timmars sammanhängande ledighet under varje period om sju dagar. EU-direktivet kräver 24 h plus 11 h dygnsvila, alltså 35 h.
Beräkning. För varje sjudagarsperiod letas den längsta sammanhängande lediga tiden fram. Fast vecka (standard) börjar på vald veckodag och klockslag, normalt måndag 00:00. Varje 7-dagarsperiod prövar en period från varje dag, vilket är strängare.
- Beredskap räknas inte in i veckovilan enligt 14 §. Tillåter ert avtal det kan det slås på under Tolkning.
- Jour bryter veckovilan.
Rast
ATL 15 §Ingen får arbeta mer än fem timmar i följd utan rast. EU-direktivet kräver rast när arbetsdagen är längre än sex timmar.
Beräkning. Sammanhängande arbete (arbete, övertid, mertid och inkallelse direkt efter varandra) som är längre än gränsen och saknar angiven rast blir en avvikelse. Eftersom rasten anges i minuter och inte som klockslag kontrolleras inte var i passet den ligger.
Har passet en rast som inte ska räknas som arbetstid kan du också dela passet i två tider, till exempel 07:00-11:30, 12:00-16:00.
Längsta arbetspass
AvtalTak för hur långt ett sammanhängande pass får vara. Finns inte i ATL som egen regel men i många avtal, till exempel för jourpass.
Beräkning. Arbete, övertid, mertid, inkallelse och jour som följer direkt på varandra räknas som ett pass. Passets längd jämförs med gränsen.
Nattarbete
ATL 13 a §För nattarbetande får arbetstiden i genomsnitt inte överstiga åtta timmar per 24-timmarsperiod under en beräkningsperiod om högst fyra månader. Slå på regeln för den som är nattarbetande.
Beräkning. All arbetstid (utan jour) under perioden delas med antalet dygn i underlaget, minus dagar med neutral frånvaro.
Ordinarie arbetstid
ATL 5 §Den ordinarie arbetstiden får uppgå till högst 40 timmar i veckan, i genomsnitt under en period om högst fyra veckor.
Beräkning. Veckorna delas in i perioder (standard 4 veckor, räknat från måndagen i den första veckan). Tid av typen arbete, med rasten avdragen, summeras och delas med antalet veckor i perioden. Övertid och mertid räknas inte här.
Tid över gränsen ska läggas som övertid eller mertid. Då kontrolleras den mot de taken i stället.
Allmän övertid
ATL 8 §Högst 48 timmar under en period om fyra veckor, eller 50 timmar under en kalendermånad, och högst 200 timmar per kalenderår.
Beräkning. Tid av typen övertid, och inkallad tid om inställningen är på, summeras per period (4 veckor eller kalendermånad) och per kalenderår. Varje period och år jämförs med sitt tak.
Extra övertid (8 a §) och nödfallsövertid (9 §) läggs in som undantag. Nödfallsövertid räknas inte in i taket, så lägg det undantaget med tom gräns.
Allmän mertid
ATL 10 a §Deltidsanställda får ha högst 200 timmar mertid per kalenderår.
Beräkning. Tid av typen mertid summeras per kalenderår och jämförs med taket.
Sammanlagd arbetstid
ATL 10 b §Den sammanlagda arbetstiden får vara högst 48 timmar i veckan i genomsnitt under en beräkningsperiod om högst fyra månader. Kollektivavtal får ha längre perioder.
Beräkning. Arbete, övertid, mertid, inkallelse och jour summeras över perioden (kalendermånader från den första månaden i underlaget). Summan delas med antalet veckor som underlaget täcker i perioden. Dagar med semester eller sjukdom räknas bort, eftersom de ska vara neutrala.
Täcker underlaget bara en del av perioden blir en överträdelse en varning, eftersom snittet kan sjunka när resten av perioden är känd.
Jourtid
ATL 6 §Högst 48 timmar jour under en period om fyra veckor, eller 50 timmar under en kalendermånad.
Beräkning. Jourtid utan de minuter då arbetstagaren var inkallad summeras per period och jämförs med taket.
Beredskap
AvtalLagen har inget tak för beredskap, men många kollektivavtal har det.
Beräkning. Beredskap utan de minuter då arbetstagaren var inkallad summeras per kalendermånad och jämförs med taket.
OB-tillägg
AvtalOB-tillägg (obekväm arbetstid) regleras i kollektivavtalen, inte i arbetstidslagen. eTid räknar hur många timmar som faller i varje OB-band. Inloggad får du även beloppet, när du anger timlön eller banden har kronor per timme.
Beräkning. Varje minut arbete och mertid jämförs med regelverkets OB-band: dagar (måndag–söndag, röd dag och afton) och klockslag. När flera band gäller samtidigt räknas bandet med högst ersättning, så att till exempel juldagen räknas som helgdag även på kvällen. Övertid och inkallelse räknas inte med, eftersom de oftast ersätts som övertid. Det går att ändra under Tolkning. Belopp = timmar × (kronor per timme + procent × timlön).
Allmänna helgdagar räknas ut automatiskt för varje år: nyårsdagen, trettondedag jul, långfredagen, påskdagen, annandag påsk, första maj, Kristi himmelsfärdsdag, nationaldagen, pingstdagen, midsommardagen, alla helgons dag, juldagen och annandag jul. Aftnar är julafton, nyårsafton, midsommarafton och påskafton.
Mallen för Detaljhandelsavtalet har OB-banden ifyllda. För andra avtal lägger du till band under Visa och ändra regler → OB-tillägg, eller klickar Lägg till vanliga band och fyller i avtalets tider och belopp. I API:t skickas timlönen som timlon och resultatet kommer i ob.
Sommar- och vintertid
Schemats tider är klocktid. Natten då sommartid börjar (sista söndagen i mars) ställs klockan fram från 02:00 till 03:00, och natten då den slutar (sista söndagen i oktober) ställs den tillbaka från 03:00 till 02:00. eTid räknar allt i verklig tid:
- Arbetad tid: ett nattpass 22–06 blir 7 timmar i mars och 9 timmar i oktober. Det påverkar ordinarie tid, övertid, mertid, sammanlagd arbetstid, jour och OB.
- Vila: dygnsvila och veckovila över natten blir en timme kortare i mars och en timme längre i oktober.
- Rast och passlängd: tid i följd räknas också i verklig tid.
Resultatet visar en upplysning för varje omställning i perioden, med de pass som påverkas. Timmen som finns två gånger i oktober räknas som två timmar arbete när passet pågår hela natten.
Tolkningsinställningar
Varje regelverk har fyra inställningar som styr hur jour och beredskap räknas.
| Inställning | Standard | Påverkar |
|---|---|---|
| Jour räknas inte som vila | På | Dygnsvila, veckovila och nattvila. Jour är på arbetsplatsen och räknas som arbetstid enligt EU-domstolen. |
| Beredskap utan inkallelse räknas som dygnsvila | På | Dygnsvila. Stäng av om beredskapen är så bindande (kort inställelsetid) att den i praktiken är arbetstid. |
| Beredskap utan inkallelse får ingå i veckovilan | Av | Veckovila. Enligt ATL 14 § räknas beredskap inte in i veckovilan. Slå på bara om ert avtal tillåter det. |
| Inkallad tid räknas som övertid | På | Övertidstaket. |
Antaganden och begränsningar
- Tid som inte finns i underlaget räknas som ledig, också före första och efter sista datumet.
- Tider anges i svensk klocktid. Nätter då klockan ställs om till sommar- eller vintertid räknas i verklig tid, se Sommar- och vintertid.
- Snittregler räknas på de veckor och dagar som finns i underlaget. Ofullständiga perioder ger varning i stället för brott.
- Rast placeras inte i tid. Se Rast.
- Den öppna sidan kontrollerar högst 100 rader och 120 dagar åt gången. API:t tar upp till 1 100 dagar, 5 000 rader och 10 000 pass.
- Verktyget är ett stöd för granskning, inte juridisk rådgivning. Kontrollera alltid mot lag och det avtal som gäller.
API – översikt
API:t gör samma kontroll som sidan och passar när scheman finns i ett annat system, till exempel ett schemaläggnings- eller lönesystem. Alla anrop skickar och tar emot JSON i UTF-8.
| Anrop | Gör |
|---|---|
POST /api/v1/analyze | Kontrollerar ett schema och returnerar resultatet. |
GET /api/v1/rulesets | Listar de inbyggda regelverken med alla värden. |
GET /api/v1/rules | Listar regler, parametrar, tolkningsinställningar och grunder för undantag. |
Autentisering
Varje anrop måste ha en privat API-nyckel i headern X-Api-Key. Authorization: Bearer <nyckel> fungerar också. Nyckeln ska bara användas från er server och aldrig ligga i kod som körs i webbläsaren eller i en app.
X-Api-Key: atk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Skaffa API-nyckel
Välj nivå och skicka en förfrågan. Vi återkommer med avtal och faktura, och när den är betald får ni er API-nyckel.
- Gå till Priser och API och välj nivå efter hur många kontroller ni behöver per månad. Gratisnivån, 1 000 kontroller per månad, får ni direkt.
- Fyll i formuläret med organisation, kontaktperson och fakturareferens.
- Vi bekräftar nivån och skickar avtal och faktura.
- När fakturan är betald får ni en personlig nyckel. Den visas bara en gång.
Hellre mejl? Kontakt: hej@etid.se
Vi sparar bara en kontrollsumma av nyckeln. Tappar ni bort den skapar vi en ny och spärrar den gamla.
Skicka ett schema
POST /api/v1/analyze
| Fält | Typ | Beskrivning |
|---|---|---|
ruleSetId | text | Inbyggt regelverk: atl (standard), eu, mallA, mallB. |
ruleSet | objekt | Eget regelverk, samma format som sidans JSON-export. Vinner över ruleSetId. Saknade värden fylls i från ATL. |
schedule | text | Schemat i textformatet, rader skilda med \n. |
entries | lista | Schemat som poster, se nedan. Kan kombineras med schedule. Högst 5 000. |
exceptions | lista | Undantag, se nedan. Högst 200. |
includeWeeks | sant/falskt | Ta med veckosammanställningen. Standard true. |
Antingen schedule eller entries måste finnas.
Post i entries
| Fält | Typ | Beskrivning |
|---|---|---|
date | text | ÅÅÅÅ-MM-DD. Krävs. |
start, end | text | HH:MM. Utelämna båda för frånvaro. end före start betyder nästa dag. |
type | text | arbete, overtid, mertid, jour, beredskap, inkallad, semester, sjuk … Se Tidstyper. Standard: arbete. |
rastMinutes | tal | Rast i minuter, 0–600. |
Undantag i exceptions
| Fält | Typ | Beskrivning |
|---|---|---|
id | text | Ert id. Kommer tillbaka i exceptionId på avvikelser som undantaget täcker. |
regel | text | Regelns id: dygnsvila, nattvila, veckovila, rast, passlangd, nattarbete, ordinarie, overtid, mertid, sammanlagd, jour, beredskap. |
from, to | text | Period, ÅÅÅÅ-MM-DD. Utan to gäller undantaget en dag. |
varde | text | Medgiven gräns i timmar, till exempel "9" eller "9,5". Tom text betyder att regeln inte tillämpas. |
grund | text | Fritext eller en av grunderna från /api/v1/rules. |
komp | sant/falskt | Om kompensation ges. |
note | text | Valfri notering. |
Exempel
curl -X POST https://<er-adress>/api/v1/analyze \
-H "X-Api-Key: $ATK_KEY" \
-H "Content-Type: application/json" \
-d '{
"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 }
],
"exceptions": [
{ "id": "u1", "regel": "dygnsvila", "from": "2026-09-02", "to": "2026-09-03",
"varde": "8", "grund": "Lokalt kollektivavtal", "komp": true }
],
"includeWeeks": false
}'
Samma schema i textformat:
{ "ruleSetId": "atl",
"schedule": "2026-09-02 13:00-21:30 rast 30\n2026-09-03 06:00-14:00 rast 30" }
Svaret fält för fält
{
"ruleSet": { "id": "atl", "name": "Arbetstidslagen (ATL)" },
"verdict": "brott",
"headline": "1 brott mot Arbetstidslagen (ATL)",
"summary": "Inga medgivna avvikelser",
"counts": { "fel": 1, "varning": 0, "undantag": 0, "kompensation": 0 },
"totals": { "from": "2026-09-02", "to": "2026-09-03", "periodText": "ons 2 sep – tor 3 sep",
"pass": 2, "arbeteH": 15.5, "jourH": 0, "beredskapH": 0 },
"rules": [
{ "id": "dygnsvila", "name": "Dygnsvila", "ref": "ATL 13 §", "on": true,
"limit": "minst 11 h per 24 h", "checks": 2, "fel": 1, "varning": 0, "undantag": 0 },
…
],
"findings": [
{ "rule": "dygnsvila", "ruleName": "Dygnsvila", "ref": "ATL 13 §", "status": "fel",
"date": "2026-09-02", "when": "ons 2 sep 13:00", "title": "Dygnsvila 8 h 30 min",
"detail": "Längsta sammanhängande vila under 24 timmar från ons 2 sep 13:00 var 8 h 30 min, ons 2 sep 21:30 – 06:00. Krav 11 h.",
"kompensation": false }
],
"parseErrors": [
{ "line": 2, "text": "entries[2]", "message": "start och end ska båda anges som HH:MM" }
]
}
| Fält | Beskrivning |
|---|---|
ruleSet | Regelverket som användes. Egna regelverk får id eget om inget id skickades. |
verdict | Samlad bedömning: brott (minst ett brott), varningar (inga brott men varningar), ok (inget att anmärka), tom (inget att kontrollera eller för stort underlag, se error). |
headline, summary | Färdiga svenska texter som kan visas direkt. |
error | Finns bara om underlaget inte kunde kontrolleras, till exempel för många dagar. |
counts | fel = brott, varning = varningar, undantag = medgivna avvikelser, kompensation = medgivna avvikelser där kompensation krävs. |
totals | Period, antal pass (sammanhängande arbete och jour) och timmar arbete (inkl. övertid, mertid och inkallelse), jour och beredskap. Rast är avdragen. |
rules[] | En rad per regel. on anger om regeln ingår. limit är gränsen som text. checks är antalet perioder eller pass som prövades. fel, varning och undantag räknar avvikelserna. |
findings[] | Avvikelser sorterade på datum. status är fel, varning eller undantag. date är dagen avvikelsen börjar. when är en läsbar tidpunkt eller period. title innehåller uppmätt värde, detail förklaringen. via anger vad som medger avvikelsen, kompensation om kompensation krävs, exceptionId vilket undantag som användes och note extra information, till exempel om ett undantag inte räckte eller om perioden är ofullständig. |
weeks[] | Med includeWeeks: per vecka week (ISO-vecka), ordinarie, overtid, mertid, jour, beredskap, inkallad och totalt i timmar, langstaVilaMin/langstaVila längsta sammanhängande vila måndag–söndag, och forKortVila om den understiger veckovilan. |
parseErrors[] | Rader eller poster som inte kunde läsas. För entries är line postens index (från 0). Övriga delar av schemat kontrolleras ändå. |
Svaret från /api/v1/analyze har headrarna X-Quota-Limit, X-Quota-Remaining och X-Quota-Reset, som visar nyckelns månadstak, hur många kontroller som återstår och när taket nollställs.
Övriga anrop
GET /api/v1/rulesets
Returnerar de inbyggda regelverken: id, name, desc, settings och rules med alla gränsvärden. Använd dem som utgångspunkt för ett eget ruleSet.
GET /api/v1/rules
Returnerar regeldefinitionerna. För varje regel finns id, name, ref (lagrum), kind (min för vilokrav, max för tak), desc och params med de fält som regeln använder. Där finns också settings (tolkningsinställningar) och grunder (förslag på grunder för undantag).
Fält i ett regelverk
| Fält | Används av | Betydelse |
|---|---|---|
on | alla | Om regeln kontrolleras. |
niva | alla | fel (brott) eller varning. |
min | dygnsvila, veckovila | Minsta vila i timmar. |
avtal | dygnsvila, veckovila | Tillåten tillfällig förkortning i timmar, eller null. |
metod | dygnsvila, veckovila | rullande eller fast. |
bryt | dygnsvila | Dygnsbrytpunkt, HH:MM. |
brytDag, brytTid | veckovila | Veckans start: 0 = måndag … 6 = söndag, och klockslag. |
max | rast, passlangd, nattarbete, ordinarie, sammanlagd | Högsta värde i timmar. |
veckor | ordinarie | Beräkningsperiod i veckor. |
manader | sammanlagd, nattarbete | Beräkningsperiod i månader. |
period | overtid, jour | 4v eller manad. |
max4v, maxManad, maxAr | overtid, jour, mertid, beredskap | Tak per 4 veckor, kalendermånad och kalenderår. |
settings har fälten jourEjVila, beredskapVilaDygn, beredskapVilaVecka och inkalladOvertid. Se Tolkningsinställningar.
Felkoder och gränser
| Kod | Betyder |
|---|---|
200 | Kontrollen gjordes. Titta på verdict och parseErrors. |
400 | Anropet är felaktigt, till exempel okänt ruleSetId eller inget schema. Se error. |
401 | Nyckel saknas eller är ogiltig. |
413 | Anropet är större än 1 MB. |
429 | För många anrop per minut, eller så är månadens kontroller förbrukade. Headern Retry-After anger sekunder att vänta när den finns. |
500 | Oväntat fel hos oss. Försök igen. |
Alla fel returneras som { "error": "…" }.
Gränser
- Högst 1 MB per anrop, 5 000 rader eller poster, 10 000 pass, 1 100 dagar och 200 undantag.
- Varje nyckel har ett antal kontroller per kalendermånad enligt nivån, och en gräns för anrop per minut. Månadstaket nollställs den 1:a varje månad (UTC). Bara
/api/v1/analyzeräknas. - Upprepade anrop med ogiltig nyckel spärras tillfälligt per IP-adress.
- Den öppna sidan har lägre gränser, högst 100 rader per kontroll, och är skyddad mot skript: den kan bara användas från webbläsaren på sajten. För automatiska anrop används API:t.
Vad som sparas
Scheman och namn på anställda sparas inte på servern. De används bara för att räkna fram svaret. Undantaget är när en inloggad användare själv klickar Spara på en tidsmall eller körning. Då sparas texten på organisationens konto tills någon i organisationen tar bort den.
För konton sparas organisationens namn, nivå, användarnas e-postadresser och när de senast loggade in. Organisationens egna regelverk och undantag sparas också, så att alla i organisationen kan använda dem. Inloggningslänkar sparas bara som kontrollsumma och raderas efter två dygn.
För att följa användningen sparas en rad per kontroll: tidpunkt, om den kom från sidan eller API:t, vilken API-kund, vilket regelverk, hur många dagar och pass som kontrollerades, antal avvikelser, svarstid och statuskod. IP-adressen sparas inte, bara en saltad kontrollsumma som inte går att räkna tillbaka och som används för att se ungefär hur många olika besökare som använder sidan.
Skickar du en förfrågan om API-nyckel sparas uppgifterna i formuläret (organisation, kontaktperson, e-post, telefon, volym, användning och fakturareferens) för att hantera förfrågan och avtalet. Kontakta oss om du vill att de tas bort.
Cookies och statistik
Vi använder Google Tag Manager och Google Analytics för att se hur sajten används, till exempel vilka sidor som besöks. Statistikcookies sätts bara om du väljer Godkänn i cookierutan. Väljer du Bara nödvändiga sätts inga statistikcookies. Du kan ändra ditt val när som helst via Cookieinställningar längst ner på sidan.
Scheman, tider och undantag du kontrollerar skickas aldrig till statistiken.
På sidan sparas det du matar in i din egen webbläsare (localStorage), så att det finns kvar nästa gång. Töm webbläsarens data för sajten för att ta bort det.
Vanliga frågor
Varför blir det brott på dygnsvilan fast den verkliga vilan är längre?
Vilan ska rymmas inom 24-timmarsperioden. Börjar perioden 07:00 och nästa pass 08:00 dagen efter räknas bara vilan fram till 07:00. Byt till fast dygnsbrytpunkt om ert avtal räknar så.
Hur lägger jag in inkallelse under beredskap?
Skriv beredskapen som ett pass och inkallelsen som ett eget pass inom samma tid, till exempel 15:00-07:00 beredskap och nästa dag 02:10-04:40 inkallad. Inkallelsen vinner där de överlappar.
Hur hanterar jag nödfallsövertid?
Lägg ett undantag för Allmän övertid under de dagar det gäller, med grunden Nödfallsövertid (ATL 9 §) och tom gräns. Nödfallsövertid får inte räknas in i taket.
Vårt kollektivavtal finns inte som mall. Vad gör jag?
Välj den mall som ligger närmast, klicka Kopiera till eget regelverk och ändra värdena. Spara JSON-exporten så kan ni använda samma regelverk på flera datorer eller i API:t.
Varför är det en varning och inte ett brott på sammanlagd arbetstid?
Snittet räknas över en lång period. När underlaget bara täcker en del av perioden kan snittet sjunka om resten av perioden har mindre arbete. Lägg in hela perioden för ett säkert besked.
Räknas sommartid?
Ja. Natten då klockan ställs fram är en timme kortare och natten då den ställs tillbaka en timme längre. Arbetad tid, vila, rast, övertid och OB räknas i verklig tid. Se Sommar- och vintertid.