Dataverifiering API
Verifiera företagsinformation och hämta kreditupplysningar direkt via API. Alla anrop autentiseras med din API-nyckel.
Översikt
| Funktion | Beskrivning | Kräver |
|---|---|---|
| Företagsuppslag | Slå upp företagsinformation med organisationsnummer eller internt ID | DataVerificationEnabled |
| Kreditupplysning | Hämta kreditbetyg, riskprognos och riskklass för ett företag | DataVerificationEnabled |
| Firmateckningsanalys | AI-analys av firmateckningsregler med matchning mot styrelsemedlemmar | DataVerificationEnabled |
| PEP/Sanktionsscreening | Screening mot PEP-listor, sanktionslistor och mediakällor | Kommer snart |
Autentisering
Alla anrop kräver en giltig API-nyckel i X-Api-Key-headern:
curl -H "X-Api-Key: YOUR_API_KEY" https://id.tic.io/api/v1/data/...
Kvotering
Företagsuppslag, kreditupplysning och firmateckningsanalys räknas mot din månatliga API-kvot
(IdentityApiRequestsPerMonth i din prenumerationsplan). Kvoten räknas per kalendermånad (UTC)
och nollställs den första i varje månad. När kvoten är förbrukad returneras 429 Too Many Requests
för resterande anrop den månaden.
Varje svar innehåller headers som visar var du ligger:
| Header | Beskrivning |
|---|---|
X-RateLimit-Limit |
Antal API-anrop som ingår per månad |
X-RateLimit-Used |
Genomförda anrop hittills denna månad, inklusive det aktuella |
X-RateLimit-Remaining |
Anrop kvar innan 429 returneras |
X-RateLimit-Reset |
Tidpunkt (Unix-sekunder, UTC) när kvoten nollställs |
Headers utelämnas när ingen kvot gäller. Ett avvisat anrop får dessutom Retry-After
(sekunder till nollställning) och samma siffror i svarskroppen:
{
"error": "quota_exceeded",
"message": "Monthly API request quota exceeded: 500 of 500 requests used. The quota resets at 2026-10-01T00:00:00Z.",
"limit": 500,
"used": 500,
"remaining": 0,
"resetsAtUtc": "2026-10-01T00:00:00Z"
}
Aktuell förbrukning visas även under Statistik i portalen och i
fältet apiRequests från GET /api/v1/usage.
Företagsuppslag med organisationsnummer
Slå upp företagsinformation med organisationsnummer och landskod.
/api/v1/data/company/{countryCode}/{regNr}
URL-parametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
| countryCode Required | string | ISO 3166-1 alpha-2 landskod. Stöds just nu: SE |
| regNr Required | string | Organisationsnummer (t.ex. 5566778899) |
curl https://id.tic.io/api/v1/data/company/SE/5566778899 \
-H "X-Api-Key: YOUR_API_KEY"
Response
{
"metadata": {
"requestedAtUtc": "2026-02-10T10:30:00Z",
"source": "typesense",
"countryCode": "SE"
},
"data": {
"companyId": 12345,
"registrationNumber": "5566778899",
"companyName": "Exempel AB",
"legalEntityType": "Aktiebolag",
"purpose": "Bolaget ska bedriva konsultverksamhet inom IT...",
"registrationDate": "2004-01-01",
"activityStatus": "IsActive",
"lastStatus": {
"statusType": "IsActive",
"statusDate": "2004-01-15",
"description": "Bolaget har registrerats"
},
"registeredAddress": {
"streetAddress": "Storgatan 1",
"co": null,
"postalCode": "111 22",
"city": "Stockholm",
"countryCode": "SWE"
},
"isRegisteredForVAT": true,
"isRegisteredForFTax": true,
"isRegisteredForPayroll": true,
"sniCodes2025": [
{
"code": "62010",
"name": "Dataprogrammering",
"section": "J",
"rank": 1
}
],
"sniCodes2007": [
{
"code": "62010",
"name": "Dataprogrammering",
"section": "J",
"rank": 1
}
],
"employeesCategory": "10-19 anställda",
"turnoverCategory": "10-19 MSEK",
"registeredOffice": {
"municipality": "Stockholm",
"municipalityCode": "0180",
"county": "Stockholms län",
"countyCode": "01"
},
"signatoryDescription": "Styrelsen i sin helhet",
"representatives": [
{
"fullName": "Anna Andersson",
"personalIdentityNumber": "19800101-****",
"positionType": "BoardMember",
"positionDescription": "Styrelseledamot",
"positionStart": "2021-01-01",
"positionEnd": null,
"roleByCompanyName": null,
"roleByCompanyRegistrationNumber": null,
"employeeRepresentative": false,
"auditorType": null
}
],
"beneficialOwners": [
{
"fullName": "Erik Eriksson",
"personalIdentityNumber": "19750515-****",
"countryOfResidenceCode": "SE",
"citizenshipCountryCode": "SE",
"extentCode": "KontrollOver50",
"extentDescription": "Kontroll över mer än 50 procent",
"governDescription": "Röstandel",
"throughName": null,
"throughRegistrationNumber": null,
"fromDate": "2019-01-01"
}
]
}
}
Företagsuppslag med internt ID
Slå upp företagsinformation med internt företags-ID.
/api/v1/data/company/id/{companyId}
URL-parametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
| companyId Required | int | Internt företags-ID |
curl https://id.tic.io/api/v1/data/company/id/12345 \
-H "X-Api-Key: YOUR_API_KEY"
Response
Samma svarsformat som företagsuppslag med organisationsnummer.
Kreditupplysning med organisationsnummer
Hämta kreditbetyg, riskklass och riskprognos för ett företag.
/api/v1/data/credit/{countryCode}/{regNr}
URL-parametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
| countryCode Required | string | ISO 3166-1 alpha-2 landskod. Stöds just nu: SE |
| regNr Required | string | Organisationsnummer |
curl https://id.tic.io/api/v1/data/credit/SE/5566778899 \
-H "X-Api-Key: YOUR_API_KEY"
Response
{
"metadata": {
"requestedAtUtc": "2026-02-10T10:30:00Z",
"source": "creditscore",
"countryCode": "SE"
},
"data": {
"creditScore": 72,
"riskForecastClass": 3,
"riskForecast": 2.45
}
}
Om inget kreditbetyg kan beräknas returneras "data": null.
Kreditupplysning med internt ID
Hämta kreditbetyg, riskklass och riskprognos med internt företags-ID.
/api/v1/data/credit/id/{companyId}
URL-parametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
| companyId Required | int | Internt företags-ID |
curl https://id.tic.io/api/v1/data/credit/id/12345 \
-H "X-Api-Key: YOUR_API_KEY"
Response
Samma svarsformat som kreditupplysning med organisationsnummer.
Firmateckningsanalys
AI-genererad analys av firmateckningsregler. Tolkar firmateckningsbeskrivningen från Bolagsverket och matchar reglerna mot registrerade styrelsemedlemmar och funktionärer.
signatoryDescription innan du fattar beslut baserat
på analysen. Använd analysen som ett stöd, inte som en auktoritativ källa.
/api/v1/data/company/{countryCode}/{regNr}/signing-authority-analysis
URL-parametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
| countryCode Required | string | ISO 3166-1 alpha-2 landskod. Stöds just nu: SE |
| regNr Required | string | Organisationsnummer (t.ex. 5566778899) |
curl https://id.tic.io/api/v1/data/company/SE/5566778899/signing-authority-analysis \
-H "X-Api-Key: YOUR_API_KEY"
Response
{
"metadata": {
"requestedAtUtc": "2026-02-17T10:30:00Z",
"source": "Bolagsverket + AI",
"countryCode": "SE"
},
"data": {
"companyId": 12345,
"registrationNumber": "5566778899",
"companyName": "Exempel AB",
"signatoryDescription": "Firman tecknas av styrelsen. Firman tecknas två i förening.",
"analysis": {
"summary": "Firman tecknas av styrelsen gemensamt, eller av två styrelseledamöter i förening.",
"rules": [
{
"description": "Styrelsen gemensamt",
"type": "board",
"requiredSignatories": null,
"requiredRoles": ["LE", "OF"]
},
{
"description": "Två i förening",
"type": "joint",
"requiredSignatories": 2,
"requiredRoles": ["LE", "OF", "VD"]
}
],
"eligiblePersons": [
{
"personId": 42,
"personalIdentityNumber": "198001011234",
"name": "Anna Svensson",
"roles": ["Verkställande direktör", "Styrelseledamot"],
"canSignAlone": false,
"applicableRules": ["Två i förening"]
}
]
}
}
}
Om företaget saknar registrerad firmateckningsbeskrivning returneras
"signatoryDescription": null och "analysis": null.
Med internt ID
Samma analys kan hämtas med internt företags-ID istället för organisationsnummer.
/api/v1/data/company/id/{companyId}/signing-authority-analysis
URL-parametrar
| Parameter | Typ | Beskrivning |
|---|---|---|
| companyId Required | int | Internt företags-ID |
curl https://id.tic.io/api/v1/data/company/id/12345/signing-authority-analysis \
-H "X-Api-Key: YOUR_API_KEY"
Response
Samma svarsformat som firmateckningsanalys med organisationsnummer.
SigningAuthorityAnalysis-objekt
| Fält | Typ | Beskrivning |
|---|---|---|
summary | string | Sammanfattning på svenska av firmateckningsreglerna |
rules | SigningRule[] | Tolkade firmateckningsregler |
eligiblePersons | EligiblePerson[] | Personer som matchar firmateckningsreglerna |
SigningRule-objekt
| Fält | Typ | Beskrivning |
|---|---|---|
description | string | Beskrivning av regeln |
type | string | Regeltyp: alone, joint, board, other |
requiredSignatories | int? | Antal signatärer som krävs (t.ex. 2 för "två i förening") |
requiredRoles | string[] | Rolltyper som krävs (t.ex. ["VD", "LE"]) |
EligiblePerson-objekt
| Fält | Typ | Beskrivning |
|---|---|---|
personId | int? | Internt person-ID (null om personen inte kunde matchas) |
personalIdentityNumber | string? | Personnummer eller samordningsnummer. För personer utan svenskt nummer (t.ex. utländska styrelseledamöter) endast det födelsedatum som är registrerat hos Bolagsverket – se identityNumberType |
identityNumberType | string | Vad personalIdentityNumber innehåller: personalIdentityNumber (personnummer eller samordningsnummer), birthDate (endast födelsedatum, ÅÅÅÅMM, ÅÅÅÅMMDD eller ÅÅÅÅMMDD0000 – inte unikt och ska aldrig ensamt användas som identitet), none (saknas), unknown (annat format) |
name | string | Personens namn |
nameInSignatoryText | string? | Namnet ordagrant som det står i firmateckningen, eller null om personen är behörig genom sin roll |
matchType | string | Hur säkert personen är kopplad till en nuvarande funktionär: exact (personnummer stämmer och personen är behörig genom sin roll, eller namnet i firmateckningen passar entydigt), fuzzyName (personnummer stämmer men namnet i firmateckningen avviker, t.ex. efter namnbyte eller stavningsskillnad, eller passar flera personer – bör kontrolleras manuellt), unmatched (kunde inte kopplas till någon nuvarande funktionär, t.ex. för att numret saknas, inte finns i styrelsen eller är ett födelsedatum som flera funktionärer delar) |
roles | string[] | Personens roller i företaget |
canSignAlone | bool | Om personen kan teckna firman ensam |
applicableRules | string[] | Vilka regler som gäller för personen |
Företagsuppslag datamodell
CompanyLookupData
| Fält | Typ | Beskrivning |
|---|---|---|
companyId | int | Internt företags-ID |
registrationNumber | string | Organisationsnummer |
companyName | string? | Företagets juridiska namn |
legalEntityType | string? | Bolagsform (t.ex. Aktiebolag, Handelsbolag) |
purpose | string? | Verksamhetsbeskrivning |
registrationDate | string? | Registreringsdatum (ISO 8601, t.ex. 2004-01-01) |
activityStatus | string | Aktivitetsstatus: HasNeverBeenActive, IsActive, IsNoLongerActive, Unknown |
lastStatus | LastStatus? | Senaste status (se nedan) |
registeredAddress | Address? | Senast registrerad adress (se nedan) |
isRegisteredForVAT | bool? | Momsregistrerad |
isRegisteredForFTax | bool? | F-skattregistrerad |
isRegisteredForPayroll | bool? | Registrerad som arbetsgivare |
sniCodes2025 | SniCode[]? | SNI 2025-koder (branschklassificering) |
sniCodes2007 | SniCode[]? | SNI 2007-koder (branschklassificering) |
employeesCategory | string? | Antal anställda (intervall) |
turnoverCategory | string? | Omsättning (intervall) |
registeredOffice | RegisteredOffice? | Säte (kommun och län) |
signatoryDescription | string? | Firmateckningsbeskrivning |
representatives | Representative[]? | Nuvarande styrelseledamöter och firmatecknare |
beneficialOwners | BeneficialOwner[]? | Verkliga huvudmän |
Address-objekt
| Fält | Typ | Beskrivning |
|---|---|---|
streetAddress | string? | Gatuadress |
co | string? | C/O-adress |
postalCode | string? | Postnummer |
city | string? | Postort |
countryCode | string? | Landskod (ISO 3166-1 alpha-3, t.ex. SWE) |
SniCode-objekt
Används av både sniCodes2025 och sniCodes2007.
| Fält | Typ | Beskrivning |
|---|---|---|
code | string? | SNI-kod |
name | string? | Branschbeskrivning |
section | string? | SNI-sektion (t.ex. J = Informations- och kommunikationsverksamhet) |
rank | byte? | Rangordning (1 = huvudbransch) |
Representative-objekt
Personnummer maskeras som YYYYMMDD-****.
| Fält | Typ | Beskrivning |
|---|---|---|
fullName | string? | Fullständigt namn |
personalIdentityNumber | string? | Maskerat personnummer (YYYYMMDD-****) |
positionType | string? | Befattningstyp (t.ex. BoardMember, CEO) |
positionDescription | string? | Befattningsbeskrivning |
positionStart | string? | Startdatum (ISO 8601, t.ex. 2021-01-01) |
positionEnd | string? | Slutdatum (ISO 8601, null om pågående) |
roleByCompanyName | string? | Roll via företagsnamn |
roleByCompanyRegistrationNumber | string? | Roll via organisationsnummer |
employeeRepresentative | bool? | Arbetstagarrepresentant |
auditorType | string? | Revisorstyp (CertifiedPublicAccountant, ApprovedAccountant, ForeignAuditor) |
BeneficialOwner-objekt
Verklig huvudman. Personnummer maskeras som YYYYMMDD-****.
| Fält | Typ | Beskrivning |
|---|---|---|
fullName | string? | Fullständigt namn |
personalIdentityNumber | string? | Maskerat personnummer (YYYYMMDD-****) |
countryOfResidenceCode | string? | Bosättningsland |
citizenshipCountryCode | string? | Medborgarskapsland |
extentCode | string? | Omfattningskod |
extentDescription | string? | Omfattningsbeskrivning (t.ex. "Kontroll över mer än 50 procent") |
governDescription | string? | Typ av kontroll (t.ex. "Röstandel") |
throughName | string? | Namn på mellanliggande bolag |
throughRegistrationNumber | string? | Organisationsnummer för mellanliggande bolag |
fromDate | string? | Startdatum (ISO 8601, t.ex. 2019-01-01) |
LastStatus-objekt
Senaste registrerade status hos Bolagsverket.
| Fält | Typ | Beskrivning |
|---|---|---|
statusType | string | Statustyp (t.ex. IsActive, BankruptcyProceedingsCommenced, LiquidationDecided) |
statusDate | string? | Statusdatum (ISO 8601, t.ex. 2024-03-15) |
description | string? | Statusbeskrivning |
RegisteredOffice-objekt
| Fält | Typ | Beskrivning |
|---|---|---|
municipality | string? | Kommun |
municipalityCode | string? | Kommunkod |
county | string? | Län |
countyCode | string? | Länskod |
Kreditupplysning datamodell
CompanyCreditData
| Fält | Typ | Beskrivning |
|---|---|---|
creditScore | int? | Kreditbetyg (0-100, högre = bättre kreditvärdighet) |
riskForecastClass | byte? | Riskklass (1-5, där 1 = högst risk) |
riskForecast | decimal? | Riskprognos (sannolikhet för betalningssvårigheter). Värdet anges i procent, t.ex. 0.3 = 0,3% risk, inte 30% |
Om inget kreditbetyg kan beräknas för det angivna företaget returneras "data": null.
Detta kan inträffa om företaget saknar tillräckligt underlag för kreditbedömning.
Felhantering
| Status | Beskrivning |
|---|---|
400 |
Ogiltig landskod (stöds just nu: SE) |
401 |
Ogiltig eller saknad API-nyckel |
403 |
Funktionen är inte aktiverad för din tenant (DataVerificationEnabled saknas) |
429 |
Månatlig API-kvot förbrukad. Svaret har Retry-After samt limit, used och resetsAtUtc i kroppen, se Kvotering |