# Quickstart

> From a fresh token to approving a card and getting a reply from your agent, using nothing but curl.

Canonical: https://revnu.com/docs/quickstart

Five steps, each one curl command. By the end you will have approved a card and had a conversation with your agent from a terminal.

## 1. Mint a token

In the dashboard, open **Settings → API Tokens**, give it a label and only the scopes the tool needs. The token is shown once. We store a hash.

> **Tip.** Give a wall screen review scopes only. A leaked read-only token cannot cause a send, a publish or a spend.

## 2. Check who you are

`GET /me` needs no scope, so it is the call to verify any token with.

```bash
curl -H "Authorization: Bearer $REVNU_API_TOKEN" https://revnu.com/api/v1/me
```

```json
{
  "me": {
    "label": "wall dashboard",
    "scopes": ["review:read", "review:write"],
    "account": { "id": "…", "name": "Acme" },
    "limits": { "reads": { "perMinute": 300, "burst": 600 } }
  }
}
```

## 3. Read what is waiting

```bash
curl -H "Authorization: Bearer $REVNU_API_TOKEN" "https://revnu.com/api/v1/review?limit=10"
```

Every card carries `actions`, the exact verbs the API accepts for it, and `primaryLabel`, what the dashboard's main button says. Drive your UI from those, never from the card type.

## 4. Approve it

```bash
curl -X POST -H "Authorization: Bearer $REVNU_API_TOKEN" \
  -H "content-type: application/json" -d '{"action":"approve"}' \
  https://revnu.com/api/v1/review/k97…/answer
```

> **Careful.** This is a real approval. A blog draft publishes, a Reddit post posts. Gmail cards go through [`/send`](/docs/review-send) instead, because sending email holds a delivery lease.

## 5. Ask the agent something

```bash
curl -X POST -H "Authorization: Bearer $REVNU_API_TOKEN" \
  -H "content-type: application/json" \
  -d '{"text":"What did we ship this week?","waitSeconds":90}' \
  https://revnu.com/api/v1/agent/messages
```

With `waitSeconds` the request stays open until the agent replies, and the response is `200` with the reply inline. Without it you get `202` and a `requestId` to poll.

## Next

Skip the curl and install the CLI: `npm install -g @revnu/cli && revnu auth login`. See [Install the CLI](/docs/cli).

## Frequently asked questions

### Do I need an SDK?

No. The API is plain JSON over HTTPS with a bearer header, so any HTTP client works. The `@revnu/cli` package is a convenience for the terminal and for MCP hosts, not a requirement.

### Why did my approve return 409?

The card does not accept that verb right now. The response lists the verbs it does accept in `actions`. Most often the card was already resolved, or it is a Gmail card that needs `/send`.
