API Sharecord
Crée des liens courts vers des fichiers qui s'effacent tout seuls, depuis tes scripts et tes outils.
Authentification
Crée un jeton personnel sur share.cordsuite.app/dashboard/tokens (Compte Cord requis). Il commence par shc_pat_ et s'envoie dans Authorization: Bearer ….
- Le jeton n'est affiché qu'une seule fois. Sharecord ne garde que son empreinte.
- Il agit comme toi : garde-le secret, et révoque-le s'il fuite (effet immédiat).
- Tu peux avoir 20 jetons actifs au plus, avec une durée de validité optionnelle.
| Portée | Permet de |
|---|---|
links:read | lister tes liens et lire leur état |
links:write | envoyer des fichiers, créer et révoquer des liens |
Créer un lien
Un fichier part en morceaux d'au plus 4 000 000 octets, puis un seul appel crée le lien.
POST /api/v1/chunks?index=Npour chaque morceau (application/octet-stream,indexà partir de 0). La réponse contient untokenopaque, valable 24 h.POST /api/v1/linksavec les jetons de morceaux, dans l'ordre.
# 1. découper puis envoyer chaque morceau
split -b 4000000 rapport.pdf part_
i=0; tokens=""
for f in part_*; do
t=$(curl -s -X POST "https://share.cordsuite.app/api/v1/chunks?index=$i" \
-H "Authorization: Bearer $SHARECORD_TOKEN" \
-H "Content-Type: application/octet-stream" \
--data-binary @"$f" | jq -r .token)
tokens="$tokens\"$t\","; i=$((i+1))
done
# 2. créer le lien
curl -X POST https://share.cordsuite.app/api/v1/links \
-H "Authorization: Bearer $SHARECORD_TOKEN" -H "Content-Type: application/json" \
-d "{\"expiration\":\"24h\",\"files\":[{\"name\":\"rapport.pdf\",\"mimeType\":\"application/pdf\",\"chunks\":[${tokens%,}]}]}"
Corps de POST /api/v1/links :
| Champ | Type | Détail |
|---|---|---|
expiration | "1h", "24h", "7d" ou "none" | "none" demande un maxDownloads |
maxDownloads | entier, optionnel | 1 à 100 000 |
password | texte, optionnel | 1 à 200 caractères |
files | liste de 1 à 20 | name, mimeType, chunks (jetons de l'étape 1) |
Réponse 201 :
{ "slug": "x7k2pAB", "url": "https://share.cordsuite.app/x7k2pAB", "expiresAt": "2026-10-26T13:00:00.000Z" }
Lire et révoquer
GET /api/v1/linksliste tes liens, du plus récent au plus ancien. Paramètres :limit(1 à 100, 20 par défaut) etcursor. La réponse contientdataetnextCursor(nullà la fin).GET /api/v1/links/:slugrenvoie un lien :status(ok,expired,revokedouexhausted),downloadCount,expiresAt,passwordProtectedet la liste des fichiers. Les tailles sont des chaînes.DELETE /api/v1/links/:slugrévoque le lien tout de suite. Les fichiers sont effacés ensuite par le nettoyage automatique. L'appel est idempotent.
Un lien qui n'est pas à toi répond 404, comme s'il n'existait pas.
Limites
- 2 Gio par fichier, 5 Gio par lien, 20 fichiers par lien.
- 600 requêtes par minute et par jeton, 120 liens créés par heure et par jeton. Les en-têtes
RateLimit-Limit,RateLimit-Remaining,RateLimit-ResetetRetry-Aftert'indiquent où tu en es. - Les quotas de Drivecord s'appliquent aussi, car Sharecord y stocke les fichiers.
Erreurs
Toujours { "error": { "code", "message", "requestId" } }. Le code est stable :
| Code | HTTP | Sens |
|---|---|---|
unauthenticated | 401 | pas d'en-tête Authorization |
invalid_token | 401 | jeton inconnu, expiré ou révoqué |
insufficient_scope | 403 | le jeton n'a pas la portée demandée |
invalid_request | 400 | paramètres invalides |
not_found | 404 | lien introuvable |
payload_too_large | 413 | morceau, fichier ou lien trop gros |
rate_limited | 429 | trop de requêtes |
storage_rate_limited | 429 | Drivecord limite le débit, réessaie après Retry-After |
storage_quota | 5xx | quota d'envoi quotidien atteint |
storage_error | 5xx | erreur de stockage |