---
title: "Udviklere - Florals API, OpenAPI-spec og MCP-server | Floral"
description: "Florals udviklerguide: det offentlige REST-API på app.floral.so/api/v1 med OpenAPI 3.1-spec, personlige adgangstokens med scopes, JSON-fejl, rate-limit-headers og MCP-serveren med OAuth 2.0 til Claude, ChatGPT og andre AI-klienter."
canonical: https://floral.so/da/udviklere
---

# Udviklere - Florals API, OpenAPI-spec og MCP-server | Floral

> Florals udviklerguide: det offentlige REST-API på app.floral.so/api/v1 med OpenAPI 3.1-spec, personlige adgangstokens med scopes, JSON-fejl, rate-limit-headers og MCP-serveren med OAuth 2.0 til Claude, ChatGPT og andre AI-klienter.

Source: https://floral.so/da/udviklere

Udviklere

# Byg på Floral: REST-API, OpenAPI-spec og en MCP-server.

Alt, hvad et workspace ved, kan nås af maskiner såvel som mennesker. Det offentlige REST-API dækker virksomheder, personer, briefinger og mødereferater og er beskrevet i et OpenAPI 3.1-dokument. MCP-serveren stiller 58 værktøjer til rådighed for Claude, ChatGPT, Codex og enhver anden MCP-klient. Begge kører med rettighederne hos den person, der har forbundet dem, aldrig mere, og data bliver i EU.

