Media-API
Mediendateien auflisten (API)
Rufen Sie die Dateien in der Medienbibliothek Ihres Arbeitsbereichs mit ihren Download-URLs ab, die neuesten zuerst. Filtern Sie nach Typ oder suchen Sie nach Namen, um eine früher hochgeladene Datei zu finden und ihre URL in einer Nachricht wiederzuverwenden.
https://wbiztool.com/api/v1/media/list/Body: Query-String oder JSON-Body mit POST
Die Liste enthält Dateien, die mit der Media-Upload-API und auf der Seite Medienverzeichnis hochgeladen wurden. Gelöschte Dateien sind nicht enthalten.
Kurzes Beispiel#
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');
}Ersetzen Sie 12345 und YOUR_API_KEY durch Ihre eigenen Werte. Wo Sie diese finden, steht unter Authentifizierung.
Request-Parameter#
Senden Sie die Parameter im Query-String eines GET-Requests oder als JSON-Body in einem POST-Request mit Content-Type: application/json. Mischen Sie beides nicht: Steht client_id im Query-String, wird der JSON-Body ignoriert. Ein formularkodierter POST funktioniert ebenfalls für client_id, api_key, file_type und search, aber page und limit werden in Formularfeldern ignoriert; senden Sie diese im Query-String oder als JSON.
Authentifizierung
client_idintegererforderlichIhre API-Client-ID aus Einstellungen → API-Schlüssel.
api_keystringerforderlichIhr API-Schlüssel von derselben Seite.
Filter und Paginierung
pageintegeroptionalSeitennummer, beginnend bei
1(Standard). Werte unter 1 werden als1behandelt.limitintegeroptionalDateien pro Seite, von 1 bis 100. Standard
20. Werte über 100 werden als100behandelt, Werte unter 1 als20.file_typestringoptionalimagenur für Bilder oderfilefür alles andere. Jeder andere Wert wird ignoriert.searchstringoptionalGibt nur Dateien zurück, deren Originalname oder gespeicherter Name diesen Text enthält. Groß-/Kleinschreibung wird nicht beachtet.
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
}'Antwort#
{
"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]"
}
]
}
}
| Feld | Typ | Beschreibung |
|---|---|---|
status | integer | 1 bei Erfolg, 0, wenn der Request fehlgeschlagen ist. |
message | string | Media files retrieved successfully, andernfalls der Fehler. |
data.total_count | integer | Dateien, die Ihren Filtern entsprechen, über alle Seiten. |
data.page | integer | Die zurückgegebene Seite. |
data.limit | integer | Die verwendete Seitengröße nach der Anpassung auf 1 bis 100. |
data.total_pages | integer | Anzahl der Seiten. 0, wenn keine Dateien vorhanden sind. |
data.has_next | boolean | true, wenn es nach dieser Seite eine weitere gibt. |
data.has_previous | boolean | true, wenn page größer als 1 ist. |
data.media_files | array | Die Dateien auf dieser Seite, die neuesten zuerst. Leer, wenn die Seite hinter dem Ende liegt. |
Felder einer Mediendatei#
| Feld | Typ | Beschreibung |
|---|---|---|
id | integer | ID der Mediendatei. Verwenden Sie sie mit Mediendatei abrufen. |
file_name | string | Name, unter dem die Datei gespeichert ist. |
original_file_name | string | Der Name, den die Datei beim Hochladen hatte. |
file_url | string | Direkte Download-URL. Verwenden Sie sie beim Senden als img_url oder file_url. |
file_type | string | image oder file. |
file_size | integer | Größe in Bytes. |
file_size_display | string | Lesbare Größe mit einer Nachkommastelle, zum Beispiel 512.0 KB. |
mime_type | string | MIME-Typ, zum Beispiel image/jpeg. |
is_image | boolean | true, wenn file_type den Wert image hat. |
file_extension | string | Endung von original_file_name in Kleinbuchstaben, ohne Punkt. |
created_at | string | Upload-Zeitpunkt, ISO 8601 in UTC mit der Abweichung +00:00. |
uploaded_by | string or null | Anmeldename (meist die E-Mail-Adresse) des Teammitglieds, das die Datei hochgeladen hat. |
Fehler#
Auch Fehler geben HTTP 200 zurück, mit status gleich 0:
{ "status": 0, "message": "Invalid API key" }
| Meldung | Lösung |
|---|---|
client_id is required | Fügen Sie client_id hinzu. Wenn Sie JSON senden, prüfen Sie, ob der Body gültiges JSON ist (ein Parse-Fehler wird mit dieser Meldung gemeldet). |
api_key is required | Fügen Sie api_key hinzu. |
client_id must be a valid integer | Senden Sie client_id als Zahl. |
Invalid API key | Prüfen Sie, ob der Schlüssel existiert und nicht gelöscht oder deaktiviert wurde. |
Invalid client_id for this API key | Der Schlüssel gehört zu einer anderen client_id. |
Error retrieving media files: … | Meist ist page oder limit im Query-String oder in den Formularfeldern keine ganze Zahl. In einem JSON-Body gibt es keinen Fehler: Ist page keine ganze Zahl, werden page, limit, file_type und search alle ignoriert, und Sie erhalten Seite 1 mit 20 Dateien ohne Filter. Ist nur limit keine ganze Zahl, werden limit, file_type und search ignoriert. |
Alle Seiten abrufen#
Fragen Sie die nächste Seite ab, solange data.has_next den Wert true hat.
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");Tipps#
- Den richtigen Sendeparameter verwenden: Wenn
is_imageden Werttruehat, senden Sie die URL alsimg_urlmitmsg_type1, andernfalls alsfile_urlmitmsg_type2. Siehe Nachricht senden. - API-Schlüssel aus Logs heraushalten: Query-Strings werden von Proxys und Servern oft protokolliert. Wenn Ihnen das wichtig ist, verwenden Sie stattdessen
POSTmit einem JSON-Body.
