REST-API
HTTP-ytan för skript och integrationer: endpoints med parametrar och svarsformat, vad som bara finns över MCP, och vad som är spärrat för maskiner.
MCP är förstahandsvalet för agenter. REST-API:et finns för skript, egna integrationer och allt som inte talar MCP. Bakom båda ligger samma tjänstelager: en endpoint här och motsvarande MCP-verktyg returnerar samma data.
Basadress: https://astrid.so. Alla svar är JSON. Paginerade listor svarar
{ "data": [...], "total": n, "page": n, "totalPages": n } och tar page och
limit som frågeparametrar (limit 1 till 100, standard 50).
En ärlighet om stabilitet: MCP-verktygen är det kontrakt vi vårdar. REST-svaren delar form med webbappen och kan få nya fält över tid, så ignorera fält du inte känner igen i stället för att anta att listan är komplett.
Autentisering
Samma API-nyckel som MCP-servern använder:
Authorization: Bearer astrid_sk_…
Nyckeln bär organisationen, så det finns ingen parameter för org-id någonstans. Roller, planer och gränser fungerar precis som i Anslut en agent. Alla läs-endpoints fungerar med både läsnyckel och föreslå-nyckel.
Det här finns bara över MCP
REST har ingen motsvarighet till följande. Leta inte efter en endpoint, använd verktyget:
| Vill du ha | MCP-verktyg |
|---|---|
| Ekonomisk översikt: likviditet, momsskuld, resultat | get_overview |
| Momsrapport (SKV 4700) | get_moms_report |
| Bokföringsstatus i ett svep | get_bookkeeping_status |
| Köra en ny genomgång | get_genomgang |
| Föreslå en verifikation | propose_verification |
Läsa
GET /api/transactions?view=todo
Den riktiga att-bokföra-kön: avstämda rader är dolda och rader som redan har ett förslag i granskningskön är flaggade.
| Parameter | Värde |
|---|---|
view |
todo. Utelämnar du den får du råa listan där avstämda rader ingår, och den som konterar råa listan föreslår dubbelt |
limit |
1 till 100, standard 50 |
{
"data": [
{
"id": "…",
"date": "2026-08-12",
"description": "GOOGLE CLOUD EMEA",
"amount": -1234.5,
"currency": "SEK",
"bankAccount": "Företagskonto",
"pendingReview": false
}
],
"view": "todo"
}
Råa listan (view utelämnad) tar status, page och limit och svarar med
det paginerade standardformatet.
GET /api/journal
Bokförda verifikationer, paginerat standardformat.
| Parameter | Värde |
|---|---|
series |
Verifikationsserie, till exempel A |
from, to |
ÅÅÅÅ-MM-DD |
page, limit |
Standardpaginering |
Varje rad: id, voucherNumber (till exempel "A0052"), series, date,
description, status, totalDebit, lineCount, samt correctsEntryId och
replacesEntryId när verifikationen ingår i en rättelsekedja.
GET /api/journal/{id}
En verifikation med alla rader (konto och kontonamn), kostnadsställen och
underlag. id från listan ovan.
GET /api/review
Granskningskön. Svarar { "data": [...] }.
| Parameter | Värde |
|---|---|
status |
PENDING (standard), APPROVED, REJECTED eller MODIFIED |
GET /api/underlag/missing
Bokförda utbetalningar som saknar kvitto eller faktura. Grunden för kvittojakt. Utan parametrar: innevarande räkenskapsår.
| Parameter | Värde |
|---|---|
from, to |
ÅÅÅÅ-MM-DD |
limit |
1 till 200 |
curl -s "https://astrid.so/api/underlag/missing" \
-H "Authorization: Bearer $ASTRID_API_KEY"
{
"period": { "from": "2026-01-01", "to": "2026-12-31" },
"total": 4,
"hasMore": false,
"matchedToVendor": 3,
"rows": [
{
"transactionId": "…",
"date": "2026-07-03",
"description": "GOOGLE CLOUD EMEA",
"amount": -1234.5,
"vendor": {
"id": "google",
"name": "Google",
"portalUrl": "https://…",
"steps": ["…"],
"agentPlaybook": "…"
}
}
]
}
vendor är null för okända mottagare. Följer du en agentPlaybook: endast
fakturerings- och kvittosidor i användarens egen inloggade webbläsare, aldrig
kontoinställningar, aldrig inloggningsuppgifter.
Övriga läsningar
| Endpoint | Ger |
|---|---|
GET /api/receipts |
De 100 senaste kvittona med kopplad transaktion. Inga parametrar |
GET /api/invoices |
Kundfakturor. type, status, q (sök), standardpaginering |
GET /api/invoices/{id} |
En faktura med alla rader. Motsvarar MCP-verktyget get_invoice |
GET /api/customers |
Alla kunder, namnsorterade. Inga parametrar |
GET /api/genomgang |
Senast körda genomgången, eller null om ingen körts. Vill du köra en ny: MCP-verktyget get_genomgang |
GET /api/radgivning |
Deadlines, 3:12, preliminärskatt. Inga parametrar |
GET /api/dashboard |
Bokföringsstatistik: antal transaktioner, andel bokförda, poster i Granska, senaste transaktioner |
Ladda upp underlag
Den enda skrivoperation som är fullt öppen för en nyckel, eftersom ett arkiverat dokument är ett underlag och inte ett beslut.
curl -s -X POST https://astrid.so/api/receipts \
-H "Authorization: Bearer $ASTRID_API_KEY" \
-F "file=@faktura.pdf" \
-F "transactionId=<transactionId>" \
-F "src=agent"
| Fält | Krav | Värde |
|---|---|---|
file |
Ja | pdf, jpeg, png, webp eller gif. Max 10 MB |
transactionId |
Nej, men skicka den när du vet | Transaktionen dokumentet är underlag för, från /api/underlag/missing. Riktad koppling, ingen gissning på servern |
src |
Ja för agenter | agent. Attribution i revisionsloggen |
userNote |
Nej | Kort anteckning om dokumentet |
Kräver föreslå-nyckel (MEMBER); en läsnyckel får 403. Uppladdningen kör
AI-avläsning och räknas mot samma budget som MCP:s AI-verktyg, 20 anrop per
timme. Originalet arkiveras alltid innan det tolkas, enligt Bokföringslagen.
Vad som är spärrat för nycklar
Följande avvisas med 403 för alla API-nycklar, oavsett roll. Det är
human-review-always genomdriven i tjänstelagret, inte i klienten.
| Endpoint | Svar |
|---|---|
PATCH /api/review |
Granskningsbeslut kräver en inloggad användare, inte en API-nyckel |
POST /api/journal |
Bokföring kräver en inloggad användare, inte en API-nyckel |
POST /api/journal/{id}/ratta |
Bokföring kräver en inloggad användare, inte en API-nyckel |
POST /api/genomgang |
Genomgång via API-nyckel körs genom MCP-endpointen (utan AI-narrativ). |
POST /api/invoices |
Fakturering kräver en inloggad användare, inte en API-nyckel |
POST /api/receipts/{id}/book |
Bokföring från kvitto stöds inte via API-nyckel |
POST /api/receipts/{id}/attach |
Koppling av kvitto stöds inte via API-nyckel |
DELETE /api/receipts/{id} |
Borttagning av kvitto stöds inte via API-nyckel |
Det finns ingen kringgång, ingen flagga och ingen behörighetsnivå som öppnar
dem. Föreslå i stället: propose_verification över MCP, eller
POST /api/receipts med transactionId.
/api/admin/* avvisar varje Authorization-header av princip och är inte en
del av produktytan.
Fel
| Kod | Betyder |
|---|---|
400 |
Valideringsfel, meddelande på svenska |
401 |
Ogiltig eller återkallad nyckel, eller plan utan agentåtkomst |
403 |
Rollen räcker inte, eller operationen kräver en inloggad människa |
404 |
Finns inte i den här organisationen |
413 |
Filen eller begäran är för stor |
429 |
Timgräns nådd. Rapportera hur långt du kom och stanna |
Felkroppen är { "error": "…" } med ett meddelande skrivet för att läsas och
återges för användaren.
Skillnad mot MCP
REST ger dig råa endpoints. MCP ger dig samma data plus verktygsbeskrivningar,
reglerna vid anslutningen, färdiga recept, dokumentationen som läsbara resurser
under astrid://docs/ och kvittojaktens leverantörsplaybooks.
Bygger du en agent: använd MCP. Bygger du en integration eller ett skript: REST är rätt.