Import mapping
Turn uploaded files into your knowledge graph: entity types, id fields, and time fields.
An import reads a file from your Data Tunnel and turns each row into an entity on your organization's knowledge graph in RecursiveDB. Your agents reason over that graph, and changes between imports become signals they learn from.
Every import needs three decisions, and we infer all of them from the file when you don't say otherwise:
| Field | What it means | Inferred from |
|---|---|---|
entityType | What each row is: a customer, an order, a contest | The file name |
idField | The column that identifies the same record across imports | Column uniqueness and name |
timeField | The column that says when this version of the record was true | Date-like columns |
From the dashboard
Open Tunnel, pick the file, and click Import. You'll see a preview with the inferred mapping; adjust the three fields if needed and start. The job reports progress and finishes with the number of records on your graph.
From the API
# Preview first: see the inferred mapping without importing anything.
curl -sf https://api.allocate.network/ingest/import/preview \
-H "Authorization: Bearer $ALLOCATE_API_KEY" \
-H "content-type: application/json" \
-d '{"key": "<file key from the upload>"}'
# Start the import. Fields you omit use the inferred mapping.
curl -sf https://api.allocate.network/ingest/import \
-H "Authorization: Bearer $ALLOCATE_API_KEY" \
-H "content-type: application/json" \
-d '{"key": "<file key>", "entityType": "order", "idField": "Order Ref", "timeField": "Updated At"}'
# Poll until done. GET /ingest/imports lists all jobs;
# POST /ingest/imports/<id>/cancel stops one.
curl -sf https://api.allocate.network/ingest/imports/<id> \
-H "Authorization: Bearer $ALLOCATE_API_KEY"Imports are safe to repeat: re-importing the same file changes nothing, and a corrected re-import heals earlier mistakes.
Choosing the time field
This is the one mapping choice that changes what your agents can learn.
The graph records how records change between imports, and it timestamps each
version with the timeField.
Pick a column that moves when the record changes, like Updated At or
Settled At. If you pick a static column like Created At, a record that
changed between two imports carries the same timestamp both times, and the
change is invisible. No good column? Omit timeField and the import time is
used, which is always safe for scheduled pushes.
Next
Know where all of this lives: Data residency.