# Duplicate database rows

`POST /v1/databases/{databaseId}/rows/duplicate`

Copies rows (title, values and body), each right after its original.

Scope: `docs:write`. Undoable.

## Request

```bash
curl -X POST "https://api.lydie.co/v1/databases/01JCQ3V5MZ8G4ZK2X7T9R6N1PB/rows/duplicate" \
  -H "Authorization: Bearer $LYDIE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "rowIds": [
      "01JCQ3V5MZ8G4ZK2X7T9R6N1PB"
    ]
  }'
```

## Path parameters

- `databaseId` (ULID, required)

## Body

- `rowIds` (ULID[], required): (1–1000 items)
- `ids` (ULID[], optional): Client-minted ids for the copies, in order.

## Response

- `rows` (Document[], required)
  - `id` (ULID, required)
  - `workspaceId` (string, required): (1–64 chars)
  - `parentId` (ULID, required, nullable)
  - `title` (string, required): (1–255 chars)
  - `sortKey` (string, required): (1–256 chars)
  - `properties` (object, required)
  - `createdAt` (timestamp, required)
  - `updatedAt` (timestamp, required)
  - `deletedAt` (timestamp, required, nullable)
  - `createdBy` (string, optional, nullable): (≥ 1 chars)
  - `updatedBy` (string, optional, nullable): (≥ 1 chars)

```json
{
  "rows": [
    {
      "id": "01JCQ3V5MZ8G4ZK2X7T9R6N1PB",
      "workspaceId": "01JCQ3TZ0WJ8K4M2X7T9R6N1PA",
      "parentId": null,
      "title": "Meeting notes",
      "sortKey": "a0",
      "properties": {
        "status": "draft"
      },
      "createdAt": "2026-11-12T09:30:00.000Z",
      "updatedAt": "2026-11-12T09:30:00.000Z",
      "deletedAt": null,
      "createdBy": null,
      "updatedBy": null
    }
  ]
}
```

Errors use the envelope described at https://developers.lydie.co/errors.md.
