API<REFERENCE<V1<<<<<<<<<<<<

API-reference

IDBird Redaction API er bevidst lille: to endpoints, én request-form, én fejlkonvolut. Denne side er hele overfladen. Den maskinlæsbare specifikation og den interaktive reference ligger på api.idbird.eu.

Basis-URL og autentificering

Hver anmodning bærer en Bearer-API-nøgle udstedt af IDBird-teamet. Nøgler gemmes kun som SHA-256-hash og tjekkes live ved hver anmodning — tilbagekaldelse virker fra næste kald.

https://api.idbird.eu
Authorization: Bearer idb_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

Endpoints

POST /v1/redact Maskér et dokument og modtag det rensede billede plus findings og warnings.
POST /v1/inspect Tørløb: kun findings og warnings — der returneres aldrig et billede.
GET /up Sundhedstjek, uden autentificering.

Request

Begge endpoints accepterer den samme multipart/form-data-anmodning.

FeltPåkrævetBeskrivelse
document ja Filen: JPEG, PNG, BMP eller PDF (som standard op til 5 sider), maks. 10 MiB. Typen aflæses af filens indhold — filnavn og Content-Type-header ignoreres.
country_hint nej ISO 3166-1 alpha-2-kode for udstedelseslandet, uafhængig af store/små bogstaver (EL accepteres som alias for GR). Udelades den, køres automatisk tilstand — med hint er detektionen skarpere.
photo_redaction nej redact (standard) fjerner fotoet. keep lader det være synligt og tilføjer warningen photo_not_redacted. both returnerer to billeder: fuldt maskeret og med synligt foto.
curl https://api.idbird.eu/v1/redact \
  -H "Authorization: Bearer idb_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" \
  -F document=@passport-scan.jpg \
  -F country_hint=NL

Svar

Feltet image er altid en base64-kodet PNG og altid det mest maskerede resultat af anmodningen. findings indeholder detektornavne og antal — aldrig værdier. warnings og findings er altid til stede, tomme når alt er rent.

POST /v1/redact — én side

{
  "image": "iVBORw0KGgoAAAANSUhEUgAA…",
  "warnings": [],
  "findings": {
    "MRZ_TD3_LINE_1": 1,
    "MRZ_TD3_LINE_2": 1,
    "NETHERLANDS_PASSPORT": 1,
    "OBJECT_TYPE/PERSON/FACE": 2,
    "OBJECT_TYPE/PERSON/SIGNATURE": 1
  }
}

POST /v1/redact — photo_redaction=both

{
  "image": "…fully redacted PNG…",
  "image_photo_visible": "…portrait intact, everything else redacted…",
  "warnings": [],
  "findings": {
    "MRZ_TD3_LINE_2": 1,
    "NETHERLANDS_BSN_NUMBER": 1
  }
}

POST /v1/redact — flersidet PDF (pages erstatter image, tæller fra 1)

{
  "pages": [
    { "page": 1, "image": "iVBORw0KGgo…", "findings": { "OBJECT_TYPE/PERSON/FACE": 1 } },
    { "page": 2, "image": "iVBORw0KGgo…", "findings": { "MRZ_TD3_LINE_2": 1, "NETHERLANDS_BSN_NUMBER": 1 } }
  ],
  "warnings": [],
  "findings": {
    "MRZ_TD3_LINE_2": 1,
    "NETHERLANDS_BSN_NUMBER": 1,
    "OBJECT_TYPE/PERSON/FACE": 1
  }
}

POST /v1/inspect — kun findings, aldrig et billede

{
  "findings": {
    "NETHERLANDS_BSN_NUMBER": 1,
    "MRZ_TD3_LINE_2": 1
  },
  "warnings": ["no_country_hint"]
}

Warning-koder

HTTP 200 betyder behandlet, ikke beskyttet. Warnings kommer i fast, dokumenteret rækkefølge; tjek dem før arkivering. De otte mulige koder:

Fejl

Alle fejl bruger én konvolut med en stabil kode og en statisk engelsk besked — sikker at matche på, fri for dokumentindhold:

{
  "error": {
    "code": "country_not_supported",
    "message": "The issuing country \"US\" is not supported by this service."
  }
}
HTTPcodemessage
401 invalid_api_key The bearer API key is missing, unknown, or revoked.
404 not_found Not found.
405 method_not_allowed Method not allowed.
413 payload_too_large The document exceeds the 10 MiB limit.
415 unsupported_media_type The document must be a JPEG, PNG, BMP or PDF; the type is detected from file content.
422 country_hint_invalid The country_hint must be a two-letter ISO 3166-1 alpha-2 code.
422 country_not_supported The issuing country "US" is not supported by this service.
422 file_required The document file is required.
422 photo_redaction_invalid The photo_redaction field must be one of: redact, keep, both.
422 too_many_pages The PDF exceeds the 5-page limit; split it and submit the pages separately.
422 pdf_encrypted Encrypted PDFs are not supported.
422 unreadable_image The document could not be decoded as an image.
422 image_normalization_failed The image could not be reduced to the redaction backend request budget without degrading below the quality floor.
429 rate_limited Too many requests; retry later.
429 daily_quota_exceeded The daily allowance of 50 API call(s) for this key is exhausted for today (UTC).
500 internal_error Internal error.
502 dlp_unavailable The redaction backend is unavailable; no image was produced.

Grænser og fakturering

  • Rate-limit: 30 anmodninger pr. minut pr. nøgle; 429 med Retry-After-header ved overskridelse.
  • Dagligt kontingent: som standard 50 kald pr. nøgle pr. dag (UTC); forhøjes pr. nøgle af IDBird-teamet med øjeblikkelig virkning.
  • Én fuldt behandlet anmodning er ét fakturerbart kald — flersidet PDF inklusive. Afviste (4xx) og fejlede (5xx) anmodninger faktureres aldrig, og kontingentet tjekkes før behandling: En anmodning over grænsen koster intet.

Landedækning

Nationalt nummer + MRZ + foto + underskrift

  • NL Nederlandene
  • DE Tyskland
  • FR Frankrig
  • ES Spanien
  • AT Østrig
  • BE Belgien
  • HR Kroatien
  • CZ Tjekkiet
  • DK Danmark
  • FI Finland
  • IE Irland
  • IT Italien
  • PL Polen
  • PT Portugal
  • SE Sverige

MRZ + foto + underskrift

  • BG Bulgarien
  • CY Cypern
  • EE Estland
  • GR Grækenland
  • HU Ungarn
  • LV Letland
  • LT Litauen
  • LU Luxembourg
  • MT Malta
  • RO Rumænien
  • SK Slovakiet
  • SI Slovenien

Dokumenter fra ethvert andet udstedelsesland afvises blankt — aldrig halvt maskeret i stilhed.

Maskinlæsbar dokumentation

OpenAPI 3.1-specifikationen er hæftet til implementeringen med en CI-test: Hver fejlkode og hver warning, tjenesten kan udsende, skal være dokumenteret — og intet mere. Dokumentationen kan ikke drive væk.