Talk to your AI agent to run Simetrik. →
SimetrikDocs

File ingestion

Post your records to the source endpoint; Simetrik batches them into a file, turns the JSON into CSV and feeds reconciliation.

This is the flow for systems that produce data continuously. You post each record as it happens — one small HTTP call — and Simetrik takes care of grouping, converting and delivering.

How it works

Create the source once

POST /api/v2/sources declares the name and the column schema. You get back the source id.

Post your records

POST /api/v2/sources/{id}/feed-source, one JSON object per call, as often as your system produces them. Each call gets an immediate acceptance response.

Records are grouped into a file

Accepted records accumulate per source and are closed into a batch file when the window fills up — by time or by size. This is why ingestion is near-real-time rather than instant.

JSON becomes CSV

For each record in the file, Simetrik reads the value every column's mapping points at and writes it in position order under the column name.

The file is delivered

The CSV lands in the source and reconciliation is told there's new data. If you registered a notification_config, your endpoint is called along the way — including on failures. See Status notifications.

From records to columns

Given a source that maps id, amount and payment.method, and these three records posted over a few minutes:

{"id": "a1", "amount": 1500, "payment": {"method": "card"}}
{"id": "a2", "amount": 2400, "payment": {"method": "transfer"}}
{"id": "a3", "amount":  900, "payment": {"method": "card"}}

They're closed into one file, which becomes one CSV:

id,amount,method
a1,1500,card
a2,2400,transfer
a3,900,card

Every record also carries the source_id and the sk-int-id Simetrik adds on the way in. They only reach the CSV if you map a column to them.

What to expect

  • The unit of processing is the file, not the record. Lifecycle states and status notifications describe batches, so a notification covers every record that landed in that batch.
  • Column order is position, not the order you declared the columns in.
  • A mapping that resolves to nothing produces an empty cell, never an error.
  • You don't name the file. It's generated when the batch closes, which means you can't correlate a notification back to one specific record — correlate on the source and the time window instead.

Next

On this page