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/v1Authenticatie
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
/v1/extractUpload 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)
| Parameter | Type | Verplicht | Beschrijving |
|---|---|---|---|
file | File | Ja | Afbeelding (JPG, PNG, WebP) of PDF (tot 10 pagina's). Max. 20 MB. |
output | String | Nee | "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. |
detail | String | Nee | "high" (standaard, het beste voor drukke documenten) of "low" (sneller, minder beeldtokens). |
webhook_url | String | Nee | HTTPS-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
| Veld | Type | Beschrijving |
|---|---|---|
id | String | Blijvend extractie-ID — gebruik het met GET /v1/extractions/{id} |
status | String | completed of failed |
title | String | Door AI gegenereerde titel van het document |
rows | String[][] | 2D-array met celwaarden. De eerste rij bevat meestal de kolomkoppen. |
pages | Number | Aantal verwerkte pagina's (= gerekende credits) |
usage | Object | credits_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.