Wat je nodig hebt
- Een APIboard-account met minstens één gekoppelde bron, bijvoorbeeld e-Boekhouden. Zonder koppeling is er geen data om op te halen.
- Een API-sleutel. Open in APIboard Analyseren, kies API en dan Nieuwe API-sleutel. Kopieer de sleutel direct, hij wordt maar één keer getoond. Meer in Authenticatie.
Stap 1: stuur een aanvraag
Vervang apib_live_JOUW_SLEUTEL door je eigen sleutel. Dit haalt de eerste vijf facturen op van een gekoppelde e-Boekhouden-administratie; de aanvraag staat rechts, als HTTP, curl, Python en Power BI.
Gebruik je een andere koppeling? Kies de bijbehorende tabel in de referentie per koppeling; elke tabelpagina toont een kant-en-klare aanvraag voor HTTP, curl, Python en Power BI.
Stap 2: lees het antwoord
Het antwoord (rechts onder Antwoord) heeft altijd dezelfde vorm:
databevat de rijen. Elke rij heeft ookconnection_idenconnection_label, zodat je ziet bij welke administratie hij hoort.next_cursoris gevuld zolang er meer pagina’s zijn, zie Paginering.sync_watermarkkrijg je op de laatste pagina; hiermee haal je de volgende keer alleen wat nieuw is op, zie Incrementeel ophalen.
Stap 3: kies je gereedschap
- Power BI: volg Power BI koppelen.
- Eigen code of andere tools: importeer de specificatie of de collectie hieronder. Elke tabel staat erin als aanvraag; bij Postman vul je de collectievariabele
apiKeyin.
Importeren in je tools
Loopt het niet?
Een 401 betekent een ontbrekende of ongeldige sleutel, een 404 een koppeling of tabel die niet bestaat. Alle foutcodes staan in Foutafhandeling.
Aanvraag
GET https://app.apiboard.nl/api/v1/e-boekhouden/facturen?limit=5 HTTP/1.1
Host: app.apiboard.nl
Authorization: Bearer apib_live_JOUW_SLEUTEL curl -H "Authorization: Bearer apib_live_JOUW_SLEUTEL" \
"https://app.apiboard.nl/api/v1/e-boekhouden/facturen?limit=5" import requests
TOKEN = "apib_live_JOUW_SLEUTEL"
URL = "https://app.apiboard.nl/api/v1/e-boekhouden/facturen"
resp = requests.get(URL, params={"limit": 5}, headers={"Authorization": f"Bearer {TOKEN}"})
resp.raise_for_status()
body = resp.json()
for rij in body["data"]:
print(rij)
print("Volgende pagina:", body["next_cursor"]) let
Basis = "https://app.apiboard.nl",
Pad = "/api/v1/e-boekhouden/facturen",
Token = "apib_live_JOUW_SLEUTEL",
Filters = [],
HaalPaginaOp = (cursor as nullable text) =>
Json.Document(Web.Contents(Basis, [
RelativePath = Pad,
Query = if cursor = null then Filters else Record.AddField(Filters, "cursor", cursor),
Headers = [Authorization = "Bearer " & Token]
])),
// Volg next_cursor tot die null is; de pagina met next_cursor = null telt ook mee.
Paginas = List.Generate(
() => HaalPaginaOp(null),
each _ <> null,
each if [next_cursor] = null then null else HaalPaginaOp([next_cursor]),
each [data]
),
AlleRijen = List.Combine(Paginas),
Tabel = if List.IsEmpty(AlleRijen)
then #table({"id", "synced_at"}, {})
else Table.FromRecords(AlleRijen, null, MissingField.UseNull),
// Dedupliceer op id: eerst de nieuwste versie bovenaan, dan houdt Distinct die.
// Verwijder daarna rijen die bij de bron verwijderd zijn.
NieuwsteEerst = Table.Buffer(Table.Sort(Tabel, {{"synced_at", Order.Descending}})),
ZonderDubbel = Table.Distinct(NieuwsteEerst, {"id"}),
ZonderVerwijderd = Table.SelectRows(ZonderDubbel, each Record.FieldOrDefault(_, "bron_verwijderd_op", null) = null)
in
ZonderVerwijderd Antwoord
{
"connections": [
{
"id": "43d9a41a-3529-4be2-b891-b23781997895",
"label": "Voorbeeld B.V.",
"backfill_complete": true
}
],
"data": [
{
"connection_id": "43d9a41a-3529-4be2-b891-b23781997895",
"connection_label": "Voorbeeld B.V.",
"id": "314feb6e-f809-4f72-b6d8-da1b68d15ab5",
"synced_at": "2026-10-07T02:58:12.304211+00:00"
}
],
"next_cursor": "…",
"sync_watermark": null
} Was dit artikel behulpzaam?