Partager une image ou un fichier avec PixShare
API PixShare
API d’upload de fichiers avec authentification par clé API.
🚀 Démarrage rapide
curl -X POST https://pixshare.fr/api/upload \ -H "Authorization: Bearer VOTRE_CLE_API" \ -F "file=@image.jpg"
Envoyez une image et récupérez immédiatement un lien direct, un lien d’affichage et un lien de suppression.
Compte API
Créer un compte API
Connexion
Authentification
Le header recommandé est Authorization: Bearer ....
Afficher le header alternatif de compatibilité
Authorization, le mot Bearer est obligatoire.
1. Vérifier son compte API
Route : GET /api/account
curl -X GET https://pixshare.fr/api/account \ -H "Authorization: Bearer VOTRE_CLE_API"
Retourne les informations de la clé API, les limites et les options autorisées.
Type de réponse JSON :
{
"success": true,
"status": 200,
"data": {
"key": {
"name": "api-client",
"is_active": true
},
"quota": {
"total": {
"used": 0,
"max": 100,
"remaining": 100
},
"daily": {
"used": 0,
"max": 10,
"remaining": 10
}
},
"limits": {
"max_file_size_mb": 10,
"allow_permanent": false
},
"upload_config": {
"default_lifetime_minutes": 10,
"allowed_lifetimes": [5, 10, 20, 30, 60],
"resize": {
"enabled": true,
"mode": "ratio_only",
"ratio": {
"min": 0.1,
"max": 3.0
},
"max_dimension": 6000
}
}
}
}
2. Upload d’un fichier
Route : POST /api/upload
file: fichier à envoyerexpiration: durée en minutes
Exemple (PC) :
curl -X POST https://pixshare.fr/api/upload \ -H "Authorization: Bearer VOTRE_CLE_API" \ -F "file=@image.jpg" \ -F "expiration=10"
Exemple (Android / Termux) :
curl -X POST https://pixshare.fr/api/upload \ -H "Authorization: Bearer VOTRE_CLE_API" \ -F "file=@/storage/emulated/0/Download/image.jpg" \ -F "expiration=10"
expiration, pas lifetime.
Utilisez le paramètre
?ratio= sur l’URL du fichier brut.
GET /api/raw/filename.png?ratio=0.5
Type de réponse JSON :
{
"success": true,
"status": 200,
"data": {
"id": "string",
"title": "string",
"filename": "string",
"original_filename": "string",
"url_viewer": "string",
"url": "string",
"display_url": "string",
"delete_url": "string",
"mime": "string",
"extension": "string",
"size": 0,
"uploaded_at": "ISO-8601 string",
"expiration": "ISO-8601 string | null",
"is_permanent": false,
"uploader_api_key_name": "string",
"//": "Champs spécifiques aux images",
"width": 0,
"height": 0,
"resize": {
"enabled": true,
"mode": "ratio_only",
"ratio": {
"min": 0.1,
"max": 3.0,
"max_for_this_image": 2.5
},
"max_dimension": 6000
},
"limits": {
"remaining_total": 0,
"remaining_today": 0,
"used_total": 0,
"used_today": 0,
"max_total": 0,
"max_per_day": 0
}
}
}
3. Exemples d’intégration
Exemples d’intégration de l’API PixShare dans plusieurs langages pour envoyer un fichier via
POST /api/upload.
Python (requests)
import requests
url = "https://pixshare.fr/api/upload"
headers = {
"Authorization": "Bearer VOTRE_CLE_API"
}
data = {
"expiration": 10
}
try:
with open("image.jpg", "rb") as f:
files = {
"file": f
}
response = requests.post(url, headers=headers, files=files, data=data)
response.raise_for_status()
result = response.json()
if result.get("success"):
print("Upload réussi ✅")
print("URL :", result["data"]["url"])
else:
print("Erreur API :", result.get("error"))
except requests.exceptions.RequestException as e:
print("Erreur réseau :", e)
except Exception as e:
print("Erreur :", e)
JavaScript (Fetch API)
const formData = new FormData();
formData.append("file", fileInput.files[0]);
formData.append("expiration", 10);
fetch("https://pixshare.fr/api/upload", {
method: "POST",
headers: {
"Authorization": "Bearer VOTRE_CLE_API"
},
body: formData
})
.then(res => res.json())
.then(data => console.log(data))
.catch(err => console.error(err));
Node.js (Axios)
const axios = require("axios");
const FormData = require("form-data");
const fs = require("fs");
const form = new FormData();
form.append("file", fs.createReadStream("image.jpg"));
form.append("expiration", 10);
axios.post("https://pixshare.fr/api/upload", form, {
headers: {
...form.getHeaders(),
Authorization: "Bearer VOTRE_CLE_API"
}
})
.then(res => console.log(res.data))
.catch(err => console.error(err.response?.data || err.message));
PHP (cURL)
<?php
$url = "https://pixshare.fr/api/upload";
$ch = curl_init();
$data = [
"file" => new CURLFile("image.jpg"),
"expiration" => 10
];
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer VOTRE_CLE_API"
]);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
4. Lire un fichier
Route : GET /api/file/<id>
curl -X GET https://pixshare.fr/api/file/ID \ -H "Authorization: Bearer VOTRE_CLE_API"
Pour obtenir une version redimensionnée d’une image, utilisez ensuite l’URL brute
/api/raw/filename.png?ratio=0.5.
Type de réponse JSON :
{
"success": true,
"status": 200,
"data": {
"id": "string",
"title": "string",
"filename": "string",
"original_filename": "string",
"url_viewer": "string",
"url": "string",
"display_url": "string",
"delete_url": "string",
"mime": "string",
"extension": "string",
"size": 0,
"uploaded_at": "ISO-8601 string",
"expiration": "ISO-8601 string | null",
"is_permanent": false,
"uploader_api_key_name": "string",
"//": "Champs spécifiques aux images",
"width": 0,
"height": 0,
"resize": {
"enabled": true,
"mode": "ratio_only",
"ratio": {
"min": 0.1,
"max": 3.0,
"max_for_this_image": 2.5
},
"max_dimension": 6000
}
}
}
5. Supprimer un fichier par clé API
Route : DELETE /api/file/<id>
curl -X DELETE https://pixshare.fr/api/file/ID \ -H "Authorization: Bearer VOTRE_CLE_API"
Type de réponse JSON :
{
"success": true,
"status": 200,
"data": {
"id": "string",
"deleted": true
}
}
6. Suppression par lien public
Route : GET /api/delete/<token> ou DELETE /api/delete/<token> selon l’implémentation du service
delete_token pour chaque fichier. Si aucun token n’existe,
delete_url peut être vide ou incomplet.
Type de réponse JSON attendu :
{
"success": true,
"status": 200,
"data": {
"id": "string",
"deleted": true
}
}
7. Exemple réel de réponse d’upload
{
"success": true,
"status": 200,
"data": {
"id": "RLhYqssh3qg",
"title": "favicon.png",
"filename": "iI4c5mudFEXGfqn.png",
"original_filename": "favicon.png",
"url_viewer": "https://pixshare.fr/file/RLhYqssh3qg",
"url": "https://pixshare.fr/api/raw/iI4c5mudFEXGfqn.png",
"display_url": "https://pixshare.fr/api/raw/iI4c5mudFEXGfqn.png",
"delete_url": "https://pixshare.fr/api/delete/TOKEN_OU_VIDE",
"mime": "image/png",
"extension": "png",
"size": 432890,
"uploaded_at": "2026-03-20T03:19:04.961831Z",
"expiration": "2026-03-20T03:29:04.961831Z",
"is_permanent": false,
"uploader_api_key_name": "demo",
"limits": {
"max_per_day": 1,
"max_total": 1,
"remaining_today": 0,
"remaining_total": 0,
"used_today": 1,
"used_total": 1
}
}
}
delete_url vaut seulement
https://pixshare.fr/api/delete/, cela signifie généralement que le
delete_token n’a pas été enregistré côté service.
8. Codes d’erreur API
| HTTP | Code | Description |
|---|---|---|
400 | bad_request | Requête invalide ou incomplète. |
401 | invalid_api_key | Clé API absente ou invalide. |
403 | forbidden | Accès refusé à cette ressource. |
404 | not_found | Ressource introuvable. |
413 | file_too_large | Fichier trop volumineux. |
415 | unsupported_file_type | Type de fichier non supporté. |
429 | limit_reached | Limite d’utilisation API atteinte. |
500 | server_error | Erreur interne du serveur. |
Exemple de réponse d’erreur :
{
"success": false,
"status": 401,
"error": {
"code": "invalid_api_key",
"message": "Clé API invalide"
}
}
9. Signification des champs
| Champ | Type | Description |
|---|---|---|
success |
bool | Indique si la requête a réussi. |
status |
int | Code HTTP renvoyé par l’API. |
data.id |
string | Identifiant unique du fichier. |
data.title |
string | Nom d’origine affichable. |
data.filename |
string | Nom réellement stocké sur le serveur. |
data.original_filename |
string | Nom du fichier envoyé par le client. |
data.url |
string | Lien direct brut vers le fichier. |
data.display_url |
string | Lien direct affichable, identique à url dans l’implémentation actuelle. |
data.url_viewer |
string | Page HTML de visualisation du fichier. |
data.delete_url |
string | Lien public de suppression par token. Peut être vide ou incomplet si aucun token n’est enregistré. |
data.mime |
string | Type MIME détecté. |
data.extension |
string | Extension du fichier sans point. |
data.size |
int | Taille du fichier en octets. |
data.uploaded_at |
string | Date d’upload au format ISO 8601 UTC. |
data.expiration |
string | null | Date d’expiration au format ISO 8601 UTC, ou null si le fichier est permanent. |
data.is_permanent |
bool | Indique si le fichier est permanent. |
data.uploader_api_key_name |
string | Nom lisible de la clé API ayant envoyé le fichier. |
data.limits |
object | État des quotas après l’upload. |
data.width |
int | null | Largeur de l’image en pixels. Présent uniquement pour les fichiers image. |
data.height |
int | null | Hauteur de l’image en pixels. Présent uniquement pour les fichiers image. |
data.resize |
object | null | Informations de redimensionnement disponibles pour l’image. Présent uniquement pour les fichiers image. |
data.resize.enabled |
bool | Indique si le redimensionnement est disponible pour ce fichier. |
data.resize.mode |
string | Mode de redimensionnement autorisé. Actuellement ratio_only. |
data.resize.ratio.min |
float | Ratio minimum autorisé pour le redimensionnement. |
data.resize.ratio.max |
float | Ratio maximum global autorisé par l’API. |
data.resize.ratio.max_for_this_image |
float | Ratio maximum réellement autorisé pour cette image selon ses dimensions et la limite serveur. |
data.resize.max_dimension |
int | Dimension maximale autorisée en largeur ou hauteur après redimensionnement. |