Team/Projekt: iron-voice-ai-studio / ivais-dashboard
Betroffene Stores: store_31fpXSbf4s27XiTQ (ivais-dashboard-blob) und store_8zZ25ntP8fXEB05t (ivais-dashboard-blob-v2, brandneu angelegt zum Ausschließen eines store-spezifischen Defekts, zeigt exakt dasselbe Verhalten).
Kernbefund: Ich habe heute den entscheidenden Vergleichstest gemacht. Upload über die Vercel-Dashboard-Oberfläche selbst (Manage Blobs -> Upload, session-authentifiziert): PUT https://vercel.com/api/blob?pathname=diag-test.png -> 200 OK, Datei ist im Store sichtbar. Derselbe Store, wenige Minuten später, aber über den Client-Token-Weg (upload() aus dem npm-Paket "vercel/blob/client" (Scope "vercel"), Token via handleUpload-Server-Route, Standard-Next.js-Pattern): POST https://vercel.com/api/blob/mpu?pathname=diag-test-app.png -> 503 Service Unavailable (SDK-intern automatisch wiederholt, ebenfalls 503).
Schreibzugriff auf den Store funktioniert also grundsätzlich. Das Problem tritt spezifisch bei extern signierten Client-Tokens auf (generateClientTokenFromReadWriteToken / handleUpload) — sowohl bei multipart: true (/api/blob/mpu) als auch bei einfachem PUT (/api/blob, in einem früheren Test ebenfalls mit 503 reproduziert).
Weitere Fakten: Read-Operationen (Client-Token-Erzeugung via handleUpload) funktionieren einwandfrei (200 OK), nur der eigentliche Schreib-Request mit diesem Token schlägt fehl. OPTIONS-Preflight liefert 200, die eigentliche PUT/POST-Anfrage liefert einen echten 503, kein Netzwerkfehler, keine CORS-Blockade. Reproduziert identisch auf zwei Geräten (Desktop, Mobilgerät) und getrennten Netzwerken (Heim-WLAN, mobile Daten). Ein zweiter, komplett neu angelegter Store zeigt exakt dasselbe Verhalten. Zahlungsmethode ist im Team-Account hinterlegt und aktiv, kein Billing-Problem. Storage-Nutzung liegt bei 0 B, weit unter allen Hobby-Plan-Limits. Der Advanced-Operations-Zähler im Store-Dashboard steigt mit jedem fehlgeschlagenen Versuch. Vercels Statusseite zeigt "Alle Systeme einsatzbereit". Kein "Store ist blockiert"-Hinweis im Dashboard.
Reproduktion: 1) upload() aus dem Client-SDK mit handleUploadUrl auf eine Server-Route, die handleUpload implementiert. 2) Client-Token wird erfolgreich erzeugt (200 OK). 3) Client sendet POST https://vercel.com/api/blob/mpu?pathname=... mit gueltigem Authorization-Bearer-Header. 4) Antwort: 503 Service Unavailable. 5) Zum Vergleich: Upload derselben Datei ueber die Vercel-Dashboard-UI auf denselben Store -> 200 OK.
Frage: Hat jemand ein aehnliches Verhalten gesehen, speziell diese Diskrepanz zwischen Dashboard-Upload (geht) und Client-Token-Upload (503)? Gibt es einen bekannten Bug oder eine Account-/Team-Einstellung, die extern signierte Blob-Client-Tokens anders behandelt als session-authentifizierte Requests?