> ## Documentation Index
> Fetch the complete documentation index at: https://docs.deal-pipe.de/llms.txt
> Use this file to discover all available pages before exploring further.

# Create projects and import units

> Use write operations and synchronous batch imports.

## Create a project

Send `POST /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.

```json theme={null}
{
  "name": "Example project",
  "street": "Musterstraße",
  "houseNumber": "10",
  "postalCode": "10115",
  "city": "Berlin"
}
```

## Add units

Create one unit with `POST /projects/{id}/properties`. For several units, use `POST /projects/{id}/imports` with this body:

```json theme={null}
{
  "units": [
    {
      "unitIdentifier": "WE-01",
      "unitNumber": "1",
      "etage": 1,
      "wohnflaecheQm": "64.50",
      "kaufpreis": "320000.00",
      "visibility": "offline",
      "status": "frei"
    }
  ]
}
```

A batch import accepts 1 to 200 units. `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 with `202` 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.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.