Skip to content

REST API

The DataMaker REST API is the canonical surface; the SDKs and the MCP server wrap it. Use it directly when you’d rather not pull a dependency.

Base URL

https://api.datamaker.automators.com

All endpoints are HTTPS only. There’s no /v1 prefix today; we’ll version with a header if a breaking change comes.

Auth

Every request needs:

Authorization: Bearer <DM_API_KEY>

Generate a key under Settings → API Keys in the app. Keys carry the role of the user who created them. Treat them as secrets — don’t commit them, don’t paste them into chat.

Content & errors

  • Content-Type: application/json for request bodies.
  • 200 / 201 / 204 on success.
  • 4xx with a body of { "error": { "code": "...", "message": "...", "details": {...} } }.
  • 5xx with a request ID — include it when filing a support ticket.

Errors are stable on error.code. Don’t pattern-match on error.message.

Pagination

List endpoints return:

{
"items": [ ... ],
"next_cursor": "eyJpZ...", // null when there's no more
"total": 142
}

Pass ?cursor=... to get the next page.

Templates

MethodPathNotes
GET/templatesList templates in the project.
POST/templatesCreate.
GET/templates/{id}Read.
PATCH/templates/{id}Update fields. Creates a new version.
DELETE/templates/{id}Soft-delete.
GET/templates/{id}/versionsList versions.
GET/templates/{id}@v{n}Read a specific version.
POST/templates/{id}/generateGenerate rows.
POST/templates/{id}/previewGenerate 3 rows. Cheaper, no quota debit.

POST /templates/{id}/generate body:

{
"count": 100,
"format": "json" | "csv" | "sql" | "xlsx",
"seed": "optional-string",
"overrides": { "country": "DE" }
}

Response: a stream of the chosen format. Use Accept: text/csv for CSV streaming.

Scenarios

MethodPathNotes
GET/scenariosList.
POST/scenariosCreate.
PUT/scenarios/{id}Replace code.
POST/scenarios/{id}/runTrigger a run.
GET/scenarios/{id}/runsList runs.
GET/scenarios/{id}/runs/{run_id}Run detail.
GET/scenarios/{id}/runs/{run_id}/logsLogs (text). Use ?follow=true for SSE.
DELETE/scenarios/{id}/runs/{run_id}Cancel.

Trigger a run:

Terminal window
curl -X POST https://api.datamaker.automators.com/scenarios/$SCN/run \
-H "Authorization: Bearer $DM_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"params": { "environment": "regression", "size": "500" },
"wait": "false"
}'

"wait": "true" blocks until the run finishes (up to 5 minutes); "false" returns a run ID immediately and you poll /runs/{run_id} or stream /logs?follow=true.

Connections

MethodPathNotes
GET/connectionsList.
POST/connectionsCreate. Body shape varies by type.
POST/connections/{id}/verifyRe-run the verification check.
GET/connections/{id}/metadataFor SAP / OpenAPI: parsed schema.

Saved sets

MethodPathNotes
GET/setsList.
POST/setsSave ({name, rows}). Re-using a name versions.
GET/sets/{name}Load.
DELETE/sets/{name}Remove.

Workspace files

MethodPathNotes
GET/workspace/filesList.
POST/workspace/filesMultipart upload (name + file part).
GET/workspace/files/{name}Download.
DELETE/workspace/files/{name}Remove.

Rate limits

Per workspace:

PlanRequests / minuteGeneration rows / hour
Free6010,000
Pro6001,000,000
Enterpriseper contractper contract

Each response includes X-RateLimit-Remaining and X-RateLimit-Reset. On 429 we send Retry-After.

SDKs

For most things, prefer:

Both wrap this REST API and add typing, retries, and ergonomics.