REST API

ScanToExcel API

Integreer AI-gestuurde documentextractie direct in je app. Stuur een afbeelding of PDF en krijg gestructureerde spreadsheetdata terug als JSON, .xlsx of CSV.

Basis-URL

https://scantoexcel.ai/api/v1

Authenticatie

Elk API-request vereist een API-sleutel die je meestuurt in de Authorization-header.

Authorization: Bearer sk_live_your_api_key

Maak je API-sleutel gratis aan in het dashboard. De sleutel wordt bij het aanmaken maar één keer getoond en alleen als hash opgeslagen — kopieer hem dus meteen. Je kunt hem op elk moment opnieuw genereren of intrekken via het dashboard. Je credits bepalen hoeveel pagina's je kunt verwerken.

Snelstart

Haal data uit een documentafbeelding of PDF met één API-call.

cURL

# JSON response
curl -X POST https://scantoexcel.ai/api/v1/extract \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -F "file=@receipt.jpg" \
  -F "output=json"

# Excel file straight to disk
curl -X POST https://scantoexcel.ai/api/v1/extract \
  -H "Authorization: Bearer sk_live_your_api_key" \
  -F "file=@invoice.pdf" \
  -F "output=xlsx" -o result.xlsx

Python

import requests

response = requests.post(
    "https://scantoexcel.ai/api/v1/extract",
    headers={"Authorization": "Bearer sk_live_your_api_key"},
    files={"file": open("receipt.jpg", "rb")},
    data={"output": "json"}
)

data = response.json()
print(data["title"])   # "Receipt"
print(data["rows"])    # [["Item", "Qty", "Price"], ...]

JavaScript / Node.js

const form = new FormData();
form.append("file", fs.createReadStream("receipt.jpg"));
form.append("output", "json");

const res = await fetch("https://scantoexcel.ai/api/v1/extract", {
  method: "POST",
  headers: { Authorization: "Bearer sk_live_your_api_key" },
  body: form,
});

const data = await res.json();
console.log(data.title); // "Receipt"
console.log(data.rows);  // [["Item", "Qty", "Price"], ...]

API-referentie

POST/v1/extract

Upload een documentafbeelding of PDF en ontvang gestructureerde spreadsheetdata. De AI analyseert de visuele opmaak en plaatst elk stukje tekst in de juiste rij en kolom. PDF's met meerdere pagina's komen terug als één rows-array, van boven naar beneden. Er wordt 1 credit per pagina gerekend; mislukte extracties worden automatisch terugbetaald.

Request (multipart/form-data)

ParameterTypeVerplichtBeschrijving
fileFileJaAfbeelding (JPG, PNG, WebP) of PDF (tot 10 pagina's). Max. 20 MB.
outputStringNee"json" (standaard), "xlsx" of "csv". JSON geeft gestructureerde data terug; xlsx/csv geven het bestand terug als binaire body met de headers X-Extraction-Id, X-Pages, X-Credits-Used en X-Credits-Remaining.
detailStringNee"high" (standaard, het beste voor drukke documenten) of "low" (sneller, minder beeldtokens).
webhook_urlStringNeeHTTPS-URL die een POST met het volledige resultaat ontvangt zodra de extractie klaar is. Zie Webhooks hieronder.

Respons (JSON)

{
  "id": "aB3dE9fGhIjK1LmN",
  "status": "completed",
  "title": "Receipt - Coffee Shop",
  "rows": [
    ["Item", "Qty", "Price"],
    ["Latte", "2", "9.50"],
    ["Croissant", "1", "4.25"],
    ["", "Total", "13.75"]
  ],
  "pages": 1,
  "usage": {
    "credits_used": 1,
    "credits_remaining": 999
  }
}

Responsvelden

VeldTypeBeschrijving
idStringBlijvend extractie-ID — gebruik het met GET /v1/extractions/{id}
statusStringcompleted of failed
titleStringDoor AI gegenereerde titel van het document
rowsString[][]2D-array met celwaarden. De eerste rij bevat meestal de kolomkoppen.
pagesNumberAantal verwerkte pagina's (= gerekende credits)
usageObjectcredits_used en credits_remaining (null bij onbeperkte abonnementen)

Rate limits

60 requests/minuut per API-sleutel

1.000 API-calls/maand met het API-abonnement (zie prijzen)

20 MB maximale bestandsgrootte

10 pagina's max. per PDF (1 credit per pagina)

Hogere limieten nodig? Neem contact op voor enterprise-abonnementen.

Webhooks

Stuur een HTTPS-webhook_url-formulierveld mee met je request en we POSTen het volledige resultaat daarheen zodra de extractie klaar is (8 s leveringstimeout, geen nieuwe pogingen).

{
  "event": "extraction.completed",
  "id": "aB3dE9fGhIjK1LmN",
  "status": "completed",
  "title": "Invoice #1042",
  "rows": [["Item", "Qty", "Price"], ...],
  "pages": 1,
  "usage": { "credits_used": 1, "credits_remaining": 999 }
}

Begin met bouwen op ScanToExcel

Vraag je API-sleutel aan en haal binnen een paar minuten je eerste data op.