Field types
Use the generator names and options exposed by your DataMaker deployment.
The field picker and GET /fields expose the generator catalogue for your installed release. Use its exact names and options in code; labels such as first_name are column names, not the catalogue name First Name. POST /datamaker refuses a type that is not in the catalogue with 400 rather than generating from a fallback.

Common generators
| Purpose | Catalogue names |
|---|---|
| Identity | UUID, MongoDB ObjectID, Name, First Name, Last Name, E-Mail, Password, Gender, Sex |
| Numbers and choices | Number, Float, Boolean, Custom |
| Dates | Date, Datetime, Birthdate, Month, Weekday, Time Zone |
| Location and contact | Address, City, Country, Street Name, Phone Number, Zip Code |
| Business | Company Name, Account Name, Job Title, Product, Product Name, Department |
| Financial and identifiers | IBAN, Country Format, Credit Card Number, Account Number, Currency Name, SSN, IMEI |
| Text and web | Words, Lorem, Random String, RegExp, URL, Domain Name, IPv4, MAC Address, Avatar, Color, Emoji |
This table groups the catalogue for reading; it is not the catalogue itself. GET /fields returns every name your release carries, and that response is the authority.
An address can come from the deployment's configured address dataset. Synthetic generation does not imply that an address or other generated value cannot coincide with a real one.
Smart and dynamic types
| Type | Use |
|---|---|
Derived | Interpolate other fields with {{field}}, or use the supported expression mode. |
Mapped | Map another field's value through a configured lookup. |
Nested | Inline child fields in one object or array. |
Template | Generate from a saved template reference. |
Custom | Choose values from a weighted distribution or reusable value library. |
AI | Generate from a prompt using the configured AI service. |
API Response | Read values from a configured endpoint. |
DB Response | Read values using a configured database query. |
Python Script | Use custom script output. |
Null | Emit one fixed value in every row. The catalogue default emits an empty string, not null. |
API Response and DB Response can return real source data. Select and review a masking policy before using sensitive source values outside their approved context.
A Null field reads options.value as a keyword, case-insensitively: "null" emits null, "empty" or "empty string" emits "", "[]" an empty array and "{}" an empty object. Any other text is emitted literally, so Null doubles as a constant. The catalogue default is {"value": ""}, which is not one of those keywords and therefore emits an empty string - set "null" explicitly when you want null. A field that carries no options at all is not an exception: POST /datamaker fills in the catalogue's declared options for any field that has none, so an options-less Null field emits an empty string too.
Options
Options are type-specific. For example, Number supports min and max; Custom uses options.distribution; Derived uses options.mode and options.value. Do not assume every type accepts a universal unique, nullable or sensitive option.
curl --fail-with-body "$DATAMAKER_API_URL/fields" \
-H "X-API-Key: $DATAMAKER_API_KEY"The response is an array of {type, options, meta} objects. options provides defaults and meta describes editor controls. Use this response to check names and configuration before creating a template programmatically.
One option is not a generator setting at all. options.invalid declares the constraint a field is under - { "kind": "required" | "type" | "length" | "format" | "enum" | "range" } - and is read only when building a negative-test set. It does not affect ordinary generation.