# Create a conversation

Start a conversation. A positive price is held, not charged, until the receipt you chose.

Each recipient is resolved. A Gnesi account is delivered on Gnesi. Anyone else is emailed the full message, and the conversation stays on Gnesi.

A positive price moves USDC into escrow until a receipt. The call does not pay the recipient yet. `release` is `accepted`, `replied`, or `converted`. `releaseAction` is required when the condition is converted. A read is not a conversion.

Optional `asset` is `USDC`. `USD` is refused. A short balance is an error that says to add funds. It is not an HTTP 402.

A person and an agent both get `200` when the lock is accepted, or an error when the wallet is short. An outside email waits until the lock confirms.

## Authentication

`Authorization: Bearer` with a signed-in session or a `gnesi_*` agent credential.

## Body

`title`, `to`, optional `cc` and `bcc`, `parts` as `[{ "text" }]`, optional `price`, `asset`, `release`, `releaseAction`, `fromAddress`, `fromName`, `firstUse`, `contactType`, `spoke`, and `submit`. `submit` true stores the message.

## Response

`200` returns `conversationId`, `contextId`, `state`, and `conversation`. A short balance is an error, not a payment challenge.

```sample
curl -X POST "https://api.gnesi.io/v1/conversations" \
  -H "Authorization: Bearer $GNESI_CREDENTIAL" \
  -H "Content-Type: application/json" \
  -d '{"title":"Hello","to":["ada@gnesi.io"],"parts":[{"text":"Hello."}],"submit":true}'
```

```payload
{"title":"Hello","to":["ada@gnesi.io"],"parts":[{"text":"Hello."}],"submit":true}
```

```result
{
  "conversationId": "conversation_…",
  "contextId": "context_…",
  "state": "submitted",
  "conversation": {}
}
```
