API file multimediali
API Elenca i file multimediali
Ottieni i file della libreria multimediale del tuo spazio di lavoro con i relativi URL di download, dal più recente. Filtra per tipo o cerca per nome per trovare un file caricato in precedenza e riutilizzarne l'URL in un messaggio.
https://wbiztool.com/api/v1/media/list/Corpo: Query string, oppure un corpo JSON con POST
L'elenco include i file caricati con l'API Carica file multimediali e dalla pagina Directory Media. I file eliminati non sono inclusi.
Esempio rapido#
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');
}Sostituisci 12345 e YOUR_API_KEY con i tuoi valori. Consulta Autenticazione per sapere dove trovarli.
Parametri della richiesta#
Invia i parametri nella query string di una richiesta GET, oppure come corpo JSON in una richiesta POST con Content-Type: application/json. Non combinare i due metodi: se client_id è nella query string, il corpo JSON viene ignorato. Anche una POST con dati di un modulo funziona per client_id, api_key, file_type e search, ma page e limit vengono ignorati nei campi del modulo; inviali nella query string o nel JSON.
Autenticazione
client_idintegerobbligatorioIl tuo ID Client API, da Impostazioni → Chiavi API.
api_keystringobbligatorioLa tua chiave API, dalla stessa pagina.
Filtri e paginazione
pageintegerfacoltativoNumero di pagina, a partire da
1(predefinito). I valori inferiori a 1 vengono trattati come1.limitintegerfacoltativoFile per pagina, da 1 a 100. Valore predefinito
20. I valori superiori a 100 vengono trattati come100e quelli inferiori a 1 come20.file_typestringfacoltativoimageper le sole immagini, oppurefileper tutto il resto. Qualsiasi altro valore viene ignorato.searchstringfacoltativoRestituisce solo i file il cui nome originale o nome di salvataggio contiene questo testo. Non distingue tra maiuscole e minuscole.
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
}'Risposta#
{
"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]"
}
]
}
}
| Campo | Tipo | Descrizione |
|---|---|---|
status | integer | 1 in caso di successo, 0 se la richiesta non è riuscita. |
message | string | Media files retrieved successfully, altrimenti l'errore. |
data.total_count | integer | File che corrispondono ai tuoi filtri, su tutte le pagine. |
data.page | integer | La pagina restituita. |
data.limit | integer | La dimensione della pagina utilizzata, dopo l'adeguamento all'intervallo da 1 a 100. |
data.total_pages | integer | Numero di pagine. 0 quando non ci sono file. |
data.has_next | boolean | true se c'è una pagina successiva a questa. |
data.has_previous | boolean | true se page è maggiore di 1. |
data.media_files | array | I file di questa pagina, dal più recente. Vuoto se la pagina è oltre la fine. |
Campi del file multimediale#
| Campo | Tipo | Descrizione |
|---|---|---|
id | integer | ID del file multimediale. Usalo con Ottieni file multimediale. |
file_name | string | Nome con cui è salvato il file. |
original_file_name | string | Il nome che aveva il file quando è stato caricato. |
file_url | string | URL di download diretto. Usalo come img_url o file_url durante l'invio. |
file_type | string | image o file. |
file_size | integer | Dimensione in byte. |
file_size_display | string | Dimensione leggibile con un decimale, ad esempio 512.0 KB. |
mime_type | string | Tipo MIME, ad esempio image/jpeg. |
is_image | boolean | true quando file_type è image. |
file_extension | string | Estensione in minuscolo di original_file_name, senza il punto. |
created_at | string | Orario del caricamento, in formato ISO 8601 in UTC con l'offset +00:00. |
uploaded_by | string or null | Nome utente di accesso (di solito l'indirizzo email) del membro del team che ha caricato il file. |
Errori#
Anche gli errori restituiscono HTTP 200, con status impostato su 0:
{ "status": 0, "message": "Invalid API key" }
| Messaggio | Come risolvere |
|---|---|
client_id is required | Aggiungi client_id. Se invii JSON, verifica che il corpo sia JSON valido (un errore di parsing viene segnalato con questo messaggio). |
api_key is required | Aggiungi api_key. |
client_id must be a valid integer | Invia client_id come numero. |
Invalid API key | Verifica che la chiave esista e non sia stata eliminata o disattivata. |
Invalid client_id for this API key | La chiave appartiene a un altro client_id. |
Error retrieving media files: … | Di solito page o limit nella query string o nei campi del form non è un numero intero. In un corpo JSON non viene restituito alcun errore: se page non è un numero intero, page, limit, file_type e search vengono tutti ignorati, quindi ottieni la pagina 1 con 20 file e nessun filtro. Se solo limit non lo è, vengono ignorati limit, file_type e search. |
Leggere tutte le pagine#
Continua a richiedere la pagina successiva finché data.has_next è 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");Suggerimenti#
- Usa il parametro di invio corretto: quando
is_imageètrue, invia l'URL comeimg_urlconmsg_type1; altrimenti comefile_urlconmsg_type2. Vedi Invia messaggio. - Tieni la chiave API fuori dai log: le query string vengono spesso registrate da proxy e server. Se per te è importante, usa invece
POSTcon un corpo JSON.
