Validate and apply the staged CSV (asynchronous; poll the import for the outcome)
/v1/apps/{app}/datasets/{node}/imports/{id}/commitValidates the staged file against the dataset's declared columns and, if every row parses, applies it. Requires the data:write scope. Validation is ALL OR NOTHING: a single unparsable row applies nothing and the dataset is left exactly as it was. A file with no data rows - a header alone, or no bytes at all - fails with no_data_rows in either mode and also leaves the dataset as it was: an import never empties a dataset. The work runs asynchronously, so the first commit answers 202 and the outcome arrives on getImport. Committing the same import identifier twice is safe: the repeat writes nothing and answers 200 with the import's CURRENT record - still validating if the first commit has not finished, its terminal outcome once it has. That is what makes a retry after a network timeout correct rather than a second write.
Authorization
bearerAuth Obtain a token from https://id.ovidens.com/oauth/token using the client_credentials grant.
In: header
Path Parameters
The app's stable technicalId, as reported by listApps. It is a snake_case identifier, never a numeric id, and it survives a rename of the app.
1 <= length <= 64The dataset node's stable technicalId, as reported by listDatasets.
1 <= length <= 64The import identifier createImport returned in importId.
1 <= length <= 32curl -X POST "https://example.com/v1/apps/string/datasets/string/imports/string/commit"{ "importId": "imp_8c2f4a1d9e63", "status": "applied", "mode": "replace", "csv": { "delimiter": ";", "quote": "\"", "escape": "\"", "encoding": "utf-8", "hasHeader": true, "decimalSeparator": ",", "thousandsSeparator": "", "dateFormat": "%d.%m.%Y", "timestampFormat": "%Y-%m-%dT%H:%M:%SZ", "columns": {} }, "filename": "customers-2026-08-01.csv", "createdAt": "2026-08-01T02:00:04.000Z", "finishedAt": "2026-08-01T02:00:41.000Z", "rowsParsed": 18420, "rowsApplied": 18420, "rowsRejected": 0, "errorCode": null, "errorGroups": [], "likelyCause": null, "structure": null, "errorReportTruncated": false, "auditId": 90233, "expiresAt": "2026-08-08T02:00:03.000Z", "uploadUrl": null, "uploadUrlExpiresAt": null}Response Body
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json
application/json