Documentation
File storage and loading data
4. File storage
Every project has file storage, used as a source for data loads and for dashboard images. Requires MD Admin.
REST
Files are addressed by fileId, which is the URL-safe base64 of "<name>|<parentPath>".
| Method | Path | Description |
|---|---|---|
| GET | /projects/{project}/storage/list?withStats=1 | List the root folder |
| POST | /projects/{project}/storage/list | Create a folder: { "folder": "/imports/2026" } |
| GET | /projects/{project}/storage/list/{fileId} | File or folder details and contents |
| DELETE | /projects/{project}/storage/list/{fileId} | Delete a file, or a folder recursively |
| GET | /projects/{project}/storage/list/{fileId}/download | Download a file |
| POST | /projects/{project}/storage/move | Move or rename: { "source": "/a.csv", "target": "/archive/a.csv" } |
| POST | /projects/{project}/storage/upload | Start a chunked upload (resumable.js protocol) |
WebDAV
For simple file transfer, the storage is also available over WebDAV, so any WebDAV client or a mounted drive works:
https://app.inzata.com/api/v1/projects/{project}/webdav/Authentication is HTTP Basic: username = your user id, password = your project WebDAV token. A project Admin sets the token.
BASH
curl -u "[email protected]:<webdav-token>" \ -T sales_2026.csv \ https://app.inzata.com/api/v1/projects/{project}/webdav/imports/sales_2026.csv
Uploading a file can also start a data load automatically (see the WebDAV file-change trigger in section 6).
5. Loading data
From a file (upload → guess → load)
1. Upload the file to storage (REST upload or WebDAV).
2. Detect the structure. Inzata guesses columns, data types and keys:
HTTP
GET /api/v1/projects/{project}/data/guessupload/{uploadId}JSON
{
"ident": "sales_2026",
"prescription": {
"clustername": "sales",
"primarykey": "order_id",
"columns": [
{ "id": "order_id", "originalheader": "Order ID", "objectType": "A", "dataType": "string", "label": "Order ID" },
{ "id": "amount", "originalheader": "Amount", "objectType": "F", "dataType": "number", "label": "Amount" }
],
"data": [["1001", "250.00"], ["1002", "99.90"]]
}
}objectType is A (attribute), L (label) or F (fact).
3. Adjust the structure if needed: PUT /data/guessupload/{uploadId} with the edited prescription.
4. Load the data:
HTTP
POST /api/v1/projects/{project}/kodiak/transform/execute
Content-Type: application/json
{ "type": "cluster", "clusters": { "sales": { "source_type": "webdav", "source": "/imports/sales_2026.csv" } } }The response contains an scache job link. Poll it until it finishes (see Asynchronous jobs).
Other resources
| Method | Path | Description |
|---|---|---|
| GET | /projects/{project}/kodiak/dataload | Current data and model version |
| GET | /projects/{project}/kodiak/scache/obj?type=transform&status=ERROR | List jobs, filtered by type (transform, flow, report, ai) and status |
| GET | /projects/{project}/store/package | Prebuilt data packages available for the project |
| POST | /projects/{project}/package/obj | Load a package and join it to your data |
Further reading
Was this helpful?
Contact support