{"openapi":"3.1.0","info":{"title":"BolagsAPI","version":"1.0.0","description":"Swedish Company Data API - Access official data from Bolagsverket and SCB","contact":{"email":"hello@bolagsapi.se","url":"https://bolagsapi.se"},"license":{"name":"Proprietary","url":"https://bolagsapi.se/terms"}},"servers":[{"url":"https://api.bolagsapi.se","description":"Production server"}],"tags":[{"name":"Statistics","description":"Business bankruptcies, new businesses, company counts and industry context (Starter+)"},{"name":"Identity","description":"Auth by Hugo response contracts; these endpoints use auth.byhugo.se. See https://bolagsapi.se/identity/docs#response-schemas"},{"name":"Company","description":"Company lookup and information"},{"name":"Account","description":"Current API caller account and usage"},{"name":"Person","description":"Person-to-company role and beneficial ownership lookups"},{"name":"Validation","description":"Organization number validation"},{"name":"Search","description":"Company search"},{"name":"Reports","description":"Annual reports"},{"name":"Financials","description":"Parsed financial data from annual reports (Starter+ plans)"},{"name":"Analytics","description":"Company analytics and insights"},{"name":"Industry","description":"Industry analysis"},{"name":"Valuation","description":"Company valuation (Pro+ plans)"},{"name":"Market","description":"Saved market selections, summaries and map points"},{"name":"Export","description":"Bulk data export"},{"name":"Webhooks","description":"Real-time company change notifications (Pro+ plans)"},{"name":"Watchlists","description":"Company watchlists with an event inbox and acknowledgement (Pro+ plans)"},{"name":"Regulatory","description":"Finansinspektionen (FI) regulatory data (Starter+ plans)"},{"name":"IP","description":"PRV intellectual property data - trademarks and patents (Starter+ plans)"},{"name":"TaxRates","description":"Municipal tax rates from Skatteverket/SCB open data"},{"name":"Rates","description":"Interest rates and exchange rates from Sveriges Riksbank"},{"name":"Screening","description":"PEP & Sanctions screening for AML/KYC compliance (Starter+ plans)"},{"name":"BRF","description":"Optional BRF module: structured housing association data"},{"name":"Coverage","description":"Public data coverage per legal form"}],"paths":{"/v1/export/{id}/retain":{"post":{"tags":["Export"],"summary":"Extend export availability","operationId":"retainExportJob","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Export job ID"}],"description":"Extend an available ready file to at least 60 days from now. Access restrictions still apply; no new API units or export charges. Expired files cannot be revived.","responses":{"200":{"description":"Retained export","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportJob"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"description":"Export is not ready or has expired"},"410":{"description":"Source market expired or was invalidated; retaining the export does not extend market access."},"503":{"description":"Export temporarily unavailable"}}}},"/v1/export/{id}":{"get":{"tags":["Export"],"summary":"Get export status","operationId":"getExportJob","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Export job ID"}],"description":"Poll after an asynchronous export. Access remains scoped to the paying account and personal/team context. When ready, download_url points to an authenticated download. Failed jobs include an error code. Reusing the original Idempotency-Key never creates another charge.","responses":{"200":{"description":"Current status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportJob"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"description":"Export is not ready or has expired"},"410":{"description":"Source market expired or was invalidated; retaining the export does not extend market access."},"503":{"description":"Export temporarily unavailable"}}}},"/v1/export/{id}/download":{"get":{"tags":["Export"],"summary":"Download completed export","operationId":"downloadExportJob","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Export job ID"}],"description":"Streams the complete frozen file, with current access checks. Downloading again consumes no additional export units. Save the file before expires_at.","responses":{"200":{"description":"Complete export file","content":{"text/csv":{"schema":{"type":"string"}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ExportRow"}}},"application/x-ndjson":{"schema":{"type":"string","description":"One ExportRow JSON object per line"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"description":"Export is not ready or has expired"},"410":{"description":"Source market expired or was invalidated; retaining the export does not extend market access."},"503":{"description":"Export temporarily unavailable"}}}},"/v1/watchlists":{"get":{"tags":["Watchlists"],"summary":"List watchlists","operationId":"listWatchlists","description":"List your watchlists with member and unacknowledged event counts.","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Watchlists","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Watchlists require a Pro plan or higher"},"404":{"description":"Watchlist not found. Another account's list is also reported as not found."}}},"post":{"tags":["Watchlists"],"summary":"Create watchlist","operationId":"createWatchlist","description":"Create an empty watchlist. Requires Pro plan or higher.","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistInput"}}}},"responses":{"201":{"description":"Created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Watchlist"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Watchlists require a Pro plan or higher"},"404":{"description":"Watchlist not found. Another account's list is also reported as not found."}}}},"/v1/watchlists/{id}":{"get":{"tags":["Watchlists"],"summary":"Get watchlist","operationId":"getWatchlist","description":"Get one watchlist.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Watchlist id","example":"wl_3f9a1c2b4d5e6f70"}],"responses":{"200":{"description":"Watchlist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Watchlist"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Watchlists require a Pro plan or higher"},"404":{"description":"Watchlist not found. Another account's list is also reported as not found."}}},"patch":{"tags":["Watchlists"],"summary":"Update watchlist","operationId":"updateWatchlist","description":"Rename a watchlist or change its description.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Watchlist id","example":"wl_3f9a1c2b4d5e6f70"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistInput"}}}},"responses":{"200":{"description":"Watchlist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Watchlist"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Watchlists require a Pro plan or higher"},"404":{"description":"Watchlist not found. Another account's list is also reported as not found."}}},"delete":{"tags":["Watchlists"],"summary":"Delete watchlist","operationId":"deleteWatchlist","description":"Delete the watchlist with its membership history and event inbox. Webhooks that filter on it stop matching.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Watchlist id","example":"wl_3f9a1c2b4d5e6f70"}],"responses":{"200":{"description":"Deleted","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Watchlists require a Pro plan or higher"},"404":{"description":"Watchlist not found. Another account's list is also reported as not found."}}}},"/v1/watchlists/{id}/members":{"get":{"tags":["Watchlists"],"summary":"List members","operationId":"listWatchlistMembers","description":"Members in the order they were added. Set include_removed=true to include removed memberships.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Watchlist id","example":"wl_3f9a1c2b4d5e6f70"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":1000,"default":100}},{"name":"include_removed","in":"query","required":false,"schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Members","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistMemberPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Watchlists require a Pro plan or higher"},"404":{"description":"Watchlist not found. Another account's list is also reported as not found."}}},"post":{"tags":["Watchlists"],"summary":"Import members","operationId":"importWatchlistMembers","description":"Add up to 10 000 companies per request as JSON or CSV. Every row gets an outcome. A company already in the list is already_member and keeps its original added_at and reference; a repeat within the same request is duplicate. Personal identity numbers (sole traders) are rejected and not echoed. A company removed earlier and imported again starts a new membership.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Watchlist id","example":"wl_3f9a1c2b4d5e6f70"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistImportRequest"}},"text/csv":{"schema":{"type":"string"},"example":"orgnr;reference\n5567037485;supplier-17\n556677-8899;supplier-18"}}},"responses":{"200":{"description":"Per-row outcomes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistImportResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Watchlists require a Pro plan or higher"},"404":{"description":"Watchlist not found. Another account's list is also reported as not found."}}}},"/v1/watchlists/{id}/members/{orgnr}":{"delete":{"tags":["Watchlists"],"summary":"Remove member","operationId":"removeWatchlistMember","description":"End the company's membership. Its earlier events stay in the inbox; no new events are added.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Watchlist id","example":"wl_3f9a1c2b4d5e6f70"},{"name":"orgnr","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Removed","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string"}}}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Watchlists require a Pro plan or higher"},"404":{"description":"Watchlist not found. Another account's list is also reported as not found."}}}},"/v1/watchlists/{id}/events":{"get":{"tags":["Watchlists"],"summary":"List inbox events","operationId":"listWatchlistEvents","description":"Events for member companies in the order they were added to the inbox. Paging with next_cursor never skips an event, also while new events arrive; reading again from an earlier cursor replays the same events with the same ids. An event is added when the company was a member at the change's detected_at. Events are not backfilled from before a company was added or before the list was created.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Watchlist id","example":"wl_3f9a1c2b4d5e6f70"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Return events after this cursor (from next_cursor or an event's cursor). Omit to start from the oldest event."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["all","acknowledged","unacknowledged"],"default":"all"}},{"name":"event_type","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated webhook event types","example":"company.name_changed,company.address_changed"},{"name":"orgnr","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Events","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistEventPage"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Watchlists require a Pro plan or higher"},"404":{"description":"Watchlist not found. Another account's list is also reported as not found."}}}},"/v1/watchlists/{id}/events/export":{"get":{"tags":["Watchlists"],"summary":"Export inbox events","operationId":"exportWatchlistEvents","description":"CSV export with the same filters as the inbox, at most 10 000 rows per request. When more rows remain, the X-Next-Cursor header holds the cursor for the next export.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Watchlist id","example":"wl_3f9a1c2b4d5e6f70"},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"Return events after this cursor (from next_cursor or an event's cursor). Omit to start from the oldest event."},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":10000,"default":10000}},{"name":"status","in":"query","required":false,"schema":{"type":"string","enum":["all","acknowledged","unacknowledged"],"default":"all"}},{"name":"event_type","in":"query","required":false,"schema":{"type":"string"},"description":"Comma-separated webhook event types","example":"company.name_changed,company.address_changed"},{"name":"orgnr","in":"query","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"CSV","headers":{"X-Next-Cursor":{"schema":{"type":"string"}}},"content":{"text/csv":{"schema":{"type":"string"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Watchlists require a Pro plan or higher"},"404":{"description":"Watchlist not found. Another account's list is also reported as not found."}}}},"/v1/watchlists/{id}/events/acknowledge":{"post":{"tags":["Watchlists"],"summary":"Acknowledge events","operationId":"acknowledgeWatchlistEvents","description":"Mark events as handled, by event id or every event up to a cursor. Repeating the call changes nothing.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Watchlist id","example":"wl_3f9a1c2b4d5e6f70"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistAcknowledgeRequest"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistAcknowledgeResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Watchlists require a Pro plan or higher"},"404":{"description":"Watchlist not found. Another account's list is also reported as not found."}}}},"/v1/watchlists/{id}/events/unacknowledge":{"post":{"tags":["Watchlists"],"summary":"Undo acknowledgement","operationId":"unacknowledgeWatchlistEvents","description":"Mark acknowledged events as unhandled again.","security":[{"bearerAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Watchlist id","example":"wl_3f9a1c2b4d5e6f70"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistAcknowledgeRequest"}}}},"responses":{"200":{"description":"Result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchlistAcknowledgeResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Watchlists require a Pro plan or higher"},"404":{"description":"Watchlist not found. Another account's list is also reported as not found."}}}},"/v1/statistics/bankruptcies":{"get":{"tags":["Statistics"],"security":[{"bearerAuth":[]}],"operationId":"getBusinessBankruptcies","summary":"Business bankruptcies by month","description":"Starter+. Official business bankruptcies and affected employees. Up to 24 months. Filter county OR grouped SNI 2007 industry; their intersection is unsupported. Null/marked components make an aggregate unavailable, not zero. National monthly totals may therefore be unavailable when county components are missing or marked. calculation_method describes the method; missing_reason and components explain unavailable values for each measure.","parameters":[{"name":"from","description":"First period, inclusive. Defaults to the last 12 published periods; with to only, returns that period.","in":"query","schema":{"type":"string","pattern":"^[0-9]{4}-(0[1-9]|1[0-2])$"}},{"name":"to","description":"Last period, inclusive. Defaults to latest available, which may lag the calendar.","in":"query","schema":{"type":"string"}},{"name":"county","description":"Two-digit county code; omitted means all counties. Available codes and labels are included in the response.","in":"query","schema":{"type":"string"}},{"name":"industry","description":"Grouped SNI 2007 industry, e.g. 41-43. Available groups are included in the response.","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Business statistics with source and coverage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessTimeSeries"}}}},"400":{"description":"Invalid or unsupported parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}},"401":{"description":"Authentication required"},"403":{"description":"Starter or higher required, or endpoint restricted"},"404":{"description":"Company or source unavailable"},"422":{"description":"Period unavailable, incompatible filters or unsupported comparison","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}},"429":{"description":"Rate or account quota exceeded"},"503":{"description":"Data temporarily unavailable; inspect reason","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}}}}},"/v1/statistics/new-businesses":{"get":{"tags":["Statistics"],"security":[{"bearerAuth":[]}],"operationId":"getNewBusinesses","summary":"New business activity by quarter","description":"Starter+. Genuinely new business activity under Tillväxtanalys definitions, not newly registered legal entities. Up to 12 quarters; county and grouped SNI 2007 industry can be combined. calculation_method, missing_reason and components follow the same rules as bankruptcies; missing is never zero.","parameters":[{"name":"from","description":"First period, inclusive. Defaults to the last 12 published periods; with to only, returns that period.","in":"query","schema":{"type":"string","pattern":"^[0-9]{4}-Q[1-4]$"}},{"name":"to","description":"Last period, inclusive. Defaults to latest available, which may lag the calendar.","in":"query","schema":{"type":"string"}},{"name":"county","description":"Two-digit county code; omitted means all counties. Available codes and labels are included in the response.","in":"query","schema":{"type":"string"}},{"name":"industry","description":"Grouped SNI 2007 industry, e.g. 41-43. Available groups are included in the response.","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Business statistics with source and coverage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessTimeSeries"}}}},"400":{"description":"Invalid or unsupported parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}},"401":{"description":"Authentication required"},"403":{"description":"Starter or higher required, or endpoint restricted"},"404":{"description":"Company or source unavailable"},"422":{"description":"Period unavailable, incompatible filters or unsupported comparison","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}},"429":{"description":"Rate or account quota exceeded"},"503":{"description":"Data temporarily unavailable; inspect reason","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}}}}},"/v1/statistics/companies":{"get":{"tags":["Statistics"],"security":[{"bearerAuth":[]}],"operationId":"countCompanies","summary":"Count and group companies in BolagsAPI","description":"Starter+. Current stored organizations counted once per organization number. This is not a national census or historical company count. Null group codes mean unknown; field filters exclude unknown values. Primary SNI codes are used as recorded; their classification version is not verified. Do not automatically compare these cohorts with SNI 2007 benchmarks.","parameters":[{"name":"sni_code","description":"Primary SNI prefix, 2–5 digits as recorded","in":"query","schema":{"type":"string"}},{"name":"municipality","description":"Exact SCB seat municipality code, not postal-code inference","in":"query","schema":{"type":"string"}},{"name":"legal_form","description":"Recorded legal form, e.g. AB","in":"query","schema":{"type":"string"}},{"name":"status","description":"Registration status","in":"query","schema":{"enum":["active","deregistered"]}},{"name":"group_by","description":"Grouping; up to 100 largest groups","in":"query","schema":{"enum":["industry","municipality","legal_form","status"],"default":"legal_form"}}],"responses":{"200":{"description":"Business statistics with source and coverage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessCompanyCounts"}}}},"400":{"description":"Invalid or unsupported parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}},"401":{"description":"Authentication required"},"403":{"description":"Starter or higher required, or endpoint restricted"},"404":{"description":"Company or source unavailable"},"422":{"description":"Period unavailable, incompatible filters or unsupported comparison","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}},"429":{"description":"Rate or account quota exceeded"},"503":{"description":"Data temporarily unavailable; inspect reason","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}}}}},"/v1/industry/{sniCode}/benchmarks":{"get":{"tags":["Statistics"],"security":[{"bearerAuth":[]}],"operationId":"getIndustryBenchmarks","summary":"Industry quartiles for business key figures","description":"Starter+. Compare compatible financial definitions, industry, employee size and year. No automatic SNI conversion or company percentile. Null and source_status preserve missing or suppressed values.","parameters":[{"name":"sniCode","in":"path","required":true,"schema":{"type":"string"}},{"name":"version","description":"Industry classification","in":"query","schema":{"const":"2007"},"required":true},{"name":"year","description":"Defaults to latest published year","in":"query","schema":{"type":"string"}},{"name":"size_class","description":"Employee size","in":"query","schema":{"enum":["001","1-4","1-19","+5","5-9","10-19","+20","20-49","+50","50-99","50-199","100-199","200-499","+500","TOT"]},"required":true},{"name":"metrics","description":"Comma-separated operating_margin, net_margin, equity_ratio, quick_ratio, revenue_per_employee, revenue. Defaults to operating_margin,equity_ratio,revenue_per_employee.","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"Business statistics with source and coverage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessBenchmarks"}}}},"400":{"description":"Invalid or unsupported parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}},"401":{"description":"Authentication required"},"403":{"description":"Starter or higher required, or endpoint restricted"},"404":{"description":"Company or source unavailable"},"422":{"description":"Period unavailable, incompatible filters or unsupported comparison","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}},"429":{"description":"Rate or account quota exceeded"},"503":{"description":"Data temporarily unavailable; inspect reason","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}}}}},"/v1/company/{orgnr}/statistics":{"get":{"tags":["Statistics"],"security":[{"bearerAuth":[]}],"operationId":"getCompanyStatistics","summary":"Industry and regional context for a company","description":"Starter+. Uses the organization's recorded primary SNI and SCB seat county. Returns an industry cohort and the last 12 available periods of regional bankruptcies/new businesses. These are surroundings, not the company's own events or risk. Missing classification or county yields null sections.","parameters":[{"name":"orgnr","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Business statistics with source and coverage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyStatistics"}}}},"400":{"description":"Invalid or unsupported parameters","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}},"401":{"description":"Authentication required"},"403":{"description":"Starter or higher required, or endpoint restricted"},"404":{"description":"Company or source unavailable"},"422":{"description":"Period unavailable, incompatible filters or unsupported comparison","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}},"429":{"description":"Rate or account quota exceeded"},"503":{"description":"Data temporarily unavailable; inspect reason","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BusinessStatisticsError"}}}}}}},"/v1/announcements":{"get":{"tags":["Company"],"operationId":"getAnnouncementFeed","summary":"Company-linked official announcements","security":[{"bearerAuth":[]}],"description":"Starter+. One basic unit per successful request. Stored publications linked by organization number to a known company, in categories 1 (creditor calls), 2 (registrations), and 3 (bankruptcies). Not the complete POIT archive. No person-only publications, full text or personal contact fields. Descending publicationDate then id. For details, use /v1/company/{orgnr}/announcements/{apiPathId}. Reuse returned from/to and nextCursor when paging; this is not a frozen snapshot and newly ingested records can appear on a later refresh.","parameters":[{"name":"from","in":"query","schema":{"type":"string","format":"date"},"description":"Inclusive YYYY-MM-DD, default 29 days before to. Maximum interval: 366 days."},{"name":"to","in":"query","schema":{"type":"string","format":"date"},"description":"Inclusive YYYY-MM-DD, default current UTC date."},{"name":"category","in":"query","schema":{"type":"integer","enum":[1,2,3]}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":50,"default":20}},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"Use nextCursor unchanged, with the same date range and filters. Null means no next page."}],"responses":{"200":{"description":"A page of company-linked publications (possibly empty)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementFeed"}}}},"400":{"description":"Invalid filters or cursor"},"401":{"description":"Authentication required"},"403":{"description":"Starter or higher required, or key restricted"},"429":{"description":"Rate or quota limit"}}}},"/v1/trademarks/decisions":{"get":{"tags":["IP"],"operationId":"getTrademarkDecisions","summary":"Trademark decisions by Nice class","security":[{"bearerAuth":[]}],"description":"Starter+. PRV trademark registrations, refusals and withdrawals across all applicants, newest decision_date first (then id). Records without a known decision date are omitted. Status reflects the current PRV record: a mark registered and later expired is no longer listed as registered.","parameters":[{"name":"nice_class","in":"query","schema":{"type":"string"},"description":"Comma-separated Nice classes 1–45, e.g. 33 or 32,33. A mark matches when it has at least one of them. Omit for all classes."},{"name":"decision","in":"query","schema":{"type":"string"},"description":"Comma-separated subset of registered, refused, withdrawn. Default: all three."},{"name":"since","in":"query","schema":{"type":"string","format":"date"},"description":"Decisions on or after this date (YYYY-MM-DD)"},{"name":"until","in":"query","schema":{"type":"string","format":"date"},"description":"Decisions on or before this date (YYYY-MM-DD)"},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":100,"default":50}},{"name":"offset","in":"query","schema":{"type":"integer","minimum":0,"maximum":10000,"default":0}}],"responses":{"200":{"description":"A page of trademark decisions (possibly empty)","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TrademarkDecisions"}}}},"400":{"description":"Invalid filter"},"401":{"description":"Authentication required"},"403":{"description":"Starter or higher required, or key restricted"},"429":{"description":"Rate or quota limit"}}}},"/v1/market/markets":{"post":{"tags":["Market"],"security":[{"bearerAuth":[]}],"operationId":"createMarket","summary":"Save a market selection","description":"Pro. Creates a durable definition and immutable query, always 202. Maximum 100 markets, two pending calculations per account/team and 100000 companies per query. Oversized selection fails without truncation. All selected breakdowns and named visiting-address points share one version. Five API units per successful GET, including status and point pages; create/refresh, deletion and errors are uncharged. Existing subscription overage and stop limits apply.","parameters":[{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Scoped to account/team and operation. Same normalized request returns the same job without another charge. Conflicts return 409; expired/deleted replay returns 410 without a new job."}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketDefinition"}}}},"responses":{"202":{"description":"MarketAccepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketAccepted"}}}},"400":{"description":"Invalid request or invalid_cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Active API key required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Pro required or account restricted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown or out-of-scope ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"query_not_ready, query_failed (job_error), refresh_in_progress (query_id), or idempotency_conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"query_expired or query_invalidated; refresh required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request exceeds 64 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Capacity or quota limit; Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/market/markets/{market_id}":{"get":{"tags":["Market"],"security":[{"bearerAuth":[]}],"operationId":"getMarket","summary":"Read a saved market definition","parameters":[{"name":"market_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"Market","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Market"}}}},"400":{"description":"Invalid request or invalid_cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Active API key required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Pro required or account restricted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown or out-of-scope ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"query_not_ready, query_failed (job_error), refresh_in_progress (query_id), or idempotency_conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"query_expired or query_invalidated; refresh required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request exceeds 64 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Capacity or quota limit; Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}},"delete":{"tags":["Market"],"security":[{"bearerAuth":[]}],"operationId":"deleteMarket","summary":"Delete a market and revoke access to its queries","description":"Idempotent within the owning account/team. Pending work is cancelled.","parameters":[{"name":"market_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"204":{"description":"Deleted"},"400":{"description":"Invalid request or invalid_cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Active API key required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Pro required or account restricted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown or out-of-scope ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"query_not_ready, query_failed (job_error), refresh_in_progress (query_id), or idempotency_conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"query_expired or query_invalidated; refresh required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request exceeds 64 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Capacity or quota limit; Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/market/markets/{market_id}/refresh":{"post":{"tags":["Market"],"security":[{"bearerAuth":[]}],"operationId":"refreshMarket","summary":"Calculate a new version of a saved market","description":"Filters are immutable. Prior ready versions remain valid until their own expiry/invalidation. Maximum ten unexpired, non-invalidated ready versions; failed calculations do not consume version capacity. No valid version is silently replaced. On version_capacity, Retry-After indicates when the earliest retained result expires.","parameters":[{"name":"market_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"Idempotency-Key","in":"header","required":true,"schema":{"type":"string","minLength":1,"maxLength":128},"description":"Scoped to account/team and operation. Same normalized request returns the same job without another charge. Conflicts return 409; expired/deleted replay returns 410 without a new job."}],"responses":{"202":{"description":"MarketAccepted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketAccepted"}}}},"400":{"description":"Invalid request or invalid_cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Active API key required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Pro required or account restricted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown or out-of-scope ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"query_not_ready, query_failed (job_error), refresh_in_progress (query_id), or idempotency_conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"query_expired or query_invalidated; refresh required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request exceeds 64 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Capacity or quota limit; Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/market/queries/{query_id}":{"get":{"tags":["Market"],"security":[{"bearerAuth":[]}],"operationId":"getMarketQuery","summary":"Read calculation status and exact market summary","description":"summary is null until ready. Ready queries last seven days from completion. Client-side monthly caching does not extend server availability. Source times vary; coverage describes the entire population. Industry groups overlap; employee bands partition the total.","parameters":[{"name":"query_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}}],"responses":{"200":{"description":"MarketQuery","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketQuery"}}}},"400":{"description":"Invalid request or invalid_cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Active API key required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Pro required or account restricted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown or out-of-scope ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"query_not_ready, query_failed (job_error), refresh_in_progress (query_id), or idempotency_conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"query_expired or query_invalidated; refresh required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request exceeds 64 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Capacity or quota limit; Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/market/queries/{query_id}/points":{"get":{"tags":["Market"],"security":[{"bearerAuth":[]}],"operationId":"getMarketPoints","summary":"Read named visiting-address map points","description":"At most one point per company. No registered-address fallback, postcode midpoint or claim of branch coverage. Companies sharing coordinates remain separate. Cursor is bound to account/team, query and orgnr order; it cannot be used for search. Current access restrictions can invalidate the whole version (410).","parameters":[{"name":"query_id","in":"path","required":true,"schema":{"type":"string","format":"uuid"}},{"name":"limit","in":"query","schema":{"type":"integer","minimum":1,"maximum":10000,"default":1000}},{"name":"cursor","in":"query","schema":{"type":"string"}}],"responses":{"200":{"description":"MarketPoints","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MarketPoints"}}}},"400":{"description":"Invalid request or invalid_cursor","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"401":{"description":"Active API key required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"403":{"description":"Pro required or account restricted","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"404":{"description":"Unknown or out-of-scope ID","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"409":{"description":"query_not_ready, query_failed (job_error), refresh_in_progress (query_id), or idempotency_conflict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"410":{"description":"query_expired or query_invalidated; refresh required","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request exceeds 64 KiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"description":"Capacity or quota limit; Retry-After","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"503":{"description":"Temporarily unavailable","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/vat/validate":{"post":{"tags":["Validation"],"summary":"Validate an EU VAT number through VIES","operationId":"validateVatNumber","security":[{"bearerAuth":[]}],"description":"Starter+. A single VAT check supporting the caller's intra-EU trade. Three enrichment units per successful response, including cached results and valid:false; errors consume no units. This is separate from Swedish SCB tax_status, syntactic organisation-number checks, and Stripe/Fortnox billing tax decisions. Name/address availability differs by country; null is not a mismatch. This endpoint does not perform approximate name matching. Results are cached for 24 hours per customer, VAT number and requester. Original check timestamps and consultation ID are preserved. Upstream outages, malformed upstream responses and timeouts never produce valid:false: retry according to Retry-After. Upstream timeout 10 seconds, no automatic retries.","requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VatValidationRequest"},"example":{"country_code":"SE","vat_number":"556016068001"}}}},"responses":{"200":{"description":"Valid or invalid result, either newly checked or cached for up to 24 hours","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VatValidationResponse"}}}},"400":{"description":"Malformed body, unsupported country, query parameters, or VIES rejected input/requester details"},"401":{"description":"Authentication required"},"403":{"description":"Starter or higher required, or key restricted"},"429":{"description":"Customer attempt limit or normal API quota/rate limit exceeded; no definitive VAT status"},"503":{"description":"VIES unavailable, timeout, capacity limit or circuit breaker; valid is null","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Suggested delay in seconds"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VatValidationUnavailable"}}}}}}},"/v1/company/{orgnr}/lei":{"get":{"tags":["Company"],"summary":"LEI and international accounting-consolidating parents","operationId":"getCompanyLei","description":"Pro+. Uses 3 enrichment units. Daily local GLEIF Golden Copy snapshot; no upstream lookup. Linkage uses a validated Swedish organisation number registered with Bolagsverket (RA000544), never a name match. Current ACTIVE/PUBLISHED direct and ultimate accounting-consolidating relationships are separate from legal ownership; no ownership percentage is inferred. Other relationship states, including LAPSED, are retained in other_relationships. Relations and exceptions refer to canonical_lei only. All matched identities are retained; competing identities return ambiguous and no canonical parents. An empty parent list does not establish that a company has no parent; reporting_exceptions preserves source reasons. Foreign parents may have no Swedish orgnr. Source record dates are independent of snapshot publication; stale means publication older than 48 hours. The same object is included as international_relationships on /group, independently of its Swedish structure.","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"schema":{"type":"string"},"description":"Swedish organisation number (10 digits, optional hyphen)","example":"5560297029"}],"responses":{"200":{"description":"Company exists; linkage may be matched, ambiguous or not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeiResponse"}}}},"400":{"description":"Invalid organisation number"},"401":{"description":"Authentication required"},"403":{"description":"Pro or higher required"},"404":{"description":"Company not found"},"429":{"description":"Rate or quota limit exceeded"},"503":{"description":"No published local GLEIF snapshot"}}}},"/v1/company/{orgnr}/supplier-check":{"get":{"tags":["Analytics"],"summary":"Explainable supplier check (Pro+)","description":"Evaluate the versioned se_supplier rule set on stored data: registration, ongoing insolvency or liquidation, F-tax, VAT, annual report freshness, optional auditor opinion and optional financial thresholds you choose. Each rule returns applicability, pass/fail/unknown, a reason code and evidence. Unknown is never counted as pass; beneficial owners are reported as disabled, not passed. No AI and no upstream calls: the same data, policy, date and rule_set_version give the same outcome. Each stored source is read with a short timeout; if one cannot be read, the response is 200 with summary.partial=true and the affected rules unknown. One enrichment request, billed also when partial; the check never triggers paid lookups. rule_set_version changes whenever rule semantics, defaults or reason codes change; keep reproducibility with your decision. Requires Pro plan or higher.","operationId":"getSupplierCheck","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5567037485"}},{"name":"rules","in":"query","required":false,"description":"Comma-separated rules to evaluate. Default: registration_active,no_insolvency_or_liquidation,f_tax_registered,vat_registered,annual_report_current. Optional: auditor_opinion, beneficial_owners. Financial threshold rules are selected with their own parameters.","schema":{"type":"string","example":"registration_active,no_insolvency_or_liquidation,f_tax_registered,vat_registered,annual_report_current"}},{"name":"min_revenue","in":"query","required":false,"description":"Minimum exact net revenue in SEK. Selects the min_revenue rule.","schema":{"type":"number"}},{"name":"min_net_income","in":"query","required":false,"description":"Minimum net income in SEK. Selects the min_net_income rule.","schema":{"type":"number"}},{"name":"min_equity","in":"query","required":false,"description":"Minimum equity in SEK. Selects the min_equity rule.","schema":{"type":"number"}},{"name":"min_equity_ratio","in":"query","required":false,"description":"Minimum equity ratio in percent. Selects the min_equity_ratio rule.","schema":{"type":"number"}},{"name":"accounting_scope","in":"query","required":false,"description":"Accounting scope the thresholds are compared with. Other scopes are never substituted.","schema":{"type":"string","enum":["company","group"],"default":"company"}},{"name":"currency","in":"query","required":false,"description":"Threshold currency. Only SEK figures are compared.","schema":{"type":"string","enum":["SEK"],"default":"SEK"}},{"name":"report_grace_days","in":"query","required":false,"description":"Days after the next annual report's due date during which a missing report is report_may_be_pending. After that it fails only if a check of Bolagsverket's register, recorded after the grace period, found no newer filed report; otherwise it stays unknown (newer_report_not_collected).","schema":{"type":"integer","minimum":0,"maximum":365,"default":60}}],"responses":{"200":{"description":"Rule results, summary and coverage","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SupplierCheckResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/public/coverage":{"get":{"tags":["Coverage"],"summary":"Data coverage per legal form","description":"Active companies and stored annual report and financial coverage for AB, BRF, EK and other forms, from the latest daily snapshot. Each organization is counted once. A stored document or figure shows coverage in BolagsAPI, not whether a company filed. No authentication required.","operationId":"getCoverageSummary","security":[],"responses":{"200":{"description":"Latest coverage summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CoverageSummary"}}}},"503":{"description":"No snapshot is available yet"}}}},"/v1/company/{orgnr}/contacts":{"get":{"tags":["Company"],"summary":"Get professional contacts with provenance","description":"Company and role contacts that the company publishes on its own verified website, each with its source page, extraction method, observed/verified/expiry timestamps and a confidence band. Only current, published observations are returned; expired, removed or suppressed values are never served. Contacts tied to a job ad or procurement notice stay in role_contacts with their context and are not general company contacts. Named people are not available yet: people is empty and people_access explains why. An empty collection means no qualifying contact was found, not that the company has none. The legacy /contact endpoint is unchanged. Contacts are published by the company on its own website. This data does not by itself establish consent or another legal basis for direct marketing; check the rules that apply to your use (for example GDPR and the Swedish Marketing Act) before contacting anyone. Requires Starter plan or higher.","operationId":"getProfessionalContacts","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits, with or without hyphen)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}},{"name":"include","in":"query","required":false,"description":"Comma-separated. `people` requests named contacts; they are returned only when enabled for your account.","schema":{"type":"string","enum":["people"]}}],"responses":{"200":{"description":"Professional contacts","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfessionalContactsResponse"}}}},"202":{"description":"Contacts are queued or being collected. Poll after Retry-After; this response is not billed.","headers":{"Retry-After":{"schema":{"type":"integer","example":10}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ProfessionalContactsResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"description":"Contact data is disabled for this account or plan"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"The background data source failed temporarily"}}}},"/v1/reports/insights/search":{"get":{"tags":["Reports"],"summary":"Search annual report insights","description":"Search indexed annual report insights across companies for lead generation and market research. Results include source metadata: PDF rows contain AI summaries or source-checked excerpts and facts; iXBRL rows contain source-text snippets.","operationId":"searchAnnualReportInsights","security":[{"bearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string","minLength":3},"description":"Search query"},{"name":"signal_type","in":"query","schema":{"type":"string"},"description":"Comma-separated signal filters"},{"name":"source","in":"query","schema":{"type":"string"},"description":"Comma-separated source filters"},{"name":"year_from","in":"query","schema":{"type":"integer"}},{"name":"year_to","in":"query","schema":{"type":"integer"}},{"name":"period_from","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}(-\\d{2})?$"},"description":"Start period as YYYY-MM or YYYY-MM-DD"},{"name":"period_to","in":"query","schema":{"type":"string","pattern":"^\\d{4}-\\d{2}(-\\d{2})?$"},"description":"End period as YYYY-MM or YYYY-MM-DD"},{"name":"sni","in":"query","schema":{"type":"string"},"description":"Comma-separated SNI filters"},{"name":"city","in":"query","schema":{"type":"string"},"description":"Comma-separated city filters"},{"name":"lan","in":"query","schema":{"type":"string"},"description":"Comma-separated county-code filters"},{"name":"postal_code","in":"query","schema":{"type":"string"},"description":"Comma-separated postal-code filters"},{"name":"employees_min","in":"query","schema":{"type":"integer","minimum":0}},{"name":"employees_max","in":"query","schema":{"type":"integer","minimum":0}},{"name":"revenue_min","in":"query","schema":{"type":"integer","minimum":0}},{"name":"revenue_max","in":"query","schema":{"type":"integer","minimum":0}},{"name":"active_only","in":"query","schema":{"type":"boolean","default":true}},{"name":"include_financials","in":"query","schema":{"type":"boolean","default":false}},{"name":"limit","in":"query","schema":{"type":"integer","default":10,"minimum":1},"description":"Pro max 100, Business max 500"},{"name":"offset","in":"query","schema":{"type":"integer","default":0,"minimum":0}}],"responses":{"200":{"description":"Annual report insight search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportInsightSearchResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"}}}},"/v1/company/{orgnr}/reports/insights":{"get":{"tags":["Reports"],"summary":"Get company annual report insights","description":"Return extracted annual report insights for one company across PDF summaries, source-checked PDF facts and iXBRL text sources.","operationId":"getCompanyAnnualReportInsights","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"schema":{"type":"string"}},{"name":"period_end","in":"query","schema":{"type":"string"}},{"name":"signal_type","in":"query","schema":{"type":"string"}},{"name":"source","in":"query","schema":{"type":"string"}},{"name":"year_from","in":"query","schema":{"type":"integer"}},{"name":"year_to","in":"query","schema":{"type":"integer"}},{"name":"limit","in":"query","schema":{"type":"integer","default":10,"minimum":1},"description":"Starter max 50, Pro max 100, Business max 250"}],"responses":{"200":{"description":"Company annual report insights","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyReportInsightsResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/v1/me":{"get":{"tags":["Account"],"summary":"Get current API caller","description":"Return safe account metadata for the customer that owns the current API key, the current API key metadata, and current billing-period usage. This endpoint requires bearer API-key authentication; dashboard session-only account routes remain separate under `/v1/account`.","operationId":"getCurrentCaller","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Current API caller and usage summary","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MeResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/v1/company/{orgnr}":{"get":{"tags":["Company"],"summary":"Get company information","description":"Retrieve detailed information about a company by organization number","operationId":"getCompany","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits, with or without hyphen)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}},{"name":"Accept-Language","in":"header","required":false,"description":"Language for descriptions (sv or en)","schema":{"type":"string","enum":["sv","en"],"default":"sv"}},{"name":"include","in":"query","required":false,"description":"Include additional data. Comma-separated values: 'financials' for financial data, 'fi' for FI regulatory data, 'prv' for trademarks/patents (Starter+ plans), 'coverage' for availability, freshness and absence reason per data section (all plans; restricted sections are reported as unauthorized without their content)","schema":{"type":"string","example":"financials,fi,prv,coverage"}},{"name":"name_protection_number","in":"query","required":false,"description":"Select a specific registered business when a sole trader has multiple businesses under the same personal identity number. Use the value returned by /v1/search.","schema":{"type":"string","pattern":"^[1-9]\\d*$","example":"2"}}],"responses":{"200":{"description":"Company found","headers":{"X-Data-Source":{"schema":{"$ref":"#/components/schemas/PublicDataSource"}},"X-Data-Updated-At":{"schema":{"type":"string","format":"date-time"}},"Cache-Control":{"schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Company"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/signatory":{"get":{"tags":["Company"],"summary":"Get signatory rules","description":"Get signatory rules (firmateckning) for a company. A cache miss returns HTTP 202 with Retry-After while public company information is queued. Poll the same URL until HTTP 200. Queued responses are not billed.","operationId":"getSignatory","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits, with or without hyphen)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}}],"responses":{"200":{"description":"Signatory rules","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignatoryResponse"}}}},"202":{"description":"Signatory data is queued or being fetched. Poll after Retry-After; this response is not billed.","headers":{"Retry-After":{"schema":{"type":"integer","example":10}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignatoryResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"The background data source failed temporarily"}}}},"/v1/company/{orgnr}/signatories":{"get":{"tags":["Company"],"summary":"Get signatories with signing rights","description":"Get persons authorized to sign for the company. For foundations, explicit source signatories are returned with signing_right UNKNOWN; no automatic signing authority is inferred from the free text. A cache miss returns HTTP 202 with Retry-After while public company information is queued. Poll until HTTP 200. Queued responses are not billed.","operationId":"getSignatories","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits, with or without hyphen)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}}],"responses":{"200":{"description":"List of signatories with signing rights","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignatoriesResponse"}}}},"202":{"description":"Signatory data is queued or being fetched. Poll after Retry-After; this response is not billed.","headers":{"Retry-After":{"schema":{"type":"integer","example":10}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignatoriesResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"The background data source failed temporarily"}}}},"/v1/company/{orgnr}/persons":{"get":{"tags":["Company"],"summary":"Get board members, executives, and auditors (Pro+)","description":"Get board members, executives, and auditors. If no local snapshot exists, the lookup is queued and returns HTTP 202 with Retry-After. Poll the same URL until HTTP 200 is returned. Queued responses are not billed. Requires Pro plan or higher.","operationId":"getPersons","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits, with or without hyphen)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}}],"responses":{"200":{"description":"Person snapshot is available, or the completed lookup found no persons","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonsResponse"}}}},"202":{"description":"Person data has been queued or is being fetched. Poll the same URL after Retry-After; this response is not billed.","headers":{"Retry-After":{"schema":{"type":"integer","example":10},"description":"Seconds before polling again"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonsResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"The background data source failed temporarily","headers":{"Retry-After":{"schema":{"type":"integer","example":60},"description":"Seconds before retrying"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonsResponse"}}}}}}},"/v1/company/{orgnr}/ownership":{"get":{"tags":["Company"],"summary":"Get ownership information (Pro+)","description":"Get ownership information for a company. A cache miss returns HTTP 202 with Retry-After while public company information is queued. Poll until HTTP 200. Queued responses are not billed. Requires Pro plan or higher.","operationId":"getOwnership","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits, with or without hyphen)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}}],"responses":{"200":{"description":"Ownership information","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnershipResponse"}}}},"202":{"description":"Ownership data is queued or being fetched. Poll after Retry-After; this response is not billed.","headers":{"Retry-After":{"schema":{"type":"integer","example":10}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/OwnershipResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"The background data source failed temporarily"}}}},"/v1/person/companies":{"post":{"tags":["Person"],"summary":"Get companies connected to a person (Pro+)","description":"Returns companies where the person is connected through registered roles such as board member, CEO, signatory, auditor, or other company engagement. Includes registered sole-trader businesses with role proprietor, alongside engagements in ABs and other organizations. A supplied personnummer starts a demand-driven background identity resolution when local data is missing; poll responses returned with HTTP 202 according to Retry-After. No bulk identity resolution is performed for company boards. Supply a person_id from the company persons endpoint when no personnummer is available. This endpoint is for general company engagements, not official beneficial ownership.","operationId":"postPersonCompanies","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","oneOf":[{"required":["personnummer"]},{"required":["personnummer_hash"]},{"required":["person_id"]}],"properties":{"personnummer":{"type":"string","pattern":"^\\d{8}-?\\d{4}$","example":"19890215-1234","description":"Swedish personnummer or samordningsnummer, 12 digits with optional separator"},"personnummer_hash":{"type":"string","pattern":"^[a-fA-F0-9]{64}$","description":"SHA-256 hash returned by the company persons endpoint. Hash lookups only use locally indexed data."},"person_id":{"type":"string","pattern":"^per_1_[A-Za-z0-9_-]+$","description":"Opaque person identifier returned by the company persons endpoint. This is the preferred identifier when personnummer_hash is null."}}}}}},"responses":{"200":{"description":"Available company engagements, including registered sole traders. If refreshing is true, more engagements may arrive; follow Retry-After. data_status failed with companies means available data is returned but the source refresh failed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonCompaniesResponse"}}}},"202":{"description":"No company data is available yet and the lookup is queued or refreshing. Poll after Retry-After while the lookup remains queued or refreshing. This response is not billed.","headers":{"Retry-After":{"schema":{"type":"integer","example":2}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonCompaniesResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"person_lookup_failed: no usable company data and the lookup failed. Stop polling and contact support with request_id. Not billed.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/company/{orgnr}/beneficial-owners":{"get":{"tags":["Company"],"summary":"Coming soon: get official beneficial owners (Pro)","description":"Coming soon — not available yet. Awaiting access to Bolagsverket’s beneficial ownership register; no launch date is confirmed. Currently returns HTTP 503 feature_not_available, including on Pro and Business. After launch: returns registered beneficial owners (verkliga huvudmän) for a company. Requires Pro or Business. Pro includes 10 official beneficial ownership calls per month, Business includes 100; overage is 4 kr/call on Pro and 3 kr/call on Business.","operationId":"getBeneficialOwners","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits, with or without hyphen)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}},{"name":"datum","in":"query","required":false,"description":"Optional historical lookup date (YYYY-MM-DD)","schema":{"type":"string","format":"date"}},{"name":"fresh","in":"query","required":false,"description":"Set true to bypass cache and fetch fresh data","schema":{"type":"boolean"}}],"responses":{"200":{"description":"Beneficial owner data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BeneficialOwnersResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"feature_not_available: coming soon. Awaiting Bolagsverket access; upgrading your plan does not enable this endpoint yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/persons/beneficial-of":{"post":{"tags":["Person"],"summary":"Coming soon: get companies where a person is official beneficial owner (Pro)","description":"Coming soon — not available yet. Awaiting access to Bolagsverket’s beneficial ownership register; no launch date is confirmed. Currently returns HTTP 503 feature_not_available, including on Pro and Business. After launch: returns companies where the supplied personnummer is registered as official beneficial owner (verklig huvudman). This endpoint is separate from general company roles and engagements. Requires Pro or Business. Pro includes 10 official beneficial ownership calls per month, Business includes 100; overage is 4 kr/call on Pro and 3 kr/call on Business.","operationId":"getPersonBeneficialOf","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["personnummer"],"properties":{"personnummer":{"type":"string","pattern":"^\\d{8}-?\\d{4}$","example":"19890215-1234"}}}}}},"responses":{"200":{"description":"Companies where the person is beneficial owner","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonBeneficialOfResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"feature_not_available: coming soon. Awaiting Bolagsverket access; upgrading your plan does not enable this endpoint yet.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/company/{orgnr}/contact":{"get":{"tags":["Company"],"summary":"Get contact information","description":"Get contact information for a company. A cache miss returns HTTP 202 with Retry-After while public company information is queued. Poll until HTTP 200. Queued responses are not billed.","operationId":"getContact","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits, with or without hyphen)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}}],"responses":{"200":{"description":"Contact information","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"202":{"description":"Contact data is queued or being fetched. Poll after Retry-After; this response is not billed.","headers":{"Retry-After":{"schema":{"type":"integer","example":10}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"The background data source failed temporarily"}}}},"/v1/company/{orgnr}/announcements":{"get":{"tags":["Company"],"summary":"Get legal announcements","description":"Requires Starter plan or higher. Get POIT (Post- och Inrikes Tidningar) legal announcements for a company including bankruptcies (konkurser), creditor calls (kallelser), company registrations, and debt restructuring (skuldsaneringar). A valid organization number with no matching announcements returns 200 with an empty announcements array. New POIT publications are polled every 15 minutes during the weekday publication window and queued for webhook delivery within one minute after ingestion.","operationId":"getAnnouncements","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits, with or without hyphen)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}},{"name":"category","in":"query","required":false,"description":"Filter by POIT category (1–9)","schema":{"type":"integer","minimum":1,"maximum":9}},{"name":"type","in":"query","required":false,"description":"Filter by POIT announcement type ID","schema":{"type":"integer","minimum":1}},{"name":"from","in":"query","required":false,"description":"Earliest publication date","schema":{"type":"string","format":"date"}},{"name":"to","in":"query","required":false,"description":"Latest publication date","schema":{"type":"string","format":"date"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":500,"default":100}},{"name":"offset","in":"query","required":false,"schema":{"type":"integer","minimum":0,"default":0}},{"name":"include_text","in":"query","required":false,"description":"Include full announcement text (larger response)","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Announcements list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementsListResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/announcements/{id}":{"get":{"tags":["Company"],"summary":"Get announcement details","description":"Requires Starter plan or higher. Get full details for a specific POIT announcement including the complete announcement text.","operationId":"getAnnouncementById","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits, with or without hyphen)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}},{"name":"id","in":"path","required":true,"description":"Announcement ID (kungörelse-id)","schema":{"type":"string","example":"K331995-26"}}],"responses":{"200":{"description":"Announcement details","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnnouncementResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/Forbidden"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/bankruptcy":{"get":{"tags":["Company"],"summary":"Get bankruptcy status (Starter+)","description":"Check if a company has any bankruptcy announcements and get the latest one if it exists. Requires Starter plan or higher.","operationId":"getBankruptcyStatus","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits, with or without hyphen)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}}],"responses":{"200":{"description":"Bankruptcy status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BankruptcyStatusResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/creditor-call":{"get":{"tags":["Company"],"summary":"Get creditor call status (Starter+)","description":"Check if a company has any creditor call (kallelse på borgenärer) announcements and get the latest one if it exists. Requires Starter plan or higher.","operationId":"getCreditorCallStatus","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits, with or without hyphen)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}}],"responses":{"200":{"description":"Creditor call status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreditorCallStatusResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/financial-health":{"get":{"tags":["Company"],"summary":"Get financial health analysis (Starter+)","description":"Get financial stability metrics derived from public annual reports. This is NOT credit information under Kreditupplysningslagen (SFS 1973:1173).\n\nReplaces the deprecated `/credit` endpoint with KUL-compliant terminology.\n\nRequires Starter plan or higher.","operationId":"getFinancialHealth","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits, with or without hyphen)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}}],"responses":{"200":{"description":"Financial health analysis","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialHealth"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/validate/{orgnr}":{"get":{"tags":["Validation"],"summary":"Validate organization number","description":"Quickly validate an org number with checksum and existence check","operationId":"validateOrgnr","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number to validate","schema":{"type":"string","example":"5567037485"}}],"responses":{"200":{"description":"Validation result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValidationResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/search":{"get":{"tags":["Search"],"summary":"Search companies","description":"Search companies by text query and/or filters. Text search is optional - filter-only searches are supported. Multi-value filters accept comma-separated values (OR logic within filter, AND logic between filters).","operationId":"searchCompanies","security":[{"bearerAuth":[]}],"parameters":[{"name":"market_query_id","in":"query","schema":{"type":"string","format":"uuid"},"description":"Pro. Use immutable market membership instead of q or independent filters. Exact total and orgnr ascending order. Detail fields may be current; selection_as_of identifies frozen membership."},{"name":"market_industry_code","in":"query","schema":{"type":"string"},"description":"A valid two-digit industry group or unknown within the market version. Requires market_query_id. Valid absent groups return zero."},{"name":"cursor","in":"query","schema":{"type":"string"},"description":"Market search cursor only. Cannot be mixed with point cursors or after_orgnr; use the same query/group."},{"name":"latitude","in":"query","schema":{"type":"number","minimum":-90,"maximum":90},"description":"Pro. WGS84 centre latitude. Supply with longitude and radius_km; combines with ordinary search filters, not market_query_id. Only matched, unrestricted visiting addresses can match."},{"name":"longitude","in":"query","schema":{"type":"number","minimum":-180,"maximum":180},"description":"WGS84 centre longitude; requires latitude and radius_km."},{"name":"radius_km","in":"query","schema":{"type":"number","exclusiveMinimum":0,"maximum":500},"description":"Inclusive great-circle radius in kilometres, greater than zero and at most 500. Requires latitude and longitude. Automatically includes coordinates; existing search ordering applies."},{"name":"include_coordinates","in":"query","schema":{"type":"boolean","default":false},"description":"Pro. Include visiting-address coordinates, address_role and geocoding status. No registered-address fallback. Missing/restricted coordinates are null and do not remove results without a radius filter. With market_query_id, returns frozen snapshot coordinates; otherwise current coordinates."},{"name":"include_scb","in":"query","schema":{"type":"boolean","default":false},"description":"Include the SCB profile in every search result. Company lookup always includes it."},{"name":"scb.tax_activity_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. SCB tax activity code. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.registration_status_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. SCB registration status code. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.legal_form_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. SCB legal form code. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.marketing_status_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. SCB marketing code: 1 allowed, 2 blocked. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.registered_date","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. SCB registration date as stored. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.f_tax_status_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. SCB F-tax registration code. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.vat_status_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. SCB VAT registration code. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.employer_status_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. SCB employer registration code. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.municipality_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Registered-seat municipality code. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.municipality","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Registered-seat municipality. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.county_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Registered-seat county code. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.county","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Registered-seat county. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.scb_phone","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. SCB phone number. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.visiting_street","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Visiting street address. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.visiting_postal_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Visiting postal code. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.visiting_city","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Visiting postal city. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.employee_size_class","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Employee size interval, not an exact headcount. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.revenue_size_class","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Revenue size interval, not an exact financial amount. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.ownership_category","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. SCB ownership category, not verified owners. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.public_private","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Private/public classification; public does not establish listing. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.company_status","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Detailed SCB company status. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.scb_company_name","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Företagsnamn SCB. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.registered_name","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Registrerad firma SCB. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.scb_email","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. E-post SCB. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.employee_size_class_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Storleksklass anställda kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.revenue_size_class_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Storleksklass omsättning kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.financial_revenue_size_class","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Storleksklass finansiell omsättning. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.financial_revenue_size_class_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Storleksklass finansiell omsättning kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.revenue_class_year","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Omsättningsklass år. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sme_class","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. SME-klass. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sme_class_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. SME-klass kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.a_region","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. A-region. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.a_region_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. A-region kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.mailing_address_status","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Postadressens utskicksstatus. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.mailing_address_status_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Postadressens utskicksstatus kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sector","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Sektor. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sector_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Sektor kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.activity_started_date","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Verksamhet startdatum SCB. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.activity_ended_date","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Verksamhet slutdatum SCB. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.workplace_count","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Antal arbetsställen SCB. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.registered_name_count","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Antal registrerade firmor SCB. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.ownership_category_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Ägarkategori kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.public_private_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Privat/publikt kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.company_status_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bolagsstatus kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.foreign_ownership","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Utländskt ägande. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.foreign_ownership_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Utländskt ägande kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.owner_country","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Ägarland. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.owner_country_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Ägarland kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.import_export","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Export/import registermarkering. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.export_size_class","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Storleksklass export. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.export_size_class_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Storleksklass export kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.import_size_class","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Storleksklass import. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.import_size_class_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Storleksklass import kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.trade_nordic","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Handel Norden. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.trade_eu","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Handel EU. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.trade_other_europe","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Handel övriga Europa. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.trade_asia_except_far_east","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Handel Asien utom Fjärran Östern. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.trade_far_east","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Handel Fjärran Östern. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.trade_north_central_america","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Handel Nord- och Centralamerika. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.trade_south_america","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Handel Sydamerika. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.trade_africa","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Handel Afrika. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.main_workplace_cfar","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Huvudarbetsställe CFAR. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.main_workplace_name","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Huvudarbetsställe benämning. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.main_workplace_email","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Huvudarbetsställe e-post. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.main_workplace_phone","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Huvudarbetsställe telefon. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.main_workplace_municipality","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Huvudarbetsställe kommun. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.main_workplace_municipality_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Huvudarbetsställe kommunkod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.main_workplace_county","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Huvudarbetsställe län. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.main_workplace_county_code","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Huvudarbetsställe länskod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_code_1","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 1 kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_description_1","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 1. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_section_1","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 1 avdelning. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_section_code_1","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 1 avdelningskod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_code_2","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 2 kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_description_2","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 2. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_section_2","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 2 avdelning. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_section_code_2","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 2 avdelningskod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_code_3","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 3 kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_description_3","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 3. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_section_3","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 3 avdelning. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_section_code_3","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 3 avdelningskod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_code_4","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 4 kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_description_4","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 4. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_section_4","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 4 avdelning. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_section_code_4","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 4 avdelningskod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_code_5","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 5 kod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_description_5","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 5. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_section_5","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 5 avdelning. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.sni_section_code_5","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Bransch 5 avdelningskod. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"scb.main_workplace_fetched_at","in":"query","schema":{"type":"string","minLength":1,"maxLength":200},"description":"Exact stored SCB value. Huvudarbetsställets observationstid. Filters combine with AND; null never matches. Codes retain leading zeros. Protected contact/workplace filters require the corresponding access."},{"name":"q","in":"query","required":false,"description":"Search query (min 3 characters if provided). Optional - filter-only searches are supported.","schema":{"type":"string","minLength":3,"maxLength":100,"example":"tech"}},{"name":"city","in":"query","required":false,"description":"Filter by city name(s), comma-separated for multiple","schema":{"type":"string","example":"Stockholm,Göteborg"}},{"name":"sni","in":"query","required":false,"description":"SNI prefixes in sni_version (default 2025), matching all proven company codes and unambiguous mappings. OR within the list, up to 100 prefixes; each organization is returned once.","schema":{"type":"string","example":"62,63"}},{"name":"sni_version","in":"query","required":false,"schema":{"type":"string","enum":["2007","2025"]},"description":"Classification for SNI prefix matching, default 2025. Uses all proven source codes and unambiguous cross-version mappings, as markets/export do. Unknown versions and ambiguous mappings do not match."},{"name":"org_form","in":"query","required":false,"description":"Filter by organization form(s), comma-separated","schema":{"type":"string","example":"AB,HB"}},{"name":"lan","in":"query","required":false,"description":"Filter by county code(s), comma-separated (01=Stockholm, 20=Dalarna, etc.)","schema":{"type":"string","example":"01,14"}},{"name":"municipality","in":"query","required":false,"description":"Filter by official four-digit municipality codes, comma-separated","schema":{"type":"string","example":"0880,0180"}},{"name":"postal_code","in":"query","required":false,"description":"Postal-address prefixes of 1–5 digits, comma-separated. Spaces are ignored and leading zeros preserved; the same prefix rules as markets/export.","schema":{"type":"string","example":"11122,11447"}},{"name":"street","in":"query","required":false,"description":"Filter by street address (partial match, case-insensitive)","schema":{"type":"string","example":"Kungsgatan"}},{"name":"registration_status","in":"query","description":"Registration status; separate from SCB tax activity.","schema":{"type":"string","enum":["active","deregistered","unknown","all"],"default":"active"}},{"name":"active_only","in":"query","required":false,"description":"Additionally require SCB tax activity; separate from registration_status.","schema":{"type":"boolean","default":false}},{"name":"employees_min","in":"query","required":false,"description":"Minimum latest available company employee count; inclusive. See employees_period_end for the observation period.","schema":{"type":"integer","minimum":0}},{"name":"employees_max","in":"query","required":false,"description":"Maximum latest available company employee count; inclusive. See employees_period_end for the observation period.","schema":{"type":"integer","minimum":0}},{"name":"revenue_min","in":"query","required":false,"description":"Minimum annual revenue (SEK) in the latest parsed financial period","schema":{"type":"integer","minimum":0}},{"name":"revenue_max","in":"query","required":false,"description":"Maximum annual revenue (SEK) in the latest parsed financial period","schema":{"type":"integer","minimum":0}},{"name":"equity_ratio_min","in":"query","required":false,"description":"Minimum equity ratio (0-100%)","schema":{"type":"integer","minimum":0,"maximum":100}},{"name":"profitable","in":"query","required":false,"description":"Filter by profitability (positive net income)","schema":{"type":"boolean"}},{"name":"has_reports","in":"query","required":false,"description":"Only companies with annual reports","schema":{"type":"boolean"}},{"name":"has_financials","in":"query","required":false,"description":"Only companies with parsed financial data","schema":{"type":"boolean"}},{"name":"parent_orgnr","in":"query","required":false,"description":"Filter subsidiaries of a parent company","schema":{"type":"string","example":"5567037485"}},{"name":"fi_licensed","in":"query","required":false,"deprecated":true,"description":"Unavailable while verified license status is unknown; returns 400 invalid_request. Use fi_registered for stored register entries.","schema":{"type":"boolean"}},{"name":"fi_registered","in":"query","required":false,"description":"Has a stored FI register entry. False means no stored entry, not confirmed absence from FI's register. Neither value establishes a license.","schema":{"type":"boolean"}},{"name":"no_fi_warnings","in":"query","required":false,"description":"Exclude companies with FI warnings","schema":{"type":"boolean"}},{"name":"has_auditor_remarks","in":"query","required":false,"description":"Has auditor remarks in reports","schema":{"type":"boolean"}},{"name":"foreign_owned","in":"query","required":false,"description":"Filter by foreign ownership. true = only foreign-owned companies (parent company is not Swedish), false = only Swedish-owned subsidiaries","schema":{"type":"boolean"}},{"name":"limit","in":"query","required":false,"description":"Results per page. Maximum depends on tier: free=100, starter=500, pro=2000, business=10000","schema":{"type":"integer","minimum":1,"default":10}},{"name":"offset","in":"query","required":false,"description":"Pagination offset. For large datasets, prefer cursor pagination with after_orgnr","schema":{"type":"integer","minimum":0,"default":0}},{"name":"after_orgnr","in":"query","required":false,"description":"Cursor for keyset pagination. Returns companies after this org number. More efficient than offset for large datasets.","schema":{"type":"string","pattern":"^\\d{10}$","example":"5567037485"}},{"name":"order_by","in":"query","required":false,"description":"Sort field. registered_date sorts by company registration date. revenue/employees sort by latest financial data (requires LATERAL JOIN, may be slower).","schema":{"type":"string","enum":["orgnr","name","updated_at","registered_date","revenue","employees"],"default":"name"}},{"name":"order","in":"query","required":false,"description":"Sort direction","schema":{"type":"string","enum":["asc","desc"],"default":"asc"}},{"name":"registered_after","in":"query","required":false,"description":"Filter companies registered on or after this date (YYYY-MM-DD)","schema":{"type":"string","format":"date","example":"2024-01-01"}},{"name":"registered_before","in":"query","required":false,"description":"Filter companies registered on or before this date (YYYY-MM-DD)","schema":{"type":"string","format":"date","example":"2024-12-31"}},{"name":"include_financials","in":"query","required":false,"description":"Include revenue and employees in results. Automatically enabled when sorting by revenue/employees.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SearchResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"$ref":"#/components/responses/TemporarilyBusy"}}}},"/v1/search/persons":{"get":{"tags":["Search"],"summary":"Search persons (Starter+)","description":"Search persons (board members, executives, accountants) by name across all companies. Returns grouped results using (name + city + age) as pseudo-identifier. Note: Same person may appear multiple times if data differs across companies. Requires Starter plan or higher.","operationId":"searchPersons","security":[{"bearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":true,"description":"Name search query (min 2 characters, case-insensitive partial match)","schema":{"type":"string","minLength":2,"maxLength":100,"example":"andersson"}},{"name":"city","in":"query","required":false,"description":"Filter by city","schema":{"type":"string","example":"Stockholm"}},{"name":"gender","in":"query","required":false,"description":"Filter by gender","schema":{"type":"string","enum":["male","female"]}},{"name":"limit","in":"query","required":false,"description":"Maximum results to return","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}}],"responses":{"200":{"description":"Person search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PersonSearchResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/reports":{"get":{"tags":["Reports"],"summary":"List annual reports","description":"Get a list of annual reports for a company with pagination support. Check downloadable before offering a report-file download.","operationId":"listReports","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5567037485"}},{"name":"limit","in":"query","required":false,"description":"Number of reports to return (1-100)","schema":{"type":"integer","minimum":1,"maximum":100,"default":10}},{"name":"offset","in":"query","required":false,"description":"Starting position for pagination","schema":{"type":"integer","minimum":0,"default":0}}],"responses":{"200":{"description":"List of reports","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ReportsResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/reports/{reportId}":{"get":{"tags":["Reports"],"summary":"Download annual report","description":"Download a specific annual report when downloadable=true. PDF is the default. The API authorizes the request and usually returns a 302 redirect to a short-lived signed download URL. Use ?format=raw for the original iXBRL file when available. For customers with the BRF module, BRF PDFs return 200 application/pdf directly and use the module PDF allowance: 500 unique association/fiscal-period downloads included per module period, then graduated pricing. Repeat downloads do not count again.","operationId":"downloadReport","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5567037485"}},{"name":"reportId","in":"path","required":true,"description":"Report ID from the reports list","schema":{"type":"string"}},{"name":"format","in":"query","required":false,"description":"Output format: pdf (default) or raw for original iXBRL when available","schema":{"type":"string","enum":["pdf","raw"],"default":"pdf"}}],"responses":{"200":{"description":"Report file returned directly when redirect is not used. BRF module PDFs always return bytes directly; unique download recorded after successful storage retrieval.","content":{"application/pdf":{"schema":{"type":"string","format":"binary"},"description":"PDF file (default format)"},"application/xhtml+xml":{"schema":{"type":"string","format":"binary"},"description":"Original iXBRL file (format=raw, when available)"},"application/zip":{"schema":{"type":"string","format":"binary"}}}},"302":{"description":"Redirect to a short-lived signed download URL","headers":{"Location":{"description":"Signed URL for the report file","schema":{"type":"string","format":"uri"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/ReportDownloadRestricted"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/reports/{reportId}/auditor":{"get":{"tags":["Reports"],"summary":"Download auditor's report (Revisionsberättelse)","description":"Download the auditor's report (Revisionsberättelse) for a specific annual report, if available. Returns PDF by default, or original XHTML with ?format=raw. Check has_auditor field in reports list.","operationId":"downloadAuditorReport","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5567037485"}},{"name":"reportId","in":"path","required":true,"description":"Report ID from the reports list","schema":{"type":"string"}},{"name":"format","in":"query","required":false,"description":"Output format: pdf (default) or raw for original XHTML","schema":{"type":"string","enum":["pdf","raw"],"default":"pdf"}}],"responses":{"200":{"description":"Auditor's report file (PDF or XHTML depending on format parameter)","content":{"application/pdf":{"schema":{"type":"string","format":"binary"},"description":"PDF file (default format)"},"application/xhtml+xml":{"schema":{"type":"string","format":"binary"},"description":"Original XHTML file (format=raw)"}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/financials":{"get":{"tags":["Financials"],"summary":"Get full financial data","description":"Get multi-year financial data parsed from annual reports. Includes income statement, balance sheet, and key ratios. Requires Starter plan or higher. Some fields may be null when K2, condensed annual reports, or PDF-only filings do not expose machine-readable source lines. PDF filing periods without parseable figures are listed in available_periods_without_figures. All amounts are SEK: a report filed in another currency is translated with Sveriges Riksbank rates (balance sheet at the closing rate, income statement at the fiscal-year average rate) and marked with reported_currency, fx and the filed reported_values; if a needed rate is not yet available, the period is listed with reason currency_conversion_unavailable instead. If no figures are stored yet, collection starts and the endpoint returns HTTP 202 until it completes; 404 means no publishable figures after collection.","operationId":"getFinancials","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5567037485"}},{"name":"include_comparative","in":"query","required":false,"description":"Include comparative data from reports (multiple values for same year)","schema":{"type":"boolean","default":false}},{"name":"scope","in":"query","required":false,"description":"Select company-only or consolidated group figures. When omitted, one consistent series is selected using the latest available period; within that period exact company figures are preferred, followed by unclassified official figures, coarse company fallbacks, and group figures. Older exact rows do not hide newer reports. all returns separate rows when multiple scopes exist.","schema":{"type":"string","enum":["company","group","all"]}}],"responses":{"200":{"description":"Financial data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsResponse"}}}},"202":{"description":"No figures are stored yet and collection is queued or running. Poll the same URL after Retry-After; this response is not billed.","headers":{"Retry-After":{"schema":{"type":"integer","example":30}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsCollectingResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"},"404":{"description":"No publishable figures. data_status unavailable: no publishable figures for this request. reason source_quality_review means source data is retained but cannot yet be published; no automatic retry is promised. Other completed collections without figures are not repeated for several days. data_status not_applicable with reason no_filing_obligation: the registered legal form files no annual report. The legal form decides, not the format of the organization number.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsNotFound"},"example":{"error":"not_found","message":"Organization 19121212-1212 has no annual-report filing duty, so no financial statements are available.","hint":"Sole traders (enskild näringsidkare) do not file annual reports with Bolagsverket. This answer is final for the legal form and is not collected again.","docs_url":"https://bolagsapi.se/docs/errors#financial-data-availability","request_id":"req_abc123","data_status":"not_applicable","reason":"no_filing_obligation"}}}},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"Temporary collection error (data_status: failed). Retry after Retry-After; this is not a statement that no figures exist.","headers":{"Retry-After":{"schema":{"type":"integer","example":60}}}}}}},"/v1/company/{orgnr}/financials/latest":{"get":{"tags":["Financials"],"summary":"Get latest financial year","description":"Get only the most recent fiscal year's financial data. Requires Starter plan or higher.","operationId":"getFinancialsLatest","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5567037485"}},{"name":"scope","in":"query","required":false,"description":"Select the accounting scope. all considers every scope and returns the best latest row.","schema":{"type":"string","enum":["company","group","all"]}}],"responses":{"200":{"description":"Latest financial data","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsLatestResponse"}}}},"202":{"description":"No figures are stored yet and collection is queued or running. Poll the same URL after Retry-After; this response is not billed.","headers":{"Retry-After":{"schema":{"type":"integer","example":30}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsCollectingResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"},"404":{"description":"No publishable figures. data_status unavailable: no publishable figures for this request. reason source_quality_review means source data is retained but cannot yet be published; no automatic retry is promised. Other completed collections without figures are not repeated for several days. data_status not_applicable with reason no_filing_obligation: the registered legal form files no annual report. The legal form decides, not the format of the organization number.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsNotFound"},"example":{"error":"not_found","message":"Organization 19121212-1212 has no annual-report filing duty, so no financial statements are available.","hint":"Sole traders (enskild näringsidkare) do not file annual reports with Bolagsverket. This answer is final for the legal form and is not collected again.","docs_url":"https://bolagsapi.se/docs/errors#financial-data-availability","request_id":"req_abc123","data_status":"not_applicable","reason":"no_filing_obligation"}}}},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"Temporary collection error (data_status: failed). Retry after Retry-After; this is not a statement that no figures exist.","headers":{"Retry-After":{"schema":{"type":"integer","example":60}}}}}}},"/v1/company/{orgnr}/financials/summary":{"get":{"tags":["Financials"],"summary":"Get financial trends and growth","description":"Get trend data and growth metrics calculated from historical financial data. Requires Starter plan or higher.","operationId":"getFinancialsSummary","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5567037485"}},{"name":"scope","in":"query","required":false,"description":"Select company-only, consolidated group, or all scoped trend rows.","schema":{"type":"string","enum":["company","group","all"]}}],"responses":{"200":{"description":"Financial summary with trends","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsSummaryResponse"}}}},"202":{"description":"No figures are stored yet and collection is queued or running. Poll the same URL after Retry-After; this response is not billed.","headers":{"Retry-After":{"schema":{"type":"integer","example":30}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsCollectingResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"},"404":{"description":"No publishable figures. data_status unavailable: no publishable figures for this request. reason source_quality_review means source data is retained but cannot yet be published; no automatic retry is promised. Other completed collections without figures are not repeated for several days. data_status not_applicable with reason no_filing_obligation: the registered legal form files no annual report. The legal form decides, not the format of the organization number.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsNotFound"},"example":{"error":"not_found","message":"Organization 19121212-1212 has no annual-report filing duty, so no financial statements are available.","hint":"Sole traders (enskild näringsidkare) do not file annual reports with Bolagsverket. This answer is final for the legal form and is not collected again.","docs_url":"https://bolagsapi.se/docs/errors#financial-data-availability","request_id":"req_abc123","data_status":"not_applicable","reason":"no_filing_obligation"}}}},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"Temporary collection error (data_status: failed). Retry after Retry-After; this is not a statement that no figures exist.","headers":{"Retry-After":{"schema":{"type":"integer","example":60}}}}}}},"/v1/validate/batch":{"post":{"tags":["Validation"],"summary":"Batch validate organization numbers","description":"Validate up to 100 organization numbers in a single request","operationId":"batchValidate","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchValidationRequest"}}}},"responses":{"200":{"description":"Batch validation results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchValidationResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/health":{"get":{"tags":["Analytics"],"summary":"Get company health score (Pro+)","description":"Calculate a 0-100 health score based on company status, tax registration, age, and risk factors. Includes industry benchmark comparison showing how the company ranks within its primary SNI industry. Requires Pro plan or higher.","operationId":"getHealthScore","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5567037485"}},{"name":"Accept-Language","in":"header","required":false,"description":"Language for SNI description (sv or en). Defaults to sv.","schema":{"type":"string","enum":["sv","en"],"default":"sv"}}],"responses":{"200":{"description":"Health score","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthScoreResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/timeline":{"get":{"tags":["Analytics"],"summary":"Get company timeline","description":"Get a chronological list of company events including registration, report filings, and changes. Change entries use the same event types as webhooks, for example name_changed, address_changed, tax_status_changed, liquidation_started and liquidation_ended, and carry the webhook event_id. The date of a change entry is when BolagsAPI detected the change. Pro customers can request Bolagsverket case events with include_cases=true.","operationId":"getTimeline","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5567037485"}},{"name":"Accept-Language","in":"header","required":false,"description":"Language for descriptions (sv or en)","schema":{"type":"string","enum":["sv","en"],"default":"sv"}},{"name":"include_cases","in":"query","required":false,"description":"Include cached Bolagsverket company and financial-report cases. Requires Pro or higher.","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Company timeline","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimelineResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/cases":{"get":{"tags":["Company"],"summary":"Get Bolagsverket company cases (Pro+)","description":"Return normalized company cases and financial-report cases from Bolagsverket. Results are cached for 24 hours. A financial-report case is not the same as a downloadable document; use /reports for documents.","operationId":"getCompanyCases","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"schema":{"type":"string","example":"7884001517"}},{"name":"from_date","in":"query","required":false,"schema":{"type":"string","format":"date"},"description":"Only cases starting or ending on or after this date."},{"name":"to_date","in":"query","required":false,"schema":{"type":"string","format":"date"},"description":"Only cases starting or ending on or before this date."}],"responses":{"200":{"description":"Normalized Bolagsverket company cases","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyCasesResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"502":{"description":"Bolagsverket upstream error"},"503":{"description":"Bolagsverket provider quota exhausted"}}}},"/v1/company/{orgnr}/similar":{"get":{"tags":["Analytics"],"summary":"Find similar companies","description":"Find companies with matching SNI codes in the same geographic area","operationId":"getSimilarCompanies","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5567037485"}},{"name":"limit","in":"query","required":false,"description":"Maximum number of results (1-100)","schema":{"type":"integer","minimum":1,"maximum":100,"default":20}},{"name":"same_city","in":"query","required":false,"description":"Only return companies in the same city","schema":{"type":"boolean","default":true}}],"responses":{"200":{"description":"Similar companies","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SimilarCompaniesResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/workplaces":{"get":{"tags":["Company"],"summary":"Get company workplace locations (arbetsställen)","description":"Get registered workplace locations for a legal entity. The organization number identifies the legal entity, while the CFAR number from SCB's Centrala företags- och arbetsställeregistret identifies an individual workplace. Several workplaces can share one organization number. A workplace is not necessarily a legal branch or separate legal entity. Coverage depends on source data. Returns an empty array if no workplace data is available.","operationId":"getWorkplaces","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5560138298"}}],"responses":{"200":{"description":"Workplace locations","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WorkplacesResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/group":{"get":{"tags":["Analytics"],"summary":"Get corporate group structure (Pro+)","description":"Get the corporate group structure for a company, including ultimate parent, parent chain, siblings, and direct subsidiaries. Uses pre-computed hierarchy data when available. Requires Pro plan or higher.","operationId":"getGroupStructure","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5560000753"}}],"responses":{"200":{"description":"Group structure","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupStructureResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/group/members":{"get":{"tags":["Analytics"],"summary":"Get all members of a corporate group (Pro+)","description":"Get all companies that belong to the same corporate group as the specified company. Returns the full hierarchy from ultimate parent down. Requires Pro plan or higher.","operationId":"getGroupMembers","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5560000753"}}],"responses":{"200":{"description":"Group members","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GroupMembersResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/analysis":{"get":{"tags":["Analytics"],"summary":"Get AI-powered financial analysis","description":"Get AI-generated financial analysis derived from public annual reports. Provides a stability rating (AAA-C scale), risk factors, and summary. This is NOT credit information under Kreditupplysningslagen (SFS 1973:1173). Results are cached per fiscal year. Requires Pro plan or higher.","operationId":"getAnalysis","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5567037485"}},{"name":"lang","in":"query","required":false,"description":"Language for summary text","schema":{"type":"string","enum":["sv","en"],"default":"sv"}}],"responses":{"200":{"description":"AI analysis","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AnalysisResponse"}}}},"202":{"description":"No figures are stored yet and collection is queued or running. Poll the same URL after Retry-After; this response is not billed.","headers":{"Retry-After":{"schema":{"type":"integer","example":30}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsCollectingResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"Temporary collection error (data_status: failed). Retry after Retry-After; this is not a statement that no figures exist.","headers":{"Retry-After":{"schema":{"type":"integer","example":60}}}}}}},"/v1/industry/{sniCode}":{"get":{"tags":["Industry"],"summary":"Get industry analysis (Starter+)","description":"Get statistics about companies in a specific SNI code industry. Requires Starter plan or higher.","operationId":"getIndustryAnalysis","security":[{"bearerAuth":[]}],"parameters":[{"name":"sniCode","in":"path","required":true,"description":"SNI code (2-5 digits)","schema":{"type":"string","pattern":"^\\d{2,5}$","example":"62010"}},{"name":"version","in":"query","required":false,"description":"SNI version for reference-code lookup. Company matching expands through SNI 2007/SNI 2025 mappings.","schema":{"type":"string","enum":["2007","2025"]}},{"name":"Accept-Language","in":"header","required":false,"description":"Language for descriptions (sv or en)","schema":{"type":"string","enum":["sv","en"],"default":"sv"}}],"responses":{"200":{"description":"Industry analysis","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IndustryAnalysisResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/TierAccessDenied"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/sni-codes":{"get":{"tags":["Industry"],"summary":"List all SNI codes","description":"Get a list of all SNI codes (Swedish Standard Industrial Classification) available in the system. Supports filtering by hierarchy level, section, and SNI version.","operationId":"listSniCodes","security":[{"bearerAuth":[]}],"parameters":[{"name":"level","in":"query","required":false,"description":"Filter by hierarchy level (2=division, 3=group, 4=class, 5=subclass)","schema":{"type":"integer","enum":[2,3,4,5],"example":2}},{"name":"section","in":"query","required":false,"description":"Filter by section letter (A-V)","schema":{"type":"string","pattern":"^[A-V]$","example":"J"}},{"name":"version","in":"query","required":false,"description":"Filter by SNI version","schema":{"type":"string","enum":["2007","2025"],"example":"2025"}},{"name":"Accept-Language","in":"header","required":false,"description":"Language for descriptions (sv or en)","schema":{"type":"string","enum":["sv","en"],"default":"sv"}}],"responses":{"200":{"description":"List of SNI codes","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SniCodesResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/valuation":{"get":{"tags":["Valuation"],"summary":"Get company valuation","description":"Calculate company valuation using multiple methods: asset-based (substansvärde), earnings-based (avkastningsvärde), EBITDA multiple, and revenue multiple. Returns a recommended valuation range based on industry-specific multipliers. Requires Pro plan or higher.","operationId":"getValuation","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5567037485"}}],"responses":{"200":{"description":"Valuation result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ValuationResponse"}}}},"202":{"description":"No figures are stored yet and collection is queued or running. Poll the same URL after Retry-After; this response is not billed.","headers":{"Retry-After":{"schema":{"type":"integer","example":30}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsCollectingResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"Temporary collection error (data_status: failed). Retry after Retry-After; this is not a statement that no figures exist.","headers":{"Retry-After":{"schema":{"type":"integer","example":60}}}}}}},"/v1/company/{orgnr}/valuation/ai":{"get":{"tags":["Valuation"],"summary":"Get AI-powered company valuation","description":"Get comprehensive AI-powered valuation analysis including key value drivers, risk adjustments, and industry context. Uses machine learning to analyze financial statements and annual reports. Results are cached per fiscal year. Requires Pro plan or higher.","operationId":"getAIValuation","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Organization number","schema":{"type":"string","example":"5567037485"}},{"name":"lang","in":"query","required":false,"description":"Language for summary and descriptions","schema":{"type":"string","enum":["sv","en"],"default":"sv"}},{"name":"force","in":"query","required":false,"description":"Force regeneration (bypass cache)","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"AI valuation result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AIValuationResponse"}}}},"202":{"description":"No figures are stored yet and collection is queued or running. Poll the same URL after Retry-After; this response is not billed.","headers":{"Retry-After":{"schema":{"type":"integer","example":30}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/FinancialsCollectingResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"Temporary collection error (data_status: failed). Retry after Retry-After; this is not a statement that no figures exist.","headers":{"Retry-After":{"schema":{"type":"integer","example":60}}}}}}},"/v1/export":{"post":{"tags":["Export"],"summary":"Export company data","description":"Export company, contact and latest financial data with a Business API key (personal or team). Preview returns an exact count, a current cost estimate and up to 100 sample rows for free. Each delivered row consumes one ordinary API unit from the payer's shared subscription allowance. Additional units use the customer's basic overage rate and respect stop limits, spending caps and prepaid credit. Synchronous delivery limits are 100000 rows, 64 MiB and 1000000 rows per UTC month. Use preview=true with include=[count] for a count-only search snapshot, and include=[sample,coverage] separately. Use async=true with preview=false for larger complete exports; HTTP 202 returns a durable job ID. Async exports use the shared API billing limits without the synchronous row ceilings. Use data_version and expected_rows to guard the snapshot.","operationId":"exportCompanies","security":[{"bearerAuth":[]}],"parameters":[{"name":"Idempotency-Key","in":"header","required":false,"description":"Use a unique key per full export and reuse it with an identical request on retries. Results remain replayable for 24 hours without additional rows, API units or charges. Conflicting or expired keys return 409. Scoped to the paying account and personal/team context.","schema":{"type":"string","minLength":1,"maxLength":128,"pattern":"^[!-~]+$"}},{"name":"Accept-Language","in":"header","required":false,"description":"Language for SNI descriptions (sv or en)","schema":{"type":"string","enum":["sv","en"],"default":"sv"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportRequest"},"examples":{"preview":{"summary":"Preview export","value":{"filters":{"sni_codes":["62010"],"cities":["Stockholm"],"status":"active"},"preview":true}},"financialList":{"summary":"Financial and contact list for an external application","value":{"filters":{"cities":["Stockholm"],"org_forms":["AB"],"employees_min":5,"revenue_min":10000000,"has_email":true},"fields":["orgnr","name","city","email","website","revenue","net_income","employees","equity_ratio","period_end","accounting_scope","quality_status"],"format":"json"}},"fullExport":{"summary":"Full CSV export","value":{"filters":{"sni_codes":["62010","62020"],"org_forms":["AB"],"has_f_skatt":true},"fields":["orgnr","name","city","sni_codes"],"format":"csv"}}}}}},"responses":{"200":{"description":"Export data (JSON format) or preview result","headers":{"X-Export-Units":{"description":"Ordinary API units consumed by a new full export; one per row. Replay retains the original value.","schema":{"type":"integer"}},"X-Export-Overage-Units":{"description":"Export units beyond the shared included allowance.","schema":{"type":"integer"}},"X-Export-Cost-SEK":{"description":"Additional cost incurred for a new full export, excluding VAT. Older replays retain their legacy estimate.","schema":{"type":"number"}},"X-Monthly-Remaining":{"description":"Shared included API units remaining after this export was committed.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"oneOf":[{"$ref":"#/components/schemas/ExportPreviewResponse"},{"$ref":"#/components/schemas/ExportJsonResponse"}]}},"text/csv":{"schema":{"type":"string","description":"CSV file content"}}}},"202":{"description":"Export queued or existing job returned","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExportJob"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"402":{"description":"Export row limit, shared API quota, overusage cap or prepaid balance exceeded","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"quota_exceeded","message":"Export would use 5000 rows but you only have 1000 remaining this month"}}}},"403":{"$ref":"#/components/responses/Forbidden"},"409":{"description":"Idempotency key conflicts or snapshot has expired","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"413":{"description":"Request exceeds 32 KiB or result exceeds 64 MiB","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"429":{"$ref":"#/components/responses/RateLimited"},"503":{"description":"Export temporarily unavailable or timed out; retry with the same key","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}}}}},"/v1/tax-rates":{"get":{"tags":["TaxRates"],"summary":"List available tax rate years","description":"Get a list of available years for municipal tax rates data from Skatteverket/SCB","operationId":"listTaxRateYears","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Available years","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxRateYearsResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/tax-rates/year/{year}":{"get":{"tags":["TaxRates"],"summary":"Get all tax rates for a year","description":"Get municipal tax rates for all Swedish municipalities for a specific year","operationId":"getTaxRatesByYear","security":[{"bearerAuth":[]}],"parameters":[{"name":"year","in":"path","required":true,"description":"Tax year (4 digits)","schema":{"type":"integer","minimum":2000,"maximum":2100,"example":2026}}],"responses":{"200":{"description":"Tax rates for all municipalities","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxRatesByYearResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/tax-rates/kommun/{kommunCode}":{"get":{"tags":["TaxRates"],"summary":"Get tax rates for a municipality","description":"Get tax rates for a specific municipality across all available years","operationId":"getTaxRatesByKommun","security":[{"bearerAuth":[]}],"parameters":[{"name":"kommunCode","in":"path","required":true,"description":"Swedish municipality code (4 digits)","schema":{"type":"string","pattern":"^\\d{4}$","example":"0180"}}],"responses":{"200":{"description":"Tax rates for the municipality","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxRatesByKommunResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/tax-rates/kommun/{kommunCode}/{year}":{"get":{"tags":["TaxRates"],"summary":"Get specific tax rate","description":"Get tax rate for a specific municipality and year","operationId":"getTaxRateByKommunAndYear","security":[{"bearerAuth":[]}],"parameters":[{"name":"kommunCode","in":"path","required":true,"description":"Swedish municipality code (4 digits)","schema":{"type":"string","pattern":"^\\d{4}$","example":"0180"}},{"name":"year","in":"path","required":true,"description":"Tax year (4 digits)","schema":{"type":"integer","minimum":2000,"maximum":2100,"example":2026}}],"responses":{"200":{"description":"Tax rate for the municipality and year","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MunicipalTaxRate"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/tax-rates/search":{"get":{"tags":["TaxRates"],"summary":"Search municipalities","description":"Search for municipalities by name and get their tax rates","operationId":"searchTaxRates","security":[{"bearerAuth":[]}],"parameters":[{"name":"q","in":"query","required":true,"description":"Search query (municipality name, min 2 chars)","schema":{"type":"string","minLength":2,"example":"Stockholm"}},{"name":"year","in":"query","required":false,"description":"Filter by year (defaults to latest available)","schema":{"type":"integer","example":2026}}],"responses":{"200":{"description":"Search results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TaxRateSearchResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/rates":{"get":{"tags":["Rates"],"summary":"Get latest rates","description":"Get the latest interest rates and exchange rates from Sveriges Riksbank. Includes policy rate, reference rate, deposit/lending rates, and major currency exchange rates against SEK.","operationId":"getLatestRates","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Latest rates grouped by category","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestRatesResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/rates/series":{"get":{"tags":["Rates"],"summary":"List available rate series","description":"List all available rate series with their latest observation date","operationId":"listRateSeries","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Available series","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RateSeriesListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/rates/series/{seriesId}":{"get":{"tags":["Rates"],"summary":"Get historical rates for a series","description":"Get historical rate observations for a specific series. Use `from` and `to` query parameters to filter by date range. Returns up to 1000 observations.","operationId":"getRatesBySeries","security":[{"bearerAuth":[]}],"parameters":[{"name":"seriesId","in":"path","required":true,"description":"Series identifier (e.g. SECBREPOEFF, SEKEURPMI)","schema":{"type":"string","example":"SEKEURPMI"}},{"name":"from","in":"query","description":"Start date (YYYY-MM-DD)","schema":{"type":"string","format":"date","example":"2026-01-01"}},{"name":"to","in":"query","description":"End date (YYYY-MM-DD)","schema":{"type":"string","format":"date","example":"2026-03-31"}}],"responses":{"200":{"description":"Historical rates","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatesBySeriesResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/rates/latest/{seriesId}":{"get":{"tags":["Rates"],"summary":"Get latest rate for a series","description":"Get the most recent observation for a specific rate series","operationId":"getLatestRate","security":[{"bearerAuth":[]}],"parameters":[{"name":"seriesId","in":"path","required":true,"description":"Series identifier","schema":{"type":"string","example":"SECBREPOEFF"}}],"responses":{"200":{"description":"Latest rate","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RiksbankRate"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/rates/date/{date}":{"get":{"tags":["Rates"],"summary":"Get all rates for a date","description":"Get all rate observations for a specific date. Returns empty if the date is not a Swedish banking day.","operationId":"getRatesByDate","security":[{"bearerAuth":[]}],"parameters":[{"name":"date","in":"path","required":true,"description":"Date (YYYY-MM-DD)","schema":{"type":"string","format":"date","example":"2026-04-02"}}],"responses":{"200":{"description":"Rates for the date","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RatesByDateResponse"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/webhooks":{"get":{"tags":["Webhooks"],"summary":"List webhooks","description":"List all webhook subscriptions for your account. Requires Pro plan or higher.","operationId":"listWebhooks","security":[{"bearerAuth":[]},{"sessionAuth":[]}],"responses":{"200":{"description":"List of webhooks","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookListResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"}}},"post":{"tags":["Webhooks"],"summary":"Create webhook","description":"Create a new webhook subscription. Requires Pro plan or higher. Each generated delivery counts as one usage unit; automatic retries are included. Use `filters.sni_codes` to subscribe to one or more SNI industries; `company.sni_changed` matches both previous and current SNI sets. One change can produce several events, for example `company.name_changed` and `company.address_changed`; each is a separate delivery. For backward compatibility, subscribing to `company.liquidation_started` also delivers `company.liquidation_ended`.","operationId":"createWebhook","security":[{"bearerAuth":[]},{"sessionAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreateRequest"}}}},"responses":{"201":{"description":"Webhook created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"}}}},"/v1/webhooks/{id}":{"patch":{"tags":["Webhooks"],"summary":"Update webhook","description":"Update a webhook subscription.","operationId":"updateWebhook","security":[{"bearerAuth":[]},{"sessionAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Webhook ID"}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookUpdateRequest"}}}},"responses":{"200":{"description":"Webhook updated","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Webhook"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}},"delete":{"tags":["Webhooks"],"summary":"Delete webhook","description":"Delete a webhook subscription.","operationId":"deleteWebhook","security":[{"bearerAuth":[]},{"sessionAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Webhook ID"}],"responses":{"200":{"description":"Webhook deleted","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Webhook deleted successfully"}}}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/v1/webhooks/{id}/deliveries":{"get":{"tags":["Webhooks"],"summary":"Get delivery history","description":"Get the delivery history for a webhook, including the queued payload metadata.","operationId":"getWebhookDeliveries","security":[{"bearerAuth":[]},{"sessionAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Webhook ID"},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50},"description":"Maximum results (1-100)"}],"responses":{"200":{"description":"Delivery history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookDeliveriesResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/v1/webhooks/{id}/test":{"post":{"tags":["Webhooks"],"summary":"Test webhook","description":"Send a signed test webhook to verify your endpoint. The receiver should accept the same POST contract as normal deliveries: JSON body, `X-Webhook-Signature`, `X-Webhook-Timestamp`, and `X-Webhook-Id` headers. Non-2xx receiver responses are returned as HTTP 400 with safe upstream diagnostics.","operationId":"testWebhook","security":[{"bearerAuth":[]},{"sessionAuth":[]}],"parameters":[{"name":"id","in":"path","required":true,"schema":{"type":"string"},"description":"Webhook ID"}],"responses":{"200":{"description":"Test sent","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"type":"string","example":"Test webhook sent successfully"},"delivery_id":{"type":"string","example":"del_test_abc123def456"}}}}}},"400":{"description":"Receiver rejected the test delivery or the test delivery could not be sent","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestFailureResponse"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"404":{"$ref":"#/components/responses/NotFound"}}}},"/v1/screening/person/{name}":{"get":{"tags":["Screening"],"summary":"Screen a person name","description":"Screen a person name against PEP (Politically Exposed Persons) and international sanctions lists (EU, UN, OFAC). Returns matching entries with risk scores. Requires Starter plan or higher.","operationId":"screenPerson","security":[{"bearerAuth":[]}],"parameters":[{"name":"name","in":"path","required":true,"description":"Person name to screen (URL encoded)","schema":{"type":"string","minLength":2,"maxLength":200,"example":"Vladimir Putin"}},{"name":"min_score","in":"query","required":false,"description":"Minimum match score (50-100). Higher values = stricter matching.","schema":{"type":"integer","minimum":50,"maximum":100,"default":80}},{"name":"refresh","in":"query","required":false,"description":"Force refresh cached results","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Screening result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreeningResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/screening":{"get":{"tags":["Screening"],"summary":"Screen company and board","description":"Screen a company name and all board members against PEP and sanctions lists. Returns individual screening results for each person plus an overall risk assessment. Requires Starter plan or higher.","operationId":"screenCompany","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"description":"Swedish organization number (10 digits)","schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$","example":"5567037485"}},{"name":"refresh","in":"query","required":false,"description":"Force refresh cached results","schema":{"type":"boolean","default":false}}],"responses":{"200":{"description":"Company screening result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CompanyScreeningResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"},"404":{"$ref":"#/components/responses/NotFound"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/screening/batch":{"post":{"tags":["Screening"],"summary":"Batch screen names","description":"Screen multiple names in a single request (up to 50). Returns individual results plus a summary. Requires Starter plan or higher.","operationId":"batchScreen","security":[{"bearerAuth":[]}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["names"],"properties":{"names":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":50,"description":"List of names to screen","example":["Anna Andersson","Erik Eriksson"]},"min_score":{"type":"integer","minimum":50,"maximum":100,"default":80,"description":"Minimum match score"}}}}}},"responses":{"200":{"description":"Batch screening results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BatchScreeningResult"}}}},"400":{"$ref":"#/components/responses/BadRequest"},"401":{"$ref":"#/components/responses/Unauthorized"},"403":{"$ref":"#/components/responses/UpgradeRequired"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/screening/stats":{"get":{"tags":["Screening"],"summary":"Get screening database statistics","description":"Get statistics about the screening database including counts of sanctions entries and PEP entries by source.","operationId":"getScreeningStats","security":[{"bearerAuth":[]}],"responses":{"200":{"description":"Screening statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ScreeningStats"}}}},"401":{"$ref":"#/components/responses/Unauthorized"},"429":{"$ref":"#/components/responses/RateLimited"}}}},"/v1/company/{orgnr}/brf":{"get":{"tags":["BRF"],"operationId":"getCompanyBrf","summary":"Retrieve source-checked BRF data","description":"Requires the BRF module on the API key's customer (team keys excluded). 1 unit per successful 200 response; 10,000 per module billing period. Only evidenced fields are non-null. Partial does not mean the whole report is verified. Empty lists do not prove absence; inspect completeness flags. See https://bolagsapi.se/docs#brf-data for the integration guide.","security":[{"bearerAuth":[]}],"parameters":[{"name":"orgnr","in":"path","required":true,"schema":{"type":"string","pattern":"^\\d{6}-?\\d{4}$"}},{"name":"period","in":"query","schema":{"type":"string","pattern":"^20\\d{2}-(0[1-9]|1[0-2])$"},"description":"YYYY-MM. Omit for latest known report; never silently falls back to an older verified year."}],"responses":{"200":{"description":"Checked fields, with nulls for unknown/conflicting values. Amounts in SEK; percentages in percentage points.","headers":{"X-BRF-Data-Remaining":{"description":"Remaining data requests in the module period after this request","schema":{"type":"integer","minimum":0}}},"content":{"application/json":{"schema":{"type":"object","required":["orgnr","period_end","period_start","extracted_at","report_id","quality","property","economy","loans","fee_changes"],"properties":{"orgnr":{"type":"string"},"period_start":{"type":["string","null"],"format":"date"},"period_end":{"type":"string","format":"date"},"report_id":{"type":"string"},"quality":{"type":"object","required":["status","schema_version","validation_version","fields","loans_complete","fee_changes_complete"],"properties":{"status":{"enum":["partial","verified"]},"schema_version":{"const":"brf-v1"},"validation_version":{"type":"string"},"loans_complete":{"type":"boolean"},"fee_changes_complete":{"type":"boolean"},"fields":{"type":"object","additionalProperties":{"type":"object","properties":{"status":{"enum":["verified","missing","conflict","unverified"]},"page":{"type":["integer","null"]},"quote":{"type":["string","null"]},"unit":{"type":["string","null"]},"method":{"enum":["reported","calculated",null]}}}}}},"property":{"type":"object","properties":{"apartments":{"type":["number","null"],"description":"Tenant-owned apartments; rental apartments are separate."},"rental_apartments":{"type":["number","null"]},"premises":{"type":["number","null"]},"residential_area_sqm":{"type":["number","null"],"description":"Area of apartments held with tenant ownership; excludes rental apartments."},"total_area_sqm":{"type":["number","null"]},"land_ownership":{"enum":["owned","leasehold",null]}}},"economy":{"type":"object","properties":{"annual_fees":{"type":["number","null"]},"annual_fee_per_sqm":{"type":["number","null"]},"loans_total":{"type":["number","null"]},"debt_per_sqm":{"type":["number","null"],"description":"SEK per square metre of total area."},"debt_per_residential_sqm":{"type":["number","null"],"description":"SEK per square metre of tenant-owned residential area."},"savings_per_sqm":{"type":["number","null"]},"interest_sensitivity":{"type":["number","null"]},"energy_cost_per_sqm":{"type":["number","null"]}}},"loans":{"type":"array","items":{"type":"object","properties":{"lender":{"type":["string","null"]},"principal":{"type":["number","null"]},"interest_rate_percent":{"type":["number","null"]},"fixed_until":{"type":["string","null"],"format":"date"},"maturity_date":{"type":["string","null"],"format":"date"},"annual_amortization":{"type":["number","null"]}}}},"fee_changes":{"type":"array","items":{"type":"object","properties":{"effective_date":{"type":["string","null"],"format":"date"},"percent":{"type":["number","null"]}}}},"extracted_at":{"type":"string","format":"date-time"}}}}}},"202":{"description":"Collection/extraction is processing. No unit charged.","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"}}}}},"headers":{"Retry-After":{"description":"Seconds to wait before polling","schema":{"type":"integer","example":60}}}},"400":{"description":"Invalid orgnr/period or company is not a BRF","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"}}}}}},"401":{"description":"Unauthenticated","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"}}}}}},"403":{"description":"Module not enabled","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"}}}}}},"404":{"description":"Company, report or quality-checked data unavailable; no charge","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"}}}}}},"405":{"description":"Only GET is supported; HEAD is not a free data lookup","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"}}}}}},"429":{"description":"10,000 BRF units exhausted, or API rate limit reached; no charge","content":{"application/json":{"schema":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"}}}}}}}}},"/api/v1/identify/init":{"servers":[{"url":"https://auth.byhugo.se","description":"Auth by Hugo (not the BolagsAPI data API)"}],"post":{"tags":["Identity"],"operationId":"startIdentity","summary":"Start BankID identification with optional company enrichment","security":[{"identityApiKey":[]}],"parameters":[{"name":"X-Forwarded-For","in":"header","required":false,"description":"Visitor IP supplied by your trusted backend/proxy. The first address is used when endUserIp is omitted from the JSON body.","schema":{"type":"string"},"example":"203.0.113.42"}],"description":"BankID requires the end user's IP. For backend integrations, supply the visitor's IP in endUserIp (recommended) or X-Forwarded-For. JSON takes precedence; invalid JSON IP values return 400. Without a forwarded visitor address, the caller's IP is normally used, not the visitor's.","requestBody":{"content":{"application/json":{"schema":{"type":"object","additionalProperties":false,"properties":{"scopes":{"type":"array","maxItems":4,"default":[],"items":{"type":"string","enum":["openid","profile","pnr","enrichment:bolag"]}},"endUserIp":{"type":"string","oneOf":[{"format":"ipv4"},{"format":"ipv6"}],"example":"203.0.113.42","description":"Optional visitor IPv4 or IPv6 address as seen by your backend or trusted proxy. Takes precedence over X-Forwarded-For. Hostnames, ports and address lists are not accepted."},"expectedPersonalNumber":{"type":"string","description":"Optional verified 12-digit Swedish personal/coordination number; validated by Auth."}}}}}},"responses":{"200":{"description":"Identification created","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityInitResponse"}}}},"400":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}},"401":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}},"429":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}},"502":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}}}}},"/api/v1/identify/collect":{"servers":[{"url":"https://auth.byhugo.se","description":"Auth by Hugo (not the BolagsAPI data API)"}],"get":{"tags":["Identity"],"operationId":"collectIdentity","summary":"Stream BankID status and optional company enrichment","security":[{"identityApiKey":[]}],"parameters":[{"name":"orderRef","in":"query","required":true,"schema":{"type":"string"}}],"description":"SSE framing: event: <name> followed by data: <JSON>. Parse data as JSON, then validate against the schema named in x-sse-events. Complete means authentication succeeded; enrichment may still require follow-up. Create orderRef through POST /api/v1/identify/init as described in the Identity guide.","responses":{"200":{"description":"SSE stream; schemas describe each event's JSON data, not the text stream itself.","content":{"text/event-stream":{"schema":{"type":"string"}}},"x-sse-events":{"pending":{"$ref":"#/components/schemas/IdentityPendingEvent"},"complete":{"$ref":"#/components/schemas/IdentityCompleteResponse"},"failed":{"$ref":"#/components/schemas/IdentityFailedEvent"},"error":{"$ref":"#/components/schemas/IdentityErrorEvent"}}},"400":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}},"401":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}},"403":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}},"404":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}},"410":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}}}}},"/api/v1/identify/enrichment":{"servers":[{"url":"https://auth.byhugo.se","description":"Auth by Hugo (not the BolagsAPI data API)"}],"get":{"tags":["Identity"],"operationId":"getIdentityEnrichment","summary":"Continue company enrichment after completed BankID identification","security":[{"identityApiKey":[]}],"parameters":[{"name":"orderRef","in":"query","required":true,"schema":{"type":"string"}}],"description":"Use the same client's Auth API key and enrichmentUrl from complete. No new BankID identification is needed. Follow Retry-After; missing/expired follow-up state returns 410.","responses":{"200":{"description":"fresh, stale or not_found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityEnrichmentResponse"}}}},"202":{"description":"queued or refreshing","headers":{"Retry-After":{"schema":{"type":"integer","const":2}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityEnrichmentResponse"}}}},"400":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}},"401":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}},"403":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}},"410":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}},"503":{"description":"Enrichment failed; BankID identity remains verified","headers":{"Retry-After":{"schema":{"type":"integer","const":30}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityEnrichmentResponse"}}}}}}},"/userinfo":{"servers":[{"url":"https://auth.byhugo.se","description":"Auth by Hugo (not the BolagsAPI data API)"}],"get":{"tags":["Identity"],"operationId":"getIdentityUserInfo","summary":"OIDC user claims and consented company enrichment","security":[{"identityAccessToken":[]}],"description":"Use an OIDC access token, not an API key. Scope-dependent claims are omitted when not requested. Enrichment status/retry metadata lives inside enrichment.bolag; enrichmentStatus/enrichmentUrl are REST complete-event fields, not /userinfo fields.","responses":{"200":{"description":"User claims","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityUser"}}}},"401":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}},"403":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}},"404":{"description":"Request, client authentication or session error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdentityApiError"}}}}}}}},"components":{"securitySchemes":{"identityApiKey":{"type":"http","scheme":"bearer","description":"Auth by Hugo client API key, not a BolagsAPI data key"},"identityAccessToken":{"type":"http","scheme":"bearer","bearerFormat":"JWT","description":"OIDC access token issued by Auth by Hugo"},"bearerAuth":{"type":"http","scheme":"bearer","description":"API key for authentication. Get your key at https://bolagsapi.se/dashboard/keys"},"sessionAuth":{"type":"apiKey","in":"header","name":"X-Session-Token","description":"Session token from dashboard login"}},"schemas":{"BusinessStatisticsError":{"type":"object","required":["error","message","reason"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"request_id":{"type":"string"},"reason":{"enum":["invalid_request","not_published","period_unavailable","not_ready","technical_error"],"description":"not_published: requested period is later than the available source revision (422), not a live upstream publication check. period_unavailable: historical period missing/outside coverage (422). not_ready: no usable local publication (503). technical_error: data could not be read/verified (503)."}}},"BusinessTimeSeries":{"type":"object","required":["topic","frequency","unit","definition","filters","source","observations","from","to","available_from","available_to"],"properties":{"topic":{"enum":["bankruptcies","new-businesses"]},"frequency":{"enum":["month","quarter"]},"unit":{"const":"count"},"definition":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"},"available_from":{"type":"string"},"available_to":{"type":"string"},"aggregation":{"type":"string"},"filters":{"type":"object","properties":{"county":{"type":["string","null"]},"industry":{"type":["string","null"]},"industry_classification":{"type":"string"}}},"available_filters":{"type":"object","properties":{"county":{"type":"array","items":{"type":"object","required":["code","label"],"properties":{"code":{"type":"string"},"label":{"type":"string"}}}},"industry":{"type":"array","items":{"type":"object","required":["code","label"],"properties":{"code":{"type":"string"},"label":{"type":"string"}}}}}},"source":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"updated_at":{"type":["string","null"]},"published_at":{"type":["string","null"]},"note":{"type":"array","items":{"type":"string"}},"coverage":{"type":"string"},"classification":{"type":"string"}}},"observations":{"type":"array","items":{"type":"object","required":["period","businesses"],"properties":{"period":{"type":"string"},"businesses":{"type":"object","required":["value","status","source_status","calculation_method","missing_reason","components"],"properties":{"value":{"type":["integer","null"],"minimum":0},"status":{"enum":["available","unavailable"]},"source_status":{"type":"array","items":{"type":"string"},"description":"Publisher marks, unchanged. '..' means unavailable or confidential; it does not identify which."},"calculation_method":{"enum":["source_total","source_value","sum"],"description":"A separately published total, a single filtered source value, or a complete sum of non-overlapping components. Describes the method even when value is null."},"missing_reason":{"enum":[null,"incomplete_components","source_unavailable"],"description":"Null when available. incomplete_components means a sum contains missing/marked source cells; source_unavailable means the selected source cell is missing/marked."},"components":{"type":"object","required":["expected","available","missing"],"properties":{"expected":{"type":"integer","minimum":0},"available":{"type":"integer","minimum":0},"missing":{"type":"integer","minimum":0}}}}},"affected_employees":{"type":"object","required":["value","status","source_status","calculation_method","missing_reason","components"],"properties":{"value":{"type":["integer","null"],"minimum":0},"status":{"enum":["available","unavailable"]},"source_status":{"type":"array","items":{"type":"string"},"description":"Publisher marks, unchanged. '..' means unavailable or confidential; it does not identify which."},"calculation_method":{"enum":["source_total","source_value","sum"],"description":"A separately published total, a single filtered source value, or a complete sum of non-overlapping components. Describes the method even when value is null."},"missing_reason":{"enum":[null,"incomplete_components","source_unavailable"],"description":"Null when available. incomplete_components means a sum contains missing/marked source cells; source_unavailable means the selected source cell is missing/marked."},"components":{"type":"object","required":["expected","available","missing"],"properties":{"expected":{"type":"integer","minimum":0},"available":{"type":"integer","minimum":0},"missing":{"type":"integer","minimum":0}}}}}}}}}},"BusinessCompanyCounts":{"type":"object","required":["filters","group_by","total","groups","truncated","as_of","source"],"properties":{"filters":{"type":"object","additionalProperties":{"type":"string"}},"group_by":{"enum":["industry","municipality","legal_form","status"]},"total":{"type":"integer","minimum":0},"groups":{"type":"array","items":{"type":"object","required":["code","count"],"properties":{"code":{"type":["string","null"]},"count":{"type":"integer","minimum":0}}}},"truncated":{"type":"boolean","description":"Only the largest 100 groups are returned. total includes all matching groups."},"as_of":{"type":"string","format":"date-time"},"source":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"updated_at":{"type":["string","null"]},"published_at":{"type":["string","null"]},"note":{"type":"array","items":{"type":"string"}},"coverage":{"type":"string"},"classification":{"type":"string"}}}}},"BusinessBenchmarks":{"type":"object","required":["sni_code","sni_version","year","size_class","population","source","metrics"],"properties":{"sni_code":{"type":"string"},"sni_version":{"const":"2007"},"year":{"type":"string"},"size_class":{"type":"string"},"population":{"type":"string"},"source":{"type":"object","required":["name"],"properties":{"name":{"type":"string"},"updated_at":{"type":["string","null"]},"published_at":{"type":["string","null"]},"note":{"type":"array","items":{"type":"string"}},"coverage":{"type":"string"},"classification":{"type":"string"}}},"metrics":{"type":"array","items":{"type":"object","required":["metric","label","unit","lower_quartile","median","upper_quartile"],"properties":{"metric":{"enum":["operating_margin","net_margin","equity_ratio","quick_ratio","revenue_per_employee","revenue"]},"label":{"type":"string"},"unit":{"enum":["percent","SEK_thousands"]},"lower_quartile":{"type":"object","required":["value","source_status"],"properties":{"value":{"type":["number","null"]},"source_status":{"type":["string","null"]}}},"median":{"type":"object","required":["value","source_status"],"properties":{"value":{"type":["number","null"]},"source_status":{"type":["string","null"]}}},"upper_quartile":{"type":"object","required":["value","source_status"],"properties":{"value":{"type":["number","null"]},"source_status":{"type":["string","null"]}}}}}}}},"CompanyStatistics":{"type":"object","required":["orgnr","primary_sni_code","county_code","municipality_code","industry_cohort","regional_bankruptcies","regional_new_businesses","interpretation"],"properties":{"orgnr":{"type":"string"},"primary_sni_code":{"type":["string","null"]},"county_code":{"type":["string","null"]},"municipality_code":{"type":["string","null"]},"industry_cohort":{"anyOf":[{"$ref":"#/components/schemas/BusinessCompanyCounts"},{"type":"null"}]},"regional_bankruptcies":{"anyOf":[{"$ref":"#/components/schemas/BusinessTimeSeries"},{"type":"null"}]},"regional_new_businesses":{"anyOf":[{"$ref":"#/components/schemas/BusinessTimeSeries"},{"type":"null"}]},"interpretation":{"type":"string"}}},"Foundation":{"type":"object","description":"Länsstyrelsen source snapshot. Nightly import; excludes pension, staff and collective-agreement foundations. All source roles are retained; partial identifiers are never merged into a verified person identity. Omitted for organizations outside this source.","properties":{"source":{"type":"string","const":"lansstyrelsen_stiftelser"},"source_url":{"type":"string","format":"uri"},"source_id":{"type":"string"},"active_in_source":{"type":"boolean"},"data_status":{"type":"string","enum":["fresh","stale"],"description":"Stale after 36 hours without successful source verification. Source absence does not prove deregistration."},"last_checked_at":{"type":"string","format":"date-time"},"published_at":{"type":"string","format":"date-time"},"content_hash":{"type":"string"},"name":{"type":"string","nullable":true},"purpose":{"type":"string","nullable":true},"foundation_type":{"type":"integer","nullable":true},"county_code":{"type":"string","nullable":true},"municipality_code":{"type":"string","nullable":true},"address":{"type":"object","properties":{"street":{"type":"string","nullable":true},"care_of":{"type":"string","nullable":true},"postal_code":{"type":"string","nullable":true},"city":{"type":"string","nullable":true}}},"phone":{"type":"string","nullable":true},"website":{"type":"string","nullable":true},"signatory_rules":{"type":"string","nullable":true},"contact_access":{"type":"string","enum":["available","restricted"],"description":"Phone/website inherit contact endpoint access; null when restricted."},"signatory_rules_access":{"type":"string","enum":["available","restricted"],"description":"Signing text inherits signatory endpoint access; null when restricted."},"role_count":{"type":"integer"},"coverage":{"type":"string"},"roles_access":{"type":"string","enum":["available","restricted"],"description":"Full role observations require persons endpoint access (Pro+) and no customer restriction. Otherwise roles is null; role_count remains the source total."},"roles":{"type":"array","nullable":true,"items":{"$ref":"#/components/schemas/FoundationRole"}}},"required":["source","source_id","active_in_source","data_status","last_checked_at","roles","roles_access","role_count"]},"FoundationRole":{"type":"object","description":"One source role observation. source_record_id identifies the observation, not a globally resolved person. Organizations remain organization relations; roles do not imply ownership. Raw person identifiers are not returned.","properties":{"source_record_id":{"type":"string"},"name":{"type":"string"},"type":{"$ref":"#/components/schemas/PersonRoleType"},"title":{"type":"string"},"entity_type":{"type":"string","enum":["organization","person_or_unknown"]},"identity_resolution":{"type":"string","enum":["resolved","unresolved"]},"identifier_precision":{"type":"string","enum":["person","organization","birth_date_only","unknown"]},"person_id":{"type":"string","nullable":true},"personnummer_hash":{"type":"string","nullable":true},"related_orgnr":{"type":"string","nullable":true},"principal":{"type":"string","nullable":true}},"required":["source_record_id","name","type","title","entity_type","identity_resolution","identifier_precision"]},"FinancialFxTranslation":{"type":"object","description":"Sveriges Riksbank exchange rates used to present a report filed in another currency in SEK. Balance-sheet amounts use the closing rate on the balance-sheet date (the last banking day on or before fiscal_year_end); income-statement amounts use the average rate of the fiscal year (mean of the monthly average rates of its months, also for broken fiscal years). Ratios and employees are not translated: ratios are those of the filed figures. Growth between years is calculated on the SEK amounts and therefore includes exchange-rate effects.","required":["source","quote","balance_sheet","income_statement"],"properties":{"source":{"type":"string","enum":["Sveriges Riksbank"]},"quote":{"type":"string","example":"SEK per 1 EUR"},"balance_sheet":{"type":"object","nullable":true,"description":"Null when the report has no balance-sheet amounts.","properties":{"method":{"type":"string","enum":["closing_rate"]},"rate":{"type":"number","example":10.818},"rate_date":{"type":"string","format":"date","example":"2025-12-30"}}},"income_statement":{"type":"object","nullable":true,"description":"Null when the report has no income-statement amounts.","properties":{"method":{"type":"string","enum":["average_rate"]},"rate":{"type":"number","example":11.065},"from_month":{"type":"string","pattern":"^\\d{4}-\\d{2}$","example":"2025-01"},"to_month":{"type":"string","pattern":"^\\d{4}-\\d{2}$","example":"2025-12"},"months":{"type":"integer","example":12}}}}},"AvailablePeriodWithoutFigures":{"type":"object","description":"A period with a known annual report but without publishable figures. no_machine_readable_figures: a PDF filing without parseable figures. currency_conversion_unavailable: a report filed in another currency for which an official exchange rate needed for the SEK translation is not yet available; its amounts are not published untranslated.","properties":{"fiscal_year_end":{"type":"string","pattern":"^\\d{4}-\\d{2}(-\\d{2})?$","example":"2023-12-31"},"period_precision":{"type":"string","enum":["month","day"]},"year":{"type":"integer","example":2023},"source":{"type":"string","enum":["annual_report_pdf","bolagsverket","finansinspektionen"]},"status":{"type":"string","enum":["available"]},"reason":{"type":"string","enum":["no_machine_readable_figures","currency_conversion_unavailable"]},"accounting_scope":{"$ref":"#/components/schemas/AccountingScope"},"reported_currency":{"type":"string","pattern":"^[A-Z]{3}$","description":"Filed currency, for currency_conversion_unavailable only."}}},"AnnouncementFeed":{"type":"object","required":["from","to","limit","hasMore","nextCursor","coverage","announcements","meta"],"properties":{"from":{"type":"string","format":"date"},"to":{"type":"string","format":"date"},"limit":{"type":"integer"},"hasMore":{"type":"boolean"},"nextCursor":{"type":["string","null"]},"coverage":{"type":"string"},"meta":{"$ref":"#/components/schemas/SourceMeta"},"announcements":{"type":"array","items":{"type":"object","required":["id","apiPathId","orgnr","companyName","publicationDate","detailAvailable","sourceUrl"],"properties":{"id":{"type":"string"},"apiPathId":{"type":"string"},"orgnr":{"type":"string","pattern":"^[0-9]{10}$"},"companyName":{"type":"string"},"category":{"type":["string","null"]},"categoryId":{"type":"integer","enum":[1,2,3]},"type":{"type":["string","null"]},"typeId":{"type":["integer","null"]},"subtype":{"type":["string","null"]},"publicationDate":{"type":"string","format":"date"},"registrationDate":{"type":["string","null"],"format":"date"},"detailAvailable":{"type":"boolean"},"sourceUrl":{"type":"string","format":"uri"}}}}}},"TrademarkDecisions":{"type":"object","required":["decisions","meta"],"properties":{"decisions":{"type":"array","items":{"type":"object","required":["id","word_mark","trademark_type","decision","decision_date","status","application_date","registration_date","nice_classes","applicant","image_url"],"properties":{"id":{"type":"string","description":"PRV application number","example":"2025-01234"},"word_mark":{"type":["string","null"],"description":"Word mark text; null for marks without text","example":"FJÄLLDROPPE"},"trademark_type":{"type":["string","null"],"description":"Mark type as stored from PRV, e.g. word, figurative, combined"},"decision":{"type":"string","enum":["registered","refused","withdrawn"]},"decision_date":{"type":"string","format":"date","description":"registered: PRV registration date. refused/withdrawn: date (Swedish time) of the PRV publication in which the record last changed, normally the status change; PRV publishes no separate decision date for these."},"status":{"type":"string","description":"PRV status as stored, e.g. registered, application refused, application withdrawn"},"application_date":{"type":["string","null"],"format":"date"},"registration_date":{"type":["string","null"],"format":"date","description":"Set for registered marks; null for refused and withdrawn applications"},"nice_classes":{"type":"array","items":{"type":"integer","minimum":1,"maximum":45},"description":"Nice classes in the application","example":[33]},"applicant":{"type":"object","required":["type","name","orgnr","country"],"description":"Private individuals are not named. name, orgnr and country are returned only for legal entities; for individuals and applicants we cannot classify they are null.","properties":{"type":{"type":"string","enum":["organization","individual","unknown"],"description":"organization: Swedish organization number linked by PRV, or a recognized legal form in the name. individual: personal identity number or sole trader. unknown: not classifiable (masked)."},"name":{"type":["string","null"],"description":"Applicant or holder name as published by PRV; null unless type is organization"},"orgnr":{"type":["string","null"],"pattern":"^[0-9]{10}$","description":"Swedish organization number when PRV links one to an organization applicant; null otherwise (including foreign organizations). Not inferred from the name."},"country":{"type":["string","null"],"description":"Applicant country code from PRV; null unless type is organization","example":"SE"}}},"image_url":{"type":["string","null"],"description":"Mark image URL for figurative marks, when available"}}}},"meta":{"type":"object","required":["source","source_label","total","limit","offset","trademarks_updated_at"],"properties":{"source":{"type":"string","enum":["prv"]},"source_label":{"type":"string"},"total":{"type":"integer","description":"Matching decisions across all pages"},"limit":{"type":"integer"},"offset":{"type":"integer"},"trademarks_updated_at":{"type":["string","null"],"format":"date-time","description":"Latest PRV trademark publication reflected in the data; same value as prv.trademarks_updated_at on company lookups. Null if unknown."}}}}},"MarketDefinition":{"type":"object","additionalProperties":false,"required":["filters","industry"],"properties":{"filters":{"type":"object","additionalProperties":false,"description":"At least one geographic filter. AND between fields, OR within lists; duplicates normalized. Seat geography differs from visiting-address coordinates.","properties":{"counties":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","pattern":"^\\d{2}$"},"description":"Official seat county codes."},"municipalities":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","pattern":"^\\d{4}$"},"description":"Official seat municipality codes."},"cities":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","minLength":1,"maxLength":100},"description":"Exact case-insensitive postal city after trim and Unicode NFC normalization."},"postal_code_prefixes":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","pattern":"^[0-9 ]{1,100}$"},"description":"1–5 digits after removing spaces; leading zeros preserved. Postal address only."},"sni_prefixes":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","pattern":"^\\d{2,5}$"},"description":"Valid prefixes in the selected classification; only codes with established provenance and unambiguous mapping match."},"employees_min":{"type":"integer","minimum":0},"employees_max":{"type":"integer","minimum":0},"registration_status":{"type":"string","enum":["active","deregistered","unknown","all"],"default":"active","description":"Registration status, separate from tax activity."},"bounds":{"type":"object","additionalProperties":false,"required":["west","south","east","north"],"description":"Inclusive WGS84 visiting-address bounds. west < east and south < north; no antimeridian crossing.","properties":{"west":{"type":"number","minimum":-180,"maximum":180},"east":{"type":"number","minimum":-180,"maximum":180},"south":{"type":"number","minimum":-90,"maximum":90},"north":{"type":"number","minimum":-90,"maximum":90}}}}},"industry":{"type":"object","additionalProperties":false,"required":["version","match","group_by"],"properties":{"version":{"type":"string","enum":["2007","2025"]},"match":{"const":"any"},"group_by":{"const":"division"}}},"employees_basis":{"const":"latest_company_financials","description":"Latest available non-negative employee count from a publishable company statement. May come from an earlier period than other financial fields; provenance reports its period. No group/unknown scope or SCB size-class substitution. Inclusive intervals 0–10, 11–50, 51–250, 251+, unknown."},"location":{"type":"object","additionalProperties":false,"required":["basis","fallback"],"properties":{"basis":{"const":"visiting_address"},"fallback":{"const":"none"}}},"breakdowns":{"type":"array","minItems":1,"maxItems":100,"items":{"type":"string","enum":["industry","employee_size","industry_employee_size"]},"default":["industry","employee_size","industry_employee_size"]}}},"MarketAccepted":{"type":"object","required":["market_id","query_id","status","status_url","retry_after_seconds"],"properties":{"market_id":{"type":"string","format":"uuid"},"query_id":{"type":"string","format":"uuid"},"status":{"const":"queued"},"status_url":{"type":"string"},"retry_after_seconds":{"type":"integer","minimum":0}}},"Market":{"type":"object","required":["market_id","definition","created_at","latest_ready_query_id","pending_query_id"],"properties":{"market_id":{"type":"string","format":"uuid"},"definition":{"$ref":"#/components/schemas/MarketDefinition"},"created_at":{"type":["string","null"],"format":"date-time"},"latest_ready_query_id":{"type":["string","null"],"format":"uuid"},"pending_query_id":{"type":["string","null"],"format":"uuid"}}},"MarketSummary":{"type":"object","required":["total_companies","industry_groups_overlap","coverage"],"properties":{"total_companies":{"type":"integer","minimum":0},"industry_groups_overlap":{"const":true},"industry":{"type":"array","items":{"type":"object","required":["code","label","count"],"properties":{"code":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"employee_size":{"type":"array","items":{"type":"object","required":["code","label","count"],"properties":{"code":{"type":"string"},"label":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"industry_employee_size":{"type":"array","items":{"type":"object","required":["industry_code","employee_size_code","count"],"properties":{"industry_code":{"type":"string"},"employee_size_code":{"type":"string"},"count":{"type":"integer","minimum":0}}}},"coverage":{"type":"object","properties":{"companies_with_coordinates":{"type":"integer","minimum":0},"companies_without_coordinates":{"type":"integer","minimum":0},"total_points":{"type":"integer","minimum":0},"geometry_candidates_without_coordinates":{"type":"integer","minimum":0},"employees_known":{"type":"integer","minimum":0},"employees_unknown":{"type":"integer","minimum":0},"industry_complete":{"type":"integer","minimum":0},"industry_partial":{"type":"integer","minimum":0},"industry_unknown":{"type":"integer","minimum":0},"missing_coordinate_reasons":{"type":"object","additionalProperties":{"type":"integer","minimum":0}},"industry_reasons":{"type":"object","additionalProperties":{"type":"integer","minimum":0}}}}}},"MarketQuery":{"type":"object","required":["market_id","query_id","definition","status","summary","as_of","completed_at","expires_at","error","provenance","retry_after_seconds"],"properties":{"market_id":{"type":"string","format":"uuid"},"query_id":{"type":"string","format":"uuid"},"definition":{"$ref":"#/components/schemas/MarketDefinition"},"status":{"type":"string","enum":["queued","running","ready","failed"]},"as_of":{"type":["string","null"],"format":"date-time","description":"Consistent calculation view, not every source observation time."},"completed_at":{"type":["string","null"],"format":"date-time"},"expires_at":{"type":["string","null"],"format":"date-time"},"summary":{"anyOf":[{"$ref":"#/components/schemas/MarketSummary"},{"type":"null"}]},"error":{"anyOf":[{"type":"object","properties":{"code":{"type":"string"}},"required":["code"]},{"type":"null"}],"description":"Set when status is failed. calculation_timeout: the selection exceeded the calculation time limit; refresh later or narrow the filters. selection_too_large: more than 100000 companies. queue_timeout: the calculation did not start in time; refresh. calculation_failed: other calculation error."},"provenance":{"type":["object","null"],"properties":{"oldest_industry_observation":{"type":["string","null"],"format":"date-time"},"newest_industry_observation":{"type":["string","null"],"format":"date-time"},"oldest_company_update":{"type":["string","null"],"format":"date-time"},"newest_company_update":{"type":["string","null"],"format":"date-time"},"oldest_coordinate_observation":{"type":["string","null"],"format":"date-time"},"newest_coordinate_observation":{"type":["string","null"],"format":"date-time"},"oldest_financial_period":{"type":["string","null"]},"newest_financial_period":{"type":["string","null"]},"employees_basis":{"type":"string"},"financial_periods_vary":{"type":"boolean"},"industry_version":{"type":"string"},"industry_source":{"type":"string"},"coordinates_source":{"type":"string"},"company_source_times_vary":{"type":"boolean"}}},"retry_after_seconds":{"type":["integer","null"]},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"MarketPoints":{"type":"object","required":["market_id","query_id","as_of","expires_at","points","next_cursor","meta"],"properties":{"market_id":{"type":"string","format":"uuid"},"query_id":{"type":"string","format":"uuid"},"as_of":{"type":["string","null"],"format":"date-time"},"expires_at":{"type":["string","null"],"format":"date-time"},"next_cursor":{"type":["string","null"]},"meta":{"$ref":"#/components/schemas/SourceMeta"},"points":{"type":"array","maxItems":10000,"items":{"type":"object","required":["orgnr","name","latitude","longitude","address_role","geocoding_status","precision","source","source_updated_at","geocoding_updated_at"],"properties":{"orgnr":{"type":"string"},"name":{"type":"string"},"latitude":{"type":"number"},"longitude":{"type":"number"},"address_role":{"const":"visiting_address"},"geocoding_status":{"const":"matched"},"precision":{"const":"address"},"source":{"const":"lantmateriet"},"source_updated_at":{"type":["string","null"],"format":"date-time"},"geocoding_updated_at":{"type":["string","null"],"format":"date-time"}}}}}},"WatchlistInput":{"type":"object","properties":{"name":{"type":"string","maxLength":120,"example":"Leverantörer"},"description":{"type":["string","null"],"maxLength":1000}}},"Watchlist":{"type":"object","required":["id","name","description","member_count","unacknowledged_events","created_at","updated_at"],"properties":{"id":{"type":"string","example":"wl_3f9a1c2b4d5e6f70"},"name":{"type":"string"},"description":{"type":["string","null"]},"member_count":{"type":"integer","description":"Active members"},"unacknowledged_events":{"type":"integer"},"created_at":{"type":"string","format":"date-time","description":"The inbox starts here; earlier changes are not added"},"updated_at":{"type":"string","format":"date-time"}}},"WatchlistListResponse":{"type":"object","properties":{"watchlists":{"type":"array","items":{"$ref":"#/components/schemas/Watchlist"}},"access":{"type":"object","properties":{"allowed":{"type":"boolean"},"reason":{"type":["string","null"],"enum":["plan_required",null]}}}}},"WatchlistMemberPage":{"type":"object","properties":{"members":{"type":"array","items":{"type":"object","properties":{"orgnr":{"type":"string"},"reference":{"type":["string","null"],"description":"Your own reference from the import"},"added_at":{"type":"string","format":"date-time"},"removed_at":{"type":["string","null"],"format":"date-time"}}}},"next_cursor":{"type":["string","null"]}}},"WatchlistImportRequest":{"type":"object","description":"Either orgnrs or members","properties":{"orgnrs":{"type":"array","items":{"type":"string"},"example":["5567037485","556677-8899"]},"members":{"type":"array","items":{"type":"object","required":["orgnr"],"properties":{"orgnr":{"type":"string"},"reference":{"type":"string","maxLength":200}}}}}},"WatchlistImportResponse":{"type":"object","properties":{"summary":{"type":"object","properties":{"received":{"type":"integer"},"added":{"type":"integer"},"already_member":{"type":"integer"},"duplicate":{"type":"integer"},"rejected":{"type":"integer"}}},"rows":{"type":"array","items":{"type":"object","required":["row","status"],"properties":{"row":{"type":"integer","description":"1-based row in the request, excluding a CSV header"},"input":{"type":"string","description":"Submitted value; omitted for personal identity numbers"},"orgnr":{"type":"string","description":"Normalized organization number"},"status":{"type":"string","enum":["added","already_member","duplicate","rejected"]},"reason":{"type":"string","enum":["invalid_format","invalid_checksum","personal_identity_number","not_found","limit_exceeded"]}}}}}},"WatchlistEvent":{"type":"object","required":["id","cursor","type","orgnr","reference","detected_at","queued_at","acknowledged_at","data"],"properties":{"id":{"type":"string","description":"Event id; equals the webhook payload id and timeline event_id for the same change and event type","example":"evt_0f3c2b1a9d8e7f6a5b4c3d2e1f0a9b8c"},"cursor":{"type":"string","description":"Position in this inbox"},"type":{"type":"string","enum":["company.created","company.deregistered","company.name_changed","company.address_changed","company.status_changed","company.tax_status_changed","company.sni_changed","company.ceo_changed","company.board_changed","company.auditor_changed","company.ownership_changed","company.signatory_changed","company.representative_changed","company.registration_changed","company.liquidation_started","company.liquidation_ended","company.report_filed","company.financials_available","company.bankruptcy_filed","company.bankruptcy_closed","company.bankruptcy_distribution","company.creditor_call","company.poit_announcement","company.fi_warning_added"]},"orgnr":{"type":"string"},"reference":{"type":["string","null"]},"detected_at":{"type":"string","format":"date-time","description":"When BolagsAPI detected the change. Not the authority's registration time, which is not known for every source."},"queued_at":{"type":"string","format":"date-time","description":"When the event was added to the inbox"},"acknowledged_at":{"type":["string","null"],"format":"date-time"},"data":{"type":"object","additionalProperties":true,"description":"Same object as data in the webhook payload"}}},"WatchlistEventPage":{"type":"object","properties":{"events":{"type":"array","items":{"$ref":"#/components/schemas/WatchlistEvent"}},"next_cursor":{"type":["string","null"],"description":"null when there are no further events right now; poll again with the last event's cursor"}}},"WatchlistAcknowledgeRequest":{"type":"object","description":"Either event_ids (1-1000) or up_to_cursor","properties":{"event_ids":{"type":"array","items":{"type":"string"},"maxItems":1000},"up_to_cursor":{"type":"string"}}},"WatchlistAcknowledgeResponse":{"type":"object","properties":{"updated":{"type":"integer"},"unchanged":{"type":"integer","description":"Already in the requested state"},"not_found":{"type":"array","items":{"type":"string"},"description":"Event ids not in this inbox"}}},"VatValidationRequest":{"type":"object","additionalProperties":false,"required":["country_code","vat_number"],"properties":{"country_code":{"type":"string","enum":["AT","BE","BG","CY","CZ","DE","DK","EE","EL","ES","FI","FR","HR","HU","IE","IT","LT","LU","LV","MT","NL","PL","PT","RO","SE","SI","SK","XI"],"description":"VIES prefix: EL for Greece, XI for Northern Ireland. GB is not supported."},"vat_number":{"type":"string","minLength":2,"maxLength":40,"description":"National part only, without country prefix. Uppercased; spaces and hyphens are removed. Leading zeroes and +, * and . are preserved."},"requester":{"type":"object","additionalProperties":false,"required":["country_code","vat_number"],"properties":{"country_code":{"type":"string","enum":["AT","BE","BG","CY","CZ","DE","DK","EE","EL","ES","FI","FR","HR","HU","IE","IT","LT","LU","LV","MT","NL","PL","PT","RO","SE","SI","SK","XI"],"description":"VIES prefix: EL for Greece, XI for Northern Ireland. GB is not supported."},"vat_number":{"type":"string","minLength":2,"maxLength":40,"description":"National part only, without country prefix. Uppercased; spaces and hyphens are removed. Leading zeroes and +, * and . are preserved."}},"description":"Your own VAT details for a VIES consultation identifier, where supplied by VIES. Both fields required when present."}}},"VatValidationResponse":{"type":"object","required":["country_code","vat_number","status","valid","name","address","checked_at","request_date","request_identifier","requester","cached","meta"],"properties":{"country_code":{"type":"string","enum":["AT","BE","BG","CY","CZ","DE","DK","EE","EL","ES","FI","FR","HR","HU","IE","IT","LT","LU","LV","MT","NL","PL","PT","RO","SE","SI","SK","XI"],"description":"VIES prefix: EL for Greece, XI for Northern Ireland. GB is not supported."},"vat_number":{"type":"string","minLength":2,"maxLength":40,"description":"National part only, without country prefix. Uppercased; spaces and hyphens are removed. Leading zeroes and +, * and . are preserved."},"status":{"enum":["valid","invalid"]},"valid":{"type":"boolean"},"name":{"type":["string","null"]},"address":{"type":["string","null"]},"checked_at":{"type":"string","format":"date-time"},"request_date":{"type":"string","description":"VIES check timestamp, as returned by the source"},"request_identifier":{"type":["string","null"],"description":"VIES consultation identifier; null when not supplied. Distinct from BolagsAPI request_id."},"requester":{"anyOf":[{"type":"object","additionalProperties":false,"required":["country_code","vat_number"],"properties":{"country_code":{"type":"string","enum":["AT","BE","BG","CY","CZ","DE","DK","EE","EL","ES","FI","FR","HR","HU","IE","IT","LT","LU","LV","MT","NL","PL","PT","RO","SE","SI","SK","XI"],"description":"VIES prefix: EL for Greece, XI for Northern Ireland. GB is not supported."},"vat_number":{"type":"string","minLength":2,"maxLength":40,"description":"National part only, without country prefix. Uppercased; spaces and hyphens are removed. Leading zeroes and +, * and . are preserved."}}},{"type":"null"}]},"cached":{"type":"boolean","description":"True when reusing a result cached for up to 24 hours. checked_at and request_identifier retain the original check values."},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"VatValidationUnavailable":{"type":"object","required":["error","message","status","valid","source","reason"],"properties":{"error":{"type":"string"},"message":{"type":"string"},"request_id":{"type":"string"},"status":{"const":"unavailable"},"valid":{"type":"null"},"source":{"const":"vies"},"reason":{"type":"string"},"retry_after":{"type":"integer"}}},"FinancialsCollectingResponse":{"type":"object","required":["orgnr","data_status","retry_after_seconds","message"],"properties":{"orgnr":{"type":"string"},"data_status":{"type":"string","enum":["queued","refreshing"],"description":"Collection is queued or running. The response carries no figures."},"retry_after_seconds":{"type":"integer","example":30},"message":{"type":"string"}}},"FinancialsNotFound":{"type":"object","required":["error","message","data_status","reason"],"properties":{"error":{"type":"string","const":"not_found"},"message":{"type":"string"},"hint":{"type":"string"},"docs_url":{"type":"string"},"request_id":{"type":"string"},"data_status":{"type":"string","enum":["unavailable","not_applicable"],"description":"unavailable: no publishable figures for this request. source_quality_review means retained source data cannot yet be published; this response does not start another collection or promise automatic progress. After a completed collection without figures, the same 404 is returned for several days without a new collection; after that, a request can start a new collection. not_applicable: the company's registered legal form (sole trader, enskild näringsidkare) has no annual-report filing duty, so no collection is started."},"reason":{"type":"string","enum":["no_parseable_annual_report","no_filing_obligation","source_quality_review"]},"next_action":{"type":"string"}}},"LeiResponse":{"allOf":[{"$ref":"#/components/schemas/LeiData"},{"type":"object","required":["meta"],"properties":{"meta":{"$ref":"#/components/schemas/SourceMeta"}}}]},"LeiIdentity":{"type":"object","required":["lei","orgnr","name","jurisdiction","entity_status","registration_status","source_updated_at","next_renewal_at"],"properties":{"lei":{"type":"string","pattern":"^[A-Z0-9]{18}[0-9]{2}$"},"orgnr":{"type":["string","null"]},"name":{"type":"string"},"jurisdiction":{"type":"string"},"entity_status":{"type":"string","description":"Entity status, independent of LEI renewal"},"registration_status":{"type":"string","description":"LEI registration status. LAPSED does not mean the entity is inactive."},"source_updated_at":{"type":["string","null"]},"next_renewal_at":{"type":["string","null"]}}},"LeiRelationship":{"type":"object","required":["child_lei","parent_lei","parent","type","status","registration_status","source_updated_at","validation","periods"],"properties":{"child_lei":{"type":"string"},"parent_lei":{"type":"string"},"parent":{"anyOf":[{"$ref":"#/components/schemas/LeiIdentity"},{"type":"null"}]},"type":{"type":"string"},"status":{"type":"string"},"registration_status":{"type":"string"},"source_updated_at":{"type":["string","null"]},"validation":{"type":"object","required":["sources","documents","reference"],"properties":{"sources":{"type":["string","null"]},"documents":{"type":["string","null"]},"reference":{"type":["string","null"]}}},"periods":{"type":"array","items":{"type":"object","required":["type","start","end"],"properties":{"type":{"type":"string"},"start":{"type":["string","null"]},"end":{"type":["string","null"]}}}}}},"LeiData":{"type":"object","required":["orgnr","source","basis","status","snapshot","linkage","identities","direct_parents","ultimate_parents","other_relationships","reporting_exceptions"],"properties":{"orgnr":{"type":"string"},"source":{"const":"gleif"},"basis":{"const":"accounting_consolidation"},"status":{"enum":["available","unavailable"]},"snapshot":{"anyOf":[{"type":"object","required":["published_at","imported_at","stale"],"properties":{"published_at":{"type":"string"},"imported_at":{"type":"string"},"stale":{"type":"boolean"}}},{"type":"null"}]},"linkage":{"type":"object","required":["status","method","canonical_lei"],"properties":{"status":{"enum":["matched","not_found","ambiguous","unavailable"]},"method":{"const":"registration_authority_orgnr"},"canonical_lei":{"type":["string","null"]}}},"identities":{"type":"array","items":{"$ref":"#/components/schemas/LeiIdentity"}},"direct_parents":{"type":"array","items":{"$ref":"#/components/schemas/LeiRelationship"}},"ultimate_parents":{"type":"array","items":{"$ref":"#/components/schemas/LeiRelationship"}},"other_relationships":{"type":"array","items":{"$ref":"#/components/schemas/LeiRelationship"}},"reporting_exceptions":{"type":"array","items":{"type":"object","required":["category","reasons","references"],"properties":{"category":{"type":"string"},"reasons":{"type":"array","items":{"type":"string"}},"references":{"type":"array","items":{"type":"string"}}}}}}},"SectionCoverage":{"type":"object","description":"Availability, freshness and absence reason for one data section. Fields without a known value are omitted; dates are never estimated.","required":["status","reason","source_category"],"properties":{"status":{"type":"string","enum":["available","stale","not_found","not_collected","not_applicable","unavailable","unauthorized","disabled"],"description":"available/stale: data is returned (stale = older observation or period). not_found: the source was searched and has no record. not_collected: the source has not been obtained for this company; do not read as absence. not_applicable: does not apply to this company (yet). unavailable: could not be returned in this response. unauthorized: requires another plan or module. disabled: the integration is switched off."},"reason":{"type":["string","null"],"enum":["plan_required","module_required","account_restricted","integration_disabled","timeout","source_error","no_matching_record","not_yet_collected","source_record_missing","org_form_not_applicable","first_report_not_due","processing","withheld_by_quality_check","observation_outdated","newer_period_expected","filed_report_not_stored","registration_date_unknown","figures_not_extracted",null],"description":"Why a section is absent or outdated. first_report_not_due: the first annual report is not yet due. filed_report_not_stored: a filed report is expected but BolagsAPI has no stored document; this is not evidence that it was not filed. registration_date_unknown: the first due date cannot be derived. figures_not_extracted: a filed report is stored but its figures are not yet available. processing: collection is in progress."},"source_category":{"type":["string","null"],"enum":["official_register","annual_report","public_dataset","secondary_publication","derived",null]},"sources":{"type":"array","items":{"type":"string","enum":["lantmateriet","lansstyrelsen_stiftelser","vies","gleif","bolagsverket","scb","skatteverket","prv","poit","finansinspektionen","riksbanken","konsumentverket","eu","un","ofac","riksdagen","annual_report_pdf","allabolag","public_company_information","bolagsapi"]}},"observed_at":{"type":"string","format":"date-time","description":"When the source was last observed for this section. Omitted when unknown."},"ingested_at":{"type":"string","format":"date-time","description":"When BolagsAPI stored the observation, when tracked separately."},"computed_at":{"type":"string","format":"date-time","description":"When a derived value was calculated, when applicable."},"period_end":{"type":"string","pattern":"^\\d{4}-\\d{2}(-\\d{2})?$","description":"Latest reporting period represented by the section."},"period_precision":{"type":"string","enum":["month","day"]},"quality":{"type":"string","enum":["unverified","quarantined","checked","partial"],"description":"Never verified: stored legacy flags are not review evidence."},"completeness":{"type":"string","enum":["complete","partial"]},"required_tier":{"type":"string","enum":["starter","pro","business"]},"due_date":{"type":"string","format":"date","description":"When the first annual report is expected under the ordinary filing window. Present for annual_reports without a stored report."}}},"CompanyCoverage":{"type":"object","description":"Returned with ?include=coverage. Lists the sections whose status can be stated for this response; sections not requested with include are omitted.","required":["version","sections"],"properties":{"version":{"type":"integer","enum":[1]},"sections":{"type":"object","properties":{"tax_status":{"$ref":"#/components/schemas/SectionCoverage"},"annual_reports":{"$ref":"#/components/schemas/SectionCoverage","description":"Stored annual report documents: filing duty, first report not yet due and a missing stored document are separate outcomes."},"financials":{"$ref":"#/components/schemas/SectionCoverage","description":"Present with include=financials."},"fi":{"$ref":"#/components/schemas/SectionCoverage","description":"Present with include=fi. not_found means no FI record matched the organization number or name; it is not an identity clearance."},"ko":{"$ref":"#/components/schemas/SectionCoverage","description":"Present with include=ko. not_found means no Konsumentverket record matched the organization number or name."},"prv":{"$ref":"#/components/schemas/SectionCoverage","description":"Present with include=prv."},"signatories":{"$ref":"#/components/schemas/SectionCoverage","description":"Stored signatory rules (firmateckning). Same plan and account restrictions as /signatories; the content is not included."},"persons":{"$ref":"#/components/schemas/SectionCoverage","description":"Stored board, executive and auditor roles. Same plan and account restrictions as /persons; the content is not included."},"beneficial_owners":{"$ref":"#/components/schemas/SectionCoverage","description":"Present while the official beneficial owner integration is disabled."},"brf":{"$ref":"#/components/schemas/SectionCoverage"}}}}},"CoverageCounts":{"type":"object","required":["active_companies","first_report_not_due","annual_report_expected","with_annual_report","annual_report_share","with_financials","financials_share"],"properties":{"active_companies":{"type":"integer","description":"Active organizations, each counted once. Alternative company names are not extra companies."},"annual_report_requirement":{"type":"string","enum":["required","not_assessed"],"description":"required for AB, BRF and EK. not_assessed: the group is not classified as annual report filers here."},"first_report_not_due":{"type":["integer","null"],"description":"Active companies whose first annual report is not yet due."},"annual_report_expected":{"type":["integer","null"],"description":"Active companies expected to have filed at least one annual report (the denominator for annual_report_share)."},"with_annual_report":{"type":"integer","description":"Active companies with at least one stored annual report document."},"annual_report_share":{"type":["number","null"],"description":"Percent of annual_report_expected with a stored report, one decimal."},"with_financials":{"type":"integer","description":"Active companies with at least one stored financial period from any supported source."},"financials_share":{"type":["number","null"],"description":"Percent of active_companies with stored financials, one decimal."}}},"CoverageSummary":{"type":"object","required":["snapshot_date","observed_at","counting","forms","totals"],"properties":{"snapshot_date":{"type":"string","format":"date"},"observed_at":{"type":"string","format":"date-time","description":"When the counts were captured."},"counting":{"type":"string","enum":["active_organizations_once"]},"forms":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/CoverageCounts"},{"type":"object","required":["form_group","org_forms","annual_report_requirement"],"properties":{"form_group":{"type":"string","enum":["AB","BRF","EK","other"]},"org_forms":{"type":"array","items":{"type":"string"}}}}]}},"totals":{"$ref":"#/components/schemas/CoverageCounts","description":"All groups. Annual report fields cover AB, BRF and EK only."}}},"SupplierRuleEvidence":{"type":"object","required":["field","value","source_category"],"description":"A stored observation the rule used. Fields without a known value are omitted.","properties":{"field":{"type":"string","description":"Response field the value refers to, e.g. tax_status.vat or income_statement.revenue."},"value":{"type":["string","number","boolean","null"]},"source_category":{"type":["string","null"],"enum":["official_register","annual_report","public_dataset","secondary_publication","derived",null]},"sources":{"type":"array","items":{"type":"string","enum":["lantmateriet","lansstyrelsen_stiftelser","vies","gleif","bolagsverket","scb","skatteverket","prv","poit","finansinspektionen","riksbanken","konsumentverket","eu","un","ofac","riksdagen","annual_report_pdf","allabolag","public_company_information","bolagsapi"]}},"observed_at":{"type":"string","format":"date-time"},"ingested_at":{"type":"string","format":"date-time"},"period_end":{"type":"string","pattern":"^\\d{4}-\\d{2}(-\\d{2})?$"},"period_precision":{"type":"string","enum":["month","day"]},"accounting_scope":{"type":"string"},"currency":{"type":"string"},"quality":{"type":"string","enum":["unverified","quarantined","checked","partial"],"description":"Stored annual report figures are unverified; a pass is not certification."}}},"SupplierRuleResult":{"type":"object","required":["id","applicability","outcome","reason","observed_at","evidence"],"properties":{"id":{"type":"string","enum":["registration_active","no_insolvency_or_liquidation","f_tax_registered","vat_registered","annual_report_current","auditor_opinion","beneficial_owners","min_revenue","min_net_income","min_equity","min_equity_ratio"]},"applicability":{"type":"string","enum":["applicable","not_applicable"]},"outcome":{"type":["string","null"],"enum":["pass","fail","unknown",null],"description":"null only when not_applicable. unknown: the data needed is missing, restricted, outdated or could not be read."},"reason":{"type":"string","enum":["registered_active","no_ongoing_procedure","f_tax_registered","vat_registered","report_current","auditor_opinion_unmodified","threshold_met","deregistered","ongoing_procedure_reported","f_tax_not_registered","vat_not_registered","report_overdue","auditor_opinion_modified","threshold_not_met","registration_status_unknown","procedures_not_collected","tax_registration_unknown","source_unavailable","access_restricted","no_report_stored","report_may_be_pending","registration_date_unknown","auditor_opinion_not_observed","no_financials_stored","org_form_without_public_accounts","scope_not_reported","financials_quarantined","currency_mismatch","newer_period_not_extracted","financial_period_outdated","field_not_reported","integration_disabled","not_evaluated_in_rule_set","stale_observation","newer_report_not_collected","report_period_unknown","org_form_not_applicable","first_report_not_due","entity_not_active"]},"observed_at":{"type":["string","null"],"format":"date-time","description":"Oldest source observation among the evidence; null when not tracked."},"evidence":{"type":"array","items":{"$ref":"#/components/schemas/SupplierRuleEvidence"}}}},"SupplierCheckResponse":{"type":"object","required":["orgnr","name","template","rule_set_version","evaluation_date","evaluated_at","policy","summary","rules","disabled_checks","coverage","reproducibility"],"properties":{"orgnr":{"type":"string"},"name":{"type":"string"},"template":{"type":"string","enum":["se_supplier"]},"rule_set_version":{"type":"string","enum":["1.0.0"]},"evaluation_date":{"type":"string","format":"date","description":"Date used for every freshness comparison."},"evaluated_at":{"type":"string","format":"date-time"},"policy":{"type":"object","description":"Your selection, echoed back. Facts are in rules[].evidence.","required":["rules","thresholds","currency","accounting_scope","report_grace_days"],"properties":{"rules":{"type":"array","items":{"type":"string","enum":["registration_active","no_insolvency_or_liquidation","f_tax_registered","vat_registered","annual_report_current","auditor_opinion","beneficial_owners","min_revenue","min_net_income","min_equity","min_equity_ratio"]}},"thresholds":{"type":"object","properties":{"min_revenue":{"type":"number"},"min_net_income":{"type":"number"},"min_equity":{"type":"number"},"min_equity_ratio":{"type":"number"}}},"currency":{"type":"string","enum":["SEK"]},"accounting_scope":{"type":"string","enum":["company","group"]},"report_grace_days":{"type":"integer"}}},"summary":{"type":"object","required":["outcome","complete","partial","counts","failed_rules","unknown_rules","coverage"],"properties":{"outcome":{"type":"string","enum":["pass","fail","incomplete"],"description":"fail if any rule fails; incomplete if none fails but any is unknown; pass only when every applicable rule passes."},"complete":{"type":"boolean","description":"Every applicable rule has pass or fail and no used data section is a gap."},"partial":{"type":"boolean","description":"A data section could not be read in this response; retry later."},"counts":{"type":"object","properties":{"pass":{"type":"integer","minimum":0},"fail":{"type":"integer","minimum":0},"unknown":{"type":"integer","minimum":0},"not_applicable":{"type":"integer","minimum":0}}},"failed_rules":{"type":"array","items":{"type":"string","enum":["registration_active","no_insolvency_or_liquidation","f_tax_registered","vat_registered","annual_report_current","auditor_opinion","beneficial_owners","min_revenue","min_net_income","min_equity","min_equity_ratio"]}},"unknown_rules":{"type":"array","items":{"type":"string","enum":["registration_active","no_insolvency_or_liquidation","f_tax_registered","vat_registered","annual_report_current","auditor_opinion","beneficial_owners","min_revenue","min_net_income","min_equity","min_equity_ratio"]}},"coverage":{"type":"object","description":"Coverage summary of the sections below (checked, stale, gaps, not_applicable)."}}},"rules":{"type":"array","items":{"$ref":"#/components/schemas/SupplierRuleResult"}},"disabled_checks":{"type":"array","description":"Checks that are switched off and not part of any result, e.g. beneficial owners.","items":{"type":"object","properties":{"id":{"type":"string","enum":["beneficial_owners"]},"status":{"type":"string"},"reason":{"type":["string","null"]}}}},"coverage":{"type":"object","required":["version","sections"],"properties":{"version":{"type":"integer","enum":[1]},"sections":{"type":"object","additionalProperties":{"$ref":"#/components/schemas/SectionCoverage"},"description":"registration, tax_status, annual_reports, financials and beneficial_owners, for the selected rules."}}},"reproducibility":{"type":"object","required":["facts_digest","rule_set_version","evaluation_date"],"properties":{"facts_digest":{"type":"string","pattern":"^sha256:[0-9a-f]{64}$","description":"Digest of policy, evidence and coverage. Equal digests mean equal inputs."},"rule_set_version":{"type":"string"},"evaluation_date":{"type":"string","format":"date"}}}}},"ProfessionalContact":{"type":"object","required":["kind","channel","value","role","status","confidence","source_url","extraction_method","first_observed_at","observed_at","verified_at","expires_at","context"],"properties":{"kind":{"type":"string","enum":["company","role","person","recruiting","procurement"],"description":"company: general company channel. role: function inbox. person: named contact. recruiting/procurement: tied to one job ad or notice."},"channel":{"type":"string","enum":["email","phone","linkedin"]},"value":{"type":"string","description":"Email address, E.164 phone number or LinkedIn URL exactly as published (normalized). LinkedIn URLs are never visited by BolagsAPI."},"role":{"type":["string","null"],"enum":["general","sales","support","press","recruiting","invoicing","procurement","booking","privacy",null],"description":"Function of the inbox or number. null when not stated."},"status":{"type":"string","enum":["published"]},"confidence":{"type":"string","enum":["high","medium"],"description":"Band for how directly the page states the value."},"source_url":{"type":"string","format":"uri","description":"Company-controlled page where the value was observed."},"extraction_method":{"type":"string","enum":["mailto","tel_link","visible_text","json_ld","microdata","page_link","customer_supplied"],"description":"How the page publishes the value, for example a mailto link, visible text or structured data."},"first_observed_at":{"type":"string","format":"date-time","description":"First time the value was observed on this page."},"observed_at":{"type":"string","format":"date-time","description":"Most recent observation on this page."},"verified_at":{"type":["string","null"],"format":"date-time","description":"Most recent time the source page still listed the value."},"expires_at":{"type":"string","format":"date-time","description":"The value is not served after this time unless observed again."},"context":{"type":["object","null"],"description":"Set for contacts that belong to one job ad or procurement notice.","properties":{"type":{"type":"string","enum":["job_ad","procurement_notice"]},"reference":{"type":["string","null"]}}}}},"ProfessionalContactPerson":{"type":"object","description":"Named, web-published person. Not available yet; reserved for a later release.","required":["name","web_title","registered_role","identity_link","contacts"],"properties":{"name":{"type":"string"},"web_title":{"type":["object","null"],"properties":{"value":{"type":"string"},"source_url":{"type":"string","format":"uri"},"observed_at":{"type":"string","format":"date-time"}}},"registered_role":{"type":"null","description":"Registered roles are separate assertions and are not inferred from the web title."},"identity_link":{"type":"string","enum":["not_linked","linked","ambiguous"],"description":"not_linked: the web-published name is not matched to a registered person."},"contacts":{"type":"array","items":{"$ref":"#/components/schemas/ProfessionalContact"}}}},"ProfessionalContactsResponse":{"type":"object","required":["orgnr","company_contacts","role_contacts","people","people_access","data_status","retry_after_seconds","last_crawled_at","usage_notice"],"properties":{"orgnr":{"type":"string"},"company_contacts":{"type":"array","items":{"$ref":"#/components/schemas/ProfessionalContact"}},"role_contacts":{"type":"array","items":{"$ref":"#/components/schemas/ProfessionalContact"}},"people":{"type":"array","items":{"$ref":"#/components/schemas/ProfessionalContactPerson"}},"people_access":{"type":"string","enum":["disabled","not_entitled","not_requested","rate_limited","enabled"],"description":"Why people is empty or filled. disabled: named contacts are not offered."},"data_status":{"type":"string","enum":["fresh","refreshing","queued","not_found","failed","stale"]},"retry_after_seconds":{"type":["integer","null"]},"last_crawled_at":{"type":["string","null"],"format":"date-time","description":"Last time the company website was checked for contacts."},"usage_notice":{"type":"object","required":["en","sv"],"properties":{"en":{"type":"string"},"sv":{"type":"string"}},"description":"Contact data does not establish permission for direct marketing."},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"IdentityInitResponse":{"type":"object","required":["orderRef","autoStartToken","autoStartUrl","collectUrl"],"properties":{"orderRef":{"type":"string"},"autoStartToken":{"type":"string"},"autoStartUrl":{"type":"string","format":"uri"},"collectUrl":{"type":"string","format":"uri-reference"},"enrichmentUrl":{"type":"string","format":"uri-reference"}},"description":"enrichmentUrl is present only when an enrichment scope was requested. QR secrets are never returned."},"IdentityDataStatus":{"type":"string","enum":["fresh","stale","queued","refreshing","not_found","failed"],"description":"Data availability, not BankID authentication status. Empty companies alone does not mean not_found. stale can contain usable older data."},"IdentityBolagData":{"description":"Full BolagsAPI person engagement result, including pending and failed lookups that returned a structured result. All base fields are required; nullable fields remain present.","allOf":[{"$ref":"#/components/schemas/PersonCompaniesResponse"},{"type":"object","properties":{"retry_after_seconds":{"type":["integer","null"],"enum":[2,30,null],"description":"2 seconds while pending, 30 after failure, null when no retry is requested."}},"required":["retry_after_seconds"]}]},"IdentityBolagError":{"type":"object","description":"Transport/provider failure without a full lookup result. Company and source fields are absent, not null.","properties":{"data_status":{"const":"failed","type":"string"},"retry_after_seconds":{"type":"integer","const":30},"error":{"type":"string"}},"required":["data_status","retry_after_seconds","error"],"not":{"required":["companies"]}},"IdentityBolagEnrichment":{"oneOf":[{"$ref":"#/components/schemas/IdentityBolagData"},{"$ref":"#/components/schemas/IdentityBolagError"}]},"IdentityEnrichment":{"type":"object","properties":{"bolag":{"$ref":"#/components/schemas/IdentityBolagEnrichment"}},"required":["bolag"],"description":"The enrichment:bolag scope returns this envelope. Other scopes may add keys in the future."},"IdentityUser":{"type":"object","required":["sub"],"properties":{"sub":{"type":"string"},"name":{"type":"string"},"given_name":{"type":"string"},"family_name":{"type":"string"},"personal_number":{"type":"string"},"enrichment":{"$ref":"#/components/schemas/IdentityEnrichment"}},"description":"sub is always present. name, given_name and family_name appear with profile; personal_number with pnr; enrichment with enrichment:bolag when delivered. Omitted scope fields are absent, never null. These are REST and /userinfo claims, not an ID-token schema."},"IdentityCompleteResponse":{"type":"object","required":["status","user"],"properties":{"status":{"type":"string","const":"complete"},"user":{"$ref":"#/components/schemas/IdentityUser"},"enrichmentStatus":{"$ref":"#/components/schemas/IdentityDataStatus"},"retryAfterSeconds":{"type":["integer","null"],"enum":[2,30,null],"description":"2 seconds while pending, 30 after failure, null when no retry is requested."},"enrichmentUrl":{"type":"string","format":"uri-reference"}},"description":"JSON data of SSE event complete and data of webhook auth.complete. BankID succeeded even if enrichmentStatus is pending/failed. Enrichment metadata is added together when enrichment is available; it is absent without enrichment delivery, not null. Resolve enrichmentUrl against https://auth.byhugo.se.","dependentRequired":{"enrichmentStatus":["retryAfterSeconds","enrichmentUrl"],"retryAfterSeconds":["enrichmentStatus","enrichmentUrl"],"enrichmentUrl":["enrichmentStatus","retryAfterSeconds"]}},"IdentityEnrichmentResponse":{"type":"object","required":["status","enrichment","retryAfterSeconds"],"properties":{"status":{"$ref":"#/components/schemas/IdentityDataStatus"},"enrichment":{"$ref":"#/components/schemas/IdentityEnrichment"},"retryAfterSeconds":{"type":["integer","null"],"enum":[2,30,null],"description":"2 seconds while pending, 30 after failure, null when no retry is requested."}},"description":"Follow-up response. HTTP 200 for fresh/stale/not_found, 202 for queued/refreshing, 503 for failed. Retry-After is present when retryAfterSeconds is non-null."},"IdentityPendingEvent":{"type":"object","required":["status","qrData"],"properties":{"status":{"type":"string","const":"pending"},"hintCode":{"type":"string"},"qrData":{"type":"string"}},"description":"SSE pending JSON payload. hintCode is an optional, extensible BankID hint string."},"IdentityFailedEvent":{"type":"object","required":["status"],"properties":{"status":{"type":"string","const":"failed"},"hintCode":{"type":"string"}},"description":"SSE failed JSON payload; hintCode may include identityMismatch or expiredTransaction as well as BankID values. This is authentication failure, distinct from enrichment failure."},"IdentityErrorEvent":{"type":"object","required":["status","message"],"properties":{"status":{"type":"string","const":"error"},"message":{"type":"string"}}},"IdentityApiError":{"type":"object","required":["error","message"],"properties":{"error":{"type":"string"},"message":{"type":"string"}},"description":"Request/authentication/session error. Not the enrichment response returned with HTTP 503."},"PersonRoleType":{"type":"string","examples":["proprietor","auditor_deputy","administrator","executive","chair","deputy","board_member","auditor","procurist","signatory","liquidator","limited_partner","partner","service_recipient","manager","owner_indicator","unknown"],"x-known-values":["proprietor","auditor_deputy","administrator","executive","chair","deputy","board_member","auditor","procurist","signatory","liquidator","limited_partner","partner","service_recipient","manager","owner_indicator","unknown"],"description":"Open vocabulary: current normalized role values are listed in x-known-values. Stored role types are passed through; other strings may occur. Treat as string with a fallback, not a closed enum. The original human-readable role remains in title."},"PublicDataSource":{"type":"string","enum":["lantmateriet","vies","gleif","bolagsverket","scb","skatteverket","prv","poit","finansinspektionen","riksbanken","konsumentverket","eu","un","ofac","riksdagen","annual_report_pdf","allabolag","public_company_information","bolagsapi"],"description":"Stable public source identifier. Sensitive acquisition providers are not exposed; fallback PDF-derived data is reported as annual_report_pdf."},"SourceAttribution":{"type":"object","description":"Path-based attribution for a response section or nested field group.","properties":{"path":{"type":"string","example":"business.sni_codes"},"source":{"$ref":"#/components/schemas/PublicDataSource"},"label":{"type":"string","example":"SCB"},"product":{"type":"string","example":"Belägenhetsadress Nedladdning, vektor"},"copyright":{"type":"string","example":"© Lantmäteriet"},"license":{"type":"string","example":"CC BY 4.0"},"license_url":{"type":"string","format":"uri","example":"https://creativecommons.org/licenses/by/4.0/"},"processing":{"type":"string","example":"Address matching and transformation to WGS84"}},"required":["path","source","label"]},"SourceMeta":{"type":"object","description":"Public data-source attribution. source/source_label are used for single-source responses; sources[] is used for composite responses. ingestion_path, when present, describes BolagsAPI ingestion/cache path and is not an origin authority.","properties":{"source":{"$ref":"#/components/schemas/PublicDataSource"},"source_label":{"type":"string","example":"Bolagsverket"},"sources":{"type":"array","items":{"$ref":"#/components/schemas/SourceAttribution"}},"updated_at":{"type":"string","format":"date-time"},"ingestion_path":{"type":"string","enum":["bulk","api","cache"],"description":"Internal ingestion/cache path retained separately from public source attribution."}}},"ReportInsightSource":{"type":"string","enum":["annual_report_pdf_ai_extraction","annual_report_ixbrl_text","annual_report_pdf_source"],"description":"Legacy PDF rows contain AI-extracted summaries. Source-checked PDF rows contain excerpts and normalized facts, not necessarily verbatim text. iXBRL rows contain source-text snippets."},"ReportInsightSignalType":{"type":"string","enum":["management_report","operations","significant_events","future_outlook","risk_factors","environmental_info","subsequent_events","related_parties","accounting_principles","research_and_development","ownership_group","investments","personnel","pledges_contingent_liabilities","notes"]},"ReportInsightSearchResponse":{"type":"object","required":["query","results","meta"],"properties":{"query":{"type":"string","example":"expansion"},"results":{"type":"array","items":{"$ref":"#/components/schemas/ReportInsightSearchResult"}},"meta":{"$ref":"#/components/schemas/ReportInsightSearchMeta"}}},"ReportInsightSearchResult":{"type":"object","required":["orgnr","orgnr_formatted","period_end","matched_field","signal_type","snippet","score","source","verbatim"],"properties":{"orgnr":{"type":"string","example":"5567055305"},"orgnr_formatted":{"type":"string","example":"556705-5305"},"company_name":{"type":"string","nullable":true,"example":"Example Growth AB"},"city":{"type":"string","nullable":true,"example":"Stockholm"},"sni":{"type":"array","items":{"type":"string"},"example":["62010"]},"period_end":{"type":"string","format":"date","example":"2024-12-31"},"report_id":{"type":"string","nullable":true,"example":"rep_abc123"},"report_url":{"type":"string","nullable":true,"example":"/v1/company/5567055305/reports/rep_abc123"},"matched_field":{"type":"string","example":"management_report.future_outlook"},"signal_type":{"$ref":"#/components/schemas/ReportInsightSignalType"},"snippet":{"type":"string","example":"The company plans continued expansion in the Nordic market..."},"score":{"type":"number","example":0.42},"source":{"$ref":"#/components/schemas/ReportInsightSource"},"verbatim":{"type":"boolean","example":false},"financials":{"type":"object","description":"Only returned when include_financials=true.","properties":{"revenue":{"type":"number","nullable":true,"example":125000000},"employees":{"type":"integer","nullable":true,"example":84},"accounting_scope":{"$ref":"#/components/schemas/AccountingScope"},"quality_status":{"type":"string","enum":["verified","unverified"],"description":"Current projections are unverified. verified is reserved for documented validation with retained evidence. Quarantined rows are excluded."}}}}},"ReportInsightSearchMeta":{"type":"object","required":["total","limit","offset","sources"],"properties":{"total":{"type":"integer","example":440},"limit":{"type":"integer","example":20},"offset":{"type":"integer","example":0},"sources":{"type":"array","items":{"$ref":"#/components/schemas/ReportInsightSource"}}}},"CompanyReportInsightsResponse":{"type":"object","required":["orgnr","orgnr_formatted","company_name","reports","meta"],"properties":{"orgnr":{"type":"string","example":"5567055305"},"orgnr_formatted":{"type":"string","example":"556705-5305"},"company_name":{"type":"string","nullable":true,"example":"Example Growth AB"},"reports":{"type":"array","items":{"$ref":"#/components/schemas/CompanyReportInsightGroup"}},"meta":{"$ref":"#/components/schemas/CompanyReportInsightsMeta"}}},"CompanyReportInsightGroup":{"type":"object","required":["period_end","report_id","report_url","schema_version","source","verbatim","insights"],"properties":{"period_end":{"type":"string","format":"date","example":"2019-12-31"},"report_id":{"type":"string","nullable":true,"example":"rep_abc123"},"report_url":{"type":"string","nullable":true,"example":"/v1/company/5567055305/reports/rep_abc123"},"schema_version":{"type":"integer","example":1},"source":{"$ref":"#/components/schemas/ReportInsightSource"},"verbatim":{"type":"boolean","example":true},"insights":{"type":"array","items":{"$ref":"#/components/schemas/CompanyReportInsight"}}}},"CompanyReportInsight":{"type":"object","required":["signal_type","field_path","text","extracted_at"],"properties":{"signal_type":{"$ref":"#/components/schemas/ReportInsightSignalType"},"field_path":{"type":"string","example":"forvaltningsberattelse.verksamhet"},"text":{"type":"string","example":"The board and CEO hereby present the annual report..."},"extracted_at":{"type":"string","format":"date-time","nullable":true}}},"CompanyReportInsightsMeta":{"type":"object","required":["sources","semantics"],"properties":{"sources":{"type":"array","items":{"$ref":"#/components/schemas/ReportInsightSource"}},"semantics":{"type":"object","properties":{"annual_report_pdf_ai_extraction":{"type":"string","example":"Structured AI-extracted summaries/snippets, not verbatim OCR."},"annual_report_pdf_source":{"type":"string","example":"Source-checked excerpts and normalized facts from the filed PDF; not necessarily verbatim."},"annual_report_ixbrl_text":{"type":"string","example":"Deterministic XHTML/source-text snippets; closer to verbatim filing text."}}}}},"MeResponse":{"type":"object","required":["customer","api_key","usage"],"properties":{"customer":{"$ref":"#/components/schemas/MeCustomer"},"api_key":{"$ref":"#/components/schemas/MeApiKey"},"usage":{"$ref":"#/components/schemas/MeUsage"}}},"MeCustomer":{"type":"object","required":["id","email","tier","base_tier","billing_interval","created_at"],"properties":{"id":{"type":"string","example":"cus_abc123"},"email":{"type":"string","format":"email","example":"developer@example.com"},"tier":{"type":"string","example":"starter","description":"Effective tier, including active trial tier when applicable."},"base_tier":{"type":"string","nullable":true,"example":"starter"},"billing_interval":{"type":"string","nullable":true,"example":"monthly"},"company_name":{"type":"string","nullable":true,"example":"Example AB"},"company_orgnr":{"type":"string","nullable":true,"example":"YOUR_ORGNR"},"created_at":{"type":"string","format":"date-time","nullable":true},"current_period_end":{"type":"string","format":"date-time","nullable":true}}},"MeApiKey":{"type":"object","required":["id","prefix"],"properties":{"id":{"type":"string","example":"key_abc123"},"prefix":{"type":"string","example":"sk_live_a"},"name":{"type":"string","nullable":true,"example":"Production key"},"created_at":{"type":"string","format":"date-time","nullable":true},"last_used_at":{"type":"string","format":"date-time","nullable":true}}},"MeUsage":{"type":"object","required":["period","period_start","period_end","total","limit","remaining","requests","raw_total","raw_requests","current_key"],"properties":{"period":{"type":"string","example":"billing:2026-06-01"},"period_start":{"type":"string","format":"date","example":"2026-06-01"},"period_end":{"type":"string","format":"date","example":"2026-06-30"},"total":{"type":"integer","example":1200,"description":"Weighted request units used in the billing period. Matches dashboard quota usage."},"limit":{"type":"integer","example":5000,"description":"Monthly included request units for the effective tier."},"remaining":{"type":"integer","example":3800,"description":"Remaining included request units for the billing period."},"requests":{"type":"object","additionalProperties":{"type":"integer"},"description":"Weighted request units by endpoint.","example":{"company":600,"search":600}},"raw_total":{"type":"integer","example":420,"description":"Raw API request count before endpoint weights are applied."},"raw_requests":{"type":"object","additionalProperties":{"type":"integer"},"description":"Raw API request counts by endpoint.","example":{"company":300,"search":120}},"current_key":{"type":"object","required":["total","requests","raw_total","raw_requests"],"properties":{"total":{"type":"integer","example":240,"description":"Weighted request units used by the current API key."},"requests":{"type":"object","additionalProperties":{"type":"integer"},"description":"Weighted request units by endpoint for the current API key.","example":{"company":240}},"raw_total":{"type":"integer","example":120},"raw_requests":{"type":"object","additionalProperties":{"type":"integer"},"example":{"company":120}}}}}},"ScbProfile":{"type":"object","nullable":true,"additionalProperties":false,"description":"Stored SCB company observations. Codes and source dates are strings; null means missing, unavailable from the current source, or restricted. Intervals are not exact financial amounts. Mailing status is not marketing consent. Public/private does not establish exchange listing.","required":["tax_activity_code","registration_status_code","legal_form_code","marketing_status_code","registered_date","f_tax_status_code","vat_status_code","employer_status_code","municipality_code","municipality","county_code","county","scb_phone","visiting_street","visiting_postal_code","visiting_city","employee_size_class","revenue_size_class","ownership_category","public_private","company_status","scb_company_name","registered_name","scb_email","employee_size_class_code","revenue_size_class_code","financial_revenue_size_class","financial_revenue_size_class_code","revenue_class_year","sme_class","sme_class_code","a_region","a_region_code","mailing_address_status","mailing_address_status_code","sector","sector_code","activity_started_date","activity_ended_date","workplace_count","registered_name_count","ownership_category_code","public_private_code","company_status_code","foreign_ownership","foreign_ownership_code","owner_country","owner_country_code","import_export","export_size_class","export_size_class_code","import_size_class","import_size_class_code","trade_nordic","trade_eu","trade_other_europe","trade_asia_except_far_east","trade_far_east","trade_north_central_america","trade_south_america","trade_africa","main_workplace_cfar","main_workplace_name","main_workplace_email","main_workplace_phone","main_workplace_municipality","main_workplace_municipality_code","main_workplace_county","main_workplace_county_code","sni_code_1","sni_description_1","sni_section_1","sni_section_code_1","sni_code_2","sni_description_2","sni_section_2","sni_section_code_2","sni_code_3","sni_description_3","sni_section_3","sni_section_code_3","sni_code_4","sni_description_4","sni_section_4","sni_section_code_4","sni_code_5","sni_description_5","sni_section_5","sni_section_code_5","main_workplace_fetched_at","source","fetched_at","details_available","restricted_fields"],"properties":{"tax_activity_code":{"type":"string","nullable":true,"description":"SCB tax activity code"},"registration_status_code":{"type":"string","nullable":true,"description":"SCB registration status code"},"legal_form_code":{"type":"string","nullable":true,"description":"SCB legal form code"},"marketing_status_code":{"type":"string","nullable":true,"description":"SCB marketing code: 1 allowed, 2 blocked"},"registered_date":{"type":"string","nullable":true,"description":"SCB registration date as stored"},"f_tax_status_code":{"type":"string","nullable":true,"description":"SCB F-tax registration code"},"vat_status_code":{"type":"string","nullable":true,"description":"SCB VAT registration code"},"employer_status_code":{"type":"string","nullable":true,"description":"SCB employer registration code"},"municipality_code":{"type":"string","nullable":true,"description":"Registered-seat municipality code"},"municipality":{"type":"string","nullable":true,"description":"Registered-seat municipality"},"county_code":{"type":"string","nullable":true,"description":"Registered-seat county code"},"county":{"type":"string","nullable":true,"description":"Registered-seat county"},"scb_phone":{"type":"string","nullable":true,"description":"SCB phone number"},"visiting_street":{"type":"string","nullable":true,"description":"Visiting street address"},"visiting_postal_code":{"type":"string","nullable":true,"description":"Visiting postal code"},"visiting_city":{"type":"string","nullable":true,"description":"Visiting postal city"},"employee_size_class":{"type":"string","nullable":true,"description":"Employee size interval, not an exact headcount"},"revenue_size_class":{"type":"string","nullable":true,"description":"Revenue size interval, not an exact financial amount"},"ownership_category":{"type":"string","nullable":true,"description":"SCB ownership category, not verified owners"},"public_private":{"type":"string","nullable":true,"description":"Private/public classification; public does not establish listing"},"company_status":{"type":"string","nullable":true,"description":"Detailed SCB company status"},"scb_company_name":{"type":"string","nullable":true,"description":"Företagsnamn SCB"},"registered_name":{"type":"string","nullable":true,"description":"Registrerad firma SCB"},"scb_email":{"type":"string","nullable":true,"description":"E-post SCB"},"employee_size_class_code":{"type":"string","nullable":true,"description":"Storleksklass anställda kod"},"revenue_size_class_code":{"type":"string","nullable":true,"description":"Storleksklass omsättning kod"},"financial_revenue_size_class":{"type":"string","nullable":true,"description":"Storleksklass finansiell omsättning"},"financial_revenue_size_class_code":{"type":"string","nullable":true,"description":"Storleksklass finansiell omsättning kod"},"revenue_class_year":{"type":"string","nullable":true,"description":"Omsättningsklass år"},"sme_class":{"type":"string","nullable":true,"description":"SME-klass"},"sme_class_code":{"type":"string","nullable":true,"description":"SME-klass kod"},"a_region":{"type":"string","nullable":true,"description":"A-region"},"a_region_code":{"type":"string","nullable":true,"description":"A-region kod"},"mailing_address_status":{"type":"string","nullable":true,"description":"Postadressens utskicksstatus"},"mailing_address_status_code":{"type":"string","nullable":true,"description":"Postadressens utskicksstatus kod"},"sector":{"type":"string","nullable":true,"description":"Sektor"},"sector_code":{"type":"string","nullable":true,"description":"Sektor kod"},"activity_started_date":{"type":"string","nullable":true,"description":"Verksamhet startdatum SCB"},"activity_ended_date":{"type":"string","nullable":true,"description":"Verksamhet slutdatum SCB"},"workplace_count":{"type":"string","nullable":true,"description":"Antal arbetsställen SCB"},"registered_name_count":{"type":"string","nullable":true,"description":"Antal registrerade firmor SCB"},"ownership_category_code":{"type":"string","nullable":true,"description":"Ägarkategori kod"},"public_private_code":{"type":"string","nullable":true,"description":"Privat/publikt kod"},"company_status_code":{"type":"string","nullable":true,"description":"Bolagsstatus kod"},"foreign_ownership":{"type":"string","nullable":true,"description":"Utländskt ägande"},"foreign_ownership_code":{"type":"string","nullable":true,"description":"Utländskt ägande kod"},"owner_country":{"type":"string","nullable":true,"description":"Ägarland"},"owner_country_code":{"type":"string","nullable":true,"description":"Ägarland kod"},"import_export":{"type":"string","nullable":true,"description":"Export/import registermarkering"},"export_size_class":{"type":"string","nullable":true,"description":"Storleksklass export"},"export_size_class_code":{"type":"string","nullable":true,"description":"Storleksklass export kod"},"import_size_class":{"type":"string","nullable":true,"description":"Storleksklass import"},"import_size_class_code":{"type":"string","nullable":true,"description":"Storleksklass import kod"},"trade_nordic":{"type":"string","nullable":true,"description":"Handel Norden"},"trade_eu":{"type":"string","nullable":true,"description":"Handel EU"},"trade_other_europe":{"type":"string","nullable":true,"description":"Handel övriga Europa"},"trade_asia_except_far_east":{"type":"string","nullable":true,"description":"Handel Asien utom Fjärran Östern"},"trade_far_east":{"type":"string","nullable":true,"description":"Handel Fjärran Östern"},"trade_north_central_america":{"type":"string","nullable":true,"description":"Handel Nord- och Centralamerika"},"trade_south_america":{"type":"string","nullable":true,"description":"Handel Sydamerika"},"trade_africa":{"type":"string","nullable":true,"description":"Handel Afrika"},"main_workplace_cfar":{"type":"string","nullable":true,"description":"Huvudarbetsställe CFAR"},"main_workplace_name":{"type":"string","nullable":true,"description":"Huvudarbetsställe benämning"},"main_workplace_email":{"type":"string","nullable":true,"description":"Huvudarbetsställe e-post"},"main_workplace_phone":{"type":"string","nullable":true,"description":"Huvudarbetsställe telefon"},"main_workplace_municipality":{"type":"string","nullable":true,"description":"Huvudarbetsställe kommun"},"main_workplace_municipality_code":{"type":"string","nullable":true,"description":"Huvudarbetsställe kommunkod"},"main_workplace_county":{"type":"string","nullable":true,"description":"Huvudarbetsställe län"},"main_workplace_county_code":{"type":"string","nullable":true,"description":"Huvudarbetsställe länskod"},"sni_code_1":{"type":"string","nullable":true,"description":"Bransch 1 kod"},"sni_description_1":{"type":"string","nullable":true,"description":"Bransch 1"},"sni_section_1":{"type":"string","nullable":true,"description":"Bransch 1 avdelning"},"sni_section_code_1":{"type":"string","nullable":true,"description":"Bransch 1 avdelningskod"},"sni_code_2":{"type":"string","nullable":true,"description":"Bransch 2 kod"},"sni_description_2":{"type":"string","nullable":true,"description":"Bransch 2"},"sni_section_2":{"type":"string","nullable":true,"description":"Bransch 2 avdelning"},"sni_section_code_2":{"type":"string","nullable":true,"description":"Bransch 2 avdelningskod"},"sni_code_3":{"type":"string","nullable":true,"description":"Bransch 3 kod"},"sni_description_3":{"type":"string","nullable":true,"description":"Bransch 3"},"sni_section_3":{"type":"string","nullable":true,"description":"Bransch 3 avdelning"},"sni_section_code_3":{"type":"string","nullable":true,"description":"Bransch 3 avdelningskod"},"sni_code_4":{"type":"string","nullable":true,"description":"Bransch 4 kod"},"sni_description_4":{"type":"string","nullable":true,"description":"Bransch 4"},"sni_section_4":{"type":"string","nullable":true,"description":"Bransch 4 avdelning"},"sni_section_code_4":{"type":"string","nullable":true,"description":"Bransch 4 avdelningskod"},"sni_code_5":{"type":"string","nullable":true,"description":"Bransch 5 kod"},"sni_description_5":{"type":"string","nullable":true,"description":"Bransch 5"},"sni_section_5":{"type":"string","nullable":true,"description":"Bransch 5 avdelning"},"sni_section_code_5":{"type":"string","nullable":true,"description":"Bransch 5 avdelningskod"},"main_workplace_fetched_at":{"type":"string","nullable":true,"description":"Huvudarbetsställets observationstid"},"source":{"type":"string","enum":["scb"]},"fetched_at":{"type":"string","format":"date-time","nullable":true,"description":"SCB company observation timestamp; not cache time. main_workplace_fetched_at dates the independently observed representative workplace."},"details_available":{"type":"boolean","description":"An extended SCB observation has been stored; individual fields can still be null."},"restricted_fields":{"type":"array","items":{"type":"string","enum":["tax_activity_code","registration_status_code","legal_form_code","marketing_status_code","registered_date","f_tax_status_code","vat_status_code","employer_status_code","municipality_code","municipality","county_code","county","scb_phone","visiting_street","visiting_postal_code","visiting_city","employee_size_class","revenue_size_class","ownership_category","public_private","company_status","scb_company_name","registered_name","scb_email","employee_size_class_code","revenue_size_class_code","financial_revenue_size_class","financial_revenue_size_class_code","revenue_class_year","sme_class","sme_class_code","a_region","a_region_code","mailing_address_status","mailing_address_status_code","sector","sector_code","activity_started_date","activity_ended_date","workplace_count","registered_name_count","ownership_category_code","public_private_code","company_status_code","foreign_ownership","foreign_ownership_code","owner_country","owner_country_code","import_export","export_size_class","export_size_class_code","import_size_class","import_size_class_code","trade_nordic","trade_eu","trade_other_europe","trade_asia_except_far_east","trade_far_east","trade_north_central_america","trade_south_america","trade_africa","main_workplace_cfar","main_workplace_name","main_workplace_email","main_workplace_phone","main_workplace_municipality","main_workplace_municipality_code","main_workplace_county","main_workplace_county_code","sni_code_1","sni_description_1","sni_section_1","sni_section_code_1","sni_code_2","sni_description_2","sni_section_2","sni_section_code_2","sni_code_3","sni_description_3","sni_section_3","sni_section_code_3","sni_code_4","sni_description_4","sni_section_4","sni_section_code_4","sni_code_5","sni_description_5","sni_section_5","sni_section_code_5","main_workplace_fetched_at"]},"description":"Fields replaced by null because of endpoint tier or customer restrictions."}}},"Company":{"type":"object","properties":{"scb":{"$ref":"#/components/schemas/ScbProfile"},"foundation":{"$ref":"#/components/schemas/Foundation"},"orgnr":{"type":"string","example":"5567037485"},"orgnr_formatted":{"type":"string","example":"556703-7485"},"name_protection_number":{"type":"string","description":"Together with orgnr, this identifies a specific registered sole trader business.","example":"1"},"vat_number":{"type":"string","nullable":true,"description":"Swedish VAT number (momsnummer). Format: SE + 10-digit orgnr + 01. Only set if company is registered for VAT.","example":"SE556703748501"},"name":{"type":"string","example":"Spotify AB"},"status":{"type":"string","enum":["active","deregistered","unknown"]},"org_form":{"type":"object","properties":{"code":{"type":"string","example":"AB"},"description":{"type":"string","example":"Aktiebolag"}}},"registered_date":{"type":"string","format":"date","nullable":true},"deregistered_date":{"type":"string","format":"date","nullable":true},"deregistration":{"type":"object","nullable":true,"description":"Detailed deregistration information (null if company is active)","properties":{"date":{"type":"string","format":"date","description":"Deregistration date"},"reason":{"type":"object","nullable":true,"properties":{"code":{"type":"string","description":"Reason code (e.g., KO=konkurs, FU=fusion)","example":"KO"},"description":{"type":"string","description":"Reason description","example":"Konkurs"}}}}},"ongoing_procedures":{"type":"array","nullable":true,"description":"Ongoing Bolagsverket procedures like liquidation or restructuring. KK means bankruptcy is currently returned as an ongoing procedure. If KK disappears, also check ownership.bolagsstatus and deregistration.reason.code before treating the bankruptcy state as cleared.","items":{"type":"object","properties":{"code":{"type":"string","description":"Procedure code","example":"LI"},"description":{"type":"string","description":"Procedure description","example":"Likvidation"},"from_date":{"type":"string","format":"date","nullable":true,"description":"Start date of procedure"}}}},"address":{"type":"object","properties":{"coordinates":{"type":["object","null"],"description":"WGS84 (EPSG:4326) address point. Null unless geocoding_status is matched; not a building boundary or an interpolated location.","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"precision":{"type":"string","enum":["address"]},"source":{"type":"string","enum":["lantmateriet"]},"source_updated_at":{"type":["string","null"],"format":"date-time","description":"Update time of the source address delivery, when known."}},"required":["latitude","longitude","precision","source","source_updated_at"]},"geocoding_status":{"type":"string","enum":["matched","ambiguous","not_found","missing_address","unsupported_address","restricted","unavailable"],"description":"matched: one address point; ambiguous: multiple candidates; not_found: no match; missing_address: street or postal code missing; unsupported_address: foreign, postal-box or invalid address; restricted: withheld for privacy (including sole traders and unknown legal form); unavailable: coordinate service or source unavailable. Other company data remains usable."},"geocoding_updated_at":{"type":["string","null"],"format":"date-time","description":"When this address was last evaluated against the source. Null for restricted or unavailable results; separate from the company/workplace update time."},"street":{"type":"string","nullable":true},"co":{"type":"string","nullable":true},"postal_code":{"type":"string","nullable":true},"city":{"type":"string","nullable":true},"country":{"type":"string","default":"SE"},"municipality_code":{"type":"string","nullable":true,"description":"4-digit kommun code (e.g., '0180' for Stockholm)","example":"0180"},"municipality":{"type":"string","nullable":true,"description":"Municipality name (kommun)","example":"Stockholm"},"county_code":{"type":"string","nullable":true,"description":"2-digit county code (län)","example":"01"},"county":{"type":"string","nullable":true,"description":"County name (län)","example":"Stockholms län"}}},"business":{"type":"object","properties":{"description":{"type":"string","nullable":true},"sni_codes":{"type":"array","items":{"$ref":"#/components/schemas/SniCode"},"description":"Swedish Standard Industrial Classification codes (SNI 2007 or SNI 2025)"},"nace_codes":{"type":"array","items":{"$ref":"#/components/schemas/NaceCode"},"description":"NACE Rev.2/Rev.2.1 codes - European equivalent of SNI 2007/SNI 2025"}}},"tax_status":{"type":"object","properties":{"active":{"type":"boolean","nullable":true,"description":"Combined SCB tax activity; null when unknown. Does not establish VAT registration."},"registered_for_vat_or_employer":{"type":"boolean","nullable":true,"description":"Legacy alias for tax activity; includes F-tax. Null when unknown."},"f_tax":{"type":"boolean","nullable":true,"description":"F-skatt registration status (null if not enriched)"},"f_tax_registered_date":{"type":"string","format":"date","nullable":true,"description":"F-skatt registration start date from enrichment source, when available"},"vat":{"type":"boolean","nullable":true,"description":"Separate VAT/moms registration: true, false, or null when unknown. SCB tax activity does not establish VAT registration."},"vat_registered_date":{"type":"string","format":"date","nullable":true,"description":"VAT/moms registration start date from enrichment source, when available"},"employer":{"type":"boolean","nullable":true,"description":"Separate employer registration: true, false, or null when unknown."}}},"phone":{"type":"string","nullable":true,"description":"Company phone number from SCB enrichment when available.","example":"+46812345678"},"visiting_address":{"type":"object","nullable":true,"description":"Main workplace visiting address from SCB enrichment when available.","properties":{"coordinates":{"type":["object","null"],"description":"WGS84 (EPSG:4326) address point. Null unless geocoding_status is matched; not a building boundary or an interpolated location.","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"precision":{"type":"string","enum":["address"]},"source":{"type":"string","enum":["lantmateriet"]},"source_updated_at":{"type":["string","null"],"format":"date-time","description":"Update time of the source address delivery, when known."}},"required":["latitude","longitude","precision","source","source_updated_at"]},"geocoding_status":{"type":"string","enum":["matched","ambiguous","not_found","missing_address","unsupported_address","restricted","unavailable"],"description":"matched: one address point; ambiguous: multiple candidates; not_found: no match; missing_address: street or postal code missing; unsupported_address: foreign, postal-box or invalid address; restricted: withheld for privacy (including sole traders and unknown legal form); unavailable: coordinate service or source unavailable. Other company data remains usable."},"geocoding_updated_at":{"type":["string","null"],"format":"date-time","description":"When this address was last evaluated against the source. Null for restricted or unavailable results; separate from the company/workplace update time."},"street":{"type":"string","nullable":true,"example":"Besöksgatan 2"},"postal_code":{"type":"string","nullable":true,"example":"11123"},"city":{"type":"string","nullable":true,"example":"Stockholm"}}},"size":{"type":"object","nullable":true,"description":"SCB size classes for employees and revenue. Values are source-provided labels and may be null.","properties":{"employees":{"type":"string","nullable":true,"example":"10-19 anställda"},"revenue":{"type":"string","nullable":true,"example":"10 000 - 49 999 tkr"}}},"ownership":{"type":"object","nullable":true,"description":"SCB ownership/status classification when available. bolagsstatus is a separate source field from ongoing_procedures and can say Konkurs inledd even when Bolagsverket no longer returns KK as an ongoing procedure.","properties":{"category":{"type":"string","nullable":true,"description":"Ownership category label from SCB.","example":"Privat svenskt med koncern"},"public_or_private":{"type":"string","nullable":true,"description":"Public/private market classification from SCB.","example":"Privat"},"bolagsstatus":{"type":"string","nullable":true,"description":"Company status label from SCB, for example Normalläge, Konkurs inledd, Konkurs, Likvidation, or Fusion.","example":"Normalläge"}}},"meta":{"$ref":"#/components/schemas/SourceMeta"},"fi":{"$ref":"#/components/schemas/FIData","description":"Finansinspektionen regulatory data (only included with ?include=fi, Starter+ plans)"},"prv":{"$ref":"#/components/schemas/PRVData","description":"PRV trademark and patent data (only included with ?include=prv, Starter+ plans)"},"financials":{"$ref":"#/components/schemas/CompanyFinancialsResponse","description":"Latest financial data (only included with ?include=financials, Starter+ plans)"},"coverage":{"$ref":"#/components/schemas/CompanyCoverage","description":"Availability, freshness and absence reason per data section (only included with ?include=coverage)"},"board":{"type":"object","description":"Board composition statistics (included when enrichment data exists)","properties":{"total_members":{"type":"integer","example":4},"males":{"type":"integer","example":2},"females":{"type":"integer","example":2},"unknown_gender":{"type":"integer","example":0},"average_age":{"type":"number","nullable":true,"example":60.5},"female_percentage":{"type":"integer","example":50}}},"foreign_owned":{"type":"boolean","description":"Whether the company is owned by a foreign (non-Swedish) parent company","example":true},"parent_company":{"type":"object","description":"Parent company information (included when company is a subsidiary)","properties":{"orgnr":{"type":"string","example":"3330934625"},"name":{"type":"string","example":"General Mills Swiss Three GmbH"},"country":{"type":"string","nullable":true,"description":"ISO country code of parent company (SE for Swedish, detected from company name suffix for foreign)","example":"DE"}}},"part_of_group":{"type":"boolean","description":"Whether the company is part of a corporate group","example":true},"company_size":{"type":"string","nullable":true,"description":"Company size classification based on revenue and number of employees.","enum":["small","medium","large"],"example":"small"},"credit_rating":{"type":"object","nullable":true,"description":"Credit rating and risk assessment (always included when available)","properties":{"rating":{"type":"string","description":"Credit rating (AAA, AA, A, B, C)","example":"A"},"risk_score":{"type":"integer","minimum":0,"maximum":100,"description":"Risk score (0=lowest, 100=highest)","example":35},"credit_limit":{"type":"integer","description":"Recommended credit limit in SEK","example":500000},"finance_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Financial health index. Divide by 100 for display on a 0-100 scale; not a percentage or probability.","example":7500},"history_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Company history index. Divide by 100 for display on a 0-100 scale; not a percentage or probability.","example":8000},"ability_to_pay_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Ability-to-pay index. Divide by 100 for display on a 0-100 scale; not a percentage or probability.","example":7000},"ownership_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Equity and company-age stability index, not a verification of owners. Divide by 100 for display on a 0-100 scale.","example":8500},"composite_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Combined component index. Divide by 100 for display on a 0-100 scale; not a percentage or probability. Model weights and thresholds are not part of the public API contract.","example":7700},"risk_indicators":{"type":"object","properties":{"external_records_status":{"type":"string","enum":["not_covered","available"]},"payment_remarks_count":{"type":"integer","nullable":true,"description":"External register observation. Null means not covered; never interpret as a verified zero.","example":null},"payment_remarks_amount":{"type":"integer","nullable":true,"description":"External register observation. Null means not covered; never interpret as a verified zero.","example":null},"petitions_count":{"type":"integer","nullable":true,"description":"External register observation. Null means not covered; never interpret as a verified zero.","example":null},"petitions_amount":{"type":"integer","nullable":true,"description":"External register observation. Null means not covered; never interpret as a verified zero.","example":null},"has_negative_equity":{"type":"boolean","description":"Whether company has negative equity","example":false},"has_liquidation":{"type":"boolean","description":"Whether company is in liquidation","example":false},"has_fi_warning":{"type":"boolean","description":"Whether company has FI warning","example":false},"has_qualified_audit":{"type":"boolean","description":"Whether auditor has qualified opinion","example":false}}}}},"website":{"type":"string","nullable":true,"description":"Company website URL (always included when available)","example":"https://spotify.se"},"linkedin":{"type":"string","nullable":true,"description":"Company LinkedIn profile URL (always included when available)","example":"https://www.linkedin.com/company/example"},"announcements":{"$ref":"#/components/schemas/AnnouncementsSummary","description":"POIT legal announcements summary (always included when announcements exist). Contains bankruptcies, creditor calls, registrations, and debt restructuring announcements."}}},"SniCode":{"type":"object","description":"Swedish Standard Industrial Classification code (SNI 2007 or SNI 2025)","properties":{"code":{"type":"string","example":"62010"},"version":{"type":"string","enum":["2007","2025"],"example":"2025"},"description":{"type":"string","example":"Dataprogrammering"},"section":{"type":"string","nullable":true,"example":"J"},"sectionName":{"type":"string","nullable":true,"example":"Informations- och kommunikationsverksamhet"},"level":{"type":"integer","nullable":true,"example":5},"parentCode":{"type":"string","nullable":true,"example":"6201"}}},"NaceCode":{"type":"object","description":"NACE Rev.2/Rev.2.1 code - EU standard industrial classification","properties":{"code":{"type":"string","example":"62010"},"description":{"type":"string","example":"Computer programming"},"nace_version":{"type":"string","enum":["Rev. 2","Rev. 2.1"],"example":"Rev. 2.1"}}},"FIData":{"type":"object","description":"Finansinspektionen (FI) regulatory data for a company","properties":{"licenses":{"type":"array","items":{"$ref":"#/components/schemas/FILicense"},"description":"Stored FI register entries; registration does not establish a license. The list may be incomplete."},"warnings":{"type":"array","items":{"$ref":"#/components/schemas/FIWarning"},"description":"FI warnings issued for this company"},"short_positions":{"type":"array","items":{"$ref":"#/components/schemas/FIShortPosition"},"description":"Active short selling positions against this company"},"is_warned":{"type":"boolean","description":"True if company has any FI warnings"},"is_licensed":{"type":"boolean","nullable":true,"description":"Verified license status, or null when unknown. Currently null: register membership alone cannot establish this status."}}},"FILicense":{"type":"object","description":"FI register entry; this compatibility shape does not establish a current permission","properties":{"category":{"type":"string","nullable":true,"description":"Single recorded main category; null when absent or ambiguous. See categories when provided.","example":"Värdepappersbolag"},"license_type":{"type":"string","nullable":true,"description":"Recorded activity or permission text; null when several entries exist. Use permissions when provided; legacy text may be incomplete","example":"Tillstånd"},"status":{"type":"string","nullable":true,"description":"Source register status, not verified permission status","example":"Aktivt"},"granted_date":{"type":"string","format":"date","nullable":true,"description":"Verified grant date, or null when unknown. Currently null; a source status date is not a grant date."},"register_id":{"type":"string","description":"FI record identifier when available. Several records may refer to the same company."},"categories":{"type":"array","items":{"type":"string"},"description":"All recorded main category values, when available."},"category_memberships":{"type":"array","items":{"type":"string"},"description":"Recorded register category memberships, including repeated occurrences; distinct from main categories."},"permissions":{"type":"array","items":{"$ref":"#/components/schemas/FIPermissionObservation"},"description":"Complete recorded permission texts when available; not a certification of current permission."},"registrations":{"type":"array","items":{"$ref":"#/components/schemas/FIRegistrationObservation"},"description":"Recorded registrations, kept separate from permissions. Registration alone does not establish a license."},"other_activities":{"type":"array","items":{"type":"string"},"description":"Other activities as recorded in the source, when available."},"source_status_date":{"type":"string","format":"date","nullable":true,"description":"Date associated with source register status; not a grant date."},"observed_at":{"type":"string","format":"date-time","description":"When this register record was observed; not the start of a permission."}}},"FIPermissionObservation":{"type":"object","required":["text","source_dates","granted_date"],"properties":{"text":{"type":"string","description":"Full recorded permission entry text, including source notes."},"source_dates":{"type":"array","items":{"type":"object","required":["text","date"],"properties":{"text":{"type":"string"},"date":{"type":"string","format":"date","nullable":true}}},"description":"Dates printed on the source entry; their meaning is not verified as a grant date."},"granted_date":{"type":"string","format":"date","nullable":true,"description":"Verified grant date. Currently null."}}},"FIRegistrationObservation":{"type":"object","required":["text","source_dates"],"properties":{"text":{"type":"string","description":"Full recorded registration entry text, including source notes."},"source_dates":{"type":"array","items":{"type":"object","required":["text","date"],"properties":{"text":{"type":"string"},"date":{"type":"string","format":"date","nullable":true}}},"description":"Dates printed on the registration entry; not permission grant dates."}}},"FIWarning":{"type":"object","description":"Warning issued by Finansinspektionen about a company","properties":{"company_name":{"type":"string","description":"Company name as listed in warning"},"warning_date":{"type":"string","format":"date","nullable":true,"description":"Date warning was issued"},"detail_url":{"type":"string","nullable":true,"description":"URL to warning details on FI website"}}},"FIShortPosition":{"type":"object","description":"Short selling position registered with Finansinspektionen","properties":{"position_holder":{"type":"string","description":"Name of entity holding the short position","example":"Marshall Wace LLP"},"company_name":{"type":"string","description":"Name of company being shorted"},"position_percent":{"type":"string","description":"Position size as percentage of shares","example":"0.51"},"position_date":{"type":"string","format":"date","nullable":true,"description":"Date position was reported"}}},"PRVData":{"type":"object","description":"PRV (Patent- och registreringsverket) intellectual property data","properties":{"trademarks":{"type":"array","items":{"$ref":"#/components/schemas/PRVTrademark"},"description":"Trademarks registered to this company (CC0 1.0)"},"patents":{"type":"array","items":{"$ref":"#/components/schemas/PRVPatent"},"description":"Patents linked to this company via fuzzy matching (CC BY 4.0)"},"trademarks_count":{"type":"integer","description":"Total number of trademarks"},"patents_count":{"type":"integer","description":"Total number of patents"},"has_active_trademarks":{"type":"boolean","description":"True if company has active (non-expired) trademarks"},"has_patents":{"type":"boolean","description":"True if company has any patents"},"trademarks_updated_at":{"type":"string","format":"date-time","nullable":true,"description":"Time of the latest PRV trademark publication reflected in the trademark data. Applies to the whole trademark dataset, not only this company; null if unknown.","example":"2026-10-03T00:30:05.000Z"},"patents_updated_at":{"type":"string","format":"date-time","nullable":true,"description":"Time patent data was last refreshed from PRV. Applies to the whole patent dataset; null if unknown.","example":"2026-10-04T04:51:00.000Z"}}},"PRVTrademark":{"type":"object","description":"Trademark from PRV Varumärkesdatabasen","properties":{"id":{"type":"string","description":"PRV application number","example":"2023-00123"},"trademark_name":{"type":"string","nullable":true,"description":"Trademark name/text"},"trademark_type":{"type":"string","nullable":true,"description":"Type: word, figurative, combined, etc.","example":"word"},"nice_classes":{"type":"array","items":{"type":"integer"},"description":"Nice classification codes","example":[25,35]},"status":{"type":"string","nullable":true,"description":"Status: registered, pending, expired","example":"registered"},"application_date":{"type":"string","format":"date","nullable":true},"registration_date":{"type":"string","format":"date","nullable":true},"expiry_date":{"type":"string","format":"date","nullable":true},"word_mark":{"type":"string","nullable":true,"description":"Word mark text content"},"image_url":{"type":"string","nullable":true,"description":"URL to trademark image"},"updated_at":{"type":"string","format":"date-time","nullable":true,"description":"Time of the PRV publication in which this record last changed; null if not yet known.","example":"2026-10-02T00:30:06.000Z"}}},"PRVPatent":{"type":"object","description":"Patent from PRV bibliographic data","properties":{"id":{"type":"string","description":"Patent number","example":"SE2330242-A1"},"title":{"type":"string","nullable":true,"description":"Patent title"},"ipc_classes":{"type":"array","items":{"type":"string"},"description":"IPC classification codes","example":["H01L","G06F"]},"status":{"type":"string","nullable":true,"description":"Status: granted, pending, published","example":"granted"},"application_date":{"type":"string","format":"date","nullable":true},"publication_date":{"type":"string","format":"date","nullable":true},"grant_date":{"type":"string","format":"date","nullable":true},"matched_confidence":{"type":"integer","nullable":true,"description":"Confidence score (0-100) of company match","example":95}}},"MunicipalTaxRate":{"type":"object","description":"Tax rate information for a Swedish municipality","properties":{"kommun_code":{"type":"string","description":"4-digit municipality code","example":"0180"},"kommun_name":{"type":"string","description":"Municipality name","example":"Stockholm"},"year":{"type":"integer","description":"Tax year","example":2026},"total_rate":{"type":"string","nullable":true,"description":"Total tax rate (kommunal + regional)","example":"30.45"},"municipal_rate":{"type":"string","nullable":true,"description":"Municipal tax rate (kommunal skattesats)","example":"17.98"},"regional_rate":{"type":"string","nullable":true,"description":"Regional tax rate (regional skattesats)","example":"12.47"},"church_rate":{"type":"string","nullable":true,"description":"Church fee rate (for church members)"},"burial_rate":{"type":"string","nullable":true,"description":"Burial fee rate"},"source":{"type":"string","description":"Data source","example":"scb"}}},"TaxRateYearsResponse":{"type":"object","description":"Available years for tax rate data","properties":{"years":{"type":"array","items":{"type":"integer"},"description":"Available years in descending order","example":[2026,2025,2024]},"total":{"type":"integer","description":"Number of available years"},"latest":{"type":"integer","nullable":true,"description":"Most recent year","example":2026},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"TaxRatesByYearResponse":{"type":"object","description":"Tax rates for all municipalities in a given year","properties":{"year":{"type":"integer","description":"Tax year","example":2026},"municipalities":{"type":"array","items":{"$ref":"#/components/schemas/MunicipalTaxRate"},"description":"Tax rates for each municipality"},"total":{"type":"integer","description":"Number of municipalities","example":290},"average_total_rate":{"type":"string","nullable":true,"description":"Average total tax rate","example":"32.25"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"TaxRatesByKommunResponse":{"type":"object","description":"Tax rates for a municipality across years","properties":{"kommun_code":{"type":"string","description":"4-digit municipality code","example":"0180"},"kommun_name":{"type":"string","description":"Municipality name","example":"Stockholm"},"rates":{"type":"array","items":{"$ref":"#/components/schemas/MunicipalTaxRate"},"description":"Tax rates for each year"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"TaxRateSearchResponse":{"type":"object","description":"Search results for municipality tax rates","properties":{"query":{"type":"string","description":"Search query"},"year":{"type":"string","description":"Year used for search results"},"results":{"type":"array","items":{"$ref":"#/components/schemas/MunicipalTaxRate"}},"total":{"type":"integer","description":"Number of results"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"RiksbankRate":{"type":"object","description":"A single rate observation from Riksbank","properties":{"series_id":{"type":"string","description":"Series identifier","example":"SECBREPOEFF"},"category":{"type":"string","enum":["interest_rate","exchange_rate"],"description":"Rate category"},"name":{"type":"string","description":"Human-readable name","example":"Policy rate"},"date":{"type":"string","format":"date","description":"Observation date","example":"2026-04-02"},"value":{"type":"string","description":"Rate value as decimal string","example":"1.75"}}},"LatestRatesResponse":{"type":"object","description":"Latest rates grouped by category","properties":{"interest_rates":{"type":"array","items":{"$ref":"#/components/schemas/RiksbankRate"},"description":"Latest interest rates (policy, deposit, lending, reference)"},"exchange_rates":{"type":"array","items":{"$ref":"#/components/schemas/RiksbankRate"},"description":"Latest exchange rates against SEK"},"updated_at":{"type":"string","format":"date","nullable":true,"description":"Date of most recent observation"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"RateSeriesListResponse":{"type":"object","properties":{"series":{"type":"array","items":{"type":"object","properties":{"series_id":{"type":"string","example":"SEKEURPMI"},"category":{"type":"string","example":"exchange_rate"},"name":{"type":"string","example":"EUR/SEK"},"latest_date":{"type":"string","format":"date","example":"2026-04-02"}}}},"total":{"type":"integer"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"RatesBySeriesResponse":{"type":"object","description":"Historical rates for a series","properties":{"series_id":{"type":"string","example":"SEKEURPMI"},"name":{"type":"string","example":"EUR/SEK"},"category":{"type":"string","example":"exchange_rate"},"rates":{"type":"array","items":{"$ref":"#/components/schemas/RiksbankRate"}},"total":{"type":"integer","description":"Number of observations returned"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"RatesByDateResponse":{"type":"object","description":"All rates for a specific date","properties":{"date":{"type":"string","format":"date","example":"2026-04-02"},"rates":{"type":"array","items":{"$ref":"#/components/schemas/RiksbankRate"}},"total":{"type":"integer"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"ScreeningMatch":{"type":"object","description":"A match from sanctions or PEP database","properties":{"id":{"type":"string","description":"Unique identifier for the entry"},"source":{"type":"string","enum":["eu","un","ofac","riksdagen"],"description":"Data source"},"entityType":{"type":"string","enum":["person","entity"],"description":"Type of entity"},"matchedName":{"type":"string","description":"Normalized name that matched"},"originalName":{"type":"string","description":"Original name from source"},"matchScore":{"type":"integer","minimum":0,"maximum":100,"description":"Match confidence score"},"matchType":{"type":"string","enum":["exact","fuzzy","phonetic"],"description":"Type of match"},"programs":{"type":"array","items":{"type":"string"},"description":"Sanctions programs (for sanctions entries)"},"birthDate":{"type":"string","nullable":true,"description":"Birth date if available"},"nationalities":{"type":"array","items":{"type":"string"},"description":"Nationalities if available"},"listedOn":{"type":"string","nullable":true,"description":"Date listed on sanctions list"},"birthYear":{"type":"integer","nullable":true,"description":"PEP birth year from source; null when unavailable. Not a full birth date."},"isDeceased":{"type":"boolean","nullable":true,"description":"PEP source reports deceased when true; null when unknown. Absence of a death notice does not establish that the person is alive."},"deathDate":{"type":"string","format":"date","nullable":true,"description":"PEP death date (YYYY-MM-DD) when explicitly provided by source; otherwise null, including deceased persons without a full date."},"isActive":{"type":"integer","nullable":true,"description":"1 if currently in political office according to source status; not life status"},"currentPosition":{"type":"string","nullable":true,"description":"Current position (for PEP entries)"},"party":{"type":"string","nullable":true,"description":"Political party (for PEP entries)"}}},"ScreeningCoverage":{"type":"object","required":["complete","datasetVersion","lists","truncated","scope","limitations"],"properties":{"complete":{"type":"boolean","description":"Complete only for the requested named lists; never global PEP/RCA coverage."},"datasetVersion":{"type":"string","description":"Atomic successful list publication identifiers"},"truncated":{"type":"boolean","description":"More than 100 matching entities in a category; ranked before truncation"},"scope":{"type":"string","enum":["EU_UN_OFAC_and_Swedish_parliament"]},"limitations":{"type":"array","items":{"type":"string"}},"lists":{"type":"array","items":{"type":"object","properties":{"source":{"type":"string"},"status":{"type":"string","enum":["available","stale","missing"]},"publishedAt":{"type":"string","format":"date-time","nullable":true},"entries":{"type":"integer"}}}}}},"ScreeningResult":{"type":"object","description":"Result of screening a person name","properties":{"coverage":{"$ref":"#/components/schemas/ScreeningCoverage"},"queryName":{"type":"string","description":"The name that was screened","example":"Vladimir Putin"},"sanctionsHits":{"type":"array","items":{"$ref":"#/components/schemas/ScreeningMatch"},"description":"Matches from sanctions lists (EU, UN, OFAC)"},"pepHits":{"type":"array","items":{"$ref":"#/components/schemas/ScreeningMatch"},"description":"Matches from PEP database (Swedish politicians)"},"hasSanctionsHits":{"type":"boolean","description":"True if any sanctions matches found"},"hasPepHits":{"type":"boolean","description":"True if any PEP matches found"},"riskLevel":{"type":"string","enum":["none","low","medium","high"],"description":"Observed name-match risk only. None means no returned hits, not clearance. Always inspect coverage."},"screenedAt":{"type":"string","format":"date-time","description":"Timestamp of screening"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"CompanyScreeningResult":{"type":"object","description":"Result of screening a company and its board members","properties":{"coverage":{"type":"object","properties":{"complete":{"type":"boolean","enum":[false],"description":"Board completeness and beneficial-owner screening are not verified"},"board":{"type":"object","properties":{"status":{"type":"string","enum":["missing","stale","available"]},"observedAt":{"type":"string","format":"date-time","nullable":true},"completeness":{"type":"string","enum":["not_verified"]}}},"beneficialOwners":{"type":"object","properties":{"status":{"type":"string","enum":["not_screened"]},"reason":{"type":"string","enum":["rvh_disabled","not_integrated"]}}}}},"orgnr":{"type":"string","description":"Organization number","example":"5567037485"},"companyName":{"type":"string","description":"Company name","example":"Spotify AB"},"companyScreening":{"$ref":"#/components/schemas/ScreeningResult","description":"Screening result for the company name"},"boardMemberScreenings":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string","description":"Board member name"},"position":{"type":"string","description":"Position in company"},"screening":{"$ref":"#/components/schemas/ScreeningResult"}}},"description":"Screening results for each board member"},"overallRiskLevel":{"type":"string","enum":["none","low","medium","high"],"description":"Highest risk level found"},"hasSanctionsHits":{"type":"boolean","description":"True if any sanctions matches found"},"hasPepHits":{"type":"boolean","description":"True if any PEP matches found"},"screenedAt":{"type":"string","format":"date-time","description":"Timestamp of screening"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"BatchScreeningResult":{"type":"object","description":"Result of batch screening multiple names","properties":{"results":{"type":"array","items":{"allOf":[{"$ref":"#/components/schemas/ScreeningResult"},{"type":"object","properties":{"name":{"type":"string","description":"The input name"}}}]}},"summary":{"type":"object","properties":{"total":{"type":"integer","description":"Total names screened"},"withSanctionsHits":{"type":"integer","description":"Number with sanctions matches"},"withPepHits":{"type":"integer","description":"Number with PEP matches"},"highRisk":{"type":"integer","description":"Number with high risk"},"mediumRisk":{"type":"integer","description":"Number with medium risk"},"lowRisk":{"type":"integer","description":"Number with low risk"},"incomplete":{"type":"integer","description":"Results whose coverage.complete is false"},"noRisk":{"type":"integer","description":"Number with riskLevel=none and complete coverage for the requested lists; not cleared identities"}}},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"ScreeningStats":{"type":"object","description":"Current successful list publications; historical retired entries are excluded. Counts are observed, not fixed coverage guarantees.","required":["totalSanctionsEntries","totalPepEntries","sanctionsBySource","pepBySource","coverage"],"properties":{"totalSanctionsEntries":{"type":"integer"},"totalPepEntries":{"type":"integer"},"sanctionsBySource":{"type":"object","additionalProperties":{"type":"integer"}},"pepBySource":{"type":"object","additionalProperties":{"type":"integer"}},"coverage":{"$ref":"#/components/schemas/ScreeningCoverage"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"SignatoryResponse":{"type":"object","description":"Signatory rules (firmateckning) for a company","properties":{"coverage":{"$ref":"#/components/schemas/SectionCoverage","description":"Availability, freshness and absence reason for this snapshot, in the shared section coverage format."},"foundation":{"$ref":"#/components/schemas/Foundation"},"orgnr":{"type":"string","example":"5567037485"},"signatory":{"type":"array","items":{"type":"string"},"description":"Signatory rules describing who can sign on behalf of the company","example":["Firman tecknas var för sig av","ledamoten","suppleanten"]},"updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When the signatory data was last updated"},"data_status":{"type":"string","enum":["fresh","stale","refreshing","queued","not_found","failed"]},"retry_after_seconds":{"type":"integer","nullable":true}}},"SignatoriesResponse":{"type":"object","description":"Signatories (firmatecknare) with signing rights for a company","properties":{"coverage":{"$ref":"#/components/schemas/SectionCoverage","description":"Availability, freshness and absence reason for this snapshot, in the shared section coverage format."},"foundation":{"$ref":"#/components/schemas/Foundation"},"orgnr":{"type":"string","example":"5567037485"},"signatory_rules":{"type":"array","items":{"type":"string"},"description":"Raw signatory rules from the company register","example":["Styrelsen","VD ensam"]},"signatories":{"type":"array","items":{"$ref":"#/components/schemas/Signatory"},"description":"List of persons with signing authority"},"updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When the data was last updated"},"data_status":{"type":"string","enum":["fresh","stale","refreshing","queued","not_found","failed"]},"retry_after_seconds":{"type":"integer","nullable":true}}},"Signatory":{"type":"object","description":"A person with signing authority (firmatecknare)","properties":{"name":{"type":"string","example":"Anna Andersson"},"position":{"type":"string","example":"VD","description":"Primary position of this person"},"signing_right":{"type":"string","enum":["ALONE","TOGETHER","UNKNOWN"],"description":"ALONE: can sign independently, TOGETHER: needs another signatory, UNKNOWN: could not determine","example":"ALONE"}}},"PersonsResponse":{"type":"object","description":"Board members, executives, and auditors for a company","properties":{"coverage":{"$ref":"#/components/schemas/SectionCoverage","description":"Availability, freshness and absence reason for this snapshot, in the shared section coverage format."},"foundation":{"$ref":"#/components/schemas/Foundation"},"orgnr":{"type":"string","example":"5567037485"},"persons":{"type":"array","items":{"$ref":"#/components/schemas/Person"}},"data_status":{"type":"string","enum":["fresh","stale","refreshing","queued","not_found","failed"],"description":"Current state of the local person snapshot or background fetch"},"retry_after_seconds":{"type":"integer","nullable":true,"description":"Suggested polling delay while data is queued or refreshing"},"updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When the persons data was last updated"}}},"Person":{"type":"object","properties":{"name":{"type":"string","example":"Anna Andersson"},"positions":{"type":"array","items":{"type":"string"},"example":["Styrelseordförande","VD"]},"city":{"type":"string","nullable":true,"example":"Stockholm"},"gender":{"type":"string","nullable":true,"enum":["male","female","unknown"],"example":"female"},"age":{"type":"integer","nullable":true,"example":45},"personnummer_hash":{"type":"string","nullable":true,"description":"Stable SHA-256 identity hash when the scraped identity has been resolved"},"person_id":{"type":"string","nullable":true,"pattern":"^per_1_[A-Za-z0-9_-]+$","description":"Opaque person identifier for local company-engagement lookups. Available without exposing or resolving a personnummer when the source provides a stable identity key."},"identity_resolution":{"type":"string","enum":["resolved","unresolved"],"description":"Whether personnummer_hash is backed by a resolved identity. person_id may still be available when this is unresolved."},"role":{"type":"string","enum":["board_member","executive","auditor","other"],"description":"Primary role of this person","example":"executive"}}},"OwnershipResponse":{"type":"object","description":"Ownership information for a company","properties":{"orgnr":{"type":"string","example":"5567037485"},"ownership":{"type":"object","properties":{"owners":{"type":"array","items":{"$ref":"#/components/schemas/Owner"}},"total_owners":{"type":"integer","example":3}}},"updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When the ownership data was last updated"},"data_status":{"type":"string","enum":["fresh","stale","refreshing","queued","not_found","failed"]},"retry_after_seconds":{"type":"integer","nullable":true}}},"Owner":{"type":"object","properties":{"name":{"type":"string","example":"Holding AB"},"orgnr":{"type":"string","nullable":true,"example":"5566001234"},"type":{"type":"string","enum":["company","person"],"example":"company"}}},"ContactResponse":{"type":"object","description":"Contact information for a company","properties":{"orgnr":{"type":"string","example":"5567037485"},"website_url":{"type":"string","nullable":true,"description":"Company website URL","example":"https://www.example.se"},"contact_phone":{"type":"string","nullable":true,"description":"Company phone number in E.164 format","example":null},"contact_email":{"type":"string","nullable":true,"description":"Company contact email","example":null},"linkedin_url":{"type":"string","nullable":true,"description":"Company LinkedIn profile URL","example":null},"data_status":{"type":"string","enum":["fresh","stale","refreshing","queued","not_found","failed"]},"retry_after_seconds":{"type":"integer","nullable":true},"updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When the contact data was last updated"}}},"AnnouncementResponse":{"type":"object","description":"POIT announcement details","properties":{"id":{"type":"string","description":"Announcement ID (kungörelse-id)","example":"KNG-2026-12345"},"apiPathId":{"type":"string","description":"URL-safe announcement ID for the detail endpoint","example":"K331995-26"},"category":{"type":"string","description":"Announcement category","example":"Konkurser"},"categoryId":{"type":"integer","description":"POIT category ID","example":3},"type":{"type":"string","description":"Announcement type","example":"Konkursbeslut"},"typeId":{"type":"integer","description":"POIT announcement type ID","example":20},"subtype":{"type":"string","nullable":true,"description":"Announcement subtype if applicable"},"publicationDate":{"type":"string","format":"date","description":"Publication date in POIT","example":"2026-01-15"},"registrationDate":{"type":"string","format":"date","nullable":true,"description":"Registration date stated in the announcement"},"decisionDate":{"type":"string","format":"date","nullable":true,"description":"Decision date if applicable"},"deadlineDate":{"type":"string","format":"date","nullable":true,"description":"Deadline for creditor calls"},"court":{"type":"string","nullable":true,"description":"Issuing authority (tingsrätt, Bolagsverket)","example":"Stockholms tingsrätt"},"county":{"type":"string","nullable":true,"description":"County stated in the announcement"},"fullText":{"type":"string","nullable":true,"description":"Full announcement text (only with include_text=true)"},"changes":{"type":"array","nullable":true,"description":"Structured changes parsed from the announcement text","items":{"type":"object","properties":{"code":{"type":"string"},"label":{"type":"string"}}}},"detailAvailable":{"type":"boolean","description":"Whether the complete POIT detail has been collected"},"sourceUrl":{"type":"string","format":"uri","description":"Canonical POIT announcement URL"},"administratorName":{"type":"string","nullable":true,"description":"Bankruptcy administrator name (for konkurser)"},"administratorContact":{"type":"string","nullable":true,"description":"Bankruptcy administrator contact info"}}},"AnnouncementsListResponse":{"type":"object","description":"List of POIT announcements for a company","properties":{"coverage":{"type":"string","description":"Coverage limits when provided. Counts describe matching stored publications, not the complete POIT archive."},"orgnr":{"type":"string","example":"5567037485"},"total":{"type":"integer","description":"Total number of announcements","example":3},"limit":{"type":"integer","example":100},"offset":{"type":"integer","example":0},"hasMore":{"type":"boolean","example":false},"announcements":{"type":"array","items":{"$ref":"#/components/schemas/AnnouncementResponse"}},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"AnnouncementsSummary":{"type":"object","description":"Summary of POIT announcements (embedded in company response)","properties":{"coverage":{"type":"string","description":"Coverage limits when provided. An empty summary does not establish that no announcement exists elsewhere."},"count":{"type":"integer","description":"Total number of announcements","example":3},"items":{"type":"array","description":"Recent announcements (up to 10)","items":{"type":"object","properties":{"id":{"type":"string","description":"Announcement ID","example":"KNG-2026-12345"},"category":{"type":"string","description":"Announcement category","example":"Konkurser"},"type":{"type":"string","description":"Announcement type","example":"Konkursbeslut"},"subtype":{"type":"string","nullable":true,"description":"Announcement subtype"},"publication_date":{"type":"string","format":"date","description":"Publication date","example":"2026-01-15"},"court":{"type":"string","nullable":true,"description":"Issuing authority","example":"Stockholms tingsrätt"}}}}}},"BankruptcyStatusResponse":{"type":"object","description":"Bankruptcy status for a company","properties":{"coverage":{"type":"string","description":"Coverage limits when provided. A false flag means no matching stored announcement, not a legal-status clearance."},"orgnr":{"type":"string","example":"5567037485"},"has_bankruptcy":{"type":"boolean","description":"Whether a matching stored bankruptcy announcement was found; this does not establish current bankruptcy status."},"bankruptcy":{"oneOf":[{"$ref":"#/components/schemas/AnnouncementResponse"},{"type":"null"}],"description":"Latest bankruptcy announcement if any"}}},"CreditorCallStatusResponse":{"type":"object","description":"Creditor call status for a company","properties":{"coverage":{"type":"string","description":"Coverage limits when provided. A false flag means no matching stored announcement, not complete archive coverage."},"orgnr":{"type":"string","example":"5567037485"},"has_creditor_call":{"type":"boolean","description":"Whether a matching stored creditor-call announcement was found."},"creditor_call":{"oneOf":[{"$ref":"#/components/schemas/AnnouncementResponse"},{"type":"null"}],"description":"Latest creditor call announcement if any"}}},"ValidationResult":{"type":"object","properties":{"orgnr":{"type":"string"},"valid":{"type":"boolean"},"checksum_ok":{"type":"boolean"},"exists":{"type":"boolean"},"active":{"type":"boolean"},"name":{"type":"string","nullable":true},"org_form":{"type":"string","nullable":true},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"SearchResponse":{"type":"object","properties":{"market_query_id":{"type":"string","format":"uuid","description":"Present when membership comes from a market query."},"selection_as_of":{"type":"string","format":"date-time","description":"Frozen membership time; returned company details can be newer."},"query":{"type":"string"},"filters":{"type":"object","additionalProperties":true},"results":{"type":"array","items":{"$ref":"#/components/schemas/SearchResult"}},"total":{"type":"integer"},"total_is_estimate":{"type":"boolean","description":"True only when the exact count did not finish within the fast response window. Repeat the same search to retrieve the cached exact count."},"limit":{"type":"integer"},"offset":{"type":"integer"},"next_cursor":{"type":"string","nullable":true,"description":"Ordinary search: last orgnr, passed as after_orgnr. Market search: signed cursor, passed as cursor with the same market query/group. Null if no more results."},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"SearchResult":{"type":"object","properties":{"coordinates":{"type":["object","null"],"description":"WGS84 (EPSG:4326) address point. Null unless geocoding_status is matched; not a building boundary or an interpolated location.","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"precision":{"type":"string","enum":["address"]},"source":{"type":"string","enum":["lantmateriet"]},"source_updated_at":{"type":["string","null"],"format":"date-time","description":"Update time of the source address delivery, when known."}},"required":["latitude","longitude","precision","source","source_updated_at"]},"geocoding_status":{"type":"string","enum":["matched","ambiguous","not_found","missing_address","unsupported_address","restricted","unavailable"],"description":"matched: one address point; ambiguous: multiple candidates; not_found: no match; missing_address: street or postal code missing; unsupported_address: foreign, postal-box or invalid address; restricted: withheld for privacy (including sole traders and unknown legal form); unavailable: coordinate service or source unavailable. Other company data remains usable."},"geocoding_updated_at":{"type":["string","null"],"format":"date-time","description":"When this address was last evaluated against the source. Null for restricted or unavailable results; separate from the company/workplace update time."},"address_role":{"const":"visiting_address","description":"Present with coordinate output. The visit location can differ from the company's seat, city or registered postal address."},"sni_codes":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"version":{"type":"string","enum":["2007","2025"],"nullable":true,"description":"Observed source classification; null when it cannot be established."}}},"description":"Stored primary and secondary SNI codes with their observed classification."},"matched_sni_codes":{"type":"array","items":{"type":"object","properties":{"code":{"type":"string"},"version":{"type":"string","enum":["2007","2025"],"nullable":true,"description":"Observed source classification; null when it cannot be established."}}},"description":"Codes matching the requested SNI prefix and optional version; empty when no SNI prefix was requested."},"employees_period_end":{"type":"string","nullable":true,"description":"Period of the latest available company employee count, YYYY-MM or YYYY-MM-DD. May precede fiscal_year_end."},"employees_source":{"type":"string","nullable":true,"description":"Public source identifier for the employee observation."},"fiscal_year_end":{"type":"string","nullable":true,"description":"Latest financial period, YYYY-MM or YYYY-MM-DD as reported. Returned with financial fields."},"net_income":{"type":"integer","nullable":true,"description":"Latest net income in SEK; returned with financial fields."},"scb":{"$ref":"#/components/schemas/ScbProfile"},"orgnr":{"type":"string"},"orgnr_formatted":{"type":"string","description":"Organization number in standard display format (XXXXXX-XXXX)"},"name_protection_number":{"type":"string","description":"Use with orgnr to distinguish multiple sole trader businesses."},"name":{"type":"string"},"city":{"type":"string","nullable":true},"org_form":{"type":"string"},"active":{"type":"boolean"},"score":{"type":"number"},"updated_at":{"type":"string","format":"date-time","description":"When the company data was last updated"},"registered_date":{"type":"string","nullable":true,"description":"Company registration date (YYYY-MM-DD)"},"revenue":{"type":"integer","nullable":true,"description":"Latest revenue in SEK (only with include_financials=true or sorting by revenue/employees)"},"employees":{"type":"integer","nullable":true,"description":"Latest employee count (only with include_financials=true or sorting by revenue/employees)"},"accounting_scope":{"allOf":[{"$ref":"#/components/schemas/AccountingScope"}],"nullable":true,"description":"Accounting basis of the returned financial projection. Present with financial fields."},"quality_status":{"type":"string","enum":["verified","unverified"],"nullable":true,"description":"Publication quality of the returned financial projection. Quarantined rows are excluded."}}},"PersonSearchResponse":{"type":"object","properties":{"query":{"type":"string","description":"The search query"},"filters":{"type":"object","properties":{"city":{"type":"string"},"gender":{"type":"string","enum":["male","female"]}}},"results":{"type":"array","items":{"$ref":"#/components/schemas/PersonSearchResult"}},"total":{"type":"integer","description":"Total unique persons matching query"},"limit":{"type":"integer"}}},"PersonSearchResult":{"type":"object","properties":{"name":{"type":"string","example":"Johan Andersson"},"city":{"type":"string","nullable":true,"example":"Stockholm"},"age":{"type":"integer","nullable":true,"example":45},"gender":{"type":"string","nullable":true,"enum":["male","female","unknown"]},"identity_resolution":{"type":"string","enum":["resolved","unresolved"]},"company_count":{"type":"integer","description":"Number of companies where person has positions"},"companies":{"type":"array","items":{"$ref":"#/components/schemas/PersonCompany"}}}},"PersonCompany":{"type":"object","properties":{"orgnr":{"type":"string","example":"5567037485"},"name":{"type":"string","example":"Spotify AB"},"positions":{"type":"array","items":{"type":"string"},"example":["Styrelseledamot","VD"]}}},"PersonCompaniesResponse":{"type":"object","properties":{"unresolved_company_count":{"type":["integer","null"],"minimum":0,"description":"Source engagement rows omitted because the company identifier could not be resolved. A positive count means the result is incomplete. Null means coverage is unknown; older cached responses may omit this field."},"meta":{"$ref":"#/components/schemas/SourceMeta","description":"Optional public source attribution passed through by Auth; may be absent in cached responses."},"person_id":{"type":["string","null"],"pattern":"^per_1_[A-Za-z0-9_-]+$","description":"Opaque identifier used for this lookup, or null for personnummer-based lookups."},"personnummer_hash":{"type":["string","null"],"example":"fd9484eebfb4b7c34026534fdb6d4b53583d767d21c2bb5c0b5d6df7a96b63c1"},"source":{"type":"string","const":"local_registry","example":"local_registry"},"mode":{"type":"string","enum":["db","fetched"],"example":"db"},"data_status":{"type":"string","enum":["fresh","stale","queued","refreshing","not_found","failed"],"example":"fresh"},"last_checked_at":{"type":["string","null"],"format":"date-time"},"companies":{"type":"array","items":{"$ref":"#/components/schemas/PersonCompanyEngagement"}},"count":{"type":"integer","example":2},"refreshing":{"type":"boolean","example":false}},"required":["person_id","personnummer_hash","source","mode","data_status","last_checked_at","companies","count","refreshing"]},"PersonCompanyEngagement":{"type":"object","properties":{"orgnr":{"type":"string","example":"5567037485","description":"Canonical company identifier. For a sole trader this is the full 12-digit personnummer or coordination number used as the business identifier; accepted by GET /v1/company/{orgnr}."},"name":{"type":"string","example":"Spotify AB","description":"Registered business name, or an empty string when no name is available. Multiple registered names for one sole trader are grouped under the same identifier."},"status":{"type":"string","enum":["active","deregistered","unknown"]},"roles":{"type":"array","items":{"type":"object","properties":{"type":{"$ref":"#/components/schemas/PersonRoleType"},"title":{"type":"string","example":"Styrelseledamot"},"active":{"type":"boolean","example":true},"last_seen_at":{"type":["string","null"],"format":"date-time"}},"required":["type","title","active","last_seen_at"]}}},"required":["orgnr","name","status","roles"]},"BeneficialOwnersResponse":{"type":"object","properties":{"orgnr":{"type":"string","example":"5567037485"},"status":{"type":"string","enum":["FINNS","SAKNAS","UNDANTAGEN","UNKNOWN"]},"arendenummer":{"type":["string","null"],"example":"A123/2026"},"owner_count":{"type":"integer","example":2},"has_anonymous":{"type":"boolean"},"representative_count":{"type":"integer"},"has_felaktiga_uppgifter":{"type":"boolean"},"payload":{"type":"object"},"source":{"type":"string","example":"bolagsverket_rvh"},"fetched_at":{"type":"string","format":"date-time"},"fetched_from_datum":{"type":["string","null"],"format":"date"}},"required":["orgnr","status","owner_count","payload","source","fetched_at"]},"PersonBeneficialOfResponse":{"type":"object","properties":{"result_count":{"type":"integer","example":2},"companies":{"type":"array","items":{"type":"object"}},"source":{"type":"string","example":"bolagsverket_rvh"},"fetched_at":{"type":["string","null"],"format":"date-time"},"fetched_from_datum":{"type":["string","null"],"format":"date"}},"required":["result_count","companies","source","fetched_at","fetched_from_datum"]},"ReportsResponse":{"type":"object","properties":{"orgnr":{"type":"string"},"name":{"type":"string"},"reports":{"type":"array","items":{"$ref":"#/components/schemas/Report"}},"total":{"type":"integer","description":"Total number of reports (for backward compatibility)"},"pagination":{"$ref":"#/components/schemas/ReportsPagination"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"ReportsPagination":{"type":"object","description":"Pagination metadata for reports list","properties":{"total":{"type":"integer","description":"Total number of reports available"},"returned":{"type":"integer","description":"Number of reports in current response"},"offset":{"type":"integer","description":"Current offset position"},"has_more":{"type":"boolean","description":"True if more reports exist beyond current page"}}},"Report":{"type":"object","properties":{"id":{"type":"string"},"year":{"type":"integer"},"period_end":{"type":"string","format":"date"},"registered_at":{"type":"string","format":"date"},"format":{"type":"string","enum":["pdf","ixbrl"]},"source":{"$ref":"#/components/schemas/PublicDataSource"},"source_label":{"type":"string","example":"Bolagsverket"},"has_auditor":{"type":"boolean","description":"True if auditor's report (Revisionsberättelse) is available for download"},"downloadable":{"type":"boolean","description":"False when BolagsAPI may use the report for extracted data but may not redistribute the source file"},"download_unavailable_reason":{"type":"string","enum":["source_redistribution_restricted"],"description":"Machine-readable reason when downloadable is false"}}},"FinancialsResponse":{"type":"object","required":["orgnr","accounting_scope","currency","years","available_periods_without_figures","meta"],"properties":{"orgnr":{"type":"string","example":"5567037485"},"accounting_scope":{"type":"string","enum":["company","group","unknown","mixed"],"description":"The single selected scope, or mixed only when scope=all returns multiple scopes."},"currency":{"type":"string","enum":["SEK"],"example":"SEK","description":"All amounts are SEK. Reports filed in another currency are translated; see years[].fx."},"years":{"type":"array","items":{"$ref":"#/components/schemas/FinancialYear"}},"available_periods_without_figures":{"type":"array","description":"Annual report periods known to exist but without publishable figures: PDF filings without machine-readable figures, and reports filed in another currency whose SEK translation is not yet possible. These periods are not included in years[].","items":{"$ref":"#/components/schemas/AvailablePeriodWithoutFigures"}},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"FinancialYear":{"type":"object","required":["fiscal_year_end","fiscal_year_start","accounting_scope","quality_status","extraction_schema_version","is_primary","is_comparative","income_statement","balance_sheet","ratios","employees","report_id","meta"],"properties":{"period_precision":{"type":"string","enum":["month","day"],"description":"Precision actually observed in the source"},"fiscal_year_end":{"type":"string","pattern":"^\\d{4}-\\d{2}(-\\d{2})?$","example":"2024-08-31"},"fiscal_year_start":{"type":"string","pattern":"^\\d{4}-\\d{2}(-\\d{2})?$","nullable":true},"accounting_scope":{"$ref":"#/components/schemas/AccountingScope"},"quality_status":{"$ref":"#/components/schemas/FinancialQualityStatus"},"extraction_schema_version":{"type":"integer","nullable":true,"description":"Extraction schema version for PDF-derived rows, when available."},"is_primary":{"type":"boolean","description":"True when this period is the annual report's current/main period. This does not indicate company versus group scope."},"is_comparative":{"type":"boolean","description":"True when this row is a comparative period presented in another annual report."},"income_statement":{"$ref":"#/components/schemas/IncomeStatement"},"balance_sheet":{"$ref":"#/components/schemas/BalanceSheet"},"ratios":{"$ref":"#/components/schemas/FinancialRatios"},"employees":{"type":"integer","nullable":true,"example":25},"report_id":{"type":"string","nullable":true},"meta":{"anyOf":[{"$ref":"#/components/schemas/SourceMeta"},{"type":"null"}],"description":"Source attribution for this period, when available. null means period-level attribution is unavailable; it does not mean the financial figures are missing."},"currency":{"type":"string","enum":["SEK"],"description":"Currency of every amount in this year. Present only on translated rows; all other rows are SEK as well."},"reported_currency":{"type":"string","pattern":"^[A-Z]{3}$","example":"EUR","description":"Present only when the annual report was filed in another currency and the amounts were translated to SEK."},"fx":{"$ref":"#/components/schemas/FinancialFxTranslation"},"reported_values":{"type":"object","nullable":true,"description":"The filed amounts in reported_currency, for translated rows only.","properties":{"currency":{"type":"string","example":"EUR"},"income_statement":{"$ref":"#/components/schemas/IncomeStatement"},"balance_sheet":{"$ref":"#/components/schemas/BalanceSheet"}}}}},"IncomeStatement":{"type":"object","description":"All values in SEK (inside reported_values: the filed currency). Cost lines (cost_of_goods_sold, other_external_costs, operating_costs, personnel_costs, depreciation) are stored as positive numbers; subtract them from revenue to derive profit lines. Nullable fields may be null when K2 or condensed annual reports do not expose the source lines.","properties":{"revenue":{"type":"integer","nullable":true,"description":"Nettoomsättning","example":15000000},"other_revenue":{"type":"integer","nullable":true,"description":"Övriga rörelseintäkter"},"cost_of_goods_sold":{"type":"integer","nullable":true,"description":"Kostnad för sålda varor — from Handelsvaror (trading companies) or Råvaror och förnödenheter (production companies). Null when the annual report does not split out this line (condensed K2 or service businesses).","example":8500000},"gross_profit":{"type":"integer","nullable":true,"description":"Bruttoresultat — computed as revenue − cost_of_goods_sold. Null when either input is null.","example":6500000},"other_external_costs":{"type":"integer","nullable":true,"description":"Övriga externa kostnader — rent, consulting, IT, etc. Stored positive."},"operating_costs":{"type":"integer","nullable":true,"description":"Rörelsens kostnader — summary cost line, populated when the report aggregates costs into a single line rather than itemising them."},"operating_result":{"type":"integer","nullable":true,"description":"Rörelseresultat"},"depreciation":{"type":"integer","nullable":true,"description":"Avskrivningar och nedskrivningar av materiella och immateriella anläggningstillgångar. Stored positive."},"ebitda":{"type":"integer","nullable":true,"description":"EBITDA in SEK. Uses stored value when available; otherwise derived as operating_result + depreciation only when both source values are available.","example":3200000},"financial_items":{"type":"integer","nullable":true,"description":"Finansiella poster"},"result_after_financial":{"type":"integer","nullable":true,"description":"Resultat efter finansiella poster"},"result_after_financial_items":{"type":"integer","nullable":true,"description":"UC-compatible alias for result_after_financial. Kept alongside result_after_financial for backward compatibility."},"personnel_costs":{"type":"integer","nullable":true,"description":"Personalkostnader as a positive SEK cost value. Null when source data is unavailable."},"net_income":{"type":"integer","nullable":true,"description":"Årets resultat","example":2500000}}},"BalanceSheet":{"type":"object","description":"All values in SEK (inside reported_values: the filed currency)","properties":{"total_assets":{"type":"integer","nullable":true,"description":"Tillgångar totalt","example":25000000},"fixed_assets":{"type":"integer","nullable":true,"description":"Anläggningstillgångar"},"current_assets":{"type":"integer","nullable":true,"description":"Omsättningstillgångar"},"cash_and_bank":{"type":"integer","nullable":true,"description":"Kassa och bank"},"equity":{"type":"integer","nullable":true,"description":"Eget kapital","example":8000000},"share_capital":{"type":"integer","nullable":true,"description":"Aktiekapital"},"retained_earnings":{"type":"integer","nullable":true,"description":"Balanserat resultat"},"long_term_liabilities":{"type":"integer","nullable":true,"description":"Långfristiga skulder"},"short_term_liabilities":{"type":"integer","nullable":true,"description":"Kortfristiga skulder"}}},"FinancialRatios":{"type":"object","description":"Ratios as percentages (e.g., 32.5 = 32.5%). Values are either parsed from the annual report or computed from raw income statement / balance sheet fields when the source report does not publish them. Fields are null when the underlying raw fields are missing or the denominator is zero.","properties":{"equity_ratio":{"type":"number","nullable":true,"description":"Soliditet — (equity + 0.794 × untaxed_reserves) / total_assets","example":32},"current_ratio":{"type":"number","nullable":true,"description":"Kassalikviditet"},"debt_ratio":{"type":"number","nullable":true,"description":"Skuldsättningsgrad — (long_term_liabilities + short_term_liabilities) / equity"},"return_on_equity":{"type":"number","nullable":true,"description":"Räntabilitet på eget kapital — net_income / equity"},"return_on_assets":{"type":"number","nullable":true,"description":"Avkastning totalt kapital — (net_income + financial_costs) / total_assets"},"profit_margin":{"type":"number","nullable":true,"description":"Vinstmarginal — (operating_result + financial_income) / (revenue + other_revenue)"},"gross_margin":{"type":"number","nullable":true,"description":"Bruttomarginal — gross_profit / revenue × 100. Primary profitability metric for trading/wholesale businesses (e.g. SNI 46340 — Partihandel med drycker). Null when the underlying source omits the COGS line.","example":43.3},"revenue_per_employee":{"type":"integer","nullable":true,"description":"Rörelseintäkter per anställd in SEK — revenue / employees. Null if revenue is missing or employees is 0.","example":2450000},"revenue_growth":{"type":"number","nullable":true,"description":"Utveckling rörelseintäkter as percent year-over-year — (revenue - prev_year_revenue) / prev_year_revenue × 100. Null for the oldest year returned and when either revenue is missing or the previous year is 0.","example":15}}},"FinancialsLatestResponse":{"type":"object","required":["orgnr","accounting_scope","quality_status","extraction_schema_version","fiscal_year_end","fiscal_year_start","revenue","net_income","total_assets","equity","equity_ratio","employees","meta"],"properties":{"orgnr":{"type":"string","example":"5567037485"},"accounting_scope":{"$ref":"#/components/schemas/AccountingScope"},"quality_status":{"$ref":"#/components/schemas/FinancialQualityStatus"},"extraction_schema_version":{"type":"integer","nullable":true},"period_precision":{"type":"string","enum":["month","day"],"description":"Precision actually observed in the source"},"fiscal_year_end":{"type":"string","pattern":"^\\d{4}-\\d{2}(-\\d{2})?$","example":"2024-08-31"},"fiscal_year_start":{"type":"string","pattern":"^\\d{4}-\\d{2}(-\\d{2})?$","nullable":true,"example":"2023-09-01","description":"Start of fiscal year period. Available when data comes from parsed annual reports (iXBRL)."},"revenue":{"type":"integer","nullable":true,"example":15000000},"net_income":{"type":"integer","nullable":true,"example":2500000},"total_assets":{"type":"integer","nullable":true,"example":25000000},"equity":{"type":"integer","nullable":true,"example":8000000},"equity_ratio":{"type":"number","nullable":true,"example":32},"employees":{"type":"integer","nullable":true,"example":25},"currency":{"type":"string","enum":["SEK"],"description":"Currency of every amount in this year. Present only on translated rows; all other rows are SEK as well."},"reported_currency":{"type":"string","pattern":"^[A-Z]{3}$","example":"EUR","description":"Present only when the annual report was filed in another currency and the amounts were translated to SEK."},"fx":{"$ref":"#/components/schemas/FinancialFxTranslation"},"reported_values":{"type":"object","nullable":true,"description":"The filed amounts in reported_currency, for a translated row only.","properties":{"currency":{"type":"string","example":"EUR"},"revenue":{"type":"integer","nullable":true},"net_income":{"type":"integer","nullable":true},"total_assets":{"type":"integer","nullable":true},"equity":{"type":"integer","nullable":true}}},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"CompanyFinancialsResponse":{"type":"object","description":"Compact latest financial projection embedded by GET /v1/company/{orgnr}?include=financials.","required":["latest_year","accounting_scope","quality_status","extraction_schema_version","revenue","net_income","equity_ratio","employees"],"properties":{"latest_year":{"type":"string","pattern":"^\\d{4}-\\d{2}(-\\d{2})?$","example":"2024-08-31"},"accounting_scope":{"$ref":"#/components/schemas/AccountingScope"},"quality_status":{"type":"string","enum":["verified","unverified"],"description":"Current projections are unverified. verified is reserved for documented validation with retained evidence. Quarantined rows are excluded."},"extraction_schema_version":{"type":"integer","nullable":true},"revenue":{"type":"integer","nullable":true,"example":15000000},"net_income":{"type":"integer","nullable":true,"example":2500000},"equity_ratio":{"type":"number","nullable":true,"example":32},"employees":{"type":"integer","nullable":true,"example":25},"reported_currency":{"type":"string","pattern":"^[A-Z]{3}$","example":"EUR","description":"Present only when the annual report was filed in another currency and the amounts were translated to SEK."}}},"FinancialsSummaryResponse":{"type":"object","required":["orgnr","accounting_scope","trends","growth","meta"],"properties":{"orgnr":{"type":"string","example":"5567037485"},"accounting_scope":{"type":"string","enum":["company","group","unknown","mixed"],"description":"Scope represented by the summary. mixed means trend points contain more than one scope."},"trends":{"type":"object","properties":{"revenue":{"type":"array","items":{"$ref":"#/components/schemas/TrendPoint"}},"net_income":{"type":"array","items":{"$ref":"#/components/schemas/TrendPoint"}},"equity_ratio":{"type":"array","items":{"$ref":"#/components/schemas/TrendPoint"}},"employees":{"type":"array","items":{"$ref":"#/components/schemas/TrendPoint"}}}},"growth":{"type":"object","properties":{"revenue_yoy":{"type":"number","nullable":true,"description":"Year-over-year revenue growth %","example":12.5},"revenue_3yr_cagr":{"type":"number","nullable":true,"description":"3-year compound annual growth rate %","example":8.3}}},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"TrendPoint":{"type":"object","required":["year","value","accounting_scope","quality_status"],"properties":{"year":{"type":"string","example":"2024"},"value":{"type":"number","nullable":true},"accounting_scope":{"$ref":"#/components/schemas/AccountingScope"},"quality_status":{"$ref":"#/components/schemas/FinancialQualityStatus"},"reported_currency":{"type":"string","pattern":"^[A-Z]{3}$","example":"EUR","description":"Present only for a point translated to SEK from this filed currency."}}},"AccountingScope":{"type":"string","enum":["company","group","unknown"],"description":"company is the legal entity, group is consolidated figures, and unknown means the source could not be classified safely."},"FinancialQualityStatus":{"type":"string","enum":["verified","unverified"],"description":"Public responses exclude quarantined rows. Current financial projections are unverified, including legacy rows formerly marked verified. verified is reserved for documented validation with retained evidence; ingestion alone is not certification."},"Webhook":{"type":"object","properties":{"id":{"type":"string","example":"wh_abc123def456"},"customerId":{"type":"string"},"url":{"type":"string","format":"uri","example":"https://your-app.com/webhooks/bolagsapi"},"events":{"type":"array","items":{"type":"string","enum":["company.created","company.deregistered","company.name_changed","company.address_changed","company.status_changed","company.tax_status_changed","company.sni_changed","company.ceo_changed","company.board_changed","company.auditor_changed","company.ownership_changed","company.signatory_changed","company.representative_changed","company.registration_changed","company.liquidation_started","company.liquidation_ended","company.report_filed","company.financials_available","company.bankruptcy_filed","company.bankruptcy_closed","company.bankruptcy_distribution","company.creditor_call","company.poit_announcement","company.fi_warning_added"]}},"filters":{"type":"object","nullable":true,"properties":{"orgnrs":{"type":"array","items":{"type":"string"},"description":"Only trigger for these organization numbers. A ten-digit personal identity number also matches events for its single registered twelve-digit identity; the event orgnr then has twelve digits."},"sni_codes":{"type":"array","items":{"type":"string"},"description":"Only trigger for companies with these SNI codes. For company.sni_changed, matches previous or current SNI sets."},"cities":{"type":"array","items":{"type":"string"},"description":"Only trigger for companies in these cities"},"watchlist_ids":{"type":"array","items":{"type":"string"},"maxItems":50,"description":"Only trigger for members of these watchlists (your own)"}}},"active":{"type":"boolean"},"failureCount":{"type":"integer"},"lastTriggeredAt":{"type":"string","format":"date-time","nullable":true},"createdAt":{"type":"string","format":"date-time"}}},"WebhookListResponse":{"type":"object","properties":{"webhooks":{"type":"array","items":{"$ref":"#/components/schemas/Webhook"}}}},"WebhookCreateRequest":{"type":"object","required":["url","secret","events"],"properties":{"url":{"type":"string","format":"uri","example":"https://your-app.com/webhooks/bolagsapi"},"secret":{"type":"string","description":"Secret for signature verification"},"events":{"type":"array","items":{"type":"string","enum":["company.created","company.deregistered","company.name_changed","company.address_changed","company.status_changed","company.tax_status_changed","company.sni_changed","company.ceo_changed","company.board_changed","company.auditor_changed","company.ownership_changed","company.signatory_changed","company.representative_changed","company.registration_changed","company.liquidation_started","company.liquidation_ended","company.report_filed","company.financials_available","company.bankruptcy_filed","company.bankruptcy_closed","company.bankruptcy_distribution","company.creditor_call","company.poit_announcement","company.fi_warning_added"]}},"filters":{"type":"object","description":"Optional filters to limit which companies trigger this webhook. Leave empty to receive all events.","properties":{"orgnrs":{"type":"array","items":{"type":"string"},"description":"Only trigger for these organization numbers. A ten-digit personal identity number also matches events for its single registered twelve-digit identity; the event orgnr then has twelve digits.","example":["5567037485","5591234567"]},"sni_codes":{"type":"array","items":{"type":"string"},"description":"Only trigger for companies with these SNI codes. For company.sni_changed, matches previous or current SNI sets.","example":["62010","70220"]},"cities":{"type":"array","items":{"type":"string"},"description":"Only trigger for companies in these cities","example":["Stockholm","Göteborg"]},"watchlist_ids":{"type":"array","items":{"type":"string"},"maxItems":50,"description":"Only trigger for companies that were members of these watchlists (your own) when the change was detected","example":["wl_3f9a1c2b4d5e6f70"]}}}}},"WebhookUpdateRequest":{"type":"object","properties":{"url":{"type":"string","format":"uri"},"events":{"type":"array","items":{"type":"string","enum":["company.created","company.deregistered","company.name_changed","company.address_changed","company.status_changed","company.tax_status_changed","company.sni_changed","company.ceo_changed","company.board_changed","company.auditor_changed","company.ownership_changed","company.signatory_changed","company.representative_changed","company.registration_changed","company.liquidation_started","company.liquidation_ended","company.report_filed","company.financials_available","company.bankruptcy_filed","company.bankruptcy_closed","company.bankruptcy_distribution","company.creditor_call","company.poit_announcement","company.fi_warning_added"]}},"filters":{"type":"object","properties":{"orgnrs":{"type":"array","items":{"type":"string"},"description":"Only trigger for these organization numbers. A ten-digit personal identity number also matches events for its single registered twelve-digit identity; the event orgnr then has twelve digits."},"sni_codes":{"type":"array","items":{"type":"string"},"description":"Only trigger for companies with these SNI codes. For company.sni_changed, matches previous or current SNI sets."},"cities":{"type":"array","items":{"type":"string"},"description":"Only trigger for companies in these cities"},"watchlist_ids":{"type":"array","items":{"type":"string"},"maxItems":50,"description":"Only trigger for members of these watchlists (your own)"}}},"active":{"type":"boolean"}}},"WebhookDeliveriesResponse":{"type":"object","properties":{"deliveries":{"type":"array","items":{"$ref":"#/components/schemas/WebhookDelivery"}}}},"WebhookTestFailureResponse":{"type":"object","properties":{"error":{"type":"string","example":"invalid_request"},"message":{"type":"string","example":"HTTP 400: Bad Request"},"request_id":{"type":"string","nullable":true},"docs_url":{"type":"string","format":"uri"},"webhook_id":{"type":"string","example":"wh_abc123def456"},"delivery_id":{"type":"string","example":"del_test_abc123def456"},"upstream_status":{"type":"integer","nullable":true,"example":400},"upstream_status_text":{"type":"string","nullable":true,"example":"Bad Request"}}},"WebhookDelivery":{"type":"object","properties":{"id":{"type":"string"},"event_type":{"type":"string","enum":["company.created","company.deregistered","company.name_changed","company.address_changed","company.status_changed","company.tax_status_changed","company.sni_changed","company.ceo_changed","company.board_changed","company.auditor_changed","company.ownership_changed","company.signatory_changed","company.representative_changed","company.registration_changed","company.liquidation_started","company.liquidation_ended","company.report_filed","company.financials_available","company.bankruptcy_filed","company.bankruptcy_closed","company.bankruptcy_distribution","company.creditor_call","company.poit_announcement","company.fi_warning_added"]},"status":{"type":"string","enum":["delivered","failed","pending"]},"attempts":{"type":"integer"},"delivered_at":{"type":"string","format":"date-time","nullable":true},"last_error":{"type":"string","nullable":true},"payload":{"$ref":"#/components/schemas/WebhookEventPayload"}}},"WebhookEventPayload":{"type":"object","properties":{"id":{"type":"string","description":"Event ID. Stable for the same change and event type; use it to deduplicate.","example":"evt_abc123def456"},"type":{"type":"string","enum":["company.created","company.deregistered","company.name_changed","company.address_changed","company.status_changed","company.tax_status_changed","company.sni_changed","company.ceo_changed","company.board_changed","company.auditor_changed","company.ownership_changed","company.signatory_changed","company.representative_changed","company.registration_changed","company.liquidation_started","company.liquidation_ended","company.report_filed","company.financials_available","company.bankruptcy_filed","company.bankruptcy_closed","company.bankruptcy_distribution","company.creditor_call","company.poit_announcement","company.fi_warning_added"]},"timestamp":{"type":"string","format":"date-time"},"data":{"type":"object","properties":{"orgnr":{"type":"string","example":"5567037485"},"detected_at":{"type":"string","format":"date-time","description":"When BolagsAPI detected the change. The payload timestamp is when the event was queued; the authority's own registration time is not included."},"previous_sni_codes":{"type":"array","items":{"type":"string"},"description":"Previous SNI codes for company.sni_changed","example":["46340"]},"current_sni_codes":{"type":"array","items":{"type":"string"},"description":"Current SNI codes for company.sni_changed","example":["46390"]},"added_sni_codes":{"type":"array","items":{"type":"string"},"description":"SNI codes added in company.sni_changed","example":["46390"]},"removed_sni_codes":{"type":"array","items":{"type":"string"},"description":"SNI codes removed in company.sni_changed","example":["46340"]},"primary_sni_before":{"type":"string","nullable":true,"example":"46340"},"primary_sni_after":{"type":"string","nullable":true,"example":"46390"},"procedures":{"type":"object","description":"For company.liquidation_started and company.liquidation_ended: procedures that started or ended in this change","properties":{"started":{"type":"array","items":{"$ref":"#/components/schemas/ProcedureTransition"}},"ended":{"type":"array","items":{"$ref":"#/components/schemas/ProcedureTransition"}}}},"change":{"type":"object","properties":{"type":{"type":"string","example":"updated"},"fields":{"type":"array","items":{"type":"string"},"nullable":true},"old_values":{"type":"object","nullable":true,"additionalProperties":true,"description":"Previous values when known; null when the source reports only the new state, for example a POIT announcement."},"new_values":{"type":"object","nullable":true,"additionalProperties":true}}}}}}},"Error":{"type":"object","properties":{"error":{"type":"string"},"message":{"type":"string"},"field":{"type":"string"},"hint":{"type":"string"},"docs_url":{"type":"string","format":"uri"},"request_id":{"type":"string"},"retry_after":{"type":"integer"},"subscription_status":{"type":"string","enum":["ended"],"description":"Present on 429 responses when the Free plan's limits apply because the paid subscription has ended."},"subscription_ended_at":{"type":"string","format":"date-time","description":"When the paid subscription ended. Present together with subscription_status."},"billing_url":{"type":"string","format":"uri","description":"Where the account owner can renew the subscription. Present together with subscription_status."}},"required":["error","message","request_id"]},"TierAccessError":{"type":"object","properties":{"error":{"type":"string","example":"tier_access_denied"},"message":{"type":"string"},"hint":{"type":"string"},"docs_url":{"type":"string","format":"uri"},"request_id":{"type":"string"},"endpoint":{"type":"string"},"required_tier":{"type":"string","enum":["starter","pro","business"]},"current_tier":{"type":"string","enum":["free","starter","pro","business"]},"upgrade_url":{"type":"string","example":"https://bolagsapi.se/pricing"}},"required":["error","message","request_id","endpoint","required_tier","current_tier","upgrade_url"]},"FinancialHealth":{"type":"object","description":"Financial stability metrics derived from public annual reports. NOT credit information under Kreditupplysningslagen (SFS 1973:1173).","properties":{"model_version":{"type":"string","description":"Shared API and batch scoring model","example":"v2.3.0"},"stability_grade":{"type":"string","enum":["AAA","AA","A","B","C"],"description":"Stability grade from AAA (most stable) to C (least stable)","example":"A"},"volatility_index":{"type":"number","description":"Volatility index 0-100 (lower is more stable)","example":25},"finance_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Financial metrics index. Divide by 100 for display on a 0-100 scale; not a percentage or probability.","example":7500},"history_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Company history index. Divide by 100 for display on a 0-100 scale; not a percentage or probability.","example":8000},"ability_to_pay_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Ability-to-pay index. Divide by 100 for display on a 0-100 scale; not a percentage or probability.","example":7000},"ownership_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Equity and company-age stability index, not a verification of owners. Divide by 100 for display on a 0-100 scale.","example":8500},"composite_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Combined component index. Divide by 100 for display on a 0-100 scale; not a percentage or probability. Model weights and thresholds are not part of the public API contract.","example":7700},"financial_flags":{"type":"object","description":"Financial condition flags from public records. These are not a complete credit report.","properties":{"external_records_status":{"type":"string","enum":["not_covered","available"],"description":"External register coverage; missing observations are null, not zero."},"public_defaults_count":{"type":"integer","nullable":true,"description":"External register observation. Null means not covered; never interpret as a verified zero.","example":null},"public_defaults_amount":{"type":"number","nullable":true,"description":"External register observation. Null means not covered; never interpret as a verified zero.","example":null},"petitions_count":{"type":"integer","nullable":true,"description":"External register observation. Null means not covered; never interpret as a verified zero.","example":null},"petitions_amount":{"type":"number","nullable":true,"description":"External register observation. Null means not covered; never interpret as a verified zero.","example":null},"has_negative_equity":{"type":"boolean","description":"Company has negative equity","example":false},"has_bankruptcy":{"type":"boolean","description":"Company has active or registered bankruptcy status from Bolagsverket/SCB data. Forces stability_grade to C.","example":false},"has_liquidation":{"type":"boolean","description":"Company is in liquidation","example":false},"has_fi_warning":{"type":"boolean","description":"Has FI regulatory warning","example":false},"has_qualified_audit":{"type":"boolean","description":"Has qualified audit report","example":false}}},"_disclaimer":{"type":"object","description":"Legal disclaimer (always included in response)","properties":{"sv":{"type":"string","description":"Swedish disclaimer text"},"en":{"type":"string","description":"English disclaimer text"},"applies":{"type":"string","description":"Disclaimer in requested language"}}}},"required":["stability_grade","volatility_index","composite_score","financial_flags"]},"CreditRating":{"type":"object","deprecated":true,"description":"⚠️ **DEPRECATED**: Use `FinancialHealth` schema instead.\n\n⚠️ **KUL REGULATED**: This schema represents credit information under Kreditupplysningslagen (SFS 1973:1173). Commercial use requires IMY permit.\n\nCredit rating and risk score data for a company.","properties":{"rating":{"type":"string","description":"Credit rating grade (AAA, AA, A, B, C, D)","example":"A"},"risk_score":{"type":"number","description":"Risk score 0-100 (higher is riskier)","example":25},"credit_limit":{"type":"number","description":"Recommended credit limit in SEK","example":500000},"finance_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Financial health index. Divide by 100 for display on a 0-100 scale; not a percentage or probability.","example":7500},"history_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Company history index. Divide by 100 for display on a 0-100 scale; not a percentage or probability.","example":8000},"ability_to_pay_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Ability-to-pay index. Divide by 100 for display on a 0-100 scale; not a percentage or probability.","example":7000},"ownership_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Equity and company-age stability index, not a verification of owners. Divide by 100 for display on a 0-100 scale.","example":8500},"composite_score":{"type":"integer","minimum":0,"maximum":10000,"description":"Combined component index. Divide by 100 for display on a 0-100 scale; not a percentage or probability. Model weights and thresholds are not part of the public API contract.","example":7700},"risk_indicators":{"type":"object","properties":{"external_records_status":{"type":"string","enum":["not_covered","available"]},"payment_remarks_count":{"type":"integer","nullable":true,"description":"External register observation. Null means not covered; never interpret as a verified zero.","example":null},"payment_remarks_amount":{"type":"number","nullable":true,"description":"External register observation. Null means not covered; never interpret as a verified zero.","example":null},"petitions_count":{"type":"integer","nullable":true,"description":"External register observation. Null means not covered; never interpret as a verified zero.","example":null},"petitions_amount":{"type":"number","nullable":true,"description":"External register observation. Null means not covered; never interpret as a verified zero.","example":null},"has_negative_equity":{"type":"boolean","description":"Company has negative equity","example":false},"has_bankruptcy":{"type":"boolean","description":"Company has active or registered bankruptcy status from Bolagsverket/SCB data. Forces rating to C.","example":false},"has_liquidation":{"type":"boolean","description":"Company is in liquidation","example":false},"has_fi_warning":{"type":"boolean","description":"Has FI regulatory warning","example":false},"has_qualified_audit":{"type":"boolean","description":"Has qualified audit report","example":false}}}},"required":["rating","risk_score","credit_limit","composite_score","risk_indicators"]},"BatchValidationRequest":{"type":"object","properties":{"orgnrs":{"type":"array","items":{"type":"string"},"minItems":1,"maxItems":100,"example":["5567037485","1234567890"]}},"required":["orgnrs"]},"BatchValidationResponse":{"type":"object","properties":{"results":{"type":"array","items":{"$ref":"#/components/schemas/BatchValidationItem"}}}},"BatchValidationItem":{"type":"object","properties":{"orgnr":{"type":"string"},"valid":{"type":"boolean"},"exists":{"type":"boolean"},"active":{"type":"boolean"}}},"HealthScoreResponse":{"type":"object","properties":{"orgnr":{"type":"string","example":"5567037485"},"score":{"type":"integer","minimum":0,"maximum":100,"example":85},"factors":{"$ref":"#/components/schemas/HealthScoreFactors"},"industry_benchmark":{"nullable":true,"oneOf":[{"$ref":"#/components/schemas/IndustryHealthBenchmark"}],"description":"Industry benchmark comparison (null if company has no SNI code or insufficient sample size)"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"HealthScoreFactors":{"type":"object","properties":{"active":{"type":"boolean","description":"Company is active"},"f_skatt":{"type":"boolean","nullable":true,"description":"Separate F-tax registration; null means unknown"},"age_years":{"type":"number","description":"Company age in years"},"liquidation_risk":{"type":"boolean","description":"Has ongoing liquidation or restructuring"}}},"IndustryHealthBenchmark":{"type":"object","description":"Industry benchmark data comparing company health score to others in the same SNI industry","properties":{"sni_code":{"type":"string","description":"SNI code (2-5 digits)","example":"62010"},"sni_description":{"type":"string","description":"SNI code description","example":"Dataprogrammering"},"average_score":{"type":"integer","minimum":0,"maximum":100,"description":"Average health score for companies in this industry","example":68},"percentile":{"type":"integer","minimum":0,"maximum":100,"description":"Percentile rank within the industry (percentage of companies with lower score)","example":72},"sample_size":{"type":"integer","description":"Number of companies in the comparison set","example":15420}}},"TimelineResponse":{"type":"object","properties":{"orgnr":{"type":"string"},"events":{"type":"array","items":{"$ref":"#/components/schemas/TimelineEvent"}},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"TimelineEvent":{"type":"object","properties":{"date":{"type":"string","format":"date"},"type":{"type":"string","enum":["registered","report_filed","address_changed","status_changed","deregistered","bankruptcy_filed","bankruptcy_closed","bankruptcy_distribution","creditor_call","poit_announcement","case_received","name_changed","tax_status_changed","sni_changed","ceo_changed","board_changed","auditor_changed","ownership_changed","signatory_changed","representative_changed","registration_changed","liquidation_started","liquidation_ended","fi_warning_added"]},"description":{"type":"string"},"event_type":{"type":"string","enum":["company.created","company.deregistered","company.name_changed","company.address_changed","company.status_changed","company.tax_status_changed","company.sni_changed","company.ceo_changed","company.board_changed","company.auditor_changed","company.ownership_changed","company.signatory_changed","company.representative_changed","company.registration_changed","company.liquidation_started","company.liquidation_ended","company.report_filed","company.financials_available","company.bankruptcy_filed","company.bankruptcy_closed","company.bankruptcy_distribution","company.creditor_call","company.poit_announcement","company.fi_warning_added"],"description":"Webhook event type of an entry derived from a detected change"},"event_id":{"type":"string","description":"Stable event id; equals the webhook payload id for the same change and event type","example":"evt_0f3c2b1a9d8e7f6a5b4c3d2e1f0a9b8c"},"procedures":{"type":"array","description":"Procedures that started or ended, on liquidation_started and liquidation_ended","items":{"$ref":"#/components/schemas/ProcedureTransition"}},"case_number":{"type":"string","description":"Bolagsverket case number when type is case_received"},"announcement_id":{"type":"string","description":"POIT kungörelse-id"},"source_url":{"type":"string","format":"uri","description":"Canonical POIT URL"},"announcement_category":{"type":"string"},"announcement_type":{"type":"string"},"changes":{"type":"array","items":{"type":"string"}}}},"ProcedureTransition":{"type":"object","required":["code","date","outcome_code"],"properties":{"code":{"type":"string","description":"Bolagsverket procedure code, for example LI (liquidation), KK (bankruptcy) or FUOL (transferor in merger)","example":"LI"},"date":{"type":["string","null"],"description":"Date reported with the procedure by the source; null when absent","example":"2026-04-28"},"outcome_code":{"type":["string","null"],"description":"Source outcome code when the procedure ended with one, for example LIUHOR; null otherwise","example":null}}},"CompanyCaseCode":{"type":"object","required":["code","name"],"properties":{"code":{"type":["string","null"]},"name":{"type":["string","null"]}}},"CompanyCaseSubject":{"type":"object","required":["subject","closure_reason"],"properties":{"subject":{"$ref":"#/components/schemas/CompanyCaseCode"},"closure_reason":{"oneOf":[{"$ref":"#/components/schemas/CompanyCaseCode"},{"type":"null"}]}}},"CompanyCase":{"type":"object","required":["case_number","case_kind","case_type","status","handling_status","received_date","created_at","closed_at","corrected_date","subjects"],"properties":{"case_number":{"type":"string","example":"123456/2025"},"case_kind":{"$ref":"#/components/schemas/CompanyCaseCode"},"case_type":{"$ref":"#/components/schemas/CompanyCaseCode"},"status":{"$ref":"#/components/schemas/CompanyCaseCode"},"handling_status":{"$ref":"#/components/schemas/CompanyCaseCode"},"received_date":{"type":["string","null"],"format":"date"},"created_at":{"type":["string","null"],"format":"date-time"},"closed_at":{"type":["string","null"],"format":"date-time"},"corrected_date":{"type":["string","null"],"format":"date"},"subjects":{"type":"array","items":{"$ref":"#/components/schemas/CompanyCaseSubject"}}}},"CompanyAnnualReportCaseItem":{"type":"object","required":["reporting_period_start","reporting_period_end","report_type","received_at","registered_at","processing_completed_date","contents","deficiencies"],"properties":{"reporting_period_start":{"type":["string","null"],"format":"date"},"reporting_period_end":{"type":["string","null"],"format":"date"},"report_type":{"$ref":"#/components/schemas/CompanyCaseCode"},"received_at":{"type":["string","null"],"format":"date-time"},"registered_at":{"type":["string","null"],"format":"date-time"},"processing_completed_date":{"type":["string","null"],"format":"date"},"contents":{"type":"array","items":{"$ref":"#/components/schemas/CompanyCaseCode"}},"deficiencies":{"type":"array","items":{"$ref":"#/components/schemas/CompanyCaseCode"}}}},"CompanyAnnualReportCasePeriod":{"type":"object","required":["accounting_period_start","accounting_period_end","annual_reports","annual_report_reminder"],"properties":{"accounting_period_start":{"type":["string","null"],"format":"date"},"accounting_period_end":{"type":["string","null"],"format":"date"},"annual_reports":{"type":"array","items":{"$ref":"#/components/schemas/CompanyAnnualReportCaseItem"}},"annual_report_reminder":{"oneOf":[{"type":"object","required":["sent_at","reminder_type"],"properties":{"sent_at":{"type":["string","null"],"format":"date-time"},"reminder_type":{"$ref":"#/components/schemas/CompanyCaseCode"}}},{"type":"null"}]}}},"CompanyFinancialReportCase":{"type":"object","required":["case_number","closed_at","accounting_periods"],"properties":{"case_number":{"type":"string","example":"123456/2025"},"closed_at":{"type":["string","null"],"format":"date-time"},"accounting_periods":{"type":"array","items":{"$ref":"#/components/schemas/CompanyAnnualReportCasePeriod"}}}},"CompanyCasesResponse":{"type":"object","required":["orgnr","cases","financial_report_cases","total","company_cases_total","financial_report_cases_total","source","fetched_at","from_date","to_date","meta"],"properties":{"orgnr":{"type":"string","example":"7884001517"},"cases":{"type":"array","items":{"$ref":"#/components/schemas/CompanyCase"}},"financial_report_cases":{"type":"array","items":{"$ref":"#/components/schemas/CompanyFinancialReportCase"}},"total":{"type":"integer","minimum":0},"company_cases_total":{"type":"integer","minimum":0},"financial_report_cases_total":{"type":"integer","minimum":0},"source":{"type":"string","const":"bolagsverket"},"fetched_at":{"type":"string","format":"date-time"},"from_date":{"type":["string","null"],"format":"date"},"to_date":{"type":["string","null"],"format":"date"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"SimilarCompaniesResponse":{"type":"object","properties":{"orgnr":{"type":"string"},"similar":{"type":"array","items":{"$ref":"#/components/schemas/SimilarCompany"}},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"SimilarCompany":{"type":"object","properties":{"orgnr":{"type":"string"},"name":{"type":"string"},"sni_match":{"type":"array","items":{"type":"string"},"description":"Matching SNI codes"},"city":{"type":"string","nullable":true}}},"GroupMember":{"type":"object","description":"A company within a corporate group","properties":{"orgnr":{"type":"string","example":"5560000753"},"name":{"type":"string","example":"Volvo Powertrain Aktiebolag"},"level":{"type":"integer","description":"Hierarchy level (0 = ultimate parent)","example":1},"ownership_percent":{"type":"number","nullable":true,"description":"Ownership percentage if known"}}},"WorkplacesResponse":{"type":"object","description":"Company workplace locations (arbetsställen)","properties":{"orgnr":{"type":"string","example":"5560138298"},"company_name":{"type":"string","example":"Investor Aktiebolag"},"workplace_count":{"type":"integer","description":"Number of workplaces","example":1},"workplaces":{"type":"array","items":{"$ref":"#/components/schemas/Workplace"}},"updated_at":{"type":"string","format":"date-time","nullable":true,"description":"When workplace data was last updated"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"Workplace":{"type":"object","description":"A company workplace location","properties":{"cfar_nr":{"type":"string","nullable":true,"description":"Unique workplace identifier from SCB's Centrala företags- och arbetsställeregistret (CFAR). It identifies the workplace, not a separate legal entity.","example":"26165928"},"name":{"type":"string","nullable":true,"description":"Workplace name","example":"Huvudkontor"},"is_headquarters":{"type":"boolean","description":"Whether this is the main office","example":true},"address":{"type":"object","properties":{"coordinates":{"type":["object","null"],"description":"WGS84 (EPSG:4326) address point. Null unless geocoding_status is matched; not a building boundary or an interpolated location.","properties":{"latitude":{"type":"number","minimum":-90,"maximum":90},"longitude":{"type":"number","minimum":-180,"maximum":180},"precision":{"type":"string","enum":["address"]},"source":{"type":"string","enum":["lantmateriet"]},"source_updated_at":{"type":["string","null"],"format":"date-time","description":"Update time of the source address delivery, when known."}},"required":["latitude","longitude","precision","source","source_updated_at"]},"geocoding_status":{"type":"string","enum":["matched","ambiguous","not_found","missing_address","unsupported_address","restricted","unavailable"],"description":"matched: one address point; ambiguous: multiple candidates; not_found: no match; missing_address: street or postal code missing; unsupported_address: foreign, postal-box or invalid address; restricted: withheld for privacy (including sole traders and unknown legal form); unavailable: coordinate service or source unavailable. Other company data remains usable."},"geocoding_updated_at":{"type":["string","null"],"format":"date-time","description":"When this address was last evaluated against the source. Null for restricted or unavailable results; separate from the company/workplace update time."},"street":{"type":"string","nullable":true,"example":"Arsenalsgatan 8 C"},"postal_code":{"type":"string","nullable":true,"example":"111 47"},"city":{"type":"string","nullable":true,"example":"Stockholm"},"municipality":{"type":"string","nullable":true,"example":"Stockholm"},"county":{"type":"string","nullable":true,"example":"Stockholms län"}}},"sni_code":{"type":"string","nullable":true,"description":"SNI code for this location","example":"64991"},"sni_description":{"type":"string","nullable":true,"description":"SNI code description","example":"Investmentverksamhet"},"employee_count":{"type":"string","nullable":true,"description":"Employee count range","example":"50-99 anställda"},"phone":{"type":"string","nullable":true,"description":"Phone number","example":"+46 8 123 456"}}},"GroupStructureResponse":{"type":"object","description":"Swedish group structure with a separate GLEIF accounting consolidation section","properties":{"international_relationships":{"$ref":"#/components/schemas/LeiData"},"orgnr":{"type":"string","example":"5560000753"},"name":{"type":"string","example":"Volvo Powertrain Aktiebolag"},"ultimate_parent":{"$ref":"#/components/schemas/GroupMember","nullable":true},"parent":{"$ref":"#/components/schemas/GroupMember","nullable":true},"siblings":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"description":"Companies with the same parent"},"subsidiaries":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"},"description":"Direct subsidiaries"},"path_to_root":{"type":"array","items":{"type":"string"},"description":"Organization numbers from ultimate parent to this company","example":["5560125790","5560000753"]},"group_size":{"type":"integer","description":"Total companies in the group","example":9},"level":{"type":"integer","description":"This company's level in hierarchy (0 = ultimate parent)","example":1},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"GroupMembersResponse":{"type":"object","properties":{"orgnr":{"type":"string","example":"5560000753"},"ultimate_parent_orgnr":{"type":"string","example":"5560125790"},"group_size":{"type":"integer","example":9},"members":{"type":"array","items":{"$ref":"#/components/schemas/GroupMember"}},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"IndustryAnalysisResponse":{"type":"object","properties":{"sni_code":{"type":"string","example":"62010"},"description":{"type":"string","example":"Dataprogrammering"},"statistics":{"$ref":"#/components/schemas/IndustryStatistics"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"IndustryStatistics":{"type":"object","properties":{"total_companies":{"type":"integer"},"active_companies":{"type":"integer"},"by_org_form":{"type":"object","additionalProperties":{"type":"integer"},"example":{"AB":28000,"EF":15000,"HB":2230}},"by_region":{"type":"object","additionalProperties":{"type":"integer"},"example":{"Stockholm":18000,"Göteborg":5200,"Malmö":3100}},"avg_age_years":{"type":"number","example":8.5}}},"SniCodesResponse":{"type":"object","properties":{"codes":{"type":"array","items":{"$ref":"#/components/schemas/SniCode"}},"total":{"type":"integer","example":828},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"AnalysisResponse":{"type":"object","description":"AI-powered financial analysis with stability rating","properties":{"orgnr":{"type":"string","example":"5567037485"},"period_precision":{"type":"string","enum":["month","day"],"description":"Precision actually observed in the source"},"fiscal_year_end":{"type":"string","pattern":"^\\d{4}-\\d{2}(-\\d{2})?$","example":"2024-08-31"},"rating":{"type":"string","enum":["AAA","AA","A","B","C"],"description":"Financial stability rating. AAA=highest stability, C=lowest stability","example":"A"},"risk_score":{"type":"integer","minimum":0,"maximum":100,"description":"Risk score where 0=lowest risk, 100=highest risk. AAA≈0-15, AA≈16-30, A≈31-50, B≈51-75, C≈76-100","example":35},"summary":{"type":"string","description":"AI-generated summary in requested language","example":"Företaget uppvisar stabil ekonomi med god soliditet och positiv lönsamhet."},"risk_factors":{"type":"array","items":{"$ref":"#/components/schemas/RiskFactor"},"description":"Identified risk factors (0-5 items)"},"industry_comparison":{"type":"object","nullable":true,"description":"Reserved for future use"},"analyzed_at":{"type":"string","format":"date-time"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"RiskFactor":{"type":"object","properties":{"category":{"type":"string","enum":["liquidity","profitability","solvency","growth","operational"],"description":"Risk category"},"severity":{"type":"string","enum":["low","medium","high"],"description":"Severity level"},"description_sv":{"type":"string","description":"Risk description in Swedish"},"description_en":{"type":"string","description":"Risk description in English"}}},"ValuationResponse":{"type":"object","description":"Company valuation using multiple methods","properties":{"orgnr":{"type":"string","example":"5567037485"},"valuation_date":{"type":"string","format":"date","description":"Fiscal year end date used for valuation"},"currency":{"type":"string","example":"SEK"},"methods":{"type":"object","properties":{"asset_based":{"$ref":"#/components/schemas/ValuationMethod"},"earnings_based":{"$ref":"#/components/schemas/ValuationMethod"},"ebitda_multiple":{"$ref":"#/components/schemas/ValuationMethod"},"revenue_multiple":{"$ref":"#/components/schemas/ValuationMethod"}}},"recommended_range":{"type":"object","properties":{"low":{"type":"integer","nullable":true,"description":"Low estimate in SEK"},"mid":{"type":"integer","nullable":true,"description":"Mid estimate in SEK"},"high":{"type":"integer","nullable":true,"description":"High estimate in SEK"},"confidence":{"type":"string","enum":["high","medium","low","very_low"]},"primary_method":{"type":"string","description":"Primary valuation method used"},"note_sv":{"type":"string"},"note_en":{"type":"string"}}},"factors":{"type":"object","properties":{"profitability":{"type":"string","enum":["strong","moderate","weak","negative"]},"trend":{"type":"string","enum":["growing","stable","declining"]},"financial_health":{"type":"string","enum":["strong","moderate","weak"]},"years_of_data":{"type":"integer"},"equity_ratio":{"type":"number","nullable":true},"sni_code":{"type":"string","nullable":true}}},"disclaimer_sv":{"type":"string"},"disclaimer_en":{"type":"string"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"ValuationMethod":{"type":"object","properties":{"value":{"type":"integer","nullable":true,"description":"Calculated value in SEK"},"value_low":{"type":"integer","description":"Low estimate"},"value_mid":{"type":"integer","description":"Mid estimate"},"value_high":{"type":"integer","description":"High estimate"},"multiplier_range":{"type":"array","items":{"type":"number"},"description":"Multipliers used [low, mid, high]","example":[4,5,6]},"label_sv":{"type":"string","example":"Avkastningsvärde"},"label_en":{"type":"string","example":"Earnings-based"},"description_sv":{"type":"string"},"description_en":{"type":"string"},"calculable":{"type":"boolean","description":"Whether this method could be calculated"},"note":{"type":"string","nullable":true,"description":"Additional notes if method not calculable"}}},"AIValuationResponse":{"type":"object","description":"AI-powered comprehensive company valuation","properties":{"orgnr":{"type":"string","example":"5567037485"},"fiscal_year_end":{"type":"string","format":"date"},"currency":{"type":"string","example":"SEK"},"valuation":{"type":"object","properties":{"low":{"type":"integer","description":"Low estimate in SEK","example":5000000},"mid":{"type":"integer","description":"Mid estimate in SEK","example":7500000},"high":{"type":"integer","description":"High estimate in SEK","example":10000000},"confidence":{"type":"string","enum":["high","medium","low"],"example":"high"}}},"primary_method":{"type":"string","description":"Primary valuation method","example":"earnings_based"},"summary":{"type":"string","description":"AI-generated summary in requested language"},"key_drivers":{"type":"array","items":{"$ref":"#/components/schemas/KeyDriver"},"description":"Key value drivers identified by AI"},"risk_adjustments":{"type":"array","items":{"$ref":"#/components/schemas/RiskAdjustment"},"description":"Risk-based valuation adjustments"},"method_values":{"type":"object","properties":{"asset_based":{"type":"integer","nullable":true},"earnings_based":{"type":"integer","nullable":true},"ebitda_multiple":{"type":"integer","nullable":true},"revenue_multiple":{"type":"integer","nullable":true}}},"industry_context":{"type":"object","properties":{"sni_code":{"type":"string","nullable":true},"recommended_multipliers":{"type":"object","nullable":true,"properties":{"ebitda":{"type":"number","example":6.5},"revenue":{"type":"number","example":1.2}}}}},"algorithmic_comparison":{"type":"object","description":"Comparison with algorithmic valuation","properties":{"low":{"type":"integer","nullable":true},"mid":{"type":"integer","nullable":true},"high":{"type":"integer","nullable":true}}},"analyzed_at":{"type":"string","format":"date-time"},"disclaimer_sv":{"type":"string"},"disclaimer_en":{"type":"string"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"KeyDriver":{"type":"object","description":"Key value driver identified by AI","properties":{"factor":{"type":"string","description":"Driver factor name","example":"growth"},"impact":{"type":"string","enum":["positive","negative","neutral"]},"description_sv":{"type":"string"},"description_en":{"type":"string"}}},"RiskAdjustment":{"type":"object","description":"Risk-based valuation adjustment","properties":{"category":{"type":"string","description":"Risk category","example":"concentration"},"adjustment_percent":{"type":"number","description":"Adjustment percentage (negative = discount)","example":-10},"reason_sv":{"type":"string"},"reason_en":{"type":"string"}}},"ExportJob":{"type":"object","properties":{"market_query_id":{"type":"string","format":"uuid","description":"Present when membership comes from a market query."},"selection_as_of":{"type":"string","format":"date-time","description":"Frozen membership time; returned company details can be newer."},"export_id":{"type":"string"},"status":{"type":"string","enum":["queued","running","ready","failed","expired"]},"complete":{"type":"boolean"},"rows":{"type":"integer"},"format":{"type":"string","enum":["csv","json","ndjson"]},"generated_at":{"type":"string","format":"date-time"},"expires_at":{"type":"string","format":"date-time"},"error":{"type":"string","nullable":true},"download_url":{"type":"string","nullable":true},"billing":{"$ref":"#/components/schemas/ExportJsonResponse/properties/billing"}}},"ExportRequest":{"type":"object","additionalProperties":false,"anyOf":[{"required":["filters"]},{"required":["market_query_id"]}],"properties":{"market_query_id":{"type":"string","format":"uuid","description":"Use frozen market membership. Cannot combine with independent filters. Current detail fields; selection_as_of identifies membership time."},"market_industry_code":{"type":"string","description":"Two-digit industry group or unknown, within the specified market query."},"filters":{"$ref":"#/components/schemas/ExportFilters"},"fields":{"type":"array","items":{"type":"string","enum":["orgnr","name","org_form","status","active","registered_date","street_address","postal_code","city","sni_codes","sni_descriptions","f_skatt","vat","employer","municipality","county","county_name","email","phone","website","ad_blocked","phone_blocked","contact_updated_at","updated_at","employees","employees_period_end","employees_source","period_end","currency","accounting_scope","quality_status","financial_source","has_financials","revenue","other_revenue","inventory_change","cost_of_goods_sold","other_external_costs","operating_costs","operating_result","depreciation","financial_items","financial_income","financial_costs","result_after_financial","result_before_tax","tax_expense","net_income","total_assets","fixed_assets","intangible_assets","tangible_assets","financial_assets","current_assets","inventory","accounts_receivable","cash_and_bank","equity","share_capital","retained_earnings","free_equity","restricted_equity","untaxed_reserves","provisions","long_term_liabilities","short_term_liabilities","accounts_payable","salaries_board","salaries_other","personnel_costs","proposed_dividend","ebitda","personnel_costs_per_employee","equity_ratio","quick_ratio","current_ratio","debt_ratio","return_on_equity","return_on_assets","profit_margin","scb_company_name","registered_name","scb_email","employee_size_class_code","revenue_size_class_code","financial_revenue_size_class","financial_revenue_size_class_code","revenue_class_year","sme_class","sme_class_code","a_region","a_region_code","mailing_address_status","mailing_address_status_code","sector","sector_code","activity_started_date","activity_ended_date","workplace_count","registered_name_count","ownership_category_code","public_private_code","company_status_code","foreign_ownership","foreign_ownership_code","owner_country","owner_country_code","import_export","export_size_class","export_size_class_code","import_size_class","import_size_class_code","trade_nordic","trade_eu","trade_other_europe","trade_asia_except_far_east","trade_far_east","trade_north_central_america","trade_south_america","trade_africa","main_workplace_cfar","main_workplace_name","main_workplace_email","main_workplace_phone","main_workplace_municipality","main_workplace_municipality_code","main_workplace_county","main_workplace_county_code","sni_code_1","sni_description_1","sni_section_1","sni_section_code_1","sni_code_2","sni_description_2","sni_section_2","sni_section_code_2","sni_code_3","sni_description_3","sni_section_3","sni_section_code_3","sni_code_4","sni_description_4","sni_section_4","sni_section_code_4","sni_code_5","sni_description_5","sni_section_5","sni_section_code_5","description","co_address","country","name_protection_number","deregistered_date","deregistration_reason_code","municipality_code","scb_legal_form","scb_activity_status","scb_registration_status","scb_registered_date","employee_size_class","revenue_size_class","ownership_category","public_private","company_status","visiting_street","visiting_postal_code","visiting_city","scb_phone","scb_updated_at","f_skatt_status_code","vat_status_code","employer_status_code","parent_orgnr","parent_name","part_of_group","linkedin_url","f_skatt_registered_date","f_skatt_deregistered_date","vat_registered_date","vat_deregistered_date","period_start","auditor_remarks","auditor_opinion_type","financial_parsed_at","postal_municipality","postal_municipality_code","coordinates_attribution","company_source","latitude","longitude","geocoding_status","geocoding_updated_at","coordinates_source","coordinates_source_updated_at","visiting_latitude","visiting_longitude","visiting_geocoding_status","visiting_geocoding_updated_at","visiting_coordinates_source","visiting_coordinates_source_updated_at","phone_source","email_source"]},"description":"Fields to include in export. Defaults to orgnr, name, org_form, status, city, sni_codes"},"format":{"type":"string","enum":["csv","json","ndjson"],"default":"csv","description":"Output format"},"include":{"type":"array","minItems":1,"maxItems":3,"items":{"type":"string","enum":["count","sample","coverage"]},"description":"Preview parts to return. Requires preview=true. Omitted parts are absent, not zero. Without include, the original complete preview is returned."},"async":{"type":"boolean","description":"Prepare the complete export in the background; requires preview=false and Idempotency-Key. Returns HTTP 202."},"expected_rows":{"type":"integer","minimum":1,"description":"Fail without billing if the frozen count differs"},"data_version":{"type":"string","format":"date-time","description":"Require this search snapshot; selection_changed means refresh the preview"},"preview":{"type":"boolean","default":false,"description":"If true, return exact row count and sample data without consuming quota"}}},"ExportFilters":{"type":"object","additionalProperties":false,"properties":{"sni_version":{"type":"string","enum":["2007","2025"],"default":"2025","description":"SNI prefix classification. Proven source versions and unambiguous mappings only, as in search/markets."},"counties":{"type":"array","maxItems":100,"items":{"type":"string","pattern":"^\\d{2}$"}},"municipalities":{"type":"array","maxItems":100,"items":{"type":"string","maxLength":100},"description":"Official four-digit municipality codes"},"has_vat":{"type":"boolean"},"is_employer":{"type":"boolean"},"profitable":{"type":"boolean"},"has_financials":{"type":"boolean"},"has_email":{"type":"boolean"},"has_phone":{"type":"boolean"},"has_website":{"type":"boolean"},"role_email_only":{"type":"boolean"},"exclude_marketing_blocked":{"type":"boolean"},"exclude_sole_traders":{"type":"boolean"},"employees_min":{"type":"number","description":"Inclusive bound; employees in people, money in whole SEK, equity ratio in percent"},"employees_max":{"type":"number","description":"Inclusive bound; employees in people, money in whole SEK, equity ratio in percent"},"revenue_min":{"type":"number","description":"Inclusive bound; employees in people, money in whole SEK, equity ratio in percent"},"revenue_max":{"type":"number","description":"Inclusive bound; employees in people, money in whole SEK, equity ratio in percent"},"net_income_min":{"type":"number","description":"Inclusive bound; employees in people, money in whole SEK, equity ratio in percent"},"net_income_max":{"type":"number","description":"Inclusive bound; employees in people, money in whole SEK, equity ratio in percent"},"equity_ratio_min":{"type":"number","description":"Inclusive bound; employees in people, money in whole SEK, equity ratio in percent"},"equity_ratio_max":{"type":"number","description":"Inclusive bound; employees in people, money in whole SEK, equity ratio in percent"},"excluded_orgnrs":{"type":"array","maxItems":100,"items":{"type":"string","pattern":"^\\d{10}$"},"description":"Exclude specific organizations"},"verified_marketing_only":{"type":"boolean","description":"Require known unblocked marketing status and no telephone number while telephone suppression remains unknown"},"sni_codes":{"type":"array","items":{"type":"string","pattern":"^\\d{2,5}$"},"description":"SNI prefixes (2–5 digits) in sni_version, across all usable company codes. Includes only proven source classifications and unambiguous mappings; the same rules as search/markets.","example":["62010","62020"]},"cities":{"type":"array","items":{"type":"string"},"description":"Filter by city names","example":["Stockholm","Göteborg"]},"postal_codes":{"type":"array","items":{"type":"string"},"description":"Filter by postal code prefixes","example":["111","112"]},"org_forms":{"type":"array","items":{"type":"string","enum":["AB","HB","KB","EK","EKF","EF","BRF","FL","OF","TSF","49","51","53","54","55"]},"description":"Filter by organization forms","example":["AB"]},"status":{"type":"string","enum":["active","inactive","deregistered","unknown","all"],"default":"active","description":"Registration status, separate from tax activity. inactive is an alias for deregistered. Default active"},"has_f_skatt":{"type":"boolean","description":"Filter by actual F-tax registration; unknown status does not match either boolean value"},"registered_after":{"type":"string","format":"date","description":"Filter companies registered after this date","example":"2020-01-01"},"registered_before":{"type":"string","format":"date","description":"Filter companies registered before this date","example":"2024-12-31"}}},"ExportPreviewResponse":{"type":"object","properties":{"market_query_id":{"type":"string","format":"uuid","description":"Present when membership comes from a market query."},"selection_as_of":{"type":"string","format":"date-time","description":"Frozen membership time; returned company details can be newer."},"preview":{"type":"boolean","const":true},"matched_rows":{"type":"integer","description":"Exact count in the preview snapshot"},"count_is_exact":{"type":"boolean","const":true},"data_version":{"type":"string","format":"date-time","description":"Search snapshot timestamp; returned when include is specified"},"generated_at":{"type":"string","format":"date-time"},"coverage":{"type":"object","properties":{"email":{"type":"integer","minimum":0},"phone":{"type":"integer","minimum":0},"website":{"type":"integer","minimum":0},"financials":{"type":"integer","minimum":0}},"description":"Counts across all matching companies, not just the sample. Restricted data categories are omitted."},"estimated_rows":{"type":"integer","description":"Exact number of rows matching filters; retained for compatibility"},"estimated_cost_sek":{"type":"number","description":"Estimated additional SEK cost using current shared API usage and the customer's basic overage rate. Preview is free; usage may change before execution."},"estimated_units":{"type":"integer","minimum":0,"description":"One ordinary API unit per matching row"},"overage_unit_price_sek":{"type":"number","description":"Customer's overage price per exported row, in SEK excluding VAT"},"sample":{"type":"array","items":{"$ref":"#/components/schemas/ExportRow"},"description":"First 100 rows as sample (free)"},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"ExportJsonResponse":{"type":"object","properties":{"market_query_id":{"type":"string","format":"uuid","description":"Present when membership comes from a market query."},"selection_as_of":{"type":"string","format":"date-time","description":"Frozen membership time; returned company details can be newer."},"preview":{"type":"boolean","const":false},"export_id":{"type":"string","format":"uuid"},"complete":{"type":"boolean","const":true},"coverage":{"type":"object","properties":{"email":{"type":"integer","minimum":0},"phone":{"type":"integer","minimum":0},"website":{"type":"integer","minimum":0},"financials":{"type":"integer","minimum":0}},"description":"Restricted data categories are omitted, including on replay."},"billing":{"type":"object","properties":{"mode":{"type":"string","enum":["api_units","included_rows"],"description":"New exports use api_units. A replay of an older export retains included_rows and its original accounting."},"charged_sek":{"type":"number","description":"Additional amount incurred for this delivery, excluding VAT. Queued for billing or deducted from prepaid credit; not an invoice payment confirmation. Replay retains the original amount without charging it again."},"month":{"type":"string","description":"UTC calendar month, YYYY-MM"},"used_rows":{"type":"integer","minimum":0},"included_rows":{"type":"integer","minimum":0,"deprecated":true,"description":"Monthly export row limit; not an additional free allowance"},"remaining_rows":{"type":"integer","minimum":0},"units":{"type":"integer","minimum":0,"description":"Ordinary API units consumed by this export; one per row"},"overage_units":{"type":"integer","minimum":0,"description":"Only units beyond the shared subscription allowance"},"overage_unit_price_sek":{"type":"number"},"included_units":{"type":"integer","minimum":0},"used_units":{"type":"integer","minimum":0},"remaining_units":{"type":"integer","minimum":0},"period_start":{"type":"string","format":"date-time"},"period_end":{"type":"string","format":"date-time"},"payment_mode":{"type":"string","enum":["metered","hard_stop","metered_cap","prepaid_credits"]}}},"rows":{"type":"integer","description":"Number of rows exported"},"format":{"type":"string","const":"json"},"cost_sek":{"type":"number","deprecated":true,"description":"Alias of billing.charged_sek for new exports; older replayed exports retain their legacy estimate."},"generated_at":{"type":"string","format":"date-time"},"data":{"type":"array","items":{"$ref":"#/components/schemas/ExportRow"}},"meta":{"$ref":"#/components/schemas/SourceMeta"}}},"ExportRow":{"type":"object","required":["orgnr"],"properties":{"description":{"type":"string","nullable":true},"co_address":{"type":"string","nullable":true},"country":{"type":"string","nullable":true},"name_protection_number":{"type":"string","nullable":true},"deregistered_date":{"type":"string","nullable":true},"deregistration_reason_code":{"type":"string","nullable":true},"municipality_code":{"type":"string","nullable":true},"scb_legal_form":{"type":"string","nullable":true},"scb_activity_status":{"type":"string","nullable":true},"scb_registration_status":{"type":"string","nullable":true},"scb_registered_date":{"type":"string","nullable":true},"employee_size_class":{"type":"string","nullable":true},"revenue_size_class":{"type":"string","nullable":true},"ownership_category":{"type":"string","nullable":true},"public_private":{"type":"string","nullable":true},"company_status":{"type":"string","nullable":true},"visiting_street":{"type":"string","nullable":true},"visiting_postal_code":{"type":"string","nullable":true},"visiting_city":{"type":"string","nullable":true},"scb_phone":{"type":"string","nullable":true},"scb_updated_at":{"type":"string","nullable":true},"f_skatt_status_code":{"type":"string","nullable":true},"vat_status_code":{"type":"string","nullable":true},"employer_status_code":{"type":"string","nullable":true},"parent_orgnr":{"type":"string","nullable":true},"parent_name":{"type":"string","nullable":true},"part_of_group":{"type":"boolean","nullable":true},"linkedin_url":{"type":"string","nullable":true},"f_skatt_registered_date":{"type":"string","nullable":true},"f_skatt_deregistered_date":{"type":"string","nullable":true},"vat_registered_date":{"type":"string","nullable":true},"vat_deregistered_date":{"type":"string","nullable":true},"period_start":{"type":"string","nullable":true},"auditor_remarks":{"type":"string","nullable":true},"auditor_opinion_type":{"type":"string","nullable":true},"financial_parsed_at":{"type":"string","nullable":true},"postal_municipality":{"type":"string","nullable":true},"postal_municipality_code":{"type":"string","nullable":true},"coordinates_attribution":{"type":"string","nullable":true},"company_source":{"type":"string","nullable":true,"description":"Source of the core company record: bolagsverket, scb or lansstyrelsen_stiftelser. Null when not established; does not attribute unrelated contact or financial fields."},"scb_company_name":{"type":"string","nullable":true},"registered_name":{"type":"string","nullable":true},"scb_email":{"type":"string","nullable":true},"employee_size_class_code":{"type":"string","nullable":true},"revenue_size_class_code":{"type":"string","nullable":true},"financial_revenue_size_class":{"type":"string","nullable":true},"financial_revenue_size_class_code":{"type":"string","nullable":true},"revenue_class_year":{"type":"string","nullable":true},"sme_class":{"type":"string","nullable":true},"sme_class_code":{"type":"string","nullable":true},"a_region":{"type":"string","nullable":true},"a_region_code":{"type":"string","nullable":true},"mailing_address_status":{"type":"string","nullable":true},"mailing_address_status_code":{"type":"string","nullable":true},"sector":{"type":"string","nullable":true},"sector_code":{"type":"string","nullable":true},"activity_started_date":{"type":"string","nullable":true},"activity_ended_date":{"type":"string","nullable":true},"workplace_count":{"type":"string","nullable":true},"registered_name_count":{"type":"string","nullable":true},"ownership_category_code":{"type":"string","nullable":true},"public_private_code":{"type":"string","nullable":true},"company_status_code":{"type":"string","nullable":true},"foreign_ownership":{"type":"string","nullable":true},"foreign_ownership_code":{"type":"string","nullable":true},"owner_country":{"type":"string","nullable":true},"owner_country_code":{"type":"string","nullable":true},"import_export":{"type":"string","nullable":true},"export_size_class":{"type":"string","nullable":true},"export_size_class_code":{"type":"string","nullable":true},"import_size_class":{"type":"string","nullable":true},"import_size_class_code":{"type":"string","nullable":true},"trade_nordic":{"type":"string","nullable":true},"trade_eu":{"type":"string","nullable":true},"trade_other_europe":{"type":"string","nullable":true},"trade_asia_except_far_east":{"type":"string","nullable":true},"trade_far_east":{"type":"string","nullable":true},"trade_north_central_america":{"type":"string","nullable":true},"trade_south_america":{"type":"string","nullable":true},"trade_africa":{"type":"string","nullable":true},"main_workplace_cfar":{"type":"string","nullable":true},"main_workplace_name":{"type":"string","nullable":true},"main_workplace_email":{"type":"string","nullable":true},"main_workplace_phone":{"type":"string","nullable":true},"main_workplace_municipality":{"type":"string","nullable":true},"main_workplace_municipality_code":{"type":"string","nullable":true},"main_workplace_county":{"type":"string","nullable":true},"main_workplace_county_code":{"type":"string","nullable":true},"sni_code_1":{"type":"string","nullable":true},"sni_description_1":{"type":"string","nullable":true},"sni_section_1":{"type":"string","nullable":true},"sni_section_code_1":{"type":"string","nullable":true},"sni_code_2":{"type":"string","nullable":true},"sni_description_2":{"type":"string","nullable":true},"sni_section_2":{"type":"string","nullable":true},"sni_section_code_2":{"type":"string","nullable":true},"sni_code_3":{"type":"string","nullable":true},"sni_description_3":{"type":"string","nullable":true},"sni_section_3":{"type":"string","nullable":true},"sni_section_code_3":{"type":"string","nullable":true},"sni_code_4":{"type":"string","nullable":true},"sni_description_4":{"type":"string","nullable":true},"sni_section_4":{"type":"string","nullable":true},"sni_section_code_4":{"type":"string","nullable":true},"sni_code_5":{"type":"string","nullable":true},"sni_description_5":{"type":"string","nullable":true},"sni_section_5":{"type":"string","nullable":true},"sni_section_code_5":{"type":"string","nullable":true},"latitude":{"type":"number","nullable":true,"description":"Matched address coordinate in WGS84. Null for restricted, ambiguous or unavailable addresses."},"longitude":{"type":"number","nullable":true,"description":"Matched address coordinate in WGS84. Null for restricted, ambiguous or unavailable addresses."},"geocoding_status":{"type":"string","nullable":true},"geocoding_updated_at":{"type":"string","nullable":true},"coordinates_source":{"type":"string","nullable":true},"coordinates_source_updated_at":{"type":"string","nullable":true},"visiting_latitude":{"type":"number","nullable":true,"description":"Matched address coordinate in WGS84. Null for restricted, ambiguous or unavailable addresses."},"visiting_longitude":{"type":"number","nullable":true,"description":"Matched address coordinate in WGS84. Null for restricted, ambiguous or unavailable addresses."},"visiting_geocoding_status":{"type":"string","nullable":true},"visiting_geocoding_updated_at":{"type":"string","nullable":true},"visiting_coordinates_source":{"type":"string","nullable":true},"visiting_coordinates_source_updated_at":{"type":"string","nullable":true},"phone_source":{"type":"string","nullable":true},"email_source":{"type":"string","nullable":true},"revenue":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"other_revenue":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"inventory_change":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"cost_of_goods_sold":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"other_external_costs":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"operating_costs":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"operating_result":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"depreciation":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"financial_items":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"financial_income":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"financial_costs":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"result_after_financial":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"result_before_tax":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"tax_expense":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"net_income":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"total_assets":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"fixed_assets":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"intangible_assets":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"tangible_assets":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"financial_assets":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"current_assets":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"inventory":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"accounts_receivable":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"cash_and_bank":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"equity":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"share_capital":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"retained_earnings":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"free_equity":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"restricted_equity":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"untaxed_reserves":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"provisions":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"long_term_liabilities":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"short_term_liabilities":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"accounts_payable":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"salaries_board":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"salaries_other":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"personnel_costs":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"proposed_dividend":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"ebitda":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"personnel_costs_per_employee":{"type":"integer","nullable":true,"description":"Exact whole SEK in the selected latest financial period. Null for missing, non-SEK, quarantined or interval-source figures."},"equity_ratio":{"type":"number","nullable":true,"description":"Percentage, e.g. 42.5 means 42.5%"},"quick_ratio":{"type":"number","nullable":true,"description":"Percentage, e.g. 42.5 means 42.5%"},"current_ratio":{"type":"number","nullable":true,"description":"Percentage, e.g. 42.5 means 42.5%"},"debt_ratio":{"type":"number","nullable":true,"description":"Percentage, e.g. 42.5 means 42.5%"},"return_on_equity":{"type":"number","nullable":true,"description":"Percentage, e.g. 42.5 means 42.5%"},"return_on_assets":{"type":"number","nullable":true,"description":"Percentage, e.g. 42.5 means 42.5%"},"profit_margin":{"type":"number","nullable":true,"description":"Percentage, e.g. 42.5 means 42.5%"},"active":{"type":"boolean","nullable":true,"description":"SCB activity flag; distinct from legal registration status"},"municipality":{"type":"string","nullable":true},"county":{"type":"string","nullable":true},"county_name":{"type":"string","nullable":true},"email":{"type":"string","nullable":true},"phone":{"type":"string","nullable":true},"website":{"type":"string","nullable":true},"ad_blocked":{"type":"boolean","nullable":true,"description":"Known SCB marketing restriction; null means unknown"},"phone_blocked":{"type":"boolean","nullable":true,"description":"Currently unknown (null); no separate telephone suppression source"},"vat":{"type":"boolean","nullable":true},"employer":{"type":"boolean","nullable":true},"has_financials":{"type":"boolean"},"contact_updated_at":{"type":"string","nullable":true,"format":"date-time"},"updated_at":{"type":"string","nullable":true,"format":"date-time"},"employees":{"type":"integer","nullable":true,"description":"Latest available company employee count. May precede period_end; request employees_period_end and employees_source for its provenance. Never group/unknown scope or an SCB size-class code"},"employees_period_end":{"type":"string","nullable":true},"employees_source":{"type":"string","nullable":true},"period_end":{"type":"string","nullable":true,"description":"Latest selected financial period; YYYY-MM or YYYY-MM-DD as reported"},"currency":{"type":"string","nullable":true},"accounting_scope":{"type":"string","nullable":true,"enum":["company","group","unknown",null]},"quality_status":{"type":"string","nullable":true,"enum":["unverified",null],"description":"Matches the public financial quality contract; no legacy verified claim"},"financial_source":{"type":"string","nullable":true,"description":"Public source identifier for the financial period"},"orgnr":{"type":"string","example":"5567037485"},"name":{"type":"string","example":"Tech Company AB"},"org_form":{"type":"string","example":"AB"},"status":{"type":"string","example":"active"},"registered_date":{"type":"string","format":"date","nullable":true},"street_address":{"type":"string","nullable":true},"postal_code":{"type":"string","nullable":true},"city":{"type":"string","nullable":true,"example":"Stockholm"},"sni_codes":{"type":"array","items":{"type":"string"},"example":["62010","62020"]},"sni_descriptions":{"type":"array","items":{"type":"string"},"example":["Dataprogrammering"]},"f_skatt":{"type":"boolean","nullable":true}}}},"responses":{"Forbidden":{"description":"Access denied","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"}}}},"BadRequest":{"description":"Bad request","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"invalid_orgnr_format","message":"Invalid organization number format: 55667788","field":"orgnr","hint":"Use a Swedish organization number with 10 digits, optionally formatted as XXXXXX-XXXX.","docs_url":"https://bolagsapi.se/docs/errors#organization-number-validation","request_id":"req_abc123"}}}},"Unauthorized":{"description":"Unauthorized","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"unauthorized","message":"Invalid or missing API key","hint":"Send your API key as Authorization: Bearer <key>.","docs_url":"https://bolagsapi.se/docs/errors#401-unauthorized","request_id":"req_abc123"}}}},"NotFound":{"description":"Not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"not_found","message":"Company not found","docs_url":"https://bolagsapi.se/docs/errors#404-not-found","request_id":"req_abc123"}}}},"UpgradeRequired":{"description":"Upgrade required - feature requires higher plan","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"upgrade_required","message":"Financial data requires Starter plan or higher.","hint":"Upgrade to Starter or higher to access financial statements and summaries.","docs_url":"https://bolagsapi.se/docs/errors#403-forbidden","request_id":"req_abc123","required_tier":"starter","upgrade_url":"https://bolagsapi.se/pricing"}}}},"TierAccessDenied":{"description":"Tier access denied - endpoint requires higher subscription tier","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TierAccessError"},"example":{"error":"tier_access_denied","message":"This endpoint requires a Pro plan or higher. Your current plan is Starter.","hint":"Upgrade to Pro or higher to use this endpoint.","docs_url":"https://bolagsapi.se/docs/errors#403-forbidden","request_id":"req_abc123","endpoint":"persons","required_tier":"pro","current_tier":"starter","upgrade_url":"https://bolagsapi.se/pricing"}}}},"ReportDownloadRestricted":{"description":"The report may be used for extracted data but its source file cannot be redistributed","content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"forbidden","message":"This report file is not available for redistribution.","reason":"source_redistribution_restricted","request_id":"req_abc123"}}}},"RateLimited":{"description":"Per-minute rate limit (`rate_limit_exceeded`) or the Free plan's monthly request limit (`monthly_limit_exceeded`) exceeded. If the limit applies because a paid subscription has ended, the body also contains `subscription_status: ended`, `subscription_ended_at` and `billing_url`.","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds until rate limit resets"},"X-RateLimit-Limit":{"schema":{"type":"integer"}},"X-RateLimit-Remaining":{"schema":{"type":"integer"}},"X-RateLimit-Reset":{"schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"rate_limit_exceeded","message":"Rate limit exceeded","hint":"Retry after 60 seconds or reduce request concurrency.","docs_url":"https://bolagsapi.se/docs/errors#429-rate-limit-exceeded","request_id":"req_abc123","retry_after":60}}}},"TemporarilyBusy":{"description":"The service is temporarily busy. Retry the same request after Retry-After seconds; for cursor pages, retry the same after_orgnr.","headers":{"Retry-After":{"schema":{"type":"integer"},"description":"Seconds to wait before retrying"}},"content":{"application/json":{"schema":{"$ref":"#/components/schemas/Error"},"example":{"error":"internal_error","message":"The service is temporarily busy. Retry shortly.","docs_url":"https://bolagsapi.se/docs/errors#500-and-502-server-errors","request_id":"req_abc123","retry_after":5}}}}}}}