API-dokumentation

Verifiera svenska BankID-delegationer programmatiskt. Sandbox direkt, produktion via BankID-signerad onboarding.

Snabbstart

Registrera dig, hämta en sandbox-nyckel från dashboarden och verifiera din första delegation på under fem minuter.

Sandbox-nycklar (prefix mk_test_) fungerar direkt och belastar aldrig kvoten. Live-nycklar (mk_live_) utfärdas efter BankID-signerad onboarding.

Hämta sandbox-nyckel

Autentisering

Skicka nyckel-ID och hemlighet som request-headers. Middlewaren skiljer sandbox från produktion via prefixet och nekar nycklar utanför org-IP-listan (om satt).

http
GET /api/external/delegations HTTP/1.1
Host: api.minionapp.se
X-Api-Key: mk_live_a1b2c3d4e5
X-Api-Secret: <your secret>

Endpoints

Två läs-endpoints i V1. Skriv-endpoints (skapa / acceptera / återkalla) är slutanvändarytor och kräver BankID, inte API-nycklar.

GET/api/external/delegations

List delegations granted to your organization. Filter by status (Active, Accepted, Revoked, Expired).

statusstring?Filter (default: Active)
pageintDefault 1
pageSizeintDefault 50, max 200
GET/api/external/delegations/{verificationCode}

Look up a single delegation by its 8-character verification code. Useful for verifying that a delegation a user shared is genuinely active in your org.

verificationCodestringPath param, e.g. AB3K7XYZ

Webhooks

Sätt en callback-URL i Inställningar; vi POSTar signerad JSON vid delegations-händelser. Varje förfrågan har en HMAC-SHA256-signatur i X-Minion-Signature-headern. Verifiera den med per-org-hemligheten du fick vid första sparningen.

http
POST /webhooks/minion HTTP/1.1
Host: your-server.com
Content-Type: application/json
X-Minion-Signature: sha256=4f3c...e2a1
X-Minion-Event: delegation.accepted
X-Minion-Delivery: 8d2c-...

{
  "event": "delegation.accepted",
  "delegationId": "9f8a7b6c-...",
  "verificationCode": "AB3K7XYZ",
  "occurredAt": "2026-05-02T11:30:00Z"
}

expectedSig = HMAC_SHA256(secret, rawBody) — jämför med konstant-tid likhet.

Misslyckade leveranser (non-2xx, timeout eller oåtkomlig värd) försöks igen upp till 5 gånger med exponentiell backoff: 1s, 5s, 30s, 5m, 30m.

Rate limits & kvot

Per-nyckel rate limit kommer från din plan. Varje lyckat produktionsanrop drar ett från org-ägarens månadskvot. Sandbox-anrop belastar inte kvoten och är begränsade till 1 000 req/dag.

  • Free — 100 req/min, 1 000 req/mo
  • Starter — 600 req/min, 10 000 req/mo
  • Business — 1 800 req/min, 50 000 req/mo
  • Enterprise — custom

Exempel

Samma flöde i tre språk.

curl
curl -H "X-Api-Key: mk_test_a1b2c3" \
     -H "X-Api-Secret: ${MINION_SECRET}" \
     https://api.minionapp.se/api/external/delegations?status=Active
javascript
const res = await fetch('https://api.minionapp.se/api/external/delegations?status=Active', {
  headers: {
    'X-Api-Key': 'mk_test_a1b2c3',
    'X-Api-Secret': process.env.MINION_SECRET,
  },
});
const { items } = await res.json();
python
import os, requests

r = requests.get(
    'https://api.minionapp.se/api/external/delegations',
    params={'status': 'Active'},
    headers={
        'X-Api-Key': 'mk_test_a1b2c3',
        'X-Api-Secret': os.environ['MINION_SECRET'],
    },
)
items = r.json()['items']

Se även