Integrations & API
Easily connect Stallingo to everything you already use
Your website, your accounting, your barrier or your own Excel reporting: with the Stallingo API you read and write data securely, with exactly the permissions you decide. You create an API key yourself — no ticket, no waiting.
curl https://stallingo.nl/api/mij -H "Authorization: Bearer sk_live_…"
# → { "data": { "stalling": "Stalling Flevoland", "via": "api-key", "scopes": ["klanten:lezen", …] } }Create a key yourself
As owner you create a key in Settings → API integrations within a minute. No request, no waiting.
Scoped: only what is needed
Per key you choose exactly which permissions apply: e.g. read customers only, or create appointments only. Revoke at any time with one click.
Plain REST + JSON
The same API our own app uses. Works with any language and with tools like Zapier, Make, n8n or Power Automate.
What can you do with it?
Integrations storage businesses use every day
Registration form on your own website
New customers sign up on your site and appear on the waiting list in Stallingo right away — including object type and length.
Accounting kept up to date
Fetch sent and paid invoices and push them to Exact, Moneybird, Xero or QuickBooks.
Access and barrier
Check at the gate whether a licence plate belongs to a customer with a scheduled pick-up.
Your own dashboards
Occupancy per shed, revenue and outstanding items in Power BI, Google Sheets or your own reporting.
Appointments from your planning
Schedule pick-ups and drop-offs from an external planning board; the customer automatically receives an e-mail confirmation.
Multiple locations
Consolidate data from all your locations into one overview, with a separate key per location.
How it works
Connected in three steps
- 1
Create an API key
Go to Settings → API integrations, name the key and tick the scopes the integration needs.
- 2
Send the key as a Bearer token
Every request gets a header Authorization: Bearer sk_live_… . Test it right away with GET /api/mij.
- 3
Read and write via JSON
Use the endpoints below. Whatever you do via the API shows up in the app immediately — and vice versa.
Documentation
API reference
All endpoints speak JSON and live under the base URL below. Responses look like { data: … }; errors like { error, message, details }. Field names are in Dutch (the product language).
https://stallingo.nl/apiAuthentication
Send your API key in the Authorization header as a Bearer token. Keys start with sk_live_ and belong to one storage business. Keep them secret (never in frontend code or a repository). A revoked or expired key returns 401.
Authorization: Bearer sk_live_XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXScopes
Each key has a set of scopes. A request to an endpoint the key has no scope for returns 403 with the missing scope in the message. User and settings management is deliberately never available via the API.
klanten:lezenRead customersklanten:schrijvenCreate and update customersobjecten:lezenRead objectsobjecten:schrijvenCreate and update objectsafspraken:lezenRead pick-up/drop-off appointmentsafspraken:schrijvenCreate and update pick-up/drop-off appointmentsplekken:lezenRead sheds and rowsplekken:schrijvenCreate and update sheds and rowsfacturen:lezenRead invoicesfacturen:schrijvenCreate and update invoicescontracten:lezenRead contractscontracten:schrijvenCreate and update contracts{ "error": "fout", "message": "API-key mist scope 'facturen:schrijven'" }Endpoints
List endpoints return at most 500 rows, sorted by creation date. Amounts are always in cents (integer); dates in ISO 8601.
| Method | Path | Scope | Description |
|---|---|---|---|
| GET | /api/mij | — | Storage details and the key's scopes (test endpoint) |
| GET | /api/klanten | klanten:lezen | All customers |
| POST | /api/klanten | klanten:schrijven | Create customer |
| GET | /api/klanten/{id} | klanten:lezen | One customer with objects |
| PATCH | /api/klanten/{id} | klanten:schrijven | Update customer |
| GET | /api/objecten | objecten:lezen | All caravans, campers and boats |
| POST | /api/objecten | objecten:schrijven | Create object |
| PATCH | /api/objecten/{id} | objecten:schrijven | Update or move object |
| GET | /api/loodsen | plekken:lezen | Sheds with rows and occupancy |
| GET | /api/rijen | plekken:lezen | Rows with free length |
| GET | /api/afspraken | afspraken:lezen | Pick-up/drop-off appointments (filter: ?status=gepland) |
| POST | /api/afspraken | afspraken:schrijven | Schedule appointment (customer gets a confirmation) |
| PATCH | /api/afspraken/{id} | afspraken:schrijven | Change status or time |
| GET | /api/inschrijvingen | klanten:lezen | Waiting list / registrations |
| GET | /api/facturen | facturen:lezen | Invoices (filter: ?status=verzonden) |
| POST | /api/facturen | facturen:schrijven | Create invoice (draft) |
| POST | /api/facturen/{id} | facturen:schrijven | Action: verzenden (with iDEAL link), betaald, annuleren |
| GET | /api/contracten | contracten:lezen | Contracts |
| POST | /api/contracten | contracten:schrijven | Create contract (PDF) |
Example: create a customer and schedule an appointment
First create the customer, then attach an object and schedule a drop-off. The customer automatically receives an e-mail confirmation on behalf of your business.
# 1. Klant aanmaken
curl -X POST https://stallingo.nl/api/klanten \
-H "Authorization: Bearer sk_live_…" \
-H "Content-Type: application/json" \
-d '{"naam":"J. de Vries","email":"j.devries@example.com","telefoon":"06-12345678"}'
# → { "data": { "id": "6f1c…", "klantnummer": "K1041", … } }
# 2. Object koppelen
curl -X POST https://stallingo.nl/api/objecten \
-H "Authorization: Bearer sk_live_…" \
-H "Content-Type: application/json" \
-d '{"klantId":"6f1c…","type":"caravan","merk":"Hobby De Luxe 495","kenteken":"WK-12-34","lengteCm":650}'
# 3. Brengafspraak inplannen (klant krijgt e-mailbevestiging)
curl -X POST https://stallingo.nl/api/afspraken \
-H "Authorization: Bearer sk_live_…" \
-H "Content-Type: application/json" \
-d '{"objectId":"9a2b…","type":"brengen","gepland":"2026-09-04T10:30:00+02:00"}'Error codes
400Invalid input — details lists what is wrong per field401Missing or invalid API key402API access not in your plan (upgrade to Unlimited)403Key lacks the required scope404Not found (or belongs to another business)409Conflict, e.g. e-mail address already exists
Limits & usage
At most 20 active keys per business. Be reasonable with polling (e.g. every 5 minutes); webhooks are coming for realtime needs. Each key shows in the app when it was last used.
Webhooks (coming soon)
Notifications for new registrations, paid invoices and changed appointments. Want early access? Let us know.
API access is part of the Unlimited plan
Unlimited objects and users, multiple locations, API keys and a dedicated contact. Switch instantly, also from Starter or Professional.
Ready to run your storage business with less effort?
Request a free demo. In half an hour we will show you how Stallingo works with your halls, customers and rates.
No credit card required · Personal walkthrough · English support available