[Åbn OpenAPI-spec](https://floral.so/openapi.json)[Læs dokumentationen](https://docs.floral.so)

## Kom godt i gang

I behøver ikke tale med salg for at lave det første kald. Floral har en gratis prøveperiode på 30 dage, og tokenet opretter I selv i appen. Der er ikke et separat sandkassemiljø: brug et prøve-workspace med testdata som testmiljø.

1. [Start en gratis prøveperiode](https://floral.so/da/tilmelding) (eller log ind i et eksisterende workspace på app.floral.so).
2. Åbn **Indstillinger › Assistenter › MCP** i workspacet, opret et personligt adgangstoken, vælg de smalleste scopes og en udløbsdato, og kopiér tokenet: det vises kun én gang.
3. Kald `GET /api/v1/workspaces/{workspaceSlug}/companies` med tokenet som Bearer-header. [Quickstart](https://docs.floral.so/developers/quickstart.md) fortsætter med en relationssøgning.
4. Til en AI-klient tilføjer I `https://app.floral.so/mcp` som remote MCP-server og logger ind med OAuth, eller indsætter samme token.

## Det offentlige API

Et versioneret REST-API over JSON. Hvert kald er bundet til ét workspace via dets slug. Lister bruger cursor-paginering, poster har ETags, og hver operation i spec'en har et unikt operationId, typede parametre, svarskemaer og de scopes, den kræver. Derfor kan en klient eller en LLM-værktøjsdefinition genereres direkte fra dokumentet. Spec'en på floral.so/openapi.json er den, produktet udgiver, cachet hver time.

Base URL

`https://app.floral.so/api/v1`

OpenAPI

<https://floral.so/openapi.json> (OpenAPI 3.1.0, 22 operations)

Docs

<https://docs.floral.so>

API catalog

<https://floral.so/.well-known/api-catalog> (RFC 9727)

## Autentificering og scopes

Autentificér med et personligt adgangstoken oprettet i jeres Floral-workspace, sendt som Bearer-token. Et token er bundet til ét workspace og har et eller flere navngivne scopes. Bed kun om det, I har brug for: spec'en deklarerer scopes under `x-scopes` på sikkerhedsskemaet og angiver `x-required-scopes` på hver operation.

curl https://app.floral.so/api/v1/workspaces/{workspaceSlug}/companies \
  -H "Authorization: Bearer $FLORAL_TOKEN" \
  -H "Accept: application/json"

### Scopes

- `contacts:read`Read companies, people, relationships and custom-field definitions in the workspace.
- `contacts:write`Create, update, archive and restore companies and people.
- `meetings:read`Read meetings, approved summaries and briefings.
- `meetings:write`Create meetings and submit meeting content for summarisation.

## Konventioner

JSON-fejl

Alle fejl er JSON: `{ "error": { "code", "message", "requestId" } }`. Koder er stabile strenge som `INVALID_INPUT`, `NOT_FOUND` eller `RATE_LIMITED`. Nævn requestId, når I skriver til os.

Samtidighed

Opdateringer er betingede. Send postens ETag i If-Match; en forældet værdi giver 412, en manglende 428.

Paginering

Liste-endpoints returnerer en side og en cursor. Send cursoren tilbage for næste side; ingen offsets.

Asynkront arbejde

Oprettelse af en briefing returnerer 202 med briefingens id. Poll den, indtil status er klar.

Markdown til agenter

Alle sider på floral.so leveres også som Markdown, når I sender `Accept: text/markdown`, og [llms.txt](https://floral.so/llms.txt) er den korte guide til sitet.

## Rate limits

Grænserne er pr. token og pr. minut, opdelt efter operationstype. Hvert svar bærer den aktuelle grænse og hvad der er tilbage; en 429 fortæller, hvornår I kan prøve igen.

| READ                    | 120 kald / minut |
| ----------------------- | ---------------- |
| WRITE / CREATE / ACTION | 60 kald / minut  |
| GENERATION              | 10 kald / minut  |

`X-RateLimit-Limit` · `X-RateLimit-Remaining` · `Retry-After` (429)

## MCP-server

Model Context Protocol-serveren taler Streamable HTTP og autentificerer med OAuth 2.0 (autorisationsserver og understøttede scopes er udgivet som RFC 9728 protected-resource-metadata). Forbindelser via OAuth er skrivebeskyttede, og alt kører med den forbundne brugers medlemskab, rolle og funktionsadgang. Opsætningsguides pr. klient findes i oversigten over [API og MCP](https://floral.so/da/funktioner/api-og-mcp) og i dokumentationen.

Endpoint

`https://app.floral.so/mcp`

RFC 9728

<https://app.floral.so/.well-known/oauth-protected-resource/mcp>

RFC 8414

<https://clerk.app.floral.so/.well-known/oauth-authorization-server>

server.json

<https://floral.so/server.json>

## Versionering og udfasning

Hovedversionen i stien (`/api/v1`) er kompatibilitetsgrænsen. Hold basisstien konfigurerbar, læs kun de felter, I har brug for, og regn med ukendte felter og enum-værdier.

- Inden for en hovedversion kan Floral tilføje operationer, valgfrie request-felter og filtre, svarfelter og enum-værdier, hvor feltdokumentationen tillader det.
- En brydende ændring udgives som en ny hovedsti med mindst 180 dages overlap. Inden overlappet starter, offentliggør vi erstatningen, migreringstrin, ikrafttrædelsesdato og en supportkanal.
- Udfasede operationer markeres i API-referencen med deres erstatning. Et bekræftet sikkerheds- eller privatlivsproblem kan forkorte vinduet.
- Hele politikken står i dokumentationen: [Versioning and deprecation](https://docs.floral.so/developers/api/versioning.md).

## Operationer

Fra det aktuelle OpenAPI-dokument. Spec’en er kilden; denne liste er et kort.

| Operation                    | Method | Path                                                 |
| ---------------------------- | ------ | ---------------------------------------------------- |
| searchRelationshipsV1        | GET    | /workspaces/{workspaceSlug}/relationships/search     |
| searchCompanyRegistryV1      | GET    | /workspaces/{workspaceSlug}/company-registry/search  |
| listCompaniesV1              | GET    | /workspaces/{workspaceSlug}/companies                |
| createCompanyV1              | POST   | /workspaces/{workspaceSlug}/companies                |
| getCompanyV1                 | GET    | /workspaces/{workspaceSlug}/companies/{id}           |
| updateCompanyV1              | PATCH  | /workspaces/{workspaceSlug}/companies/{id}           |
| archiveCompanyV1             | POST   | /workspaces/{workspaceSlug}/companies/{id}/archive   |
| restoreCompanyV1             | POST   | /workspaces/{workspaceSlug}/companies/{id}/restore   |
| listCustomFieldDefinitionsV1 | GET    | /workspaces/{workspaceSlug}/custom-field-definitions |
| listPeopleV1                 | GET    | /workspaces/{workspaceSlug}/people                   |
| createPersonV1               | POST   | /workspaces/{workspaceSlug}/people                   |
| getPersonV1                  | GET    | /workspaces/{workspaceSlug}/people/{id}              |
| updatePersonV1               | PATCH  | /workspaces/{workspaceSlug}/people/{id}              |
| archivePersonV1              | POST   | /workspaces/{workspaceSlug}/people/{id}/archive      |
| restorePersonV1              | POST   | /workspaces/{workspaceSlug}/people/{id}/restore      |
| listBriefingsV1              | GET    | /workspaces/{workspaceSlug}/briefings                |
| createBriefingV1             | POST   | /workspaces/{workspaceSlug}/briefings                |
| getBriefingV1                | GET    | /workspaces/{workspaceSlug}/briefings/{id}           |
| listSummariesV1              | GET    | /workspaces/{workspaceSlug}/summaries                |
| getSummaryV1                 | GET    | /workspaces/{workspaceSlug}/summaries/{id}           |
| updateSummaryV1              | PATCH  | /workspaces/{workspaceSlug}/summaries/{id}           |
| approveSummaryV1             | POST   | /workspaces/{workspaceSlug}/summaries/{id}/approve   |

## Bygger I noget på Floral?

Fortæl os, hvad I integrerer. Vi kan sætte et workspace op med demodata, og vi læser hver besked.

[Lad os mødes](https://floral.so/da/book-demo)[Kontakt](https://floral.so/da/kontakt)
