Datasets
Store, review, version and export the data you collect with Fieldwork, generate with Voices, or upload. Every item keeps where it came from and the consent it was given under, and every export carries both.
How it works
- A dataset holds items of one kind: audio, image, video or text. Fieldwork projects and Voices batches create their own datasets as they deliver.
- New items are pending. You accept or reject each one, in the console or through the API.
- A version freezes the items you choose into a manifest: one JSON line per item, with its file, checksum, consent record and provenance, plus Croissant metadata.
- An item whose participant withdraws consent is removed from new versions and its file stops downloading.
Keys and scopes
Calls use a Platform API key holding datasets:read to read and datasets:write to create, upload and review. Add the scopes on the Keys page. The API lives on https://api.tenzro.xyz without a version prefix.
Create a dataset and upload
bash
curl https://api.tenzro.xyz/datasets \
-H "Authorization: Bearer $TENZRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"name": "Kitchen commands, round 1", "kind": "audio"}'bash
curl "https://api.tenzro.xyz/datasets/ds_…/items/upload?filename=take-01.wav&duration_ms=2800" \
-H "Authorization: Bearer $TENZRO_API_KEY" \
-H "Content-Type: audio/wav" \
--data-binary @take-01.wavReview
bash
curl -X PATCH https://api.tenzro.xyz/datasets/ds_…/items/di_… \
-H "Authorization: Bearer $TENZRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"status": "accepted"}'Versions and export
bash
curl https://api.tenzro.xyz/datasets/ds_…/versions \
-H "Authorization: Bearer $TENZRO_API_KEY" \
-H "Content-Type: application/json" \
-d '{"statuses": ["accepted"]}'
curl "https://api.tenzro.xyz/datasets/ds_…/versions/1/export?file=manifest" -H "Authorization: Bearer $TENZRO_API_KEY" -o manifest.jsonl
curl "https://api.tenzro.xyz/datasets/ds_…/versions/1/export?file=croissant" -H "Authorization: Bearer $TENZRO_API_KEY" -o croissant.jsonEndpoints
| Method | Path | What it does | Scope |
|---|---|---|---|
GET | /datasets?source=&kind= | Your datasets with item counts | datasets:read |
POST | /datasets | Create a dataset: name, kind (audio, image, video, text), description | datasets:write |
GET | /datasets/{id} | One dataset | datasets:read |
GET | /datasets/{id}/items?status=&limit=&offset= | Items, newest first | datasets:read |
POST | /datasets/{id}/items/upload?filename= | Upload a file as a pending item; the body is the file | datasets:write |
GET | /datasets/{id}/items/{itemId} | One item with its consent record and provenance | datasets:read |
PATCH | /datasets/{id}/items/{itemId} | Accept or reject an item: status, note | datasets:write |
GET | /datasets/{id}/items/{itemId}/download | The file, streamed (byte ranges for audio) | datasets:read |
GET | /datasets/{id}/versions | Saved versions | datasets:read |
POST | /datasets/{id}/versions | Save the chosen items as the next version | datasets:write |
GET | /datasets/{id}/versions/{version} | One version | datasets:read |
GET | /datasets/{id}/versions/{version}/export?file= | The manifest (JSONL) or Croissant metadata | datasets:read |
From agents
The same functions are tools on the MCP server, under the same scopes.
Pricing
| What | Price | Free each month | With a plan | One-time trial |
|---|---|---|---|---|
Storage Metered daily, billed pro rata. | 20 credits per GB-month | 1 | 50 to 500 | — |
Downloads Downloads and exports out of the Platform. | 10 credits per GB | 5 | 100 to 1,000 | — |
Amounts are in each row's unit. Included amounts are used first, then credits.
Usage is recorded at list price and charged nothing until charging starts. Charging starts when card and stablecoin payments open.
Storage and downloads draw from your monthly allowance first, then credits. See Pricing.