API.
Créez, lisez et vérifiez des liens courts SDN.ac depuis vos applications.
Limites d’usage
Création
3/min
Création
30/h
Création
100/jour
Lecture
20/min
Ces limites sont appliquées par adresse IP. Les IP ou domaines de confiance peuvent recevoir des quotas spécifiques côté admin.
/api/v1/links
Créer un lien court
Crée un lien court depuis une URL longue. Les liens simples peuvent être dédupliqués ; les liens avec expiration, mot de passe, prévisualisation ou usage unique reçoivent un nouveau code.
curl -X POST https://sdn.ac/api/v1/links \
-H "Content-Type: application/json" \
-d '{
"url": "https://example.com/article",
"expiration": "7d",
"burn_after_redirect": false,
"password": "optional",
"preview_enabled": true
}'
const res = await fetch('https://sdn.ac/api/v1/links', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
url: 'https://example.com/article',
expiration: '7d',
preview_enabled: true
})
});
console.log(await res.json());
import requests
res = requests.post(
"https://sdn.ac/api/v1/links",
json={
"url": "https://example.com/article",
"expiration": "7d",
"preview_enabled": True,
},
)
print(res.json())
Réponse JSON
{
"code": "7Hk2Qx",
"short_url": "https://sdn.ac/7Hk2Qx",
"original_url": "https://example.com/article",
"expires_at": "2026-06-29T12:00:00+02:00",
"burn_after_redirect": false,
"password_protected": false,
"preview_enabled": true
}
Lecture et sécurité
Renvoie les informations d’un lien court. Si le lien est protégé par mot de passe, la destination n’est pas exposée.
JSON
{
"code": "7Hk2Qx",
"original_url": "https://example.com/article",
"visits": 42,
"expires_at": null,
"burn_after_redirect": false,
"password_protected": false,
"preview_enabled": true
}
Vérifie un lien avant redirection : destination disponible, signalements, statut phishing, expiration, mot de passe et usage unique.
JSON
{
"code": "7Hk2Qx",
"short_url": "https://sdn.ac/7Hk2Qx",
"destination_url": "https://example.com/article",
"destination_available": true,
"phishing_status": "not_flagged",
"reported": false,
"reports_count": 0,
"expired": false,
"expires_at": null,
"password_protected": false,
"burn_after_redirect": false,
"preview_enabled": true,
"warnings": []
}
Pour un lien protégé par mot de passe, destination_url vaut null et destination_available vaut false.
Erreurs possibles
422
URL invalide, domaine bloqué, IP privée, extension dangereuse ou paramètre incorrect.
404
Code court introuvable.
429
Limite d’usage atteinte. Réessayez plus tard.
JSON
{
"message": "L'URL saisie n'est pas valide.",
"errors": {
"url": ["L'URL saisie n'est pas valide."]
}
}
Garde-fous
- Les liens déjà raccourcis, les boucles vers SDN.ac et les adresses locales ou privées sont refusés.
- Déduplication : raccourcir une URL déjà connue renvoie le lien existant (pas de doublon).
- Les liens avec expiration, mot de passe, prévisualisation ou usage unique créent toujours un nouveau code.
Spécification OpenAPI : openapi.yaml