One staged import's status and outcome, with a fresh upload URL while staging
/v1/apps/{app}/datasets/{node}/imports/{id}One import's status, its resolved dialect and, once it has finished, how many rows parsed, applied and were rejected plus a grouped summary of the failures. Requires the workspace:read scope, so a monitoring job can watch an integration without being able to feed it. While the import is still awaiting_upload, a caller that ALSO holds data:write receives a freshly minted uploadUrl - that is how an expired upload signature is recovered from, and a read-only caller simply gets nulls there. Poll until status is no longer validating.
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 GET "https://example.com/v1/apps/string/datasets/string/imports/string"{ "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