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.
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ø.
- Start en gratis prøveperiode (eller log ind i et eksisterende workspace på app.floral.so).
- Å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.
- Kald
GET /api/v1/workspaces/{workspaceSlug}/companiesmed tokenet som Bearer-header. Quickstart fortsætter med en relationssøgning. - Til en AI-klient tilføjer I
https://app.floral.so/mcpsom 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
- /.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:readRead companies, people, relationships and custom-field definitions in the workspace.contacts:writeCreate, update, archive and restore companies and people.meetings:readRead meetings, approved summaries and briefings.meetings:writeCreate meetings and submit meeting content for summarisation.
Konventioner
- JSON-fejl
- Alle fejl er JSON:
{ "error": { "code", "message", "requestId" } }. Koder er stabile strenge somINVALID_INPUT,NOT_FOUNDellerRATE_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 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 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.
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.