Examples
Practical request/response snippets for common tasks
Replace
dc_your_api_key_herewith your actual key. All examples use JSON over HTTPS.
Submit a Flight Request (cURL)
JSON
curl -X POST "https://droneclearance.nl/api/flight-requests" \
-H "Content-Type: application/json" \
-H "X-API-Key: dc_your_api_key_here" \
-d '{
"operator_name": "John Doe",
"operator_email": "john@example.com",
"operator_phone": "+31612345678",
"operator_company": "Drone Operations BV",
"operational_authorisation_number": "NL-AUTH-12345",
"start_time": "2026-02-10T09:00:00Z",
"end_time": "2026-02-10T11:00:00Z",
"max_altitude": 120,
"aircraft_type": "quadcopter",
"purpose": "Aerial photography for construction",
"flight_area": {
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": { "type": "Polygon",
"coordinates": [[[5.123,52.456],[5.124,52.456],[5.124,52.457],[5.123,52.457],[5.123,52.456]]]
},
"properties": {}
}]
}
}'
Get a Flight Request
JSON
curl -H "X-API-Key: dc_your_api_key_here" \
"https://droneclearance.nl/api/v1/flight-requests/7c9e6679-7425-40de-944b-e07fc1f90ae7?include_geometry=true"
List Requests (filter by date and status)
JSON
curl -H "X-API-Key: dc_your_api_key_here" \
"https://droneclearance.nl/api/flight-requests?from_date=2026-02-01&to_date=2026-02-28&status=Pending&per_page=50&page=1"
Cancel a Request
JSON
curl -X DELETE -H "X-API-Key: dc_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{"reason":"Flight no longer required"}' \
"https://droneclearance.nl/api/flight-requests/7c9e6679-7425-40de-944b-e07fc1f90ae7"
Receive Webhooks (example Express.js handler)
JSON
import express from 'express';
const app = express();
app.use(express.json());
app.post('/webhooks/droneclearance', (req, res) => {
const sig = req.header('X-Webhook-Signature'); // t=...,v1=...
// TODO: verify signature with shared secret (HMAC SHA-256)
const event = req.body.event;
if (event === 'status_change') {
// handle status update
} else if (event === 'cascade_rejection') {
// handle cascade rejection info
} else if (event === 'review_complete') {
// handle group summary
}
res.sendStatus(200);
});
app.listen(3000);