
# Champions Circle Board API

Champions Circle-anmodningstavlen er tilgængelig via API'en, så du kan læse den, søge i den og skrive til den fra dine egne scripts, eller lade en AI-assistent gøre det for dig via MCP. Det er den samme tavle, som du ser under **Circle → Requests** i appen: de samme anmodninger, de samme kommentarer og de samme månedlige grænser.

Kun Champions Circle-medlemmer kan bruge disse slutpunkter. Enhver anden konto modtager `403` med `reason: "not_circle_member"`. Opslag foretages som den konto, API-nøglen tilhører.

## Slutpunkter

| Metode | Sti | Hvad den gør |
| --- | --- | --- |
| `GET` | `/v1/circle/requests` | List tavlen, fastgjorte anmodninger først, derefter nyeste først. Søg med `q` (titel og detaljer), filtrer med `status` (`open`, `planned`, `building`, `shipped`, `declined`), paginer med `limit` (1 til 100, standard 25) og `cursor`. |
| `GET` | `/v1/circle/requests/{requestId}` | Én anmodning med alle detaljer. |
| `GET` | `/v1/circle/requests/{requestId}/comments` | Kommentarerne på en anmodning, ældste først, pagineret på samme måde. |
| `POST` | `/v1/circle/requests` | Indsend en anmodning. Brødtekst: `title` (påkrævet) og `details`. |
| `PATCH` | `/v1/circle/requests/{requestId}` | Rediger `title` og/eller `details` af en anmodning, du har skrevet. Enhver andens anmodning svarer `403` med `reason: "edit_not_allowed"`. |
| `POST` | `/v1/circle/requests/{requestId}/comments` | Svar på en anmodning. Brødtekst: `body`. |

Hver anmodning returneres med dens `id`, `title`, `details`, `status`, `author_name`, `vote_count`, `comment_count`, `created_at`, `updated_at` og et `url`, der åbner den i appen. Andre medlemmers e-mailadresser returneres aldrig.

### Paginering

List-kald returnerer `next_cursor`. Send den som `cursor` for at få den næste side; den er `null` på den sidste side. `total` er antallet af matches på tværs af alle sider.

### Månedlige grænser

API-opslag tæller mod de samme grænser som tavlen i appen: 4 anmodninger og 4 kommentarer pr. medlem inden for en rullende 30-dages periode. Over grænsen svarer kaldet `429` med et `resets_at`-tidspunkt for den næste ledige plads.

### Sikre genforsøg

Send en `Idempotency-Key`-header (eller et `idempotency_key`-felt i brødteksten) med en unik streng, når du indsender en anmodning eller en kommentar. Hvis kaldet får timeout, og du prøver igen med den samme nøgle, får du det opslag tilbage, som det første kald oprettede, med status `200` og `idempotent_replay: true`, i stedet for en dublet. Et genforsøg bruger aldrig en ekstra plads af din månedlige grænse.

```bash
curl -X POST "https://api.dmchamp.com/v1/circle/requests" \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Idempotency-Key: dark-mode-2026-10-06" \
  -H "Content-Type: application/json" \
  -d '{"title": "Dark mode for the inbox", "details": "My team works late and would love a dark theme."}'
```

## Omfangsbegrænsede nøgler

Tavlen har to sektioner, som du kan give adgang til via en [scoped key](api-keys.md#scoped-keys):

| Sektion | Tillader |
| --- | --- |
| `Circle` | Listning, søgning og læsning af anmodninger og kommentarer. |
| `Circle Write` | Indsendelse af anmodninger, redigering af egne anmodninger og kommentering. |

Giv kun `Circle` til en nøgle, der kun skal læse tavlen. Din hovednøgle og en scoped key med en tom `tags`-liste kan bruge begge.

## Om MCP

Disse slutpunkter er en del af API-specifikationen, så de vises som værktøjer for enhver AI-assistent, du [forbinder via MCP](../integrations/connect-ai-clients.md), uden yderligere opsætning. Bed din assistent om at søge på opslagstavlen, før du opretter en sag, så den kan kommentere på en eksisterende anmodning i stedet for at oprette en dublet.
