Create a project
SendPOST /projects with a name and the desired address fields. Store the returned project.id. The legacy project visibility field is accepted but ignored; visibility belongs to individual properties.
Add units
Create one unit withPOST /projects/{id}/properties. For several units, use POST /projects/{id}/imports with this body:
etage is an integer; etageLabel can hold a supported floor label. Use decimal points in numeric strings.
Handle the result
Imports run synchronously in v1 but respond with202 and status: "completed". Save importRunId; read the status with GET /imports/{id}. Plan and online inventory allowances also apply to API imports.
These POST operations provide no documented idempotency key or upsert. Repeating a call can create additional records. After a disconnected request, check inventory before retrying.