Properties
Custom contact fields. Each property is a schema definition — values live in the JSON `properties` object on the contact itself.
Create a property
`key` must be lowercase, start with a letter, and use only letters, numbers, and underscores.
/propertiesAuthorizations
Authorization API key for your workspace, scoped to contacts:manage. Pass it as a Bearer token in the Authorization header.
Body · application/json
keylabeltypedefault_valuecurl https://api.mailcraft.host/v1/properties \
-X POST \
-H 'Authorization: Bearer sk_live_...' \
-H 'Content-Type: application/json' \
-d '{
"key": "plan",
"label": "Plan",
"type": "string",
"default_value": "free"
}'{
"data": {
"id": 2,
"key": "plan",
"label": "Plan",
"type": "string",
"default_value": "free",
"created_at": "2026-09-22T14:08:00.000000Z"
}
}List properties
Returns every custom contact property defined for the workspace.
/propertiesAuthorizations
Authorization API key for your workspace, scoped to contacts:manage. Pass it as a Bearer token in the Authorization header.
curl https://api.mailcraft.host/v1/properties \
-H 'Authorization: Bearer sk_live_...'{
"data": [
{ "id": 2, "key": "plan", "label": "Plan", "type": "string", "default_value": "free" }
]
}Delete a property
Deletes the property definition. Existing contacts keep the value under that key in their `properties` JSON until overwritten.
/properties/{property}Authorizations
Authorization API key for your workspace, scoped to contacts:manage. Pass it as a Bearer token in the Authorization header.
curl https://api.mailcraft.host/v1/properties/2 \
-X DELETE \
-H 'Authorization: Bearer sk_live_...'(empty body)