API, webhooks och MCP: koppla ditt affärssystem till journalen
Om du sköter gården med ett affärssystem, ett kalkylblad för kostnader eller din rådgivares program är det meningslöst att skriva in åtgärderna två gånger. Här är dokumentationen för att hämta journalen, kostnaderna och läget för regelefterlevnaden utifrån, och för att lägga in åtgärder från det system du redan använder.
Basen är https://agrogps-api.fly.dev/api/v1. Den är i produktion sedan den 17 september 2026. Den svarar alltid med JSON, även vid fel.
Två sätt att identifiera sig
| Vem anropar | Header | Vad den får göra |
|---|---|---|
| Appen eller webben | Authorization: Bearer <sesión> | Allt, även skapa och återkalla nycklar |
| Ett externt system | X-API-Key: agk_… | Läsa, eller läsa och skriva beroende på nyckelns omfång |
Nyckeln skapas en gång från din session och visas bara en gång: efteråt sparar vi bara dess hash. Tappar du bort den återkallar du den och skapar en ny. En läsnyckel som försöker skriva får 403 AUT_004. Nycklar kan inte skapa eller radera andra nycklar eller webhooks: det kräver alltid en persons session.
curl -X POST https://agrogps-api.fly.dev/api/v1/api-keys \
-H "Authorization: Bearer $SESION" \
-H "Content-Type: application/json" \
-d '{"name":"ERP Sage","scope":"read"}'
Vad du kan läsa
| Endpoint | Returnerar |
|---|---|
GET /farms | Nyckelinnehavarens gårdar, med roll |
GET /sync/entries?farm_id=…&since=0 | Alla åtgärder med samtliga journalfält, paginerade med next |
GET /groups/:id/overview | Gruppens översikt: åtgärder, kostnad, intäkter, marginal, behandlade hektar och gröda per gård |
GET /advisor/portfolio | Rådgivarens portfölj: vilka gårdar som är à jour och vilka som inte är det |
GET /advisor/farms/:id/pending | Fälten som återstår att fylla i, åtgärd för åtgärd |
GET /notebook/entries/:id/history | Vem som ändrade vad och när i en åtgärd |
Med en skrivnyckel kan du dessutom registrera åtgärder med POST /sync/entries, med samma innehåll som appen använder. Synkroniseringen går via since, så en nattlig körning bara hämtar det som har ändrats.
Signerade webhooks
I stället för att fråga var femte minut meddelar vi dig. Du registrerar en publik https-URL och vi skickar ett meddelande när något händer på en gård där du är ägare eller ansvarig.
| Händelse | När den utlöses |
|---|---|
entry.pushed | Åtgärder synkroniseras och minst en accepteras |
entry.reviewed | En rådgivare eller ägaren godkänner eller markerar en åtgärd |
webhook.test | Du trycker på testa |
Varje leverans har X-Agro-Event, X-Agro-Timestamp i Unix-sekunder och X-Agro-Signature med HMAC-SHA256 av "<timestamp>.<cuerpo>". Kontrollera båda: signaturen och att klockan inte skiljer mer än fem minuter.
import hmac, hashlib, time
ts = request.headers["X-Agro-Timestamp"]
assert abs(time.time() - int(ts)) < 300
esperada = "sha256=" + hmac.new(
secreto.encode(), ts.encode() + b"." + cuerpo, hashlib.sha256
).hexdigest()
ok = hmac.compare_digest(esperada, request.headers["X-Agro-Signature"])
Leveransreglerna, tydligt sagda så att du slipper överraskningar: ett försök, sex sekunders väntan och inga nya försök. Vi följer inte omdirigeringar och avvisar privata adresser, länklokala adresser och molnens metadataadresser, både när URL:en registreras och när DNS slås upp vid varje leverans. Behöver ditt system garantier, använd webhooken som signal och GET /sync/entries med since som skyddsnät: meddelandet är en artighet, API:et är sanningen.
MCP för AI-assistenter
Samma API finns som MCP-server, protokollet som assistenter använder för att koppla upp sig mot verktyg. Du kan fråga en assistent till exempel vilka gårdar som ligger efter, vad säsongen har kostat eller vad som saknas inför en kontroll.
{ "mcpServers": { "agro-gps": {
"command": "npx", "args": ["-y", "agro-gps-mcp"],
"env": { "AGROGPS_API_KEY": "agk_…" } } } }
Tillgängliga verktyg: list_farms, list_entries, entry_history, list_groups, group_overview, advisor_portfolio, advisor_pending och record_entry. Det sista fungerar bara med skrivnyckel, markeras i historiken som skrivet via API och skickar aldrig något till myndigheterna.
Varför API:et inte går att fuska med
Ett API ovanpå en journal med rättslig betydelse måste tåla granskning. I Spanien tillåter RD 1054/2022 att journalen förs i vilket IT-system som helst som uppfyller kraven i bilaga II och kan utbyta data med SIEX, och det är tydligt att det är brukaren och inte programmet som ansvarar för uppgifternas riktighet. Vår del är integriteten, och den sitter i koden, i alla länder.
| Vad någon kunde försöka | Vad API:et gör |
|---|---|
| Registrera i dag med ett datum för flera månader sedan | Varje åtgärd sparar det angivna datumet och när den faktiskt kom in till servern, och historiken noterar antalet dagars fördröjning |
| Registrera med ett framtida datum | Avvisas om det ligger mer än 24 timmar fram |
| Skriva utan en person bakom | Varje åtgärd har en upphovsperson, och de som kommer in via nyckel märks med nyckelns prefix |
| Radera det som är i vägen | Inget raderas: raderingar är gravstenar med datum |
| Skicka in till myndigheterna automatiskt | Officiell inlämning kräver en persons session med behörighet: en nyckel får 403 SIE_403 |
Officiell inlämning finns i dag bara i Spanien och väntar där på godkännande region för region. I Sverige finns inget att skicka in: via API:et läser och skriver du journalen.
Fel
Alltid {"code":"INT_NNN","message":"…"}, aldrig en stackspårning. De du oftast kommer att se: AUT_003 ogiltig nyckel, AUT_004 läsnyckel, AUT_429 för många försök, AUT_503 autentisering inte tillgänglig (inte samma sak som fel nyckel: försök igen), INT_003 URL som inte är https, INT_403 åtgärd som kräver session, INT_404 nyckel eller webhook som inte är din.
Så får du en nyckel
API:et ingår i företags- och rådgivarplanerna. Har du redan ett konto skapar du nyckeln i appen. Funderar du på integrationen innan du köper, skriv till support@agrogps.eu och berätta vilket system du vill koppla, så ger vi dig testtillgång. Dokumentationen är öppen och gratis: vi vill hellre att du läser den innan du betalar.
Vanliga frågor
Kan jag föra hela journalen från mitt affärssystem utan att öppna appen? Ja för att registrera och läsa. Nej för officiell inlämning till myndigheterna, som kräver en persons session med behörighet att skicka. Det är ett medvetet val: den handlingen har rättsliga följder och ska inte utlösas av en automatisk process.
Är uppgifterna mina? Ja. Den fullständiga exporten är alltid gratis, även om du avslutar, och via API:et får du exakt samma som du ser på skärmen, inklusive historik och ändringsspår.
Finns det en gräns för anrop? Det finns ingen publicerad kvot för normal användning från ett affärssystem. Att testa en webhook är begränsat till tjugo gånger per användare och IP var tionde minut, så att ingen använder funktionen för att skicka trafik.
Vad händer om ni ändrar API:et? Versionen står i URL:en. Så länge v1 är publicerad tar vi inte bort fält och ändrar inte betydelsen av dem som finns; nytt läggs till. Om det en dag kommer en v2 lever de sida vid sida.
Finns MCP-servern på npm? Inte ännu. I dag körs den från kodförrådet; publiceringen är inte beslutad. Konfigurationen ovan är den som kommer att fungera den dag den publiceras.
Fungerar det för en rådgivare med många kunder? Det är vad advisor/portfolio är till för: ett anrop visar vilka gårdar som är à jour och vilka som har ofullständiga åtgärder, utan att gå in i dem en och en.