# Add rows

Add one row (`cells`), or up to 500 (`rows`) all or nothing. Scope `rows:write`.

## Endpoint

`POST /v1/ingest/rows`

## Request body

Content type: `application/json`.

```json
{
  "cells": {
    "Company": "Acme Ltd",
    "Amount": 25000,
    "Close date": "2026-10-01"
  }
}
```

## Responses

### 201

Written. One row answers `data` plus its receipt; a batch answers `data` and `receipts` as lists.

Content type: `application/json`.

```json
{
  "data": {
    "id": "",
    "position": 1,
    "source": "string",
    "cells": {},
    "createdBy": "string"
  },
  "filled": [
    "string"
  ],
  "coerced": [
    {
      "column": "string",
      "sent": "string",
      "stored": "string"
    }
  ],
  "ignored": [
    {
      "column": "string",
      "why": "string"
    }
  ]
}
```

### 400

A cell or the body is wrong; nothing was written.

Content type: `application/json`.

```json
{
  "error": {
    "message": "string",
    "errors": [
      {
        "index": 1,
        "message": "string"
      }
    ]
  }
}
```

### 401

No key, or an unknown or revoked one.

Content type: `application/json`.

```json
{
  "error": {
    "message": "string",
    "errors": [
      {
        "index": 1,
        "message": "string"
      }
    ]
  }
}
```

### 403

The key was not given `rows:write`.

Content type: `application/json`.

```json
{
  "error": {
    "message": "string",
    "errors": [
      {
        "index": 1,
        "message": "string"
      }
    ]
  }
}
```

### 429

Over 120 requests a minute; wait `Retry-After` seconds.

Content type: `application/json`.

```json
{
  "error": {
    "message": "string",
    "errors": [
      {
        "index": 1,
        "message": "string"
      }
    ]
  }
}
```
