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

  1. Hämta en nyckelGratisnivån ger 1 000 kontroller per månad. Nyckeln kommer direkt till din e-post.
  2. Skicka ett schemaSom text, en rad per pass, eller som poster med datum, start, slut och rast.
  3. 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.

AnropGörRäknas
POST /api/v1/analyzeKontrollerar ett schema mot valt regelverk och returnerar bedömning, avvikelser, regler och veckosammanställning. Fält · SvarJa
GET /api/v1/rulesetsInbyggda regelverk och avtalsmallar med alla gränsvärden. ?q=handels söker.Nej
GET /api/v1/catalogKatalogen med 203 kollektivavtal och vilken mall som gäller för vart och ett.Nej
GET /api/v1/rulesRegler, 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åer

Vanliga 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.