# API: Account plans

| Method | Path | What it does | Scope |
|---|---|---|---|
| GET | `/v1/accounts/:id/committee` | The account's buying committee: role and stance per person with evidence, flags (no economic buyer or champion, single-threaded) and recent changes | `accounts:read` |
| POST | `/v1/accounts/:id/committee/build` | Build or rebuild the account's buying committee (stances need a verified quote; overrides are kept) | `accounts:write` |
| GET | `/v1/accounts/:id/plan` | An account's living plan: priorities, pain, people, current tools, risks and the next move, each with sources and a date, plus its change log | `accounts:read` |
| POST | `/v1/accounts/:id/plan/items` | Add an item to the plan (pinned: refreshes keep it) | `accounts:write` |
| DELETE | `/v1/accounts/:id/plan/items/:key` | Remove a plan item (a refresh won't add it back) | `accounts:write` |
| PATCH | `/v1/accounts/:id/plan/items/:key` | Edit, pin or unpin a plan item (an edit pins it: refreshes never overwrite it) | `accounts:write` |
| POST | `/v1/accounts/:id/plan/next-move` | Turn the next move into a CRM task (through the policy engine) or a drafted email that waits for your approval | `accounts:write` |
| POST | `/v1/accounts/:id/plan/refresh` | Build or refresh the plan now from research, signals, conversations, deals and contacts (pinned edits are kept) | `accounts:write` |
| PATCH | `/v1/committee-members/:id` | Override a person's role or stance (pinned and logged; null clears the override) | `accounts:write` |
| GET | `/v1/contacts/:id/stakeholder-brief` | A brief on one person: background, history with us, contract-review habits; every item sourced, unknowns shown (only what you may see) | `contacts:read` |
| GET | `/v1/deals/:id/committee` | A deal's buying committee | `deals:read` |
| POST | `/v1/deals/:id/committee/build` | Build or rebuild a deal's buying committee | `deals:write` |

## Examples

### GET /v1/accounts/$ID/committee

The account's buying committee: role and stance per person with evidence, flags (no economic buyer or champion, single-threaded) and recent changes

```bash
curl -s "https://api.closefinch.com/v1/accounts/$ID/committee" \
  -H "Authorization: Bearer $RA_API_KEY"
```

```js
const res = await fetch(`https://api.closefinch.com/v1/accounts/${id}/committee`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();
```

### POST /v1/accounts/$ID/committee/build

Build or rebuild the account's buying committee (stances need a verified quote; overrides are kept)

```bash
curl -s -X POST "https://api.closefinch.com/v1/accounts/$ID/committee/build" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
```

```js
const res = await fetch(`https://api.closefinch.com/v1/accounts/${id}/committee/build`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();
```

### GET /v1/accounts/$ID/plan

An account's living plan: priorities, pain, people, current tools, risks and the next move, each with sources and a date, plus its change log

```bash
curl -s "https://api.closefinch.com/v1/accounts/$ID/plan" \
  -H "Authorization: Bearer $RA_API_KEY"
```

```js
const res = await fetch(`https://api.closefinch.com/v1/accounts/${id}/plan`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();
```

### POST /v1/accounts/$ID/plan/items

Add an item to the plan (pinned: refreshes keep it)

```bash
curl -s -X POST "https://api.closefinch.com/v1/accounts/$ID/plan/items" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
```

```js
const res = await fetch(`https://api.closefinch.com/v1/accounts/${id}/plan/items`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();
```

### DELETE /v1/accounts/$ID/plan/items/$KEY

Remove a plan item (a refresh won't add it back)

```bash
curl -s -X DELETE "https://api.closefinch.com/v1/accounts/$ID/plan/items/$KEY" \
  -H "Authorization: Bearer $RA_API_KEY"
```

```js
const res = await fetch(`https://api.closefinch.com/v1/accounts/${id}/plan/items/${key}`, {
  method: "DELETE",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();
```

### PATCH /v1/accounts/$ID/plan/items/$KEY

Edit, pin or unpin a plan item (an edit pins it: refreshes never overwrite it)

```bash
curl -s -X PATCH "https://api.closefinch.com/v1/accounts/$ID/plan/items/$KEY" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
```

```js
const res = await fetch(`https://api.closefinch.com/v1/accounts/${id}/plan/items/${key}`, {
  method: "PATCH",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();
```

### POST /v1/accounts/$ID/plan/next-move

Turn the next move into a CRM task (through the policy engine) or a drafted email that waits for your approval

```bash
curl -s -X POST "https://api.closefinch.com/v1/accounts/$ID/plan/next-move" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
```

```js
const res = await fetch(`https://api.closefinch.com/v1/accounts/${id}/plan/next-move`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();
```

### POST /v1/accounts/$ID/plan/refresh

Build or refresh the plan now from research, signals, conversations, deals and contacts (pinned edits are kept)

```bash
curl -s -X POST "https://api.closefinch.com/v1/accounts/$ID/plan/refresh" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
```

```js
const res = await fetch(`https://api.closefinch.com/v1/accounts/${id}/plan/refresh`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();
```

### PATCH /v1/committee-members/$ID

Override a person's role or stance (pinned and logged; null clears the override)

```bash
curl -s -X PATCH "https://api.closefinch.com/v1/committee-members/$ID" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
```

```js
const res = await fetch(`https://api.closefinch.com/v1/committee-members/${id}`, {
  method: "PATCH",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();
```

### GET /v1/contacts/$ID/stakeholder-brief

A brief on one person: background, history with us, contract-review habits; every item sourced, unknowns shown (only what you may see)

```bash
curl -s "https://api.closefinch.com/v1/contacts/$ID/stakeholder-brief" \
  -H "Authorization: Bearer $RA_API_KEY"
```

```js
const res = await fetch(`https://api.closefinch.com/v1/contacts/${id}/stakeholder-brief`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();
```

### GET /v1/deals/$ID/committee

A deal's buying committee

```bash
curl -s "https://api.closefinch.com/v1/deals/$ID/committee" \
  -H "Authorization: Bearer $RA_API_KEY"
```

```js
const res = await fetch(`https://api.closefinch.com/v1/deals/${id}/committee`, {
  method: "GET",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}` },
});
const data = await res.json();
```

### POST /v1/deals/$ID/committee/build

Build or rebuild a deal's buying committee

```bash
curl -s -X POST "https://api.closefinch.com/v1/deals/$ID/committee/build" \
  -H "Authorization: Bearer $RA_API_KEY" \
  -H "content-type: application/json" \
  -d '{}'
```

```js
const res = await fetch(`https://api.closefinch.com/v1/deals/${id}/committee/build`, {
  method: "POST",
  headers: { authorization: `Bearer ${process.env.RA_API_KEY}`, "content-type": "application/json" },
  body: JSON.stringify({}), // fields: see the OpenAPI schema
});
const data = await res.json();
```

Request and response schemas: [https://www.closefinch.com/openapi.json](https://www.closefinch.com/openapi.json). All resources: [API reference](https://www.closefinch.com/docs/api).
