upload_data_from_df or upload_data_from_csv, the call returns immediately with a process record. The actual merge runs in the background. Use the methods below to check progress and inspect the result.
For the full upload lifecycle (states, idempotency, notifications) see Upload lifecycle in the Documentation tab.
List all processes for a dataset
processes() returns every upload process recorded for the dataset, most recent first. The response is the raw API body as bytes — decode and parse it as JSON:
| Field | Meaning |
|---|---|
id | Process ID. |
datasetId | The dataset this process belongs to. |
status | Requested, Processing, Processed, or Error. |
statusDescription | Free-text summary (e.g., 1292 values added to database.). |
deleteMissingFromDB | The flag value used for this upload. |
onConflictUpdateDB | The flag value used for this upload. |
createdAt | When the upload was submitted. |
processedAt | When processing finished. |
Get a single process
If you saved the process ID returned by the upload call, fetch only that record withprocess(id):
processes().
Polling pattern
To wait for an upload to complete, poll until the status leavesRequested/Processing:
Upload stats
After a successful run, the process record’sstats field contains row-level counts: insertedValues, updatedValues, deletedValues, changedValues, totalValues, minDate, maxDate. Use these for logging or to drive your own monitoring:
Error handling
When the worker rejects the upload — duplicated rows, manifest mismatch, missing date column — the process transitions toError and statusDescription carries the message. The full list of validation rules is documented in Validation rules.
Next steps
- Trigger a new upload — see Uploading data.
- Read the dataset back once processing finishes — see Downloading data.