---
title: "Bis zu 500 bestehende UIDs abgleichen"
method: POST
path: "/companies/reconcile"
tags: ["Firmen"]
---

# Bis zu 500 bestehende UIDs abgleichen

`POST /companies/reconcile`

## Request

- Base URL: `https://firmenwatch.ch/api/v1`
- URL: `https://firmenwatch.ch/api/v1/companies/reconcile`
- Auth: HTTP bearer

Normalisiert und prueft einen vorhandenen ERP-/CRM-Bestand in einem Stapel. Reihenfolge und Dubletten bleiben erhalten, external_ref wird unveraendert zugeordnet. Die Antwort enthaelt einen VOR der Firmenabfrage aufgenommenen Checkpoint; danach mit dessen high_water und epoch im Ereignisstrom weiterlesen.

## Request body

- object
  - `items` ReconcileInput[], required
    - `uid` string, required: UID in beliebiger ueblicher Schreibweise.
    - `external_ref` string, nullable: Eigener unveraenderter Zuordnungsschluessel, zum Beispiel Debitorennummer.

## Response `200`

Zeilengenaue Abgleichsquittung samt Start-Checkpoint.

- object
  - `data` object, required
    - `checkpoint` EventCheckpoint, required
      - `stream` 'firmenwatch.ch/company-events', required: Stabile Bezeichnung des Ereignisstroms.
      - `epoch` string, required: Identitaet der physischen Stromfassung. Aendert sich bei einem Neuaufbau und macht einen alten sequence-Cursor erkennbar ungueltig.
      - `high_water` integer, required: Hoechste beim Erstellen sicher vorhandene Stromposition.
      - `created_at` string, date-time, required
      - `schema_version` '1.0', required
    - `items` ReconcileResult[], required
      - `input` object, required
        - `uid` string, required
        - `external_ref` string, nullable, required
      - `normalized` string, nullable, required
      - `valid` boolean, required: Format und UID-Pruefziffer sind gueltig.
      - `found` boolean, required: Im sichtbaren Firmenwatch-Bestand vorhanden.
      - `reason` 'format' | 'checksum' | 'null', nullable, required: Grund einer formal ungueltigen Eingabe; null bei gueltiger UID.
      - `company` Company, required
        - `uid` string, required
        - `name` string, required
        - `slug` string, required
        - `legal_form_code` string, nullable, required
        - `legal_form` string, nullable, required
        - `status` 'active' | 'in_liquidation' | 'bankrupt' | 'deleted', required
        - `seat` string, nullable, required: Politische Gemeinde des Sitzes.
        - `canton` string, nullable, required
        - `address` Address, required
          - `masked` boolean: true: genaue Adresse aus Datenschutzgründen nicht öffentlich; Ort bleibt verfügbar.
          - `care_of` string, nullable, required: Zustellvermerk, z. B. c/o Muster Treuhand AG.
          - `street` string, nullable, required
          - `house_number` string, nullable, required
          - `po_box` string, nullable, required: Postfachnummer ohne das Wort Postfach.
          - `zip` string, nullable, required
          - `town` string, nullable, required
        - `purpose` string, nullable, required: Zweckumschreibung gemaess Handelsregister.
        - `capital` Capital, required
          - `nominal` number, required: Nominalkapital mit belegtem ISO-Waehrungscode.
          - `paid` number, nullable, required: Belegtes liberiertes Kapital, soweit erfasst.
          - `currency` string, required: In einer erfassten Registerpublikation belegter ISO-Waehrungscode.
          - `verification` 'currency_evidenced', required
          - `evidence_basis` 'structured_shab_company_capital', required
          - `publication` object, required
            - `id` string, required
            - `date` string, date, required
            - `number` string, nullable, required
            - `sub_rubric` string, required
            - `state` 'commonsActual' | 'commonsNew', required
            - `url` string, uri, required
        - `industry` Industry, required: Aus dem eingetragenen Zweck abgeleitete Firmenwatch-Klassifikation; keine amtliche NOGA-Zuordnung.
          - `code` string, nullable, required: Interner, NOGA-naher Klassifikationscode.
          - `label` string, required: Deutsche Bezeichnung der abgeleiteten Branche.
          - `confidence` number, required
          - `qualification` 'derived' | 'probable', required
          - `basis` 'registered_purpose_text', required
        - `first_registered_at` string, date, nullable, required: SHAB publication date of the earliest evidenced new registration; not the cantonal journal date.
        - `deleted_at` string, date, nullable, required
        - `last_event_at` string, date, nullable, required
        - `url` string, uri, required: Oeffentliches Firmenprofil auf firmenwatch.ch.
    - `summary` ReconcileSummary, required
      - `received` integer, required
      - `valid` integer, required
      - `found` integer, required
      - `not_found` integer, required
      - `invalid` integer, required

## Other responses

- `400`: Ungueltige Anfrage (invalid_request).
- `401`: Kein oder ungueltiger Schluessel (unauthorized).
- `402`: Monatskontingent erschoepft (quota_exceeded).
- `403`: Abonnement nicht aktiv oder benoetigtes Schluesselrecht fehlt (forbidden).
- `429`: Ratenbegrenzung erreicht (rate_limited).
- `500`: Unerwarteter Fehler (internal).
- `503`: Der Registerbestand wird gerade vollständig verifiziert (temporarily_unavailable). Dieselbe Abfrage später erneut senden.

---

[API](https://skmtc.dev/firmenwatch/apis/firmenwatch-api.md) · [All operations](https://skmtc.dev/firmenwatch/apis/firmenwatch-api/llms.txt) · [OpenAPI document](https://skmtc.dev/firmenwatch/apis/firmenwatch-api/revisions/65e774135677?raw)
