Udviklere
Byg på Floral: REST-API, OpenAPI-spec og en MCP-server.
Både maskiner og mennesker kan nå alt det, et workspace ved. Det offentlige REST-API dækker virksomheder, personer, briefinger og mødereferater og er beskrevet i et OpenAPI 3.1-dokument. MCP-serveren giver Claude, ChatGPT, Codex og alle andre MCP-klienter adgang til 58 værktøjer. Begge dele kører med de rettigheder, personen bag forbindelsen har, og aldrig flere. 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 i stedet et prøve-workspace med testdata.
- Start en gratis prøveperiode (eller log ind i et eksisterende workspace på app.floral.so).
- Åbn Indstillinger › Assistenter › MCP i workspacet, og opret et personligt adgangstoken. Vælg de smalleste scopes og en udløbsdato. Kopiér tokenet med det samme, for 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. I kan også indsætte det samme token.
Det offentlige API
API'et er et versioneret REST-API med 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 I generere en klient eller en LLM-værktøjsdefinition direkte fra dokumentet. Spec'en på floral.so/openapi.json er den, produktet selv udgiver. Den bliver cachet en time ad gangen.
- 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
I autentificerer med et personligt adgangstoken. I opretter det i jeres Floral-workspace og sender det som Bearer-token. Et token er bundet til ét workspace og har et eller flere navngivne scopes. Bed kun om de scopes, 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, og en manglende giver 428.
- Paginering
- Liste-endpoints returnerer en side og en cursor. Send cursoren tilbage for at få næste side. Der er ingen offsets.
- Asynkront arbejde
- Når I opretter en briefing, får I 202 og briefingens id tilbage. 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 gælder pr. token og pr. minut og afhænger af operationstypen. Hvert svar viser den aktuelle grænse og det, 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 bruger 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. I finder en opsætningsguide til hver klient 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 udgiver vi som en ny hovedsti med mindst 180 dages overlap. Før 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
Listen kommer fra det aktuelle OpenAPI-dokument. Spec’en er kilden, og listen her er en oversigt.
| 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 vil integrere. Vi kan sætte et workspace op med demodata, og vi læser hver besked.