Documentation API
Convertissez des images programmatiquement avec notre API REST.
Aperçu
URL de base : https://www.bulkpicconv.com/api/v1
Authentification : Bearer token via Authorization en-tête
Format de clé API : sk_ préfixe + 48 caractères alphanumériques
Limites : Team 50K/mois, Enterprise illimité
Taille max : 15 Mo par fichier
Dimensions max : 80 mégapixels (ex. 8000×10000)
Formats acceptés : JPEG, PNG, WebP, GIF, BMP, TIFF, HEIC
Accès API : plans Team et Enterprise (générer une clé depuis le Tableau de bord )
Points de terminaison
| Méthode | Point de terminaison | Description |
|---|---|---|
| POST | /api/v1/convert | Convertir et compresser une image |
| POST | /api/v1/resize | Redimensionner une image |
| POST | /api/v1/crop | Recadrer une image |
| POST | /api/v1/watermark | Ajouter un filigrane à une image |
| POST | /api/v1/optimize | Optimisation intelligente sans conversion de format |
| POST | /api/v2/batch | Conversion par lot de ZIP (asynchrone) |
| GET | /api/v2/batch/{id}/status | Interroger le statut du travail par lot |
| GET | /api/v2/batch/{id}/result | Télécharger le ZIP de résultats |
| GET | /api/v2/usage | Interroger l'utilisation mensuelle de la clé API |
| GET | /api/v2/credits | Interroger les crédits API disponibles |
| POST | /v1/ai/alt-text | Génération de texte alternatif IA (Pro/Team) |
| POST | /v1/ai/rename | Renommage en masse IA (Pro/Team) |
| POST | /v1/ai/smart-crop | Détection de recadrage intelligent IA (Pro/Team) |
| POST | /v1/ai/enhance | Amélioration d'image IA (Pro/Team) |
| POST | /v1/ai/recommend | Recommandation de format IA (Pro/Team) |
| POST | /api/background-remove | Supprimer l'arrière-plan de l'image |
| GET/PUT/DEL | /api/user/ai-key | Gestion de configuration modèle BYOK |
/v1/convertConvertir et compresser une image en WebP, AVIF, JPEG ou PNG.
Paramètres (multipart/form-data)
| Champ | Type | Requis | Description |
|---|---|---|---|
| image | file | Oui | Le fichier image à convertir |
| format | string | Non | webp, avif, jpeg, png (par défaut : webp) |
| quality | number | Non | 1-100 (par défaut : 75) |
| width | number | Non | Largeur de sortie (conserve le ratio) |
| height | number | Non | Hauteur de sortie |
| fit | string | Non | cover, contain, fill, inside, outside |
| grayscale | boolean | Non | Convertir en niveaux de gris |
| blur | number | Non | Rayon de flou (0,3-100) |
| rotate | number | Non | Angle de rotation (0-360) |
Réponse
Données d'image binaires avec en-têtes :
Content-Type: Type MIME du format imageContent-Disposition: Pièce jointe avec nom de fichier (ex. converted.webp)X-Input-Size: Taille originale en octetsX-Output-Size: Taille convertie en octetsX-Saved-Percent: Pourcentage espace économiséX-RateLimit-Limit: Limite d'appels API mensuelsX-RateLimit-Remaining: Appels API restants ce mois
/api/v1/resizeRedimensionner une image en préservant le ratio d'aspect.
Paramètres (multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
| image | file | Oui | Le fichier image |
| width | number | Oui | Largeur cible (1-10000) |
| height | number | Oui | Hauteur cible (1-10000) |
| fit | string | Non | cover/contain/fill/inside/outside (par défaut : inside) |
/api/v1/cropExtraire une région rectangulaire d'une image.
Paramètres (multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
| image | file | Oui | Le fichier image |
| x | number | Oui | Décalage horizontal (en haut à gauche) |
| y | number | Oui | Décalage vertical (en haut à gauche) |
| width | number | Oui | Largeur de la zone de recadrage |
| height | number | Oui | Hauteur de la zone de recadrage |
/api/v1/watermarkSuperposer un filigrane à une position configurable.
Paramètres (multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
| image | file | Oui | Image de base |
| watermark | file | Oui | Image de filigrane |
| position | string | Non | top-left/top-right/bottom-left/bottom-right/center |
| opacity | number | Non | 0-100 (par défaut : 100) |
| scale | number | Non | Taille du filigrane en fraction de la largeur de base (0,01-1) |
/api/v1/optimizeRé-encoder l'image pour réduire la taille sans changer le format.
Paramètres (multipart/form-data)
| Field | Type | Required | Description |
|---|---|---|---|
| image | file | Oui | Le fichier image |
| quality | number | Non | 1-100 (par défaut : 75). Format original préservé. |
/api/v2/batchTélécharger une archive ZIP pour conversion par lot asynchrone. Retourne un ID de travail ; interroger le statut jusqu'à complétion.
Paramètres (multipart/form-data)
| Champ | Type | Requis | Description |
|---|---|---|---|
| file | file | Oui | Archive ZIP d'images |
| format | string | Non | webp, avif, jpeg, png (par défaut : webp) |
| quality | number | Non | 1-100 (par défaut : 75) |
GET /api/v2/batch/{id}/status — Interroger le statut (en attente → en cours → terminé) GET /api/v2/batch/{id}/result — Télécharger le ZIP de résultats
Fonctionnalités IA Pro / Team
Analyse d'images par IA avec GPT-4o Vision. Tous les points IA acceptent un corps JSON avec des URI de données Base64. Prend en charge BYOK (Bring Your Own Key) — utilisez votre propre modèle compatible OpenAI pour un accès illimité gratuit.
/v1/ai/alt-textGenerate SEO-friendly alt text with keywords using GPT-4o Vision.
Corps (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
| images | string[] | Oui | Base64 data URIs (1-10 images) |
| language | string | Non | en/zh/es/fr/de/ja/ko/pt/it (default: en) |
| style | string | Non | descriptive/concise/seo (default: descriptive) |
| userProvider | object | Non | BYOK config (see below) |
/v1/ai/renameGenerate SEO-friendly filenames based on image content.
Corps (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
| images | object[] | Oui | {data, originalName} (1-20 images) |
| rules | object | Non | {prefix, includeSequence, style} |
| userProvider | object | Non | BYOK config |
/v1/ai/smart-cropDetect subject and generate platform-specific crop recommendations.
Corps (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
| image | string | Oui | Base64 data URI |
| platforms | string[] | Non | instagram-square/twitter/facebook/youtube-thumbnail/etc. |
| customRatio | object | Non | {width, height} |
| returnCroppedImage | boolean | Non | Return cropped result (default: false) |
| userProvider | object | Non | BYOK config |
/v1/ai/enhanceUpscale, denoise, or deblur images.
Corps (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
| image | string | Oui | Base64 data URI |
| mode | string | Non | upscale/denoise/deblur/auto (default: auto) |
| intensity | number | Non | 1=Light, 2=Medium, 3=Strong (default: 2) |
| returnPreview | boolean | Non | Return enhanced image (default: true) |
/v1/ai/recommendDeep analysis to recommend optimal format, quality, and compression.
Corps (application/json)
| Field | Type | Required | Description |
|---|---|---|---|
| images | object[] | Oui | {data, filename, width, height, fileSize, mimeType} (1-20) |
| useCase | string | Non | web/ecommerce/social-media/print/archive/general |
| userProvider | object | Non | BYOK config |
BYOK : Objet userProvider (optionnel)
Inclure dans toute requête IA pour utiliser votre propre modèle. Ignore la vérification Pro et le quota quotidien.
| Champ | Type | Requis | Description |
|---|---|---|---|
| baseUrl | string | Oui | URL de base API compatible OpenAI |
| model | string | Oui | Nom du modèle Vision |
| apiKey | string | † | Clé API (mode local, envoyée avec la requête) |
| useAccountKey | boolean | † | Utiliser la clé chiffrée enregistrée au compte |
† apiKey ou useAccountKey est requis.
Suppression d'arrière-plan
/api/background-removeSupprimer l'arrière-plan de l'image. Utilise l'API remove.bg avec fallback sharp. Quota mensuel (configuré par l'admin).
Paramètres (multipart/form-data)
| Champ | Type | Requis | Description |
|---|---|---|---|
| image | file | Oui | Fichier image (max 10 Mo) |
| format | string | Non | Format de sortie : png (par défaut), webp |
Gestion de compte
/api/user/ai-keyGérer la configuration de modèle BYOK enregistrée (chiffrée AES-256-GCM).
GET— Obtenir la config enregistrée (clé masquée, ex. sk-12****abcd)PUT— Enregistrer/mettre à jour la config (corps : baseUrl, model, apiKey). Retourne la clé masquée.DELETE— Supprimer la config enregistrée (irréversible)
Réponses d'erreur
Toutes les erreurs retournent du JSON avec { "statusCode": 4xx, "statusMessage": "..." }
| Code | Erreur | Description |
|---|---|---|
| 400 | missing_form_data | Le corps doit être multipart/form-data |
| 400 | missing_image_file | Aucun fichier image trouvé (champ : "image") |
| 400 | file_too_large | Le fichier dépasse la limite de 15 Mo |
| 400 | invalid_image_type | Le fichier n'est pas une image valide |
| 400 | invalid_image | Image corrompue ou illisible |
| 400 | image_too_large | L'image dépasse 80 mégapixels |
| 400 | invalid_params | Valeurs de paramètres invalides (voir le champ issues) |
| 401 | missing_or_invalid_api_key | En-tête Authorization manquant ou malformé |
| 401 | invalid_or_revoked_api_key | Clé API introuvable ou révoquée |
| 401 | api_access_not_available | Votre plan n'inclut pas l'accès API (Team/Enterprise uniquement) |
| 429 | rate_limited | Trop de requêtes (limite : 30/minute) |
| 429 | monthly_limit_exceeded | Quota API mensuel épuisé |
| 500 | conversion_failed | Erreur de traitement d'image côté serveur |
| Erreurs fonctionnalités IA | ||
| 403 | ai_access_denied | Plan Pro/Team requis (ou mode BYOK : connexion requise) |
| 429 | ai_daily_limit_exceeded | Quota IA quotidien épuisé (mode plateforme uniquement ; BYOK illimité) |
| 503 | ai_service_unavailable | Service IA non configuré sur le serveur |
| 403 | no_saved_ai_key | BYOK : useAccountKey=true mais aucune clé enregistrée |
| 503 | ai_key_encryption_disabled | AI_KEY_ENCRYPTION_SECRET non configuré sur le serveur |
Exemples de code
curl -X POST https://www.bulkpicconv.com/api/v1/convert \
-H "Authorization: Bearer sk_your_api_key" \
-F "image=@photo.jpg" \
-F "format=webp" \
-F "quality=80" \
-F "width=1920" \
-o converted.webpTexte alternatif IA (corps JSON)
curl -X POST https://www.bulkpicconv.com/v1/ai/alt-text \
-H "Authorization: Bearer sk_your_api_key" \
-H "Content-Type: application/json" \
-d '{"images":["data:image/jpeg;base64,/9j/4AAQ..."],"language":"en","style":"seo"}'BYOK : Utiliser votre propre modèle
curl -X POST https://www.bulkpicconv.com/v1/ai/alt-text \
-H "Authorization: Bearer YOUR_JWT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"images": ["data:image/jpeg;base64,..."],
"userProvider": {
"baseUrl": "https://api.siliconflow.cn/v1",
"model": "Qwen/Qwen3-VL-32B-Instruct",
"apiKey": "sk-your-provider-key"
}
}'Essayer
Journal des modifications API
- addedPOST /v1/ai/alt-text: AI alt text generation with GPT-4o Vision (Pro/Team or BYOK)
- addedPOST /v1/ai/rename: AI batch rename based on image content
- addedPOST /v1/ai/smart-crop: AI smart crop detection with platform presets
- addedPOST /v1/ai/enhance: AI image enhancement (upscale, denoise, deblur)
- addedPOST /v1/ai/recommend: AI format and quality recommendation
- addedBYOK (Bring Your Own Key): use your own OpenAI-compatible model via userProvider object
- addedGET/PUT/DELETE /api/user/ai-key: manage saved BYOK config (AES-256-GCM encrypted)
- addedPOST /api/background-remove: remove image background
- addedBatch webhook callback: pass `webhook_url` in batch creation to receive POST notifications on completion or failure
- addedAutomatic cleanup of stale batch jobs (30-minute timeout) and result files (24-hour retention)
- addedGET /api/v2/usage: query API key monthly usage and recent calls
- addedGET /api/v2/credits: query available API credits and package details
- addedPOST /api/v2/batch: upload ZIP, async batch conversion
- addedGET /api/v2/batch/{id}/status: query batch job status
- addedGET /api/v2/batch/{id}/result: download result ZIP
- addedPOST /api/v1/resize: resize images via API
- addedPOST /api/v1/crop: crop images via API
- addedPOST /api/v1/watermark: add watermark to images via API
- addedPOST /api/v1/optimize: smart optimization without format conversion
- addedPOST /api/v1/convert: convert images to WebP/AVIF/JPEG/PNG
- addedAPI key authentication with sk_ prefix
- addedRate limiting: 60 requests/min per IP, monthly limits per plan
- addedAPI credits for non-subscription users
Besoin d'une clé API ? Aller au tableau de bord
Pas d'abonnement ? Achetez du prépayé Crédits API