Documentation de l’API
Utilisez l’API PasteBox pour créer et récupérer des pastes par programmation.
URL de base
https://pastebox.io/api/paste.php
Authentification
Clé API (recommandée pour les scripts)
Les utilisateurs inscrits peuvent générer des clés API depuis votre Profil → Clés API. Une clé authentifie la requête en votre nom, sans cookie de session ni jeton CSRF. Envoyez-la dans l’en-tête Authorization (ou dans l’en-tête X-API-Key) :
Authorization: Bearer pb_your_api_key
Les clés sont propres à chaque compte et leur débit est limité clé par clé. Vous pouvez mettre en pause ou supprimer une clé à tout moment ; un administrateur peut désactiver des clés individuelles ou l’API entière.
Session du navigateur (jeton CSRF)
Les requêtes effectuées depuis une session de navigateur connectée utilisent plutôt un jeton CSRF, lu dans la balise présente sur chaque page et envoyé dans un en-tête :
X-CSRF-Token: your_csrf_token
Les endpoints en lecture seule (récupération d’un paste et de son contenu brut) ne nécessitent ni clé ni compte. Par exemple, récupérez n’importe quel paste public en texte brut :
curl -s -H "Authorization: Bearer pb_your_api_key" \
-d '{"content":"hello","syntax":"text"}' \
https://pastebox.io/api/paste.php?action=create
Créer un paste
/api/paste.php?action=create
Paramètres
| Paramètre | Type | Obligatoire | Description |
|---|---|---|---|
| content | string | Oui | Le contenu du paste |
| title | string | Non | Titre du paste (par défaut : "Untitled") |
| syntax | string | Non | Slug du langage de syntaxe (par défaut : "plaintext") |
| expiration | string | Non | Expiration : 5min, 10min, 1hour, 1day, 1week, 2weeks, 1month, 6months, 1year, never |
| visibility | string | Non | public, unlisted ou private (par défaut : "public") |
| slug | string | Non | Slug d’URL personnalisée (utilisateurs connectés uniquement, et seulement si l’administrateur a activé les URL personnalisées) : 3 à 64 caractères, lettres minuscules, chiffres et tirets. Ignoré pour les invités, si la fonction est désactivée, ou si le slug est déjà pris ou invalide ; un slug aléatoire est alors utilisé. |
| password | string | Non | Mot de passe pour protéger le paste |
| burn_after_read | boolean | Non | Supprimer le paste après la première consultation |
| encrypt | boolean | Non | Activer le chiffrement côté serveur |
Exemple de requête
curl -X POST https://pastebox.io/api/paste.php?action=create \
-H "Content-Type: application/json" \
-H "X-CSRF-Token: YOUR_TOKEN" \
-d '{
"content": "console.log(\"Hello World\");",
"title": "Hello World",
"syntax": "javascript",
"expiration": "1week",
"visibility": "public"
}'
Exemple de réponse
{
"success": true,
"message": "Paste created successfully.",
"url": "https://pastebox.io/paste/abc123",
"slug": "abc123"
}
Obtenir le paste brut
/api/paste.php?action=raw&slug={slug}
Renvoie le contenu texte brut d’un paste. Pour les pastes protégés par mot de passe, transmettez le mot de passe en paramètre de requête.
Exemple
curl https://pastebox.io/api/paste.php?action=raw&slug=abc123
Télécharger le paste
/api/paste.php?action=download&slug={slug}
Télécharge le paste sous forme de fichier, avec l’extension correspondant à son langage de syntaxe.
Supprimer le paste
/api/paste.php?action=delete
Supprime un paste. Réservé au propriétaire du paste et aux administrateurs.
Exemple de requête
curl -X POST https://pastebox.io/api/paste.php?action=delete \
-H "Content-Type: application/json" \
-H "X-CSRF-Token: YOUR_TOKEN" \
-d '{"slug": "abc123"}'
Limites de débit
- Requêtes avec clé API : 1000 par heure et par clé (fixé par l’administrateur du site ; une erreur 429 est renvoyée en cas de dépassement).
- Création de pastes en tant qu’invité (sans clé ni session) : 10 pastes par heure et par IP. Les utilisateurs connectés ne sont pas limités par IP lors de la création.
- Tentatives de déverrouillage par mot de passe : 10 toutes les 10 minutes, par paste.
- Signalements : 5 par heure et par IP.
- Les endpoints en lecture seule (affichage / brut / téléchargement) ne sont pas soumis à une limite de débit.
Lorsqu’une limite est dépassée, la requête est rejetée ; patientez avant de réessayer.
Réponses d’erreur
Toutes les réponses d’erreur suivent ce format :
{
"success": false,
"message": "Error description here."
}