API des médias
API de liste des fichiers multimédias
Obtenez les fichiers de la bibliothèque de médias de votre espace de travail avec leurs URL de téléchargement, des plus récents aux plus anciens. Filtrez par type ou recherchez par nom pour retrouver un fichier téléversé précédemment et réutiliser son URL dans un message.
https://wbiztool.com/api/v1/media/list/Corps: Chaîne de requête, ou corps JSON avec POST
La liste inclut les fichiers téléversés avec l'API de téléversement de médias et sur la page Répertoire Média. Les fichiers supprimés ne sont pas inclus.
Exemple rapide#
curl -G https://wbiztool.com/api/v1/media/list/ \
--data-urlencode client_id=12345 \
--data-urlencode api_key=YOUR_API_KEY \
--data-urlencode file_type=image \
--data-urlencode page=1 \
--data-urlencode limit=20import requests
response = requests.get(
"https://wbiztool.com/api/v1/media/list/",
params={
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"file_type": "image",
"page": 1,
"limit": 20,
},
timeout=60,
)
result = response.json()
if result["status"] == 1:
data = result["data"]
print(f"Page {data['page']} of {data['total_pages']} ({data['total_count']} files)")
for media in data["media_files"]:
print(media["id"], media["original_file_name"], media["file_url"])
else:
print("Failed:", result["message"])// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const url = new URL("https://wbiztool.com/api/v1/media/list/");
url.search = new URLSearchParams({
client_id: "12345",
api_key: "YOUR_API_KEY",
file_type: "image",
page: "1",
limit: "20",
});
const response = await fetch(url);
const result = await response.json();
if (result.status === 1) {
const { data } = result;
console.log(`Page ${data.page} of ${data.total_pages} (${data.total_count} files)`);
for (const media of data.media_files) {
console.log(media.id, media.original_file_name, media.file_url);
}
} else {
console.error("Failed:", result.message);
}<?php
$query = http_build_query([
'client_id' => 12345,
'api_key' => 'YOUR_API_KEY',
'file_type' => 'image',
'page' => 1,
'limit' => 20,
]);
$ch = curl_init('https://wbiztool.com/api/v1/media/list/?' . $query);
curl_setopt_array($ch, [
CURLOPT_RETURNTRANSFER => true,
CURLOPT_TIMEOUT => 60,
]);
$result = json_decode(curl_exec($ch), true);
curl_close($ch);
if (($result['status'] ?? 0) === 1) {
foreach ($result['data']['media_files'] as $media) {
echo $media['id'] . ' ' . $media['original_file_name'] . ' ' . $media['file_url'] . "\n";
}
} else {
echo 'Failed: ' . ($result['message'] ?? 'no response');
}Remplacez 12345 et YOUR_API_KEY par vos propres valeurs. Consultez Authentification pour savoir où les trouver.
Paramètres de la requête#
Envoyez les paramètres dans la chaîne de requête d'une requête GET, ou dans un corps JSON d'une requête POST avec Content-Type: application/json. Ne mélangez pas les deux : si client_id figure dans la chaîne de requête, le corps JSON est ignoré. Un POST encodé comme formulaire fonctionne aussi pour client_id, api_key, file_type et search, mais page et limit sont ignorés dans les champs de formulaire ; envoyez-les dans la chaîne de requête ou en JSON.
Authentification
client_idintegerobligatoireVotre ID client API, dans Paramètres → Clés API.
api_keystringobligatoireVotre clé API, sur cette même page.
Filtres et pagination
pageintegerfacultatifNuméro de page, à partir de
1(valeur par défaut). Les valeurs inférieures à 1 sont traitées comme1.limitintegerfacultatifNombre de fichiers par page, de 1 à 100. Valeur par défaut :
20. Les valeurs supérieures à 100 sont traitées comme100, et les valeurs inférieures à 1 comme20.file_typestringfacultatifimagepour les images uniquement, oufilepour tout le reste. Toute autre valeur est ignorée.searchstringfacultatifRenvoie uniquement les fichiers dont le nom d'origine ou le nom de stockage contient ce texte. Insensible à la casse.
curl -X POST https://wbiztool.com/api/v1/media/list/ \
-H "Content-Type: application/json" \
-d '{
"client_id": 12345,
"api_key": "YOUR_API_KEY",
"search": "invoice",
"page": 1,
"limit": 50
}'Réponse#
{
"status": 1,
"message": "Media files retrieved successfully",
"data": {
"total_count": 1,
"page": 1,
"limit": 20,
"total_pages": 1,
"has_next": false,
"has_previous": false,
"media_files": [
{
"id": 5123,
"file_name": "media_12345_17895806123456.jpg",
"original_file_name": "diwali-sale.jpg",
"file_url": "https://wbiztool-static.s3.ap-southeast-1.amazonaws.com/media/org_12345/media_12345_17895806123456.jpg",
"file_type": "image",
"file_size": 524288,
"file_size_display": "512.0 KB",
"mime_type": "image/jpeg",
"is_image": true,
"file_extension": "jpg",
"created_at": "2026-09-16T10:23:52.106447+00:00",
"uploaded_by": "[email protected]"
}
]
}
}
| Champ | Type | Description |
|---|---|---|
status | integer | 1 en cas de succès, 0 si la requête a échoué. |
message | string | Media files retrieved successfully, sinon l'erreur. |
data.total_count | integer | Nombre de fichiers correspondant à vos filtres, toutes pages confondues. |
data.page | integer | La page renvoyée. |
data.limit | integer | La taille de page utilisée, après ajustement entre 1 et 100. |
data.total_pages | integer | Nombre de pages. 0 lorsqu'il n'y a aucun fichier. |
data.has_next | boolean | true s'il existe une page après celle-ci. |
data.has_previous | boolean | true si page est supérieur à 1. |
data.media_files | array | Les fichiers de cette page, des plus récents aux plus anciens. Vide si la page se situe au-delà de la fin. |
Champs d'un fichier multimédia#
| Champ | Type | Description |
|---|---|---|
id | integer | ID du fichier multimédia. Utilisez-le avec Obtenir un fichier multimédia. |
file_name | string | Nom sous lequel le fichier est stocké. |
original_file_name | string | Le nom du fichier au moment de son téléversement. |
file_url | string | URL de téléchargement direct. Utilisez-la comme img_url ou file_url lors de l'envoi. |
file_type | string | image ou file. |
file_size | integer | Taille en octets. |
file_size_display | string | Taille lisible avec une décimale, par exemple 512.0 KB. |
mime_type | string | Type MIME, par exemple image/jpeg. |
is_image | boolean | true lorsque file_type vaut image. |
file_extension | string | Extension de original_file_name en minuscules, sans le point. |
created_at | string | Date du téléversement, au format ISO 8601 en UTC avec un décalage +00:00. |
uploaded_by | string or null | Nom d'utilisateur de connexion (généralement l'adresse e-mail) du membre de l'équipe qui a téléversé le fichier. |
Erreurs#
Les erreurs renvoient aussi le code HTTP 200, avec status à 0 :
{ "status": 0, "message": "Invalid API key" }
| Message | Comment corriger |
|---|---|
client_id is required | Ajoutez client_id. Si vous envoyez du JSON, vérifiez que le corps est un JSON valide (une erreur d'analyse est signalée avec ce message). |
api_key is required | Ajoutez api_key. |
client_id must be a valid integer | Envoyez client_id sous forme de nombre. |
Invalid API key | Vérifiez que la clé existe et n'a pas été supprimée ni désactivée. |
Invalid client_id for this API key | La clé appartient à un autre client_id. |
Error retrieving media files: … | Le plus souvent, page ou limit n'est pas un nombre entier dans la query string ou les champs de formulaire. Dans un corps JSON, il n'y a pas d'erreur : si page n'est pas un nombre entier, page, limit, file_type et search sont tous ignorés, et vous obtenez la page 1 avec 20 fichiers, sans filtre. Si seul limit n'en est pas un, limit, file_type et search sont ignorés. |
Lire toutes les pages#
Continuez à demander la page suivante tant que data.has_next vaut true.
import requests
files, page = [], 1
while True:
result = requests.get(
"https://wbiztool.com/api/v1/media/list/",
params={"client_id": 12345, "api_key": "YOUR_API_KEY", "page": page, "limit": 100},
timeout=60,
).json()
if result["status"] != 1:
raise RuntimeError(result["message"])
files += result["data"]["media_files"]
if not result["data"]["has_next"]:
break
page += 1
print(len(files), "files")// Node.js 18+ (built-in fetch). Save as .mjs to use top-level await.
const files = [];
let page = 1;
while (true) {
const url = new URL("https://wbiztool.com/api/v1/media/list/");
url.search = new URLSearchParams({ client_id: "12345", api_key: "YOUR_API_KEY", page: String(page), limit: "100" });
const result = await (await fetch(url)).json();
if (result.status !== 1) throw new Error(result.message);
files.push(...result.data.media_files);
if (!result.data.has_next) break;
page += 1;
}
console.log(files.length, "files");Conseils#
- Utilisez le bon paramètre d'envoi : lorsque
is_imagevauttrue, envoyez l'URL commeimg_urlavecmsg_type1 ; sinon commefile_urlavecmsg_type2. Consultez Envoyer un message. - Gardez votre clé API hors des journaux : les chaînes de requête sont souvent enregistrées par les proxys et les serveurs. Si c'est important pour vous, utilisez plutôt
POSTavec un corps JSON.
