Récupérez vos transferts et vos statistiques de façon programmatique, et recevez une notification dès que quelqu'un télécharge vos fichiers. REST en lecture seule + webhooks signés en HMAC.
Créez une clé API sur votre page de compte(inclus dans chaque formule payante). La clé n'est affichée qu'une seule fois — conservez-la en lieu sûr. Envoyez-la avec chaque requête :
Authorization: Bearer dlk_live_xxxxxxxxxxxxxxxxxxxx
URL de base :https://downloadlink.nl/api/v1. Toutes les réponses sont en JSON et limitées à votre propre compte.
Compte + utilisation du stockage.
curl -H "Authorization: Bearer dlk_live_xxx" \
https://downloadlink.nl/api/v1/me
{
"email": "jij@bedrijf.nl",
"is_trial": false,
"plan": "100 GB",
"storage": { "used_bytes": 5242880, "quota_bytes": 107374182400, "percent": 0 }
}
Vos transferts (les plus récents d'abord). Paramètre ?limit=(1–200, 50 par défaut).
{ "count": 1, "transfers": [ { "token": "a1b2c3d4e5f6a7b8", "title": "Devis T3", "created_at": "2026-06-17T09:12:00+00:00", "expires_at": "2026-06-24T09:12:00+00:00", "unlimited": false, "revoked": false, "files": 3, "size_bytes": 8412300, "downloads": 2, "recipients": 1, "url": "https://downloadlink.nl/p/a1b2c3d4e5f6a7b8" } ] }
Un seul transfert : métadonnées, fichiers et activité de téléchargement récente (qui/quand/quel fichier).
{ "token": "a1b2c3d4e5f6a7b8", "title": "Devis Q3", "created_at": "2026-06-17T09:12:00+00:00", "expires_at": "2026-06-24T09:12:00+00:00", "unlimited": false, "revoked": false, "max_downloads": null, "downloads_used": 0, "size_bytes": 8412300, "files": [ { "name": "devis.pdf", "size_bytes": 412300 } ], "downloads": 2, "url": "https://downloadlink.nl/p/a1b2c3d4e5f6a7b8", "activity": [ { "downloaded_at": "2026-06-17T10:30:00+00:00", "type": "zip", "file": "(paquet complet / zip)", "ip": "203.0.113.7" }, { "downloaded_at": "2026-06-17T09:58:00+00:00", "type": "file", "file": "devis.pdf", "ip": "198.51.100.24" } ] }
Attention : ip est l'adresse IP complète de la personne qui a téléchargé — une donnée à caractère personnel de votre destinataire, et non un chiffre anonymisé. Vous la recevez intégralement, tout comme dans l'aperçu d'activité, le CSV des téléchargements et la preuve de livraison (PDF) ; elle y figure pour pouvoir démontrer qu'un envoi a été récupéré. Si vous la traitez ou la conservez dans votre propre système, intégrez-la alors dans votre propre déclaration de confidentialité. Nous renvoyons les 100 enregistrements les plus récents ; downloads compte ces lignes. Nous les conservons au maximum 12 mois — passé ce délai, elles ne peuvent plus être récupérées, même via l'API. downloads_used est le compteur de la limite de téléchargements et reste à 0 tant que max_downloads est vide.
Limite de débit : 120 requêtes par minute et par clé (HTTP 429 en cas de dépassement).
Livrez un fichier via votre propre page de téléchargement personnalisée, directement depuis votre système — un rapport ou une facture générés, par exemple :
curl -X POST https://downloadlink.nl/api/v1/transfers -H "Authorization: Bearer <sleutel>" -F "file=@rapport.pdf" -F "title=Rapport week 30" -F "expiry_days=30" # of 'never' voor onbeperkt geldig # optioneel: -F "password=geheim" voor een wachtwoord op de downloadpagina
HTTP 201 { "ok": true, "token": "a1b2c3d4e5f6a7b8", "url": "https://downloadlink.nl/p/a1b2c3d4e5f6a7b8", "expires_at": "2026-08-22T10:30:00+00:00", "unlimited": false }
Cas d'erreur :402 payment_required(l'API d'écriture fait partie des formules payantes),402 quota_exceeded(stockage plein),413(fichier dépassant la limite de l'API — utilisez la page d'envoi pour cela). L'habillage de la page de téléchargement suit le compte auquel appartient la clé.
Enregistrez une https-URL sur votre page de compte(le bouton « Test » envoie immédiatement unping-event pour vérifier votre intégration). Dès que quelqu'un télécharge votre transfert, nous envoyons un POST avec cet événement :
POST https://jouw-server.nl/webhooks/downloadlink
X-Downloadlink-Event: transfer.downloaded
X-Downloadlink-Signature: sha256=<hmac>
Content-Type: application/json
{
"event": "transfer.downloaded",
"delivered_at": "2026-06-17T10:30:00+00:00",
"data": {
"token": "a1b2c3d4e5f6a7b8",
"title": "Offerte Q3",
"url": "https://downloadlink.nl/p/a1b2c3d4e5f6a7b8",
"download_type": "zip",
"downloaded_at": "2026-06-17T10:30:00+00:00"
}
}
Calculez le HMAC-SHA256 sur le corps brut de la requête avec votre secret de webhook et comparez-le en temps constant avec l'en-tête. Ignorez les messages qui ne correspondent pas.
Python
import hmac, hashlib
def is_valid(secret: str, raw_body: bytes, header: str) -> bool:
expected = "sha256=" + hmac.new(secret.encode(), raw_body, hashlib.sha256).hexdigest()
return hmac.compare_digest(expected, header or "")
Node.js
const crypto = require('crypto');
function isValid(secret, rawBody, header) {
const expected = 'sha256=' + crypto.createHmac('sha256', secret).update(rawBody).digest('hex');
const a = Buffer.from(expected), b = Buffer.from(header || '');
return a.length === b.length && crypto.timingSafeEqual(a, b);
}
Répondez avec un code HTTP 2xx pour confirmer la livraison. Après 15 tentatives échouées, nous désactivons le webhook ; un test réussi (bouton sur votre page de compte) le réactive. Seules les URL https publiques sont autorisées.