Partager une image ou un fichier avec PixShare

P i x S h a r e

API PixShare

API d’upload de fichiers avec authentification par clé API.

PixShare API : API simple, rapide et hébergée en Europe.

🚀 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: Bearer ... est la méthode recommandée. X-API-Key reste accepté pour compatibilité. Si vous utilisez 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 à envoyer
  • expiration : 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"
Le champ attendu est expiration, pas lifetime.
Redimensionnement des images :
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"
La suppression doit être effectuée avec la même clé API que celle utilisée lors de l’upload.

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

Important : ce lien n’est valide que si le service stocke un 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
    }
  }
}
Attention : si 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
400bad_requestRequête invalide ou incomplète.
401invalid_api_keyClé API absente ou invalide.
403forbiddenAccès refusé à cette ressource.
404not_foundRessource introuvable.
413file_too_largeFichier trop volumineux.
415unsupported_file_typeType de fichier non supporté.
429limit_reachedLimite d’utilisation API atteinte.
500server_errorErreur 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.