# Quickstart

Three steps: make a key, read the board to see what a row takes, then add one.

## 1. Create a key

Open the board in Specter, then **Settings → Developer → Create key**. Give it a name and keep
**Read** and **Add rows** ticked. Copy the key — it is shown once.

```bash
export SPECTER_KEY='sbk_…'
```

<Callout type="warning" title="Server-side only">
  A key writes to your board. Keep it on your server — never in a browser, a mobile app or
  source control.
</Callout>

## 2. Read the board

```bash
curl "https://neo-app-api-prod-836053680024.us-central1.run.app/v1/ingest/board?rows=false" \
  -H "Authorization: Bearer $SPECTER_KEY"
```

The answer's `data.write` lists every column a row takes — its label, its format, and an example.
`data.write.example` is a whole body that would land on this board.

## 3. Add a row

Key each cell by the column's label (or its id):

```bash
curl -X POST https://neo-app-api-prod-836053680024.us-central1.run.app/v1/ingest/rows \
  -H "Authorization: Bearer $SPECTER_KEY" \
  -H "Content-Type: application/json" \
  -d '{"cells": {"Company": "Acme Ltd", "Amount": 25000}}'
```

A `201` answers the new row and a receipt of what was stored. The row is on the board now.

## Next

- [Add many rows at once](/boards/read-and-write#add-many-rows) — up to 500 in one request.
- [Cell formats](/boards/read-and-write#cell-formats) — what each kind of column accepts.
- [Keeping a key safe](/boards/create-a-key#keep-it-safe) — rotating and scoping keys.
