Klirr Docs

Anställda

Personalregistret – lista, skapa, hämta och uppdatera anställda via /3/employees.

Personalresursen speglar Fortnox /3/employees. Den anställde adresseras på sitt anställningsnummer (EmployeeId), och numret kan inte ändras när det väl är satt.

Scope: salary · Kräver AI Pro

Endpoints

Metod och sökvägBeskrivning
GET/api/v1/3/employeesLista anställda
POST/api/v1/3/employeesSkapa en anställd. Svarar 200, inte 201.
GET/api/v1/3/employees/{EmployeeId}Hämta en anställd
PUT/api/v1/3/employees/{EmployeeId}Uppdatera en anställd (partiellt)

Bas-URL: https://app.klirr.ai/api/v1. Skrivningar kuverteras i Employee.

POST svarar 200 precis som Fortnox gör. Det är den enda skapande endpointen i API:t som inte svarar 201.

Det finns ingen DELETE, varken hos Fortnox eller i Klirr. Att radera en anställd skulle radera bokförda lönespecifikationer. Avsluta i stället anställningen med PUT och "Inactive": true.

Listparametrar

Utöver paginering (page, limit, offset) och sortorder (asc/desc). Listan sorteras alltid på EmployeeId.

ParameterVärdenBeskrivning
filteractive, inactiveUtan filter returneras alla. Okänt värde ger 400.
employeeidtextExakt anställningsnummer. Klirr-tillägg; finns inte hos Fortnox.

sortby och lastmodified stöds inte och ger 400 i stället för ett tyst ofiltrerat svar.

Personnummer maskeras alltid

PersonalIdentityNumber returneras alltid maskerat som ÅÅÅÅMMDD-XXXX (till exempel 19900101-XXXX), eller XXXXXXXX-XXXX om numret inte har tolv siffror. API:t lämnar aldrig ut det fullständiga personnumret.

Skickar du tillbaka det maskerade värdet i en PUT ignoreras fältet, och det sparade personnumret lämnas oförändrat. Du kan alltså läsa en anställd, ändra ett fält och skicka tillbaka hela objektet utan att personnumret förstörs. Vill du ändra personnumret skickar du det fullständiga numret.

Fält

Fullständig form (GET /3/employees/{EmployeeId}, och svaret på POST/PUT).

FältTypSkrivskyddatBeskrivning
EmployeeIdstringefter skapandeAnställningsnummer. Utelämnas det vid POST tilldelas ett automatiskt. Kan inte ändras.
PersonalIdentityNumberstringnejPersonnummer. Maskerat i svaret, se ovan.
FirstNamestringnejObligatoriskt vid POST.
LastNamestringnejObligatoriskt vid POST.
FullNamestringjaHärlett ur för- och efternamn. Ignoreras vid skrivning.
EmailstringnejE-post.
Phone1stringnejTelefon.
EmploymentDatestringnejAnställningsdatum, YYYY-MM-DD.
MonthlySalarystringnejMånadslön. Sträng, som hos Fortnox. Tal tas också emot. Ett värde som inte går att tolka ignoreras.
HourlyPaystringnejTimlön. Sträng, som MonthlySalary.
Inactivebooleannejtrue för avslutad anställd. Observera att fältet är inverterat jämfört med Active på andra resurser.
SalaryFormMAN | TIMnejMånads- eller timlön. Okänt värde ignoreras.
PersonelTypeTJM | ARBnejTjänsteman eller arbetare. Vid skrivning tas även FORETAGSLEDARE emot (bara om bolagsformen tillåter det, annars 400). Svaret är alltid TJM eller ARB. Okänt värde ignoreras.

SalaryForm och PersonelType har färre värden hos Fortnox än i Klirr: en företagsledare returneras som TJM och en deltidsanställd som MAN. Skickar du tillbaka samma värde i en PUT skrivs den mer precisa kategorin i Klirr inte över.

Övriga Fortnox-fält (adress, BankAccountNo, TaxTable, TaxColumn, EmploymentForm, semestersaldon, DatedWages m.fl.) modelleras inte av Klirr. De returneras alltid, med Fortnox nollvärde ("", 0, false eller []) eller med det värde du senast skickade, och slås vid PUT ihop med de sparade. Klirr använder dem inte i sin egen lönekörning. Till exempel härleds skattetabellen inte ur dem.

Listform

Personalresursen har ingen reducerad listform. GET /3/employees returnerar samma fält som den fullständiga formen plus @url. Omvänt saknar den fullständiga formen @url. Båda delarna stämmer med Fortnox.

Skapa en anställd

curl -X POST https://app.klirr.ai/api/v1/3/employees \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{"Employee":{"FirstName":"Anna","LastName":"Svensson","PersonalIdentityNumber":"<personnummer>","EmploymentDate":"2026-09-01","MonthlySalary":"32000","SalaryForm":"MAN","PersonelType":"TJM"}}'

Svar (200), förkortat. De omodellerade Fortnox-fälten är utelämnade här:

{
  "Employee": {
    "EmployeeId": "1",
    "PersonalIdentityNumber": "19900101-XXXX",
    "FirstName": "Anna",
    "LastName": "Svensson",
    "FullName": "Anna Svensson",
    "Email": "",
    "Phone1": "",
    "EmploymentDate": "2026-09-01",
    "MonthlySalary": "32000",
    "HourlyPay": "",
    "Inactive": false,
    "SalaryForm": "MAN",
    "PersonelType": "TJM",
    "EmploymentForm": "TV",
    "TaxTable": "",
    "TaxColumn": 0,
    "VacationDaysSaved": 0,
    "DatedWages": []
  }
}

Lista anställda

curl "https://app.klirr.ai/api/v1/3/employees?filter=active" \
  -H "Authorization: Bearer <access_token>"
{
  "Employees": [
    {
      "@url": "https://app.klirr.ai/api/v1/3/employees/1",
      "EmployeeId": "1",
      "PersonalIdentityNumber": "19900101-XXXX",
      "FirstName": "Anna",
      "LastName": "Svensson",
      "FullName": "Anna Svensson",
      "Inactive": false,
      "SalaryForm": "MAN",
      "PersonelType": "TJM"
    }
  ],
  "MetaInformation": { "@TotalResources": 1, "@TotalPages": 1, "@CurrentPage": 1 }
}

Raden ovan är förkortad. Varje rad innehåller alla fält i den fullständiga formen.

Uppdatera en anställd

PUT ändrar bara de fält du skickar. Använd "API_BLANK" för att tömma ett fält. Det fungerar inte på FirstName, LastName, Inactive eller PersonelType, som ger 400. Se Fortnox-kompatibilitet.

curl -X PUT https://app.klirr.ai/api/v1/3/employees/1 \
  -H "Authorization: Bearer <access_token>" \
  -H "Content-Type: application/json" \
  -d '{"Employee":{"Inactive":true}}'

Fel

StatusCodeNär
4009000400FirstName eller LastName saknas, okänt filter, sortby eller lastmodified skickat, API_BLANK på ett obligatoriskt fält, eller FORETAGSLEDARE när bolagsformen inte tillåter det.
4039000403Organisationens plan rymmer inte fler aktiva anställda.
4049000404Kan inte hitta den anställde.
4099000409Anställningsnumret används redan.

Allmänna fel (401, 403, 429) beskrivs under Felkoder.

On this page