Skip to main content

Setup and Sync

Check read progress, choose the data products and the party field map, get field suggestions with samples, and start a background sync through /v1/parties.

Setup tells the app which data products hold the contracts and which of their fields describe parties. The app reads every active assembled data product of the workspace; the settings hold that list and the field map, which names, per data product, the meaning of each party field: a role (partner, our_party, manager, tenant, previous_owner, new_owner, contact or invoice_recipient) and an attribute (name, first_name, last_name, company_name, salutation, street, postcode, town, postcode_town, address, email, phone or kind: a customer-type field such as Privatkunde / Firmenkunde / WEG that sets whether the party is a person, a company or an association of owners).

Status

GET /v1/parties/status reports whether the workspace has data products to read, whether the first fill is still under way, row and read counts, party counts and the products whose party fields could not be read. A workspace that has not added the app answers configured: false when it has no stored settings, and the call enrolls nothing, which makes it a safe probe.

GET/v1/parties/status

Response fields

configuredbooleanWhether the workspace has settings for the app.
first_fillbooleanThe first fill is still under way.
syncingbooleanRows are being filled from the data products at the moment.
finding_fieldsbooleanThe platform is still working out which fields of a chosen product hold parties.
setup_errors[]arrayProducts whose party fields could not be read: product_id, name, error. The sync tries again every pass.
products[]arrayid, name and rows per chosen product.
rows, rows_readintegerRegistered rows, and rows filled from their data.
readsobjectRows per AI read status: pending, running, done, failed.
parties, needs_attentionintegerParty count, and parties that need a person.
synced_atstring (date-time) | nullWhen the last full pass finished.

Response: Status

{
  "configured": true,
  "first_fill": false,
  "syncing": false,
  "finding_fields": false,
  "setup_errors": [],
  "products": [{ "id": "3b9e5a14-7c20-4d6f-8a31-0f2d9c7e4b58", "name": "Contract Dataset", "rows": 1000 }],
  "rows": 1000,
  "rows_read": 1000,
  "reads": { "pending": 0, "running": 0, "done": 12, "failed": 0 },
  "parties": 842,
  "needs_attention": 37,
  "synced_at": "2026-06-01T06:15:00.000Z"
}

Settings

GET /v1/parties/settings returns the assembled data products whose rows are the contracts and which of their fields hold party details: data_product_ids, field_map, products, field_errors (per product, why its party fields could not be found), synced_at and ready_at (when the first fill finished). configured is true once the workspace has a data product that assembles contracts.

GET/v1/parties/settings

PUT /v1/parties/settings stores the data products and starts a sync in the background. With field_map the map is stored as given: unknown roles, attributes and fields are dropped, and a product named with no fields means "no party fields". Without field_map the platform finds the party fields itself and the products keep the map they had. Products no longer listed lose their rows and the suggestions on them; a person's decisions stay. The workspace must have added the app first.

PUT/v1/parties/settings

Body fields

data_product_ids*string[] (uuid)Up to 20 data product ids.
field_mapobjectPer data product id, field name to { role, attribute }. Omit it to let the platform find the party fields.

cURL: Save products with an explicit field map

curl -X PUT "https://api.talonic.com/v1/parties/settings" \
  -H "Authorization: Bearer $TALONIC_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "data_product_ids": ["3b9e5a14-7c20-4d6f-8a31-0f2d9c7e4b58"],
    "field_map": {
      "3b9e5a14-7c20-4d6f-8a31-0f2d9c7e4b58": {
        "vertragspartner": { "role": "partner", "attribute": "name" },
        "verwalter": { "role": "manager", "attribute": "name" }
      }
    }
  }'

Response: 404 when the app has not been added

{
  "statusCode": 404,
  "code": "RESOURCE_NOT_FOUND",
  "error": "Not Found",
  "message": "This workspace has not added the app 'parties'. Add it in Apps, Add app, or with POST /v1/apps and slug \"parties\".",
  "retryable": false,
  "timestamp": "2026-06-01T08:00:00.000Z",
  "path": "/v1/parties/settings"
}
Name every chosen product in the field_map when you send one, using {} for "no party fields". A product left out of the map is mapped again by the platform on the next sync.

Field Suggestions

GET /v1/parties/settings/suggest?product_ids= returns, per product, every field with a few sample values and the meaning the saved map or the field name suggests. The samples respect the Sources visibility rules of the key's minting user. A saved map wins over suggestions, and a field name needs a role word (such as vertragspartner, kunde, verwalter, mieter, eigentuemer) to be suggested; a field without one has suggestion: null. Use it to build the field_map for the settings route.

GET/v1/parties/settings/suggest

Query parameters

product_ids*stringComma-separated data product ids, 1 to 20.

Sync

POST /v1/parties/sync starts a sync in the background and returns 201 with started: true at once; GET /v1/parties/status reports progress. The sync registers every row, fills each from its mapped fields, the Field Registry and the Contracts app, with no model call, and queues reads when background reads are enabled. One sync runs per workspace at a time, and a request made while one runs does nothing further. row_ids (up to 5000 data product record ids) limits the sync to those rows.

POST/v1/parties/sync

Body fields (optional)

row_idsstring[]Up to 5000 ids of up to 200 characters. Only these rows (data product record ids).

Frequently asked questions

Why does every parties endpoint return 404?+
The workspace has not added Contract Party Management. Add the app first, from the Add app dialog or with POST /v1/apps using slug parties. Reading the status or the settings never enrolls a workspace.
What happens to a product I remove from data_product_ids?+
Products no longer listed lose their rows and the suggestions on them. A person's decisions stay: confirmed and rejected roles and the roles a person added are not deleted.
Why is a field not suggested?+
A field name or label needs a role word, such as vertragspartner, kunde, verwalter, mieter or eigentuemer, to be suggested. A field without one has suggestion null. A saved map always wins over the suggestions.
How do I follow a sync?+
POST /v1/parties/sync returns at once with started true. Poll GET /v1/parties/status: syncing is true while rows are filled, and synced_at is set when the full pass finishes. If a sync is already running, a further request does nothing.