Verdmarket
Benachrichtigungen

Willkommen bei Verdmarket!

Wir freuen uns, Sie auf unserer Plattform begrüßen zu dürfen! Erstellen Sie ein Konto, um auf den vollständigen B2B-Katalog zuzugreifen. Für neue Benutzer, die sich im April registrieren — spezielle Provisionstarife!

Registrieren

Verdmarket Lieferanten-API

REST-API zur programmatischen Verwaltung Ihrer Produkte, Bestände, Preise und Bestellungen.

Basis-URL

https://verdmarket.com.mature-black-wombat.65-108-70-81.cpanel.site/api/v1/supplier

Verfügbare Endpunkte

Methode Endpunkt Beschreibung
GET/productsProdukte auflisten
GET/products/{id}Produktdetails abrufen
POST/productsProdukt erstellen
POST/products/{id}Produkt aktualisieren
POST/products/{id}/deleteProdukt löschen
GET/products/{id}/imagesProduktbilder auflisten
POST/products/{id}/imagesBilder per URL hinzufügen
POST/products/{id}/images/{imageId}/deleteBild löschen
POST/products/{id}/images/{imageId}/primaryHauptbild festlegen
POST/stockMassenbestandsaktualisierung
POST/pricesMassenpreisaktualisierung
GET/ordersBestellungen auflisten
GET/orders/{id}Bestelldetails abrufen
POST/orders/{id}/statusBestellstatus aktualisieren
GET/categoriesKategorien auflisten

Authentifizierung

Alle API-Anfragen erfordern ein Bearer-Token im Authorization-Header.

Erstellen Sie Ihren API-Schlüssel unter Lieferanten-Dashboard → Shop-Profil → API-Schlüssel.

Authorization: Bearer YOUR_API_KEY
Wichtig: Ihr API-Schlüssel wird nur einmal bei der Erstellung angezeigt. Bewahren Sie ihn sicher auf. Schlüssel werden auf unseren Servern gehasht — wir können sie nicht wiederherstellen. Bei Verlust widerrufen Sie den alten und erstellen einen neuen.

Ratenlimits

Standard: 1.000 Anfragen pro Stunde pro API-Schlüssel.

Ratenlimit-Informationen werden in Antwort-Headern zurückgegeben:

HeaderBeschreibung
X-RateLimit-LimitMaximale Anfragen pro Stunde
X-RateLimit-RemainingVerbleibende Anfragen im aktuellen Zeitfenster
X-RateLimit-ResetUnix-Zeitstempel, wann das Zeitfenster zurückgesetzt wird
Retry-AfterSekunden bis zum erneuten Versuch (nur bei 429)

Antwortformat

Alle Antworten sind JSON. Erfolgreiche Antworten:

{
  "success": true,
  "data": { ... }
}

Fehlerantworten:

{
  "success": false,
  "error": {
    "code": "VALIDATION_ERROR",
    "message": "Name is required."
  }
}

Produkte

GET /products

Listen Sie Ihre Produkte mit Paginierung und Filterung auf.

Abfrageparameter

ParameterTypBeschreibung
pageintSeitennummer (Standard: 1)
per_pageintEinträge pro Seite (max.: 100, Standard: 20)
statusstringFilter: active, inactive, pending
searchstringSuche nach Name oder SKU

Beispielantwort

{
  "success": true,
  "data": {
    "products": [
      {
        "id": 42,
        "name": "Red Roses Premium",
        "sku": "ROSE-RED-001",
        "type": "flower",
        "base_price": 2.50,
        "unit": "stem",
        "stock_qty": 500,
        "stock_status": "in_stock",
        "is_active": true,
        "is_approved": true,
        "category": { "id": 3, "name": "Roses" },
        "primary_image": "/uploads/products/rose-red.jpg"
      }
    ],
    "pagination": {
      "current_page": 1,
      "total_pages": 5,
      "total_items": 94,
      "per_page": 20
    }
  }
}
GET /products/{id}

Einzelnes Produkt mit Bildern und Varianten abrufen.

POST /products

Neues Produkt erstellen. Neue Produkte erfordern eine Admin-Genehmigung, bevor sie im Katalog erscheinen.

Anfragekörper (JSON)

FeldTypPflichtBeschreibung
namestring*Produktname
category_idint*Kategorie-ID
base_pricefloat*Preis in EUR
unitstring*Stiel, Bund, Karton, Packung, Stück, Kilogramm, Meter, Rolle
typestringBlume (Standard) oder Zubehör
descriptionstringProduktbeschreibung
skustringEindeutige SKU (auf Duplikate geprüft)
stock_qtyintLagerbestand (Standard: 0)
min_order_qtyintMindestbestellmenge (Standard: 1)
colorstringProduktfarbe
stem_lengthintStiellänge in cm
country_of_originstringHerkunftsland
vat_ratefloatVAT-Satz in % (Standard: 21)
image_urlstringBild-URL(s). Unterstützt jpg, png, webp. Mehrere URLs durch Semikolon (;) getrennt. Max. 10 Bilder pro Produkt.
POST /products/{id}

Vorhandenes Produkt aktualisieren. Senden Sie nur die Felder, die Sie ändern möchten (Teilaktualisierung).

POST /products/{id}/delete

Produkt als gelöscht markieren. Kein Anfragekörper erforderlich.

Produktbilder

Bildlimits: Max. 10 Bilder pro Produkt. Formate: JPEG, PNG, WebP. Max. Dateigröße: 5 MB pro Bild. Bilder werden von den angegebenen URLs heruntergeladen — der Server ruft sie automatisch ab.
GET /products/{id}/images

Alle Bilder eines Produkts abrufen. Gibt URLs und Hauptbild-Flag zurück.

Beispielantwort

{
  "success": true,
  "data": {
    "images": [
      {
        "id": 1,
        "url": "/uploads/products/abc123.jpg",
        "thumbnail_url": "/uploads/products/thumb_abc123.jpg",
        "is_primary": true
      },
      {
        "id": 2,
        "url": "/uploads/products/def456.jpg",
        "thumbnail_url": "/uploads/products/thumb_def456.jpg",
        "is_primary": false
      }
    ]
  }
}
POST /products/{id}/images

Bilder per URL hinzufügen. Der Server lädt herunter, validiert (jpg/png/webp, max. 5 MB) und erstellt automatisch Thumbnails. Mehrere URLs mit Semikolon trennen.

Anfragekörper (JSON)

FeldTypPflichtBeschreibung
image_urlstring*Bild-URL(s). Unterstützt jpg, png, webp. Mehrere URLs durch Semikolon (;) getrennt. Max. 10 Bilder pro Produkt.

Anfragekörper

{
  "image_url": "https://example.com/images/rose.jpg;https://example.com/images/rose-2.jpg"
}
POST /products/{id}/images/{imageId}/delete

Produktbild löschen. Die Datei wird vom Server entfernt. War das gelöschte Bild das Hauptbild, wird automatisch das nächste Bild zum Hauptbild.

POST /products/{id}/images/{imageId}/primary

Ein Bild als Hauptbild festlegen. Das Hauptbild wird in Katalogübersichten und Suchergebnissen angezeigt.

Massenbestandsaktualisierung

POST /stock

Aktualisieren Sie Lagerbestände für mehrere Produkte gleichzeitig. Identifizieren Sie Produkte über product_id oder sku. Max. 500 Artikel pro Anfrage.

Anfragekörper

{
  "items": [
    { "product_id": 42, "stock_qty": 500 },
    { "sku": "ROSE-RED-001", "stock_qty": 250 },
    { "sku": "LILY-WHT-003", "stock_qty": 0 }
  ]
}

Antwort

{
  "success": true,
  "data": {
    "updated": 2,
    "failed": 1,
    "errors": [
      { "index": 2, "sku": "LILY-WHT-003", "error": "Product not found" }
    ]
  }
}

Massenpreisaktualisierung

POST /prices

Preise für mehrere Produkte aktualisieren. Gleiches Format wie Bestandsaktualisierung, aber mit base_price-Feld. Max. 500 Artikel.

Anfragekörper

{
  "items": [
    { "product_id": 42, "base_price": 2.75 },
    { "sku": "ROSE-RED-001", "base_price": 3.10 }
  ]
}

Bestellungen

GET /orders

Listen Sie Ihre Bestellgruppen auf (lieferantenspezifische Bestellanteile).

Abfrageparameter

ParameterTypBeschreibung
pageintSeitennummer
per_pageintEinträge pro Seite (max. 100)
statusstringpending, confirmed, processing, shipped, delivered, completed, cancelled
GET /orders/{id}

Vollständige Bestelldetails einschließlich Artikeln, Kundeninfos und Statusverlauf abrufen.

POST /orders/{id}/status

Bestellstatus aktualisieren. Nur gültige Übergänge sind erlaubt:

VonErlaubte Übergänge
pendingconfirmed, cancelled
confirmedprocessing, cancelled
processingshipped, cancelled
shippeddelivered

Anfragekörper

{
  "status": "confirmed",
  "comment": "Order confirmed, preparing for shipment"
}

Kategorien

GET /categories

Alle aktiven Kategorien auflisten. Gibt eine flache Liste mit Elternreferenzen zurück.

Beispielantwort

{
  "success": true,
  "data": {
    "categories": [
      { "id": 1, "name": "Flowers", "slug": "flowers", "parent_id": null, "type": "flower" },
      { "id": 3, "name": "Roses", "slug": "roses", "parent_id": 1, "type": "flower" }
    ]
  }
}

Fehlercodes

HTTPCodeBeschreibung
401UNAUTHORIZEDFehlender oder ungültiger API-Schlüssel
403FORBIDDENSchlüssel widerrufen oder Lieferant nicht verifiziert
404NOT_FOUNDRessource nicht gefunden
422VALIDATION_ERRORUngültige Eingabedaten
429RATE_LIMITEDRatenlimit überschritten
500SERVER_ERRORInterner Serverfehler

Code-Beispiele

Produkte auflisten

curl -X GET "https://verdmarket.com.mature-black-wombat.65-108-70-81.cpanel.site/api/v1/supplier/products?page=1&per_page=10" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Accept: application/json"

Produkt erstellen

curl -X POST "https://verdmarket.com.mature-black-wombat.65-108-70-81.cpanel.site/api/v1/supplier/products" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Red Roses Premium",
    "category_id": 3,
    "base_price": 2.50,
    "unit": "stem",
    "stock_qty": 500,
    "sku": "ROSE-RED-001",
    "color": "Red",
    "stem_length": 60,
    "country_of_origin": "Netherlands",
    "image_url": "https://example.com/images/rose-red.jpg"
  }'

Produktbilder hinzufügen

curl -X POST "https://verdmarket.com.mature-black-wombat.65-108-70-81.cpanel.site/api/v1/supplier/products/42/images" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "image_url": "https://example.com/img/photo1.jpg;https://example.com/img/photo2.jpg"
  }'

Massenbestandsaktualisierung

curl -X POST "https://verdmarket.com.mature-black-wombat.65-108-70-81.cpanel.site/api/v1/supplier/stock" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "items": [
      {"sku": "ROSE-RED-001", "stock_qty": 500},
      {"sku": "LILY-WHT-003", "stock_qty": 200}
    ]
  }'

PHP-Beispiel

<?php
$apiKey = 'YOUR_API_KEY';
$baseUrl = 'https://verdmarket.com.mature-black-wombat.65-108-70-81.cpanel.site/api/v1/supplier';

// List products
$ch = curl_init("$baseUrl/products?page=1&per_page=10");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer $apiKey",
        "Accept: application/json",
    ],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

// Bulk stock update
$ch = curl_init("$baseUrl/stock");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_POST => true,
    CURLOPT_POSTFIELDS => json_encode([
        'items' => [
            ['sku' => 'ROSE-RED-001', 'stock_qty' => 500],
            ['sku' => 'LILY-WHT-003', 'stock_qty' => 200],
        ],
    ]),
    CURLOPT_HTTPHEADER => [
        "Authorization: Bearer $apiKey",
        "Content-Type: application/json",
    ],
]);
$response = json_decode(curl_exec($ch), true);
curl_close($ch);

Python-Beispiel

import requests

API_KEY = "YOUR_API_KEY"
BASE_URL = "https://verdmarket.com.mature-black-wombat.65-108-70-81.cpanel.site/api/v1/supplier"
headers = {"Authorization": f"Bearer {API_KEY}"}

# List products
resp = requests.get(f"{BASE_URL}/products", headers=headers,
                    params={"page": 1, "per_page": 10})
products = resp.json()

# Bulk stock update
resp = requests.post(f"{BASE_URL}/stock", headers=headers,
                     json={"items": [
                         {"sku": "ROSE-RED-001", "stock_qty": 500},
                         {"sku": "LILY-WHT-003", "stock_qty": 200},
                     ]})
result = resp.json()

# Update order status
resp = requests.post(f"{BASE_URL}/orders/15/status", headers=headers,
                     json={"status": "confirmed",
                           "comment": "Ready for shipment"})
print(resp.json())

Cookie-Einstellungen

Wir verwenden Cookies, um Ihre Erfahrung zu verbessern. Erfahren Sie mehr in unserer Datenschutzrichtlinie.

Anpassen

Notwendige

Für die Funktion der Website erforderlich. Kann nicht deaktiviert werden.