Introduction

Everything you can do from the web application is also available through the DEDOMENA.AI REST API, so you can automate anonymization and synthetic-data generation from your own applications and pipelines. Interactive documentation (Swagger) is available at the /docs endpoint of the API.
Authentication
Every request is authorized with your personal token, passed as a query parameter (?token=YOUR_TOKEN). Requests are rate-limited per account.
Assets
The API works on assets you have already added and analyzed on the platform (see Assets in the Cloud Guide); you refer to each one by its assetId. Because column types were detected during analysis, you do not need to describe your data again when you call the API.
Anonymize
POST /nucleus/anonymize?token=YOUR_TOKEN
Send a JSON body that names, for each sensitive column, the method to apply. You can anonymize several tables in one call by adding more entries to datasets.
\{
"anonymizerName": "Customers – shared copy",
"anonymizerDescription": "Anonymized for the analytics team",
"anonymizerUseCase": "102",
"datasets": [
\{
"assetId": "a1b2c3d4-...",
"datasetName": "customers",
"columns": \{
"full_name": \{ "method": "simulation" \},
"email": \{ "method": "mask" \},
"national_id": \{ "method": "hash" \},
"age": \{ "method": "generalize", "param": 10 \}
\}
\}
]
\}
-
Each column maps to a
method—mask,hash,pseudonym,shuffle,generalize,perturb,simulation,coding, or the visual methodsblur,pixelate,redact— and an optionalparam(for example, the range size forgeneralize). -
Any column you do not list is left unchanged.
curl -X POST "https://api.dedomena.ai/nucleus/anonymize?token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d @anonymize_config.json
The response returns the run status; the anonymized dataset is saved as a new asset.
Synthesize
Creating synthetic data with the API is a two-step process: first train a synthesizer, then generate data from it.
Step 1 — Train
POST /nucleus/synthesize?algorithm=ALGORITHM&token=YOUR_TOKEN
ALGORITHM is one of generic, transactional, or relational. Provide the asset and the training options; the column types are taken automatically from the analysis, so you do not need to list them.
\{
"assetId": "a1b2c3d4-...",
"synthesizerName": "customers_v1",
"synthesizerDescription": "Quality mode",
"epochs": 200,
"batchSize": 256,
"amplify": "quality",
"constraints": ["age\>=18"]
\}
curl -X POST "https://api.dedomena.ai/nucleus/synthesize?algorithm=generic&token=YOUR_TOKEN" \
-H "Content-Type: application/json" \
-d @synthesize_config.json
The response includes a runId and the training status. Training runs in the background; check its progress with the run endpoints below. (You can also train from a connected database by providing a databaseId and tableName instead of an assetId.)
Step 2 — Generate — once training has finished, create a synthetic dataset from the trained synthesizer:
POST /nucleus/generate/\{run_id\}?num_rows=100000&token=YOUR_TOKEN
For small, on-demand samples you can use the real-time endpoint, which returns the rows directly (up to 5,000):
POST /nucleus/generate/realtime/\{run_id\}?num_rows=...&replicate_outliers=yes|no
Step 3 — Download — retrieve the generated dataset in the format you prefer:
GET /nucleus/download/syntheticdata/\{run_id\}?file_format=CSV&token=YOUR_TOKEN
Available formats: CSV, PARQUET, AVRO, JSON.
Managing runs
| Endpoint | Purpose |
|---|---|
GET /nucleus/runs/list | List all your trained synthesizers. |
GET /nucleus/runs/info/\{run_id\} | Get the details and status of a synthesizer. |
GET /nucleus/runs/logs/\{run_id\} | Get the training logs of a run. |
POST /nucleus/uploadmodel | Upload a synthesizer trained locally with Nucleus Edge (see Uploading Synthesizers). |
All run endpoints take your token as a query parameter